Вход на сайт
Играюсь, вспоминаю 03.02.2025
47
Сегодня, 03:49
Всем привет!
Хотел бы поиграться в ListBox, вспомнить как данные из поле запихивать в ListBox.
1. Вот код main.c:
#include <windows.h> #define BTN_ADD 1000 HWND hwndButtonAdd; HWND hwndField; HWND hwndListBox; char *buf; LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); char szClassName[ ] = "uscheswoi_82_ListBoxDemo"; int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; MSG messages; WNDCLASSEX wincl; wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof(WNDCLASSEX); wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND; if(!RegisterClassEx(&wincl)) return 0; hwnd = CreateWindowEx( 0, szClassName, "Пример ListBox", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 320, 370, HWND_DESKTOP, NULL, hThisInstance, NULL ); ShowWindow(hwnd, nFunsterStil); while(GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_COMMAND: if(wParam == BTN_ADD) { if(GetWindowTextLength(hwndField) <= 2) { MessageBox(hwnd, "Ошибка, введите в поле текст", "Ошибка", MB_OK | MB_ICONEXCLAMATION); return; } buf = (char *)malloc(GetWindowTextLength(hwndField) + 1); GetWindowText(hwndField, buf, GetWindowTextLength(hwndField)); SendMessage(hwndListBox, LB_ADDSTRING, 0, (LPARAM)buf); SetWindowText(hwndField, ""); free(buf); } break; case WM_CREATE: hwndButtonAdd = CreateWindow("BUTTON", "&Добавить", WS_CHILD | WS_VISIBLE, 210, 10, 100, 20, hwnd, (HMENU)BTN_ADD, NULL, lParam); hwndField = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE, 10, 10, 190, 20, hwnd, NULL, NULL, lParam); hwndListBox = CreateWindowEx(WS_EX_CLIENTEDGE, "LISTBOX", "", WS_CHILD | WS_VISIBLE, 10, 40, 190, 300, hwnd, NULL, NULL, lParam); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }
2. Вуаля! А вот так работает:
Завтра подправлю код, а то последнюю букву съедает. Этот код я написал ещё вчера, т.е. позавчера 01.02.2025. А выложил только сегодня.
Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение