2010-03-24 44 views
0

好吧,如果我不能在對話框寫的OnInit期間:Visual Studio 2008的C++編寫的對話OnInit的過程中或在啓動時


不能使用在OnInitDialog函數SSTextOut()() 。在顯示對話框之前調用OnInitDialog(),所以你不能在它內部獲得一個有效的CDC(因爲對話框尚未繪製)。

從它的外觀來看,SSTextOut()意味着從OnPaint()覆蓋中調用。


有沒有什麼辦法可以在啓動時向第一個對話框中寫入一些文本。我想在程序控制下的對話框屏幕上放一些信息,而不是靜態文本!

回答

0

我不確定SSTextOut是什麼,但在OnInitDialog期間,對話框確實有有一個有效的DC。它不是顯示,但它確實存在,所以在對話框中的所有控件,因此將文本放入控件(如編輯控件)是完全有效的,並且當用戶看到對話框時,只要用戶看到對話框,文本就會在那裏。

+0

SSTextOut不起作用,因爲您需要pDC-> SSTextOut,我無法獲得。但是,我放了一個編輯框,並使用下面的代碼寫入它:CEdit * Display; Display = reinterpret_cast (GetDlgItem(IDC_LC_EDITBX)); Display-> SetWindowText(「文字處理」);的UpdateData(FALSE);現在我需要編輯編輯框,所以你看不到它,所以你看到的就是我放的文本!謝謝 – user299391 2010-03-26 12:19:01

+0

你可以使用'pDC-> TextOut(x,y,「Your Text」);'。或者,您可以將編輯控件設置爲沒有邊框(或使用靜態控件,但將其ID設置爲IDC_STATIC以外的內容,並以同樣的方式寫入 - 以防止用戶進行編輯(即使意外) 。你並不需要'reinterpret_cast'和'GetDlgItem' - 將一個CEdit成員變量提前與該項目關聯會更容易。 – 2010-03-26 16:17:53

相關問題