我正在编写针对 WinCE 6.0 设备的 C++ 代码,并且我很难为我的应用程序最终确定 GUI。我必须使用的 VS 2005 窗口构建器似乎并没有简化这项任务,而且我找不到可以对 API 有所了解的文档,希望这里有人可以。
我需要在小部件页面上动态写入用户在/页面总数。我希望 CTEXT 是正确使用的小部件
CTEXT IDC_PG, 168,183,63,63
但是我似乎没有找到正确的方法来打印 CTEXT(或任何其他合适的小部件)提前感谢任何好的建议。
我正在编写针对 WinCE 6.0 设备的 C++ 代码,并且我很难为我的应用程序最终确定 GUI。我必须使用的 VS 2005 窗口构建器似乎并没有简化这项任务,而且我找不到可以对 API 有所了解的文档,希望这里有人可以。
我需要在小部件页面上动态写入用户在/页面总数。我希望 CTEXT 是正确使用的小部件
CTEXT IDC_PG, 168,183,63,63
但是我似乎没有找到正确的方法来打印 CTEXT(或任何其他合适的小部件)提前感谢任何好的建议。
如果我正确理解了这个问题,您希望在您的 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);