Win32: Como criar um controle ListBox usando a função CreateWindowExW ()?

Eu já passei por vários sites, documentos e tutoriais e todos dizem o mesmo, ou seja, qualquer controle nada mais é do que uma janela na API do Win32, portanto, é possível usar oCreateWindowExW() para criar umaListBox controle / janela sobre a janela principal do aplicativo.

Embora eu entenda os conceitos de todos os controles como janelas com diferentesdwStyle, Tenho dificuldade em descobrir como instanciar, por assim dizer, oListBox ao controle.

Encontrei um tutorial em que uma caixa de diálogo é escrita para ter umLISTBOX especificado na sua declaração da seguinte forma:

// 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

E usá-lo em seu programa C da seguinte maneira:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc);
}

Agora, isso eu sou capaz de fazer e entender completamente os conceitos. Além disso, gostaria de poder criar e projetar minha janela principal do aplicativo para adicionar umListBox controle para. Este exemplo de tutorial não usa oCreateWindowExW() Para criar o controle, em vez disso, ele cria uma caixa de diálogo que será realmente a janela principal do aplicativo.

1 -Qualquer pista sobre como adicionar umListBox controle para a janela principal no código?

Pensei em criá-lo enquanto lidava com oWM_CREATE mensagem.

2 -isso é uma boa ideia?

3 -Qual é a melhor prática / abordagem nesse cenário?

questionAnswers(2)

yourAnswerToTheQuestion