Я пишу код на C ++, нацеленный на устройство WinCE 6.0, и мне трудно дорабатывать GUI для моего приложения. Конструктор окон VS 2005, который я должен использовать, похоже, не упрощает эту задачу, и я не могу найти документацию, которая проливает свет на API, надеюсь, кто-нибудь здесь сможет.
Мне нужно динамически писать на странице виджета пользователя на / общее количество страниц. Я ожидаю, что CTEXT правильный виджет для использования
CTEXT IDC_PG, 168,183,63,63
Однако я не могу найти правильный способ печати на CTEXT (или любом другом подходящем виджете). Заранее благодарен за любые полезные советы.
Если я правильно понимаю вопрос, вы хотите отобразить немного текста в вашем пользовательском интерфейсе в форме «Страница x из n». Для этого подходит статический текстовый элемент управления (например, CTEXT).
Чтобы установить текст программно, вы можете вызвать SetWindowText, но так как это в диалоге, возможно, проще вызвать SetDlgItemText.
Из вашего примера, идентификатор IDC_PG
и он должен соответствовать числовой константе, уникальной среди всех элементов управления в диалоговом окне. Предполагая, что у вас есть объект MFC для диалога (который я предполагаю, myDialog
) и указатель на текст с нулевым символом в конце, который вы хотите отобразить (который я буду считать szPageText
), ваш звонок будет выглядеть так:
myDialog.SetDlgItemText(IDC_PG, szPageText);
Если у вас есть дескриптор диалога, ваш вызов будет выглядеть так:
SetDlgItemText(hDlg, IDC_PG, szPageText);
Поскольку это более старый код, он может быть скомпилирован для MBCS (часто называемой ANSI в документации Windows) или UTF-16 (часто называемой Unicode или «широкими» строками в MSDN), поэтому вы, вероятно, захотите использовать 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);
Других решений пока нет …