WEB开发网
开发学院软件开发VC 在MFC工程中添加ATL 阅读

在MFC工程中添加ATL

 2006-07-22 11:45:14 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 ATL初学者,很希望和大家多交流,在MFC工程中添加ATL,多谢!说明:1.新建一个基于对话框的project:(MFC_in_ATL)2.Insert/New ATL Object...,此时出现如图对话框:点击yes,如下图:接着Next,如下图:确定即可,其中,CsimpleDi

本文示例源代码或素材下载

ATL初学者,很希望和大家多交流,多谢!

说明:

1.新建一个基于对话框的project:(MFC_in_ATL)

2.Insert/New ATL Object...,

此时出现如图对话框:

点击yes,如下图:

接着Next,如下图:

确定即可。

注:在出现第一个图所示的对话框时,有可能出现如下图所示的情况:

按确定,不要管它,然后再Insert/New ATL Object...,就可以了,这是个bug。

3.我们是使用“ATL对话框向导”添加对话框的,从CaxDialogImpl派生的,它既可以继承ActiveX控件也可以继承Windows控件。如果不希望对话框类中有ActiveX控件支持开销,可以手工修改为CSimpleDialog或CDialogImpl。其中,CsimpleDialog派生类只能为有模式对话框存在,CDialogImpl允许实现继承Windows控件的有模式或无模式对话框。

4.在ATLDlg.h中添加代码:

public  BSTR b1;
LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
  CMFC_in_ATLDlg *maindlg;
  char ms[50];
  maindlg=(CMFC_in_ATLDlg *)AfxGetMainWnd();
  GetDlgItemText(IDC_EDIT_ATL,b1);
  CString str(b1 == NULL ? L"" : b1);
  maindlg->AddStr(str);
  sprintf(ms,"%s",str);
  maindlg->PostMessage(WM_TEST,(WPARAM)ms,NULL);
  //EndDialog(wID);
  return 0;
}

5.在MFC_in_ATLDlg.h中添加一个函数AddStr(const CString &str)和自定义消息函数

afx_msg void OnGetMessage(WPARAM wParam,LPARAM lParam);

在MFC_in_ATLDlg.cpp中代码如下:

void CMFC_in_ATLDlg::OnOK()
{
     // TODO: Add extra validation here
     CATLDlg atldlg;
     atldlg.DoModal();
//    CDialog::OnOK();
}
void CMFC_in_ATLDlg::AddStr(const CString &str)
{
     SetDlgItemText(IDC_EDIT_MFC,str);
}
void CMFC_in_ATLDlg::OnGetMessage(WPARAM wParam,LPARAM lParam)
{
     CString str;
     str=(char *)wParam;
     SetWindowText(str);
}

6.运行结果

(全文完)

Tags:MFC 工程 添加

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