2017-06-12 106 views
1

我正在編寫C++代碼,目標是WinCE 6.0設備,而且我正在爲我的應用程序定稿GUI。我必須使用的VS 2005窗口生成器似乎並沒有簡化這個任務,而且我也找不到可以拋開API的文檔,希望這裏有人能夠這樣做。MFC中的C++ GUI - 分頁部件

我需要在小部件頁面上動態寫入用戶開啓/總頁數。我希望CTEXT是正確的部件使用

CTEXT   IDC_PG, 168,183,63,63 

但是我不似乎找到了正確的方法如何在CTEXT打印(或任何其他合適的部件)預先感謝任何好的建議。

+3

CTEXT是[簡單中心的文本框(https://msdn.microsoft.com /en-us/library/windows/desktop/aa380915(v=vs.85).aspx),而不是列表框。 – ZDF

+0

正確,即時消除從問題的錯字,謝謝 – dram

回答

1

如果我正確地理解了這個問題,你想在你的用戶界面上顯示「Page of of n」頁面的一些文本。一個靜態文本控件(如CTEXT)適用於此。

要以編程方式設置文本,您可以調用SetWindowText,但由於它位於對話框中,因此可能更容易撥打SetDlgItemText

從你的例子,該標識符是IDC_PG,應該對應一個數字常量,它是所有的對話框上的控件中是獨一無二的。假設你有一個MFC對象的對話框(我會認爲是myDialog)和一個指向零結尾的文本,你希望它顯示(我將承擔爲szPageText),您的通話將如下所示:

myDialog.SetDlgItemText(IDC_PG, szPageText); 

如果你只是有一個句柄的對話框中,你的電話是這樣的:

SetDlgItemText(hDlg, IDC_PG, szPageText); 

由於這是舊的代碼,它可能會被編譯爲MBCS(通常稱爲ANSI Windows文檔中)或UTF-16(通常在MSDN中稱爲Unicode或「寬」字符串),因此您可能希望使用TCHAR和相關宏來確保它可以以任何方式工作。

TCHAR szPageText[64] = TEXT(""); 
wsprintf(szPageText, TEXT("Page %d of %d"), currentPage, totalPages); 
myDialog.SetDlgItemText(IDC_PG, szPageText); 

在更現代的代碼,你可能會明確地使用API​​的寬版本:

WCHAR szPageText[64] = L""; 
::wsprintfW(szPageText, L"Page %d of %d", currentPage, totalPages); 
myDialog.SetDlgItemTextW(IDC_PG, szPageText); 
+0

謝謝阿德里安,非常豐富和有益的職位。 – dram