资料收集站

SDL

Wednesday
Dec 03rd
Text size
  • Increase font size
  • Default font size
  • Decrease font size

有一个控件(继承CWnd)在CRormView.可不可以将它的ID在ON_COMMAND消息中发出,如果用pCtrl->OnCommand(ID_VIEW_ZOOMIN,..), 编译器会报告参数不匹配,该怎么办?

1)为什么不用pCtrl->Post/SendMessage (WM_COMMAND, ID_VIEW_ZOOMIN)

2)通过重载CYourFormView::OnCmdMsg就可以.如:

BOOL CYourFormView::OnCmdMsg(UINT nID, int nCode, void* pExtra,

AFX_CMDHANDLERINFO* pHandlerInfo)


return pCtrl->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)

  || CFormView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);


3)使用WM_COMMAND消息,看一下关于WM_COMMAND和CWnd::PostMessage()的帮助.

DWORD wParam;

HIWORD(wParam) = wNotifyCode; // notification code

LOWORD(wParam) = ID_VIEW_ZOOMIN;

pCtrl->PostMessage(WM_COMMAND,(WPARAM)wParam, pCtrl->m_hWnd);

4)能够这样做,但不是象你们做法,你们必须得到控件的句柄或CWnd指针然后在句柄中使用::SendMessage() or ::PostMessage();在CWnd中使用 CWnd::SendMessage() or CWnd::PostMessage() 试一下这个.

CMyCtrl *pCtrl;

/* call GetDlgItem() from an instance of your form view */

pCtrl = ( CMyCtrl * )GetDlgItem( IDC_MYCONTROL );

if( pCtrl != NULL && ::IsWindow( pCtrl->GetSafeHwnd( ) )

pCtrl->SendMessage( WM_COMMAND, /*wParam*/, /*lParam*/ );

// see WM_COMMAND description on help/MSDN for a detailed explanation of

// {W|L}PARAM
Comments (0)Add Comment

Write comment

busy
 

Google 搜索

在线用户

We have 76 guests online