gpt4 book ai didi

c - 执行break后切换大小写命令

转载 作者:行者123 更新时间:2023-11-30 15:32:38 25 4
gpt4 key购买 nike

我有一个 C Win32 程序

有一个消息处理函数,它具有 switch-case 语句来处理消息。

有一个现象让我感到惊讶......我会尝试用简单的语言来解释。

switch (Message)
{
case 0:
printf("Case 0 \n");
break;
case 1:
printf("Case 1 \n");
break;
printf("After Break Case 1 \n");
case 2:
switch( WHAT_SC(wParam) ) {
case 1:
case 2:
if (KEYBOARD_UNLOCKED()) {
defstatus = DefWindowProc(hWnd, iMessage, wParam, lParam);
}
break;
case 3:
if (bLockWindowSize) {
return (TRUE);
}
default:
defstatus = DefWindowProc(hWnd, iMessage, wParam, lParam);
break;
}
break;
HANDLE_MSG(hWnd, WM_COMMAND, Func_OC);
case 3:
printf("Case 3 \n");
break;
printf("After Break Case 3 \n");
default :
printf("default \n");
break;
printf("After Break default \n");
}

(以上代码只是伪代码)在某个时刻,中断后的命令会被执行。即

 HANDLE_MSG(hWnd, WM_COMMAND, Func_OC);

为什么/怎么会这样?

谢谢

最佳答案

问题已解决...

 HANDLE_MSG(hWnd, WM_COMMAND, Func_OC); 

由于以下原因在此处执行

HANDLE_MSG( 是一个宏。当我查看其定义时,我在 WindowsX.h 中看到以下代码

 #define HANDLE_MSG(hwnd, message, fn)    \
case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))

发生的情况是,switch case 中的宏 HANDLE_MSG 被 WindowxS.h 中的代码替换

这相当于另一种情况,因此执行时会返回结果。

感谢所有试图帮助我的人。

(Cup 和 dBase 值得特别感谢)

问候:( 一个无能的程序员

关于c - 执行break后切换大小写命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24134400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com