CWnd::OnSysCommand 是 MFC(Microsoft Foundation Classes)中 CWnd 类的一个受保护方法,用于处理窗口系统命令消息。当用户通过点击标题栏上的系统菜单、执行窗口最大化、最小化、还原等操作时,系统将发送 WM_SYSCOMMAND 消息,并调用这个方法。

以下是 OnSysCommand 方法的典型声明:
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

  •  nID 参数是 WM_SYSCOMMAND 消息的低16位,表示触发的系统命令。

  •  lParam 参数是 WM_SYSCOMMAND 消息的高16位,通常包含鼠标位置等信息。


在实际应用中,您可以重写这个方法以执行在系统命令消息发生时需要进行的自定义操作。例如:
void CYourWndClass::OnSysCommand(UINT nID, LPARAM lParam)
{
    // 执行系统命令消息时的自定义操作

    // 调用基类实现
    CWnd::OnSysCommand(nID, lParam);
}

在这个方法中,您可以根据 nID 参数的值,判断用户执行的具体系统命令,然后执行相应的操作。通常,nID 包含在 SC_ 常量中,例如 SC_MAXIMIZE、SC_MINIMIZE、SC_RESTORE 等。

为了使用这个方法,您需要在消息映射中添加对应的宏,例如:
BEGIN_MESSAGE_MAP(CYourWndClass, CWnd)
    // 其他消息映射...
    ON_WM_SYSCOMMAND()
END_MESSAGE_MAP()

这样,当系统命令消息发生时,OnSysCommand 方法就会被调用。


转载请注明出处:http://www.pingtaimeng.com/article/detail/23685/MFC/CWnd