如果有这样的函数BOOL CGameRoomEx::OnCommand(WPARAM wParam, LPARAM lParam)
{
}这是消息映射
BEGIN_MESSAGE_MAP(CGameRoomEx, CBaseRoom)
ON_MESSAGE(WM_SPLIT_WND,OnSplitMessage) //子类分割条
ON_MESSAGE(WM_DUIHUAN, OnDuiHuan)
ON_MESSAGE(WM_FINDDESKDLG, OnFindDesk) //手工找座
ON_MESSAGE(WM_SETDOWN, OnSetDown) //手工找座
ON_WM_PAINT()
ON_WM_SHOWWINDOW()
ON_MESSAGE(WM_HIT_EXPMESSTION,OnExpression)ON_MESSAGE(WM_RIGHT_MOUSE_HIT_DESK,OnRightHitDesk)
ON_BN_CLICKED(IDC_GAME_FACE, OnBnClickedGameFace)
ON_BN_CLICKED(IDC_FIND, OnFindNullDesk)
ON_BN_CLICKED(IDC_FINDPER, ShowFindUser)
ON_BN_CLICKED(IDC_TELL, OnTellWin)ON_BN_CLICKED(IDC_DESK_ALL, OnSelectDeskShowType)
ON_BN_CLICKED(IDC_DESK_FRIEND, OnSelectDeskShowType)
ON_BN_CLICKED(IDC_EDSK_FANT, OnSelectDeskShowType)
ON_BN_CLICKED(IDC_DESK_WAIT, OnSelectDeskShowType)ON_BN_CLICKED(IDC_SET, OnBnClickedRoomSet)
//ON_BN_CLICKED(IDC_ADDROOM, OnBnClickedRoomSet)
ON_BN_CLICKED(IDC_OTHER, OnGreenChannel)
ON_BN_CLICKED(IDC_EXCHANGE, OnExChange)
ON_BN_CLICKED(IDC_ROOM_SET, OnBnClickedRoomSet)
ON_BN_CLICKED(IDC_HIDE_RIGHT, OnBnClickedHideRight)
ON_NOTIFY(NM_RCLICK, IDC_USER_LIST, OnNMRclickUserList)
ON_NOTIFY(NM_DBLCLK, IDC_USER_LIST, OnNMDblclkUserList)
ON_NOTIFY(NM_RCLICK, IDC_USER_FRIEND, OnNMRclickUserListFriend)
ON_NOTIFY(NM_DBLCLK, IDC_USER_FRIEND, OnNMDblclkUserListFriend)
ON_WM_TIMER()
ON_WM_VSCROLL()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
请问哪个映射对应这个函数?
我觉得应该有ON_WM_COMMAND(),可是原代码没有,那这个函数杂执行呀,反正在本类中没有调用,使用查找也没找到在那调用。

解决方案 »

  1.   

    OnCommand是虚函数重载,不是消息影射函数。你定义了你的OnCommand,父类就会调用你的。虚函数重载不用解释吧。
      

  2.   

    如果是菜单,按钮等之类的控件,当你单击ITEM时,就应该被调用。。
    是在基类CWnd中被调用的。部分代码如下。
    BOOL CWnd::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
    {
    LRESULT lResult = 0;
    union MessageMapFunctions mmf;
    mmf.pfn = 0;
    CInternalGlobalLock winMsgLock;
    // special case for commands
    if (message == WM_COMMAND)
    {
    if (OnCommand(wParam, lParam))
    {
    lResult = 1;
    goto LReturnTrue;
    }
    return FALSE;
    }