-
Maximize
I want to make a window that contains only a minimize button, not a maximize button. And that works fine.
However, the system menu still contains the option "maximize", which is not good. I don't want to remove the system menu completely, only the maximize-item.
How?
-
Cant get rid of the box without removing sysmenu, but you can remove the WS_MAXIMIZEBOX style so the maximise option is greyed out. Is this what you want?
Code:
#include <windows.h>
#include <tchar.h>
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg, WPARAM wParam, LPARAM lParam){
switch(msg){
case WM_CLOSE:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int nShow){
TCHAR szWindowName[]= _T("Magos");
WNDCLASSEX wc= {0};
HWND hWnd;
MSG msg;
DWORD dwStyle;
wc.cbSize= sizeof(WNDCLASSEX);
wc.style= CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wc.lpfnWndProc= WndProc;
wc.hInstance= hInst;
wc.hIcon= LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor= LoadCursor(NULL,IDC_ARROW);
wc.lpszClassName= szWindowName;
wc.hbrBackground= CreateSolidBrush(RGB(255, 255, 255));
wc.hIconSm= LoadIcon(NULL, IDI_WINLOGO);
if(!RegisterClassEx(&wc))return EXIT_FAILURE;
dwStyle = WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX;
hWnd= CreateWindowEx(WS_EX_CLIENTEDGE | WS_EX_ACCEPTFILES,szWindowName,
szWindowName,dwStyle,CW_USEDEFAULT,CW_USEDEFAULT,
400,400,HWND_DESKTOP,NULL,hInst,NULL);
if(!hWnd) return EXIT_FAILURE;
ShowWindow(hWnd, nShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0) > 0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
-
Yes, I know how to disable the actual buttons.
But the option to maximize the window is still available in the system menu, as you can see in the picture:
(The language is in Swedish, but the Maximize item is the selected one)
http://war3pub.net/upload/files/maxwindow.jpg
-
Magos,
I never tried it but what about following:
Get the handle of the System menu by calling GetSystemMenu,hWnd, FALSE and modify it by counting up all the Items, scanning thru them for the Maximize one and remove it using RemoveMenu and it's ID ?
Happy Coding.
Jim
-
Weird....My XP-Box disables the Maximise in the sysmenu if I do what I discribed above....but on yours it doesnt seem to so???? :confused:
You can do what Jim discribed above. Also..If it helps..Add the following handler;
Code:
case WM_SYSCOMMAND:
if(wParam == SC_MAXIMIZE) return 0;
else DefWindowProc(hWnd, msg, wParam, lParam);
break;
And the window wont maximise at all....buttons or no buttons