描述:
怎样用ATL做一个基于对话框资源的DLL?它能处理自已对话框的消息!
解决方案1:
class CMyDialog : public CDialogImpl<CMyDialog>
{
BEGIN_MSG_MAP( CMyDialog )
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_ID_HANDLER(IDOK, OnOk)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
END_MSG_MAP()
public:
CMyDialog();
~CMyDialog();
enum{ IDD = IDD_DLGSUBCLASS };
public:
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// TODO : Add Code for message handler. Call DefWindowProc if necessary.
pm.SubclassWindow( GetDlgItem( IDC_EDITSUBCLASS ) );
return 0;
}
LRESULT OnOk( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
EndDialog( wID );
return 0;
}
LRESULT OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
EndDialog( wID );
return 0;
}
CNoNumEdit pm;
};
添加ATL控件,使用复合控件就成了(vc.net),之后在资源里就会出现你要设计的对话框了.
解决方案3: 没什么问题吧,
可以在message map 里面加上 REFLECT_NOTIFICATIONS()这一句。
在映射里要加上:
BEGIN_MSG_MAP(CEditCardDlg)
COMMAND_ID_HANDLER(IDOK, OnOK)
END_MSG_MAP()
use CAxDialog
http://community.csdn.net/Expert/topic/3623/3623902.xml?temp=.5093805