идея такая нужно при нажатии кнопки взять текст из combobox и поместить в edit и вывести сообщение в виде модального окна, компилится без ошибок и запускается программа но при нажатии кнопки выводится только модальное окно в edit ничего не появляется, что я делаю не так, я использую g++ (i686-win32-dwarf-rev0, Built by MinGW-W64 project) 8.1.0
#include <windows.h>
#include <windowsx.h>
#include <CommCtrl.h>
#define BUTTON_ID 1025
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
HWND hwnd_combobox,
hwnd_edit,
hwnd_button;
LPCSTR arr[] = {"строка 1", "строка 2", "строка 3"};
LPSTR value;
switch (uMsg) {
case WM_CREATE:
hwnd_combobox = CreateWindowEx(
0, "COMBOBOX", "",
CBS_DROPDOWN | WS_VSCROLL | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE,
0, 0,
200, 200,
hwnd,
NULL,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
NULL);
//заполняем поля
for(auto s : arr)
ComboBox_AddString(hwnd_combobox, s);
hwnd_button = CreateWindow(
"button", "ok",
WS_VISIBLE | WS_CHILD,
0, 50, 100, 40,
hwnd,
(HMENU)BUTTON_ID,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
NULL);
hwnd_edit = CreateWindow(
"edit", "",
WS_VISIBLE | WS_CHILD | WS_BORDER,
0, 90, 300, 200,
hwnd,
NULL,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
NULL);
break;
case WM_COMMAND:
switch (wParam){
case BUTTON_ID:
GetWindowText((HWND) lParam, value, 3);
SetWindowText(hwnd_edit, value);
MessageBox(NULL, "OK","OK", MB_OK);
break;
case CBN_SELCHANGE:
GetWindowText((HWND) lParam, value, 3);
SetWindowText(hwnd_edit, value);
MessageBox(NULL, "OK","OK", MB_OK);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hMainWnd;
LPCSTR szClassName = "MyClass";
MSG msg;
WNDCLASSEX wc;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW ;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(nullptr, IDI_APPLICATION);
wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = nullptr;
wc.lpszClassName = szClassName;
wc.hIconSm = LoadIcon(nullptr, IDI_APPLICATION);
if (!RegisterClassEx(&wc)) return 0;
hMainWnd = CreateWindow(
szClassName,
"A Hello Application",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0,
400, 400,
(HWND)nullptr,
(HMENU)nullptr,
hInstance,
nullptr
);
if (!hMainWnd) return 0;
ShowWindow(hMainWnd, nCmdShow);
UpdateWindow(hMainWnd);
while (GetMessage(&msg, nullptr, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
нашел ответ сделал хендел комбокс статический
static HWND hwnd_combobox,
hwnd_edit,
hwnd_button;
и изменил обработку нажатии кнопки следующим образом
case BUTTON_ID:
char str[255];
ComboBox_GetLBText(hwnd_combobox, ComboBox_GetCurSel(hwnd_combobox), str);
SetWindowText(hwnd_edit, str);
MessageBox(NULL, "OK","OK", MB_OK);
break;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В проекте VS пробую передать значение, которые получил из C# в функцию JS через a href почему-то выходит "Заполнить", вместо значения value="1"Новичок...