пользовательский интерфейс — C ++ GUI в MFC — виджет разбиения на страницы

Я пишу код на C ++, нацеленный на устройство WinCE 6.0, и мне трудно дорабатывать GUI для моего приложения. Конструктор окон VS 2005, который я должен использовать, похоже, не упрощает эту задачу, и я не могу найти документацию, которая проливает свет на API, надеюсь, кто-нибудь здесь сможет.

Мне нужно динамически писать на странице виджета пользователя на / общее количество страниц. Я ожидаю, что CTEXT правильный виджет для использования

CTEXT           IDC_PG, 168,183,63,63

Однако я не могу найти правильный способ печати на CTEXT (или любом другом подходящем виджете). Заранее благодарен за любые полезные советы.

1

Решение

Если я правильно понимаю вопрос, вы хотите отобразить немного текста в вашем пользовательском интерфейсе в форме «Страница 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);
1

Другие решения

Других решений пока нет …