1

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

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

CTEXT           IDC_PG, 168,183,63,63

但是我似乎没有找到正确的方法来打印 CTEXT(或任何其他合适的小部件)提前感谢任何好的建议。

4

1 回答 1

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);
于 2017-06-12T17:25:09.903 回答