私は複数のサイト、ドキュメント、チュートリアルを調べてきましたが、それらはすべて同じことを言っています。つまり、コントロールは Win32 の API のウィンドウにすぎないため、CreateWindowExW()
関数を使用ListBox
してメイン上にコントロール/ウィンドウを作成できます。アプリケーション ウィンドウ。
すべてのコントロールが異なるdwStyleを持つウィンドウであるという概念は理解できますが、コントロールをインスタンス化する方法、つまりコントロールの方法を見つけるのに苦労していますListBox
。
LISTBOX
次のように、ダイアログがその宣言で指定されているように記述されているチュートリアルに遭遇しました。
// resource.h
#define IDD_MAIN 101
#define IDC_TEXT 1000
#define IDC_NUMBER 1001
#define IDC_LIST 1002
#define IDC_ADD 1003
#define IDC_CLEAR 1004
#define IDC_REMOVE 1005
#define IDC_SHOWCOUNT 1006
// .rc resource file
IDD_MAIN DIALOG DISCARDABLE 0, 0, 207, 156
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Controls One"
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Add",IDC_STATIC,7,10,14,8
EDITTEXT IDC_TEXT,25,7,120,14,ES_AUTOHSCROLL
EDITTEXT IDC_NUMBER,150,7,21,14,ES_NUMBER
LTEXT "times.",IDC_STATIC,177,10,23,8
LISTBOX IDC_LIST,7,25,138,106,LBS_NOINTEGRALHEIGHT |
LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Add",IDC_ADD,150,30,50,14
PUSHBUTTON "&Remove",IDC_REMOVE,150,47,50,14
PUSHBUTTON "&Clear",IDC_CLEAR,150,63,50,14
LTEXT "This item was added",IDC_STATIC,7,141,66,8
CTEXT "-",IDC_SHOWCOUNT,77,141,32,8
LTEXT "times",IDC_STATIC,114,141,17,8
END
そして、彼の C プログラムで次のように使用します。
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc);
}
これで、概念を完全に理解できるようになりました。ListBox
余談ですが、コントロールを追加するメイン アプリケーション ウィンドウを作成および設計できるようにしたいと考えています。このチュートリアルの例では、CreateWindowExW()
関数を使用してコントロールを作成するのではなく、実際にメイン アプリケーション ウィンドウとなるダイアログを作成します。
1 -コードでメイン ウィンドウにコントロールを追加する方法についての手がかりはありますか?ListBox
WM_CREATEメッセージを処理しながら作成することを考えました。
2 -これは良い考えですか?
3 -このシナリオでのベスト プラクティス/アプローチは何ですか?