?
#include <windows.h>
char szPrgm[] = "abc";
static HBRUSH MyBrush;
bool MakeWindowSmall(int iWidth, int iHeight)
{
HINSTANCE hInstance;
WNDCLASS wndWc;
wndWc.style = CS_OWNDC;
wndWc.lpfnWndProc = (WNDPROC) WndProc;
wndWc.cbClsExtra = 0;
wndWc.cbWndExtra = 0;
wndWc.hInstance = GetModuleHandle(NULL);
wndWc.hIcon = LoadIcon (GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_ICON));
wndWc.hCursor = LoadCursor (GetModuleHandle(NULL),MAKEINTRESOURCE(IDC_CURSOR));
wndWc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndWc.lpszMenuName = szPrgm;
wndWc.lpszClassName = szPrgm;
if (!RegisterClass(&wndWc)) return false;
int iSw = (WORD)GetSystemMetrics(SM_CXSCREEN); // width
int iSh = (WORD)GetSystemMetrics(SM_CYSCREEN); // height
RECT rc = { (iSw - iWidth)/2, (iSh - iHeight)/2, iWidth, iHeight };
hWnd = CreateWindow(szPrgm, TEXT("abc"),
WS_SYSMENU,
rc.left,rc.top, iWidth,iHeight,
NULL, NULL, GetModuleHandle(NULL), NULL);
ShowWindow(hWnd, SW_SHOW);
return (hWnd?true:false);
}
bool MakeWindowCompact(int iWidth, int iHeight)
{
HINSTANCE hInstance;
::HWND__* hWnds;
WNDCLASS wndWc;
wndWc.style = CS_OWNDC;
wndWc.lpfnWndProc = (WNDPROC) WndProc;
wndWc.cbClsExtra = 0;
wndWc.cbWndExtra = 0;
wndWc.hInstance = GetModuleHandle(NULL);
wndWc.hIcon = ::LoadCursor(NULL, IDC_ARROW);
wndWc.hCursor = ::LoadIcon(NULL, IDI_APPLICATION);
wndWc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndWc.lpszMenuName = NULL;
wndWc.lpszClassName = szPrgm;
if (!RegisterClass(&wndWc)) return false;
int iSw = (WORD)GetSystemMetrics(SM_CXSCREEN); // width
int iSh = (WORD)GetSystemMetrics(SM_CYSCREEN); // height
RECT rc = { (iSw - iWidth)/2, (iSh - iHeight)/2, iWidth, iHeight };
hWnds = CreateWindow(szPrgm, TEXT("Calculator 1.4"),
WS_SYSMENU,
rc.left,rc.top, iWidth,iHeight,
NULL, NULL, GetModuleHandle(NULL), NULL);
ShowWindow(hWnds, SW_SHOW);
return (hWnds?true:false);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, \
LPSTR lpCmdLine, int nCmdShow)
{
if( !MakeWindowSmall(200,250))
return -1;
MSG mMsg;
while (1)
{
if(PeekMessage(&mMsg, 0, 0, 0, PM_REMOVE))
{
if(mMsg.message == WM_QUIT)
{
break;
}
TranslateMessage(&mMsg);
DispatchMessage(&mMsg);
}
}
DestroyWindow(hWnd);
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
HMENU hMenu;
switch(uMessage)
{
case WM_CREATE:
return 0;
case WM_COMMAND:
hMenu = GetMenu(hWnd);
switch( LOWORD (wParam))
{
case IDM_WM_small:
{
MakeWindowSmall(200,250);
break;
}
case IDM_WM_compact:
{
MakeWindowCompact(200,450);
break;
}
case IDM_WM_EXIT:
{
PostQuitMessage(0);
return 0;
}
case WM_DESTROY:
{
DeleteObject(MyBrush);
PostQuitMessage (0);
return 0;
}
}
return DefWindowProc(hWnd,uMessage,wParam,lParam);
}
LRESULT CALLBACK WndProc(HWND hWnds, UINT uMessage, WPARAM wParam, LPARAM lParam)
{
HMENU hMenu;
switch(uMessage)
{
case WM_CREATE:
return 0;
case WM_COMMAND:
hMenu = GetMenu(hWnds);
switch( LOWORD (wParam))
{
case IDM_WM_small:
{
MakeWindowSmall(200,250);
break;
}
case IDM_WM_compact:
{
MakeWindowCompact(200,450);
break;
}
case IDM_WM_EXIT:
{
PostQuitMessage(0);
return 0;
}
case WM_DESTROY:
{
DeleteObject(MyBrush);
PostQuitMessage (0);
return 0;
}
}
return DefWindowProc(hWnds,uMessage,wParam,lParam);
}
nun sollte er ja beim menüauswählen ein neues fenster öffnen, das macht er aber nicht
*kann sein das ich was kleines vergessen habe aber meine version läuft