首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

窗口的最小化和还原

2012-04-04 
请指教 窗口的最小化和还原我想通过q和z键实现窗口的最小化和还原,但最小化后,就还原不了,不知为什么,请指

请指教 窗口的最小化和还原
我想通过q和z键实现窗口的最小化和还原,但最小化后,就还原不了,不知为什么,请指教,代码如下:(注释部分我也试验过了,不好用)
#include "windows.h"

#define MAXPOINTS 1000
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppName[]=TEXT("Connect");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;

wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=szAppName;

if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("Program requires Windows NT!"),szAppName,MB_ICONERROR);
return 0;
}

hwnd=CreateWindow(szAppName,TEXT("connect"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_KEYDOWN:
switch(wParam)
{
case 'Z':
//PostMessage( hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0 );  
ShowWindow(hwnd, SW_SHOWMINIMIZED);
break;
case 'Q':
//SetFocus(hwnd);
//PostMessage( hwnd, WM_SYSCOMMAND, SC_RESTORE, 0 );  

ShowWindow(hwnd, SW_RESTORE);

break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);

}

[解决办法]
最小化后,窗口就失去焦点了,鼠标键盘的消息都不往你的窗口上发了,当然就接收不到。
要实现这样的效果,可以尝试全局快捷键,但是我没有做过

热点排行