Code:
#include <windows.h>
#define IDI_ICON 101
#define IDC_LISTBOX_TEXT 200
const char ClassName[] = "MyWindowClass";
HWND hListBox;
LRESULT CALLBACK WndProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
char Buffer[256];
int index;
switch (Msg)
{
case WM_CREATE:
{
hListBox = CreateWindow(
"LISTBOX",
NULL,
WS_VISIBLE | WS_CHILD | LBS_STANDARD | LBS_NOTIFY,
10,
10,
100,
50,
hWnd,
(HMENU)IDC_LISTBOX_TEXT,
(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),
NULL);
SendMessage(GetDlgItem(hWnd, IDC_LISTBOX_TEXT), LB_ADDSTRING, 0, (LPARAM)"Bob");
SendMessage(GetDlgItem(hWnd, IDC_LISTBOX_TEXT), LB_ADDSTRING, 0, (LPARAM)"Joe");
SendMessage(GetDlgItem(hWnd, IDC_LISTBOX_TEXT), LB_ADDSTRING, 0, (LPARAM)"Theodore");
}
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_LISTBOX_TEXT:
{
switch(HIWORD(wParam))
{
case LBN_SELCHANGE:
{
index = SendMessage((HWND)lParam, LB_GETCARETINDEX, 0, 0);
SendMessage((HWND)lParam, LB_GETTEXT, (LPARAM)index, (WPARAM)Buffer);
SetWindowText(hWnd, Buffer);
}
}
}
break;
}
return 0;
}
break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, Msg, wParam, lParam));
}
return 0;
}
INT WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow )
{
HWND hWnd;
MSG Msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = ClassName;
if (!RegisterClassEx(&wc))
{
MessageBox(NULL, "Failed To Register The Window Class.", "Error", MB_OK | MB_ICONERROR);
return 0;
}
hWnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
ClassName,
"List Box Test",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
240,
120,
NULL,
NULL,
hInstance,
NULL);
if (!hWnd)
{
MessageBox(NULL, "Window Creation Failed.", "Error", MB_OK | MB_ICONERROR);
return 0;
}
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
while (GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}