我在一个项目中写了一个超级简单的ATL对话框。 即使当我注意到Web上的每个示例都实现了CDialogImpl类的内联(也就是类定义和它在定义本身中的实现)时,我通常会写它,将.h文件中的定义和.cpp文件。 这个课程总结如下:
CMainDialog.hpp
class CMainDialog: public CDialogImpl<CMainDialog> { public: enum { IDD = IDD_MYDIALOGS_DIALOG}; BEGIN_MSG_MAP(CMainDialog) MESSAGE_HANDLER(WM_INITDIALOG,OnInitDialog) COMMAND_ID_HANDLER(IDCANCEL,OnCancel) END_MSG_MAP() CMainDialog(); ~CMainDialog(); LRESULT OnInitDialog(UINT uMsg,WParaM wParam,LParaM lParam,BOOL& bHandled); LRESULT OnCancel(UINT uMsg,WORD wID,HWND hWndCtl,BOOL& bHandled); }
CMainDialog.cpp
CMainDialog::CMainDialog() { } CMainDialog::~CMainDialog() { } LRESULT CMainDialog::OnInitDialog(UINT uMsg,BOOL& bHandled) { } LRESULT CMainDialog::OnCancel(UINT uMsg,BOOL& bHandled) { }
如果我从同一个项目调用这个类,一切都很顺利。 对话框显示。 例:
调用DoModal
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPTSTR lpCmdLine,_In_ int nCmdshow) { UNREFERENCED_ParaMETER(hPrevInstance); UNREFERENCED_ParaMETER(lpCmdLine); CMainDialog dialog; dialog.DoModal(); return 0; }
所以我将这个项目从.exe转换为static library并删除_tWinMain。 所以,如果我创build一个新的ATL项目,引用我新创build的库,并调用CMainDialog.DoModal …好吧,没有任何反应。 构造函数确实被调用,但消息从不开始调度,并且程序以中介结束。 也许我错过了什么?
我完全是新的Win32编程(虽然绝对不是新的C ++),所以任何帮助,将不胜感激。
如何扩展CAxHostwindow?
什么是WTL CIdleHandler的正确使用?
为TypeLib注册调用CComModule.RegisterServer,_atlcomModule.RegisterServer和LoadTypeLibEx有什么区别?
为什么我的非所有者绘制的列表框在添加string之后有绘图问题?
以编程方式创buildWindows Media Player的基本播放
Windows消息循环混淆
为什么从我的OncopyData返回TRUE时可能触发一个断点?
将dword的void *表示转换为wstring
ATL或C#的Windowsshell/名称空间扩展?
静态库没有与之关联的资源。 对话框代码很可能试图从程序资源加载对话框模板,但找不到它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。