2017-06-12 20 views
1

WinCE 6.0デバイスをターゲットとしたC++コードを作成していて、アプリケーションのGUIを完成させるのに苦労しています。私が使用しなければならないVS 2005ウィンドウビルダは、このタスクを単純化するようには見えず、APIについていくつかの光を投げてくれるドキュメントを見つけることができます。MFCのC++ GUI - ページネーションウィジェット

私はウィジェットページに動的に書く必要があります。ユーザーはオン/総ページ数です。私はCTEXTは私がどのようにCTEXT(または任意の他の適切なウィジェット)に印刷するための正しい方法を見つけるように見えるいけないが、何か良いアドバイスを事前に感謝を

CTEXT   IDC_PG, 168,183,63,63 

を使用する正しいウィジェットです期待しています。

+3

CTEXTが[シンプル中心にテキストボックス]である(https://msdn.microsoft.com /en-us/library/windows/desktop/aa380915(v=vs.85).aspx)、リストボックスではありません。 – ZDF

+0

正しい、質問からのタイプミスを削除する、ありがとう – dram

答えて

1

質問を正しく理解している場合は、「ページx of n」という形式のUIに少しのテキストを表示する必要があります。これには静的テキストコントロール(CTEXTなど)が適しています。

プログラムでテキストを設定するには、SetWindowTextを呼び出すことができますが、これはダイアログ上にあるのでSetDlgItemTextを呼び出す方が簡単でしょう。

例では、識別子はIDC_PGであり、ダイアログのすべてのコントロール間で一意の数値定数に対応する必要があります。ダイアログ(私はmyDialogと仮定します)のMFCオブジェクトと、表示するゼロ終了テキストへのポインタ(szPageTextと仮定します)を呼び出すと、あなたの呼び出しは次のようになります:

あなただけのダイアログへのハンドルを持っている場合は
myDialog.SetDlgItemText(IDC_PG, szPageText); 

は、あなたの呼び出しは次のようになります。

SetDlgItemText(hDlg, IDC_PG, szPageText); 

これは古いコードであるので、それはMBCS用にコンパイルされる可能性があります(多くの場合、WindowsのドキュメントにANSIと呼ばれる)、または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); 
+0

非常に有益なアドバイス、アドリアンありがとう。 – dram

関連する問題