WEB开发网
开发学院软件开发VC 在MFC中集成RAD .NET框架 阅读

在MFC中集成RAD .NET框架

 2007-06-21 21:36:15 来源:WEB开发网   
核心提示: NET控件的消息处理一般而言,控件的对话框消息处理是一个极为关键的问题,在MFC中集成RAD .NET框架(5),在网上能找到的MFC中宿主控件的解决方法中,均没有实现.NET控件的对话框消息处理,我们重载了CUserCtrlView的PreTranslateMessage函数:BOOL

NET控件的消息处理

一般而言,控件的对话框消息处理是一个极为关键的问题,在网上能找到的MFC中宿主控件的解决方法中,均没有实现.NET控件的对话框消息处理,一个明显的特征是不能处理“Tab”键消息。为此,我们重载了CUserCtrlView的PreTranslateMessage函数:

BOOL CUserCtrlView::PreTranslateMessage(MSG *pMsg)
{
  BOOL bRet = FALSE;
  if(m_Control.pUnkControl != NULL)
  {
    CComQIPtr<IOleInPlaceActiveObject>
      spInPlace(m_Control.pUnkControl);
    if(spInPlace)
      bRet =(S_OK == spInPlace->
        TranslateAccelerator(pMsg)) ?
          TRUE : FALSE;
  }
  if(CView::PreTranslateMessage(pMsg))
    return TRUE;
  CFrameWnd *pFrameWnd = GetTopLevelFrame();
  if(pFrameWnd != NULL
  && pFrameWnd->m_bHelpMode)
    return FALSE;
  // start with first parent frame
  pFrameWnd = GetParentFrame();
  while(pFrameWnd != NULL)
  {
    if(pFrameWnd->PreTranslateMessage(pMsg))
      return TRUE;
    pFrameWnd = pFrameWnd->GetParentFrame();
  }
  return bRet;
}

这样可以使得CUserCtrlView可以正确的处理.NET Control的对话框消息。

回归RAD世界

接下来我们看看如何在工程中插入一个.NET用户自定义控件。我们增加一个新的托管类testControl,代码如下:

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:MFC 集成 RAD

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接