2017-06-12 1 views
1

J'écris du code C++, en ciblant le périphérique WinCE 6.0 et j'ai du mal à finaliser l'interface graphique pour mon application. Le constructeur de fenêtres VS 2005 que je dois utiliser ne semble pas simplifier cette tâche et je ne trouve pas de documentation qui puisse éclairer l'API, j'espère que quelqu'un ici peut le faire.GUI C++ dans MFC - widget Pagination

Je dois écrire de manière dynamique sur la page de l'utilisateur de la page de widgets/sur le nombre total de pages. Je pense CTEXT est un widget correct d'utiliser

CTEXT   IDC_PG, 168,183,63,63 

Cependant, je ne semblent trouver correctement comment imprimer sur CTEXT (ou tout autre widget de approprié) Merci à l'avance pour les bons conseils.

+3

CTEXT est une [zone de texte centré sur simple] (https://msdn.microsoft.com /en-us/library/windows/desktop/aa380915(v=vs.85).aspx), pas une liste-boîte. – ZDF

+0

correct, je supprime la faute de frappe de la question, merci – dram

Répondre

1

Si je comprends bien la question, vous voulez afficher un peu de texte sur votre interface utilisateur du formulaire "Page x de n". Un contrôle de texte statique (comme CTEXT) est approprié pour cela.

Pour définir le texte par programmation, vous pouvez appeler SetWindowText, mais comme il s'agit d'une boîte de dialogue, il est probablement plus facile d'appeler SetDlgItemText. De votre exemple, l'identificateur est IDC_PG et doit correspondre à une constante numérique unique parmi tous les contrôles de la boîte de dialogue. En supposant que vous avez un objet MFC pour la boîte de dialogue (que je suppose est myDialog) et un pointeur vers le texte à zéro terminé que vous voulez afficher (ce que je suppose est szPageText), votre appel ressemblerait à:

myDialog.SetDlgItemText(IDC_PG, szPageText); 

Si vous avez juste une poignée de la boîte de dialogue, votre appel ressemblerait à ceci:

SetDlgItemText(hDlg, IDC_PG, szPageText); 

Depuis ce code est plus ancien, il peut être compilé pour MBCS (souvent appelés ANSI dans la documentation Windows) ou UTF-16 (souvent appelé chaînes Unicode ou "wide" dans MSDN), vous devez donc probablement utiliser le TCHAR et les macros associées pour vous assurer que cela fonctionne dans les deux sens.

TCHAR szPageText[64] = TEXT(""); 
wsprintf(szPageText, TEXT("Page %d of %d"), currentPage, totalPages); 
myDialog.SetDlgItemText(IDC_PG, szPageText); 

Dans le code plus moderne, vous auriez probablement utiliser explicitement les grandes versions des API:

WCHAR szPageText[64] = L""; 
::wsprintfW(szPageText, L"Page %d of %d", currentPage, totalPages); 
myDialog.SetDlgItemTextW(IDC_PG, szPageText); 
+0

merci Adrian, poste très instructif et utile. – dram