#winapi #resize #window #height
#winapi #изменение размера #окно #высота
Вопрос:
Как изменить размер глобальной переменной hwnd во время выполнения при нажатии кнопки?
Или просто любой способ изменить размер окна во время выполнения. т.Е.
HWND hwnd; //global
int buttonid = 250; // an id for a button
//also global
int WINAPI wWinMain(/*blah blah blah */) {
//blah blah blah
hwnd = CreateWindowEx(
0,
L"WindowClass",
L"Window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
300, 275,
NULL,
NULL,
hInstance,
NULL
);
HWND mybutton = CreateWindow(
L"BUTTON",
L"Button",
WS_VISIBLE | WS_CHILD | WS_TABSTOP,
14, 13,
250, 200,
hwnd,
(HMENU)buttonid,
hInstance,
NULL
);
//blah blah blah
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lparam) {
switch(uMsg) {
case WM_COMMAND:
if(buttonid==wParam) {
//this is where i want the code for resizing hwnd so when you click the
//button it resizes the window
}
}
}
Ответ №1:
MoveWindow
или SetWindowPos
(хотя последнее более полезно, если вы хотите сделать больше, чем просто изменить его размер).
В обоих случаях вы можете указать не только положение верхнего левого угла, но также и положение нижнего правого угла, поэтому, если вы оставите верхний левый угол как есть и переместите нижний правый, вы измените размер окна, не «перемещая» его.
Ответ №2:
SetWindowPos(yourhwnd,0,0,0,newWidth,newHeight,SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);
Или, если вы хотите перемещать и изменять размер, вы можете использовать старую функцию MoveWindow