MFC中的C ++ GUI - 分页小部件

时间:2017-06-12 13:56:09

标签: c++ user-interface mfc clistbox

我正在编写C ++代码,目标是WinCE 6.0设备,我很难为我的应用程序完成GUI。我必须使用的VS 2005窗口构建器似乎并没有简化这个任务,我找不到可以对API有所了解的文档,希望有人在这里可以。

我需要在小部件页面上动态编写用户打开/总页数。我希望CTEXT是正确使用的小部件

CTEXT           IDC_PG, 168,183,63,63

然而,我似乎没有找到正确的方法如何在CTEXT(或任何其他合适的小部件)上打印,提前感谢任何好的建议。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,你想在你的UI上显示“Page x of n”形式的一些文字。静态文本控件(如CTEXT)适用于此。

要以编程方式设置文本,您可以调用SetWindowText,但由于这是在对话框中,因此调用SetDlgItemText可能更容易。

在您的示例中,标识符为IDC_PG,它应对应于对话框上所有控件中唯一的数字常量。假设你有一个对话框的MFC对象(我假设是myDialog)和一个指向你希望它显示的零终止文本的指针(我假设它是szPageText),你的电话会是这样的:

myDialog.SetDlgItemText(IDC_PG, szPageText);

如果您只有对话框的句柄,您的通话将如下所示:

SetDlgItemText(hDlg, IDC_PG, szPageText);

由于这是较旧的代码,因此可能会编译为MBCS(在Windows文档中通常称为ANSI)或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);