Winapi中使用ListBox的非常简单的示例

Very simple example with Listbox in winapi

本文关键字:非常 简单 ListBox Winapi      更新时间:2023-10-16

如何在列表框中选择的消息框中显示?我尝试使用下一个代码,但仅显示空白邮件框

wchar_t listBoxStr[15];
HWND hWndList;
switch (message)
{
case WM_CREATE:
    hWndList = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("listbox"), "", WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOVSCROLL, 240, 40, 150, 20, hwnd, (HMENU)105, NULL, NULL);
    SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)"name");
    SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)"extension");
    SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)"date");
    SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM)"size");
    CreateWindowEx(NULL, TEXT("button"), TEXT("FIND"), WS_VISIBLE | WS_CHILD, 410, 40, 50, 20, hwnd, (HMENU)106, NULL, NULL);
    return 0 ;
    return 0 ;
case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case 106:
        SendMessageW(hWndList, LB_GETTEXT,0,(LPARAM)listBoxStr);
        MessageBoxW(NULL, listBoxStr, L"", NULL);
        return 0;
    }
    return 0;
case WM_PAINT:
    hdc = BeginPaint (hwnd, &ps);
    GetClientRect (hwnd, &rect) ;
    EndPaint (hwnd, &ps) ;
    return 0 ;
case WM_DESTROY:
    PostQuitMessage (0) ;
    return 0 ;
}

SendMessage的第一个参数应该是列表框句柄,而不是父窗口句柄。

通过定义

使hWndList静态
static HWND hWndList;

然后尝试一下

 -  SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM) L"name");
 -  SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM) L"extension");
 -  SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM) L"date");
 -  SendMessage(hWndList, LB_ADDSTRING, 0, (LPARAM) L"size");