社区
界面
帖子详情
MFC界面白屏
weixin_38882698
2019-01-14 03:24:52
。。在一个子对话框的全屏界面多次刷新调用onpaint函数,结果不仅子对话框白屏,其他的对话框也出现白屏情况。跪求各位大神帮帮我。
...全文
1291
20
打赏
收藏
MFC界面白屏
。。在一个子对话框的全屏界面多次刷新调用onpaint函数,结果不仅子对话框白屏,其他的对话框也出现白屏情况。跪求各位大神帮帮我。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
b43ok
2019-02-19
打赏
举报
回复
典型的GDI泄露问题,检查一下各种画界面的句柄有没有释放
DeleteObject、ReleaseDC、DeleteDC
C++实习生
2019-02-19
打赏
举报
回复
检查windowproc的返回值。默认的消息被屏蔽了吗?
zh359780498
2019-02-18
打赏
举报
回复
那么多LoadBitmaps ,但是没看到在哪里释放,应该是GDI一直在创建,未释放。Windows程序一个进程中GDI上限好像是9999吧,到这这个数界面就没法显示了
CT8100
2019-02-12
打赏
举报
回复
CPaintDC dc(this);
这个dc需要释放吧
cqzj70
2019-02-08
打赏
举报
回复
WM_ERASEBKEGND
牧童吃五谷
2019-01-30
打赏
举报
回复
引用 6 楼 schlafenhamster 的回复:
OnPaint 中 GDI 句柄泄漏 ?
应该是这个问题吧!你自己通过任务管理器“详细信息”中把"GDI对象“这一列显示出来,如果达到9999就是问题了
還是
2019-01-30
打赏
举报
回复
只留一个控件,其他全删掉。再调试看看
零隐
2019-01-30
打赏
举报
回复
你可以看下onsize函数,因为你对话框不但变白而且布局也变了。还有除了redawwindow,估计其他地方用了另一种刷新。
likfeng
2019-01-30
打赏
举报
回复
最后加上CDialogEx::OnPaint();试试
赵4老师
2019-01-24
打赏
举报
回复
检查是否资源泄漏的办法之一:
在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象
让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏!
搜“GDI泄露检测”
shen_wei
2019-01-22
打赏
举报
回复
m_addzerobutton.LoadBitmaps(IDB_zidongjialingdown);
图片加载放到初始化中。。。避免每次刷新都加载!!!
zgl7903
2019-01-14
打赏
举报
回复
把 CPaintDC dc(this) 后面的代码屏蔽了 还会出现白屏么?
schlafenhamster
2019-01-14
打赏
举报
回复
1 所有 .LoadBitmaps 放 初始化中
2 习惯用redrawWindow来更新界面 ,坏习惯 ! 用 Invalidate() !
weixin_38882698
2019-01-14
打赏
举报
回复
void CMhsuper::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
// CDC* pdc = pwnd->GetDC();
float iWidth = GetSystemMetrics(SM_CXSCREEN);
float iHeight = GetSystemMetrics(SM_CYSCREEN);
float biwidht = iWidth / 1920;
float biheight = iHeight / 1080;
//CBrush hBrush = CreateSolidBrush(RGB(206, 217, 237));
CBrush brush2(RGB(206, 217, 237));
CRect rect(0, 80* biheight, 2000, 2000); //
dc.FillRect(&rect, &brush2);
CBrush brush3(RGB(130, 167, 209));
CRect rect2(0, 0, 2000, 80* biheight); //
dc.FillRect(&rect2, &brush3);
if (m_addzero == 1)
{
m_addzerobutton.LoadBitmaps(IDB_zidongjialingdown);
m_addzerobutton.SizeToContent();
}
else
{
m_addzerobutton.LoadBitmaps(IDB_zidongjialingup);
m_addzerobutton.SizeToContent();
}
if (sendflag == 0)
{
m_phonemodern.LoadBitmaps(IDB_allscrphonemodern);
m_phonemodern.SizeToContent();
}
else
{
m_phonemodern.LoadBitmaps(IDB_allscrguhuamodern);
m_phonemodern.SizeToContent();
}
m_nextpagetwo.LoadBitmaps(IDB_nextpageup, AFX_IDS_FONT_PPG);
m_nextpagetwo.SizeToContent();
m_lastpagetwo.LoadBitmaps(IDB_shangyiyeupup, IDB_shangyiyedown);
m_lastpagetwo.SizeToContent();
m_dianhuamodern.LoadBitmaps(IDB_guhuamoshi2up, IDB_guhuamoderndown);
m_dianhuamodern.SizeToContent();
m_add0modern.LoadBitmaps(IDB_guhuaadd0up, IDB_guhuaADD0odown);
m_add0modern.SizeToContent();
m_qunfa.LoadBitmaps(IDB_zaiciqunfaup, IDB_zaiciqunfadown);
m_qunfa.SizeToContent();
m_allmsg.LoadBitmaps(IDB_allmsgup, IDB_suoyouduanxindown);
m_allmsg.SizeToContent();
brush2.DeleteObject();
brush3.DeleteObject();
}
这是有问题的界面的onpaint函数
schlafenhamster
2019-01-14
打赏
举报
回复
OnPaint 中 GDI 句柄泄漏 ?
weixin_38882698
2019-01-14
打赏
举报
回复
各种更新控件显示的方法我都试过了,我刚做MFC两个月,有些细节的地方不是很明白。。我整个工程中都习惯用redrawWindow来更新界面。还有另一个全屏的界面就没问题,也不存在白屏的情况。
weixin_38882698
2019-01-14
打赏
举报
回复
一开始不白屏,
这是全屏的对话框。我一直alt+tab 切换界面也会导致这种白屏的问题,一旦这个界面出现白屏,主界面也加载不出来了
schlafenhamster
2019-01-14
打赏
举报
回复
对话框白屏 ?
一开始 白屏 不 ? 多久后 白屏 ?
worldy
2019-01-14
打赏
举报
回复
不要直接调用OnPaint,OnPaint只能在WM_PAINT事件里调用
weixin_38882698
2019-01-14
打赏
举报
回复
MFC
加载
界面
背景图中间有白色背景闪的问题
如果是一般闪图的问题可以用双缓冲就行了,我碰到的情况可能有点特殊,他局限于启动程序的时候会看到一个
白屏
切换的过程。现在我描述一下: 新建一个
MFC
程序,在onpain()函数里画一幅图,然后大家用断点跟踪到CPaintDC dc(this); // device context for painting这句代码就会发现窗体在屏幕上刷出来了,这时没有画图,这个就是我们自己
如何学习
mfc
mfc
就是Microsoft Foundation Classes微软基础类库的简称,用于开发windows软件的,很多人学习了c或是c++之后,要准备放弃黑
白屏
的字符的程序,准备开发拥有窗口
界面
的程序,那么是使用c语言还是c++,或者说使用SDK还是使用
MFC
进行开发的问题,摆在了大家面前,另外,应该如何学习
MFC
的问题,也摆在了面前,因为
MFC
底层相当复杂,而且相对隐蔽,我们学起来,常常摸不着
使用socket实现基于select模型的网络聊天室
假期闲来无事,便写了个小小的网络聊天室程序。以前一直都是写
MFC
的有
界面
的程序,时间长了,便失去了兴趣,感觉有些东西经过
MFC
的封装,反而失去了意义,让人学不到东西,所以,丢开
MFC
那层的东西,直接使用socket来实现,要知道直接在黑
白屏
下实现有
界面
的那种效果,难度还是有的,喜欢挑战自我,是我的个性。 网络程序,有一些I/O模型的,阻塞的,就是你什么也不做的,就是直接开始写的recv...
Duilib调用CEF3封装的控件,14001和显示的时候
白屏
最近研究CEF遇到两个很奇怪的问题:1、调用dll总是显示14001错误;2、CEF
白屏
。 第一个问题场景:把CEF3作为控件封装到一个静态库里面去,运行的时候是需要另外一个动态库调用封装好的cef控件,然后一个exe调用动态库,调用的时候总是loadlibrary失败,GetLastError为14001。 该问题出现的原因是cef两个关键的库,其中一个libcef_dll_wrapper.lib是一个静态库,当我用静态库加载静态库的时候,实际只是把链接加载进去了,实际调用的时候又需...
qt designer
界面
设计填坑之路 一
前言公司有个项目要实现一个对话框 在 背景
界面
上移动的动态效果,因为以前的一个相似的项目是用
MFC
写的 ,但是没有做动态效果,自己试验了两天,在
MFC
下做
界面
动态,简直是坑人,感觉只要是动的就不能绕过 闪烁、
白屏
、之类的问题。搞了两天没解决问题,果断放弃,决心用QT重写一个。发现在QT下写这个也有坑,只是好填一些,决心记录下来,让以后不至于重蹈覆辙,于是就有了这篇文章。qt designer 确实是
界面
15,979
社区成员
115,897
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章