C语言的switch(Msg)

switch(Msg)//处理消息过程{}这是不是在大括号内添加消息就行了。比如case WM_LBUTTONUP;MessageBox(hWnd,"你击了左键","提示",MB_OK);break;还有char *cName = "myWindow";WNDCLASSEX wc;HWND hWnd;MSG Msg;都是什么意思
2026年09月21日 11:59
有4个网友回答
网友(1):

WNDCLASSEX是一个包含窗体各种参数的结构体,例如窗口风格(是模态、非模态、有无系统菜单、有无边框等等),窗体实例句柄,窗体消息处理函数等等.
WNDCLASSEX在winuser.h中被定义
typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
而WNDCLASSEXW也在winuser.h中被定义为:
typedef struct _WNDCLASSEXW {
UINT cbSize;//WNDCLASSEX 的大小
UINT style;//窗口风格
WNDPROC lpfnWndProc;//窗体消息处理函数的指针
int cbClsExtra;//紧跟在窗口类结构后的附加字节数
int cbWndExtra;//跟在窗口实例后的附加字节数
HINSTANCE hInstance;//窗体实例句柄
HICON hIcon;//窗体图标句柄
HCURSOR hCursor;//光标句柄
HBRUSH hbrBackground;//背景画刷背景
LPCWSTR lpszMenuName;//菜单名的const wchar_t类型的指针
LPCWSTR lpszClassName;//类名的const wchar_t类型的指针
HICON hIconSm;//和窗口类关联的小图标
} WNDCLASSEXW, *LPWNDCLASSEXW, *PWNDCLASSEXW;

HWND是窗体的句柄类型
在windef.h中被定义
DECLARE_HANDLE(HWND);
而在winnt中有#define DECLARE_HANDLE(n) typedef HANDLE n
和#define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n

MSG是Windows消息的结构体,当产生消息时被推送到消息队列,等待处理,例如右击时会生成右击消息的MSG,消息会记录接收消息的窗体的句柄,和消息类型:WM_RBUTTONDOWN,消息产生时的鼠标的坐标,把消息投递到消息队列,Windows会把消息一条条地取出,根据接收者投递给它们的消息处理函数
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
witch (message)
{
...
}
}

MSG在winuser.h中被定义为
typedef struct tagMSG {
HWND hwnd;//接收消息的窗体的句柄
UINT message;//消息ID, 例如WM_CLOSE、WM_MOUSEMOVE
WPARAM wParam;//消息参数, 含义随message的不同而不同
LPARAM lParam;//消息参数, 含义随message的不同而不同
DWORD time;//消息投递到消息队列的时间
POINT pt;//产生消息时鼠标的坐标
} MSG,*LPMSG,*PMSG;

网友(2):

是的,switch里面添加消息就行了。
char *cName = "myWindow";//字符指针,指针指向的内存地址内容为myWindow
WNDCLASSEX wc;//创建一个WNDCLASSEX对象wc
HWND hWnd;//创建一个HWND对象hWnd
MSG Msg;//创建一个MSG对象Msg

网友(3):

Msg为传的参数. 只可为字符型和整型. case 接收传参值. 字符型用单引号,

网友(4):

参数 与参值