分类: C/C++
2008-08-01 16:56:21
说明:
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); }