⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_36194.htm

📁 vc
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:林建华 回复日期:2003-04-14 18:51:45
<br>内容:当程序运行的时候,调用刷新窗口的命令有可能延时,特别是跑一个很占cpu的程序,可能会导致界面不刷新,如果不考虑效率的话,可能在你很占cpu的程序代码循环中添加这样的话来刷新窗口<BR>//开始时添加<BR>&nbsp;&nbsp;&nbsp;&nbsp;MSG pMsg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pMsg.hwnd = this-&gt;m_hWnd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pMsg.lParam = pMsg.wParam = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pMsg.message = WM_PAINT;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pMsg.time = 0;<BR>。。。。。<BR>//在循环中添加<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PeekMessage(&amp;pMsg, NULL, 0, 0, PM_REMOVE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TranslateMessage(&amp;pMsg);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage(&amp;pMsg);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凌仕晓 回复日期:2003-04-14 22:02:47
<br>内容:要不谁做一个简单的用位图作背景的对话框,上面放两三个控件,传上来,我看看有没有这种现象.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syosinsya 回复日期:2003-04-16 08:45:19
<br>内容:同病相怜呵。是OnPaint()在作祟。很麻烦呦。<BR>土办法:作一定时器(OnTimer(),比如0.5秒)其中加入如下代码(DlgActive是自己定义的char型变量。因把认为不必要的东西删掉了,可能把有用的东西也删掉了)<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(GetForegroundWindow()-&gt;GetSafeHwnd() != this-&gt;m_hWnd)&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GUITHREADINFO&nbsp;&nbsp;&nbsp;&nbsp;info;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info.cbSize = sizeof(GUITHREADINFO);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InvalidateFlag = TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(GetGUIThreadInfo(NULL, &amp;info))&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(info.flags &amp; GUI_INMOVESIZE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DlgActive = 'y';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(DlgActive == 'y')&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invalidate();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DlgActive = 'n';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetTimer(nIDEvent, 5, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(DlgActive != 'N')&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DlgActive = 'N';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invalidate();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetTimer(nIDEvent, 500, NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>其中的GUITHREADINFO及对应函数有点麻烦,要求WINVER&gt;=0x500,即Windows2000以上的版本。如果你的OS是Windows2000以上的版本,可以在StdAfx.h中#define&nbsp;&nbsp;WINVER&nbsp;&nbsp; 0x500<BR>另外,在OnMove()中还要做些工作,下面是我的代码,其中的882,1100是BMP的大小,仅供参考(MoveFlag为自定义的char型)。<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;&nbsp;&nbsp;&nbsp;MoveFlag == 'N')&nbsp;&nbsp;&nbsp;&nbsp;// Not process move message<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CRect SysRect;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;&nbsp;&nbsp;&nbsp;hWnd = ::GetDesktopWindow();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;FromHandle(hWnd)-&gt;GetWindowRect(&amp;SysRect);&nbsp;&nbsp;&nbsp;&nbsp;// Get system window size<BR>&nbsp;&nbsp;&nbsp;&nbsp;if((y + 822) &gt; SysRect.bottom || x &lt;= 0 || (x + 1100) &gt; SysRect.right)&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invalidate();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MoveFlag = 'n';<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else if(MoveFlag == 'n')&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invalidate();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MoveFlag = 'Y';<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凌仕晓 回复日期:2003-04-16 16:59:53
<br>内容:老兄,还是不行,现象差不多,要不你做个简单的对话框给我看看,为这个问题都烦了,分还是给你吧,谢谢!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:思考者 回复日期:2003-04-16 21:46:28
<br>内容:我知道,不管是位图好,还是其他,一次,我想改变对话框的背景色。也是在OnPain()中去实现,出现了一个现象,也就是你拖着这个窗口这么晃几下,背景色就把其上面的按钮之类的覆盖掉了,但你一点按钮,按钮的样子就出来了。和上面仁兄所说的情况一样。<BR>&nbsp;&nbsp; 但我在BOOL CPOPDlg::OnEraseBkgnd(CDC* pDC) 中解决了问题,<BR><BR>今天我也换了个位图,试了一阵,首先是拉着我们写的这个对话框窗口本身,无论你怎么晃。背景是背景,控件是控件,没有出现覆盖问题。<BR>然后,是用别的窗口在它前面晃了许久。也没有问题。<BR><BR>在其中有慢慢的拖动,也有快速的拖动。以为和对话框大小有关。但我把对话框改得很小或是很大,都没有问题。不信的话,那我也没有办法了。我支持小年。<BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凌仕晓 回复日期:2003-04-16 22:15:17
<br>内容:哈,好了,原来那段代码只加在 OnEraseBkgnd(),而不能加在OnPaint()里,我开始加在OnPaint()里,听小年一说,就又在OnEraseBkgnd()里加了,结果还是一样,经 thinker 提醒,就把OnPaint()里的那部分去掉了,只留OnEraseBkgnd()里的,结果好得很.看来是小年说得对,我开始理解错了,谢谢小年,谢谢大家.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syosinsya 回复日期:2003-04-17 08:15:47
<br>内容:能否请教一下各位老兄,如果是基于对话框的程序该怎么办?我发现里面怎么没有WM_ERASEBKGRND呀。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jifubang 回复日期:2003-04-17 09:12:25
<br>内容:有个 OnEraseBkgnd <BR>可是会造成死循环的
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jifubang 回复日期:2003-04-17 10:31:54
<br>内容:this-&gt;OnInitDialog();//不基于html的对话框类的话用上这个就行了<BR>CButton *g=new CButton();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g-&gt;Create(_T("变量1"),WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,CRect(10,10,100,30),this,111);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syosinsya 回复日期:2003-04-17 19:27:19
<br>内容:谢谢。但不知this-&gt;OnInitDialog();放在什么地方正确<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:西北狼 回复日期:2003-04-17 20:55:26
<br>内容:我的VC的对话框怎么没有afx_msg BOOL OnEraseBkgnd( CDC* pDC );<BR><BR>消息函数呀?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jifubang 回复日期:2003-04-18 08:46:21
<br>内容:没有OnInitDialog()的话,添加个OnInitDialog()<BR>就是这东西<BR>BOOL CiccDlg::OnInitDialog()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDialog::OnInitDialog();<BR>............<BR>我是用vs.net,建立基于cdhtmldialog类的对话框时,有重绘的问题,可建立基于cdialog类的对话框时,在按钮消息处理函数下,创建n个按钮都没有重绘的问题。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -