case WM_KEYDOWN :
switch (wParam)
{
case VK_RETURN :
break;很奇怪, 在switch处下断点可以,而且都知道wParam的值了,然后按下F10或F11,就不走到case 处,而直接跳出来了?怎么回事?
switch (wParam)
{
case VK_RETURN :
break;很奇怪, 在switch处下断点可以,而且都知道wParam的值了,然后按下F10或F11,就不走到case 处,而直接跳出来了?怎么回事?
switch (wParam)
{
case VK_RETURN :
; //add new line here
break;
原因是下面的问题(再加100分):
我想按VK_ESCAPE退出全屏,
if (cyClient == GetSystemMetrics(SM_CYSCREEN))
这个判断没错,
但是当我随便点了一个按钮后,cyClient 就不等于GetSystemMetrics(SM_CYSCREEN)了,为什么?看看我的WM_COMMAND 里面也没什么啊,而且不点按钮可以退出啊!
case WM_LBUTTONDBLCLK :
SetWindowLong(hwnd, GWL_STYLE, WS_POPUP | WS_VISIBLE);
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
return 0;
case WM_KEYDOWN :
........
case VK_ESCAPE :
iiii=0; //add new line here
if (cyClient == GetSystemMetrics(SM_CYSCREEN))
{
SetWindowLong(hwnd, GWL_STYLE, WS_OVERLAPPEDWINDOW);
SetWindowPos(hwnd, HWND_TOPMOST, 98, 98, 900, 600, SWP_SHOWWINDOW);
SetForegroundWindow(hwnd);
ChangeDisplaySettings(NULL, 0);
}
break;这行代码通常没问题,即双击进入全屏幕,ESC退出。但随便点个按钮,就退出不了啦。
现在点不点按钮,debug都死机。
另外,如果你的窗口是TopMost且全屏状态,会把所有其它窗口都挡住,包括VC的窗口,所以调试时感觉像是死机了,但实际上没死,只是看不到VC窗口的变化,可以继续执行,也可以用Shift-F5结束调试。
别的变量也不用管,现在是只要点击主窗口上面随便一个button(子窗口)以后,调试按ESC就进不了WM_KEYDOWN!
如果在 WM_COMMAND里面加个断点,按ESC就能进WM_KEYDOWN!怪不怪?
哦,这个原因!多谢。
static cyClient在case WM_SIZE :里赋值。但只要不按按钮,这个程序工作的很好啊。
只要点击主窗口上面随便一个button(子窗口)以后,就好像不接收Key输入了,怪不怪?
这个和ESC无关。
因为我把if (cyClient == GetSystemMetrics(SM_CYSCREEN))这一行去了,也不行。
我把它放到VK_UP里面,也是一样。就是不接收键盘输入了。我的button就在主窗口上。点击button还有什么副作用?WM_COMMAND 也没什么啊》 case WM_COMMAND :
switch (LOWORD(wParam))
{
case IDM_ACTION_EXIT :
SendMessage(hwnd, WM_CLOSE, 0, 0); // exit hot key
break;
}
return 0;
case WM_COMMAND :
SetFocus(hwnd);不过老兄说说这种方法有什么不合理的后果呢?这贴分加不了多少了,我再另开一帖。
Windows程序设计大部分章节我读了2遍,3遍,看来要都5遍6遍啊。