求救!!!mfc Release下窗口OnCreate不调用,窗口不显示

Coder.Z 2015-12-14 06:20:31
首先遇到的第一个问题:
写了一个对话框,然后domodal.

CVFManagerDlg dlg;
INT_PTR nResponse = dlg.DoModal();

debug一切正常,功能都没有问题,但是release启动时,窗口出不来,但是用QQ截图工具或者Spy++可以看到其实创建了一个窗口在桌面上,大小尺寸和窗口属性都是对的,但是窗口透明(什么都没有)。
像这样:
spy++可以看到窗口有消息(spy++截取后变黑色)。
像这样:

第二个问题是:
在dll中使用了对话框,导出API,在exe中弹出该对话框。

INT_PTR SSPROTOCOL_API PopDlgGenerateProtocol(CInfo *pInfo)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CDlgGenerateProtocol dlg;
dlg.SetInfo(pInfo);
return dlg.DoModal();
}

出现和(1)一样的效果,窗口透明不能操作。
而当把
“AFX_MANAGE_STATE(AfxGetStaticModuleState());”移动到CDlgGenerateProtocol 的构造函数中后,对话框能够创建成功,但是窗口中的控件却透明不显示(欲哭无泪..)。

最后调试发现窗口的OnCreate函数没有调用,但是Create或者CreateEx函数都返回成功。。。。虽然spy++可以看到消息循环,但是在所有的消息函数中断点,log都不执行。

所有的问题都只在release中出现,debug中各种正常(再次欲哭无泪..)。

求教各位大神,这是什么原因,该怎么解决。
...全文
1321 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-12-15
  • 打赏
  • 举报
回复
参考 C:\MyMusicPlayer\程序说明.txt
/*************************************************************************************************/
/*关于程序:
/*	大学期间花时间最多的一个程序了,大约从11年11月开始写起,到寒假前实现了基本的播放功能
/*	12年大三下学期开始后,又加上了一点小功能(歌词模块),改正了几处BUG。
/*使用说明:
/*	如果有相应的歌词文件(后缀名为lrc哦),请复制到程序的Lyrics文件夹下,程序将会自动读取
/*	快捷键:
/*		Ctrl + Alt + L :锁定\解锁歌词面板 	切换
/*		Ctrl + Alt + P :暂停\播放 		切换
/*		Ctrl + Alt + H :显示\隐藏歌词面板 	切换
/*		Ctrl + Alt + C :截屏
/*		Ctrl + Alt + →:播放下一曲
/*		Ctrl + Alt + ←:播放上一曲
/*		Ctrl + ↑      :增大音量
/*		Ctrl + ↓      :减小音量
/*后注:
/*	由于能力有限,BUG出现很难避免,欢迎反馈。
/*      如果你有更好的解决方案,欢迎分享。
/*	联系邮件:Jelinyao@163.com
/*author:Jelin
/*time  :2012-5-6 22:40
/*************************************************************************************************/
	

Yofoo 2015-12-15
  • 打赏
  • 举报
回复
dll中使用MFC窗体比较容易出现问题, 多数情况是MFC的模块没有初始化, 比如 AfxInitialize AfxWinInit AfxSetResourceHandle 加上这些试试看, 另外release也可以调试的, 虽然不是很方便, 也可以在一些关键的地方加上日志, 看看返回值, 确认函数的调用是否成功

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧