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?