我想在一个RichEdit的类里拦截WM_PAINT消息,应该做哪些步骤?在MessageMAP里写了,然后定义了响应函数,还有什么,比如BeginPaint和EndPaint?
还需要调用什么函数?不太懂

解决方案 »

  1.   

    ::PreTranslateMessage()中判断:   if( pMsg->message == WM_PAINT )
       {
           //Do my own code here:
       }
      

  2.   

    subclass试下吧,应该可以。
      

  3.   

    思路是RichEdit可以通过PreTranslateMessage()来发送单击消息,步骤:
    1.因为RichEdit控件为OLE对象,需要对OLE初始化,才能正确使用,在InitInstance()下一定对OLE进行初始化。即:
    BOOL CRichTextApp::InitInstance()
    {
     AfxEnableControlContainer();
     AfxInitRichEdit(   );   //加入此句,顺序在上面也可以的
     .....................
    }
    2.定义PreTranslateMessage()函数,其内容如下:
    BOOL CButtonDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class  if( pMsg->message == WM_PAINT)//鼠标单击事件
       {
            HWND hWnd = ::GetFocus(); //取得获得焦点的控件ID
    int iID = ::GetDlgCtrlID(hWnd);
                                         if(iID == IDC_RICHEDIT3);//IDC_RICHEDIT3是
                                                  对话框中RichEdit控件的ID号
    {
    MessageBox("fsad");
    }
    } return CDialog::PreTranslateMessage(pMsg);
    }