我的界面显示的问题

就呆在云上 2013-06-05 03:53:48
代码:
void CMFCApplication1View::OnFileOpen()
{
// TODO: Add your command handler code here
TCHAR szFilters[]= _T("MyType Files (*.c)|*.c|All Files (*.*)|*.*||");

// Create an Open dialog; the default file name extension is ".my".
CFileDialog fileDlg(TRUE, _T("c"), _T("*.c"),
OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);

// Display the file dialog. When user clicks OK, fileDlg.DoModal()
// returns IDOK.
if(fileDlg.DoModal() != IDOK)
{
return;
}
else
{
CString pathName = fileDlg.GetPathName();

// Implement opening and reading file in here.

//Change the window's title to the opened file's title.
CString fileName = fileDlg.GetFileTitle();

SetWindowText(fileName);
}


for(int i = 0; i<1000000; i++)
TRACE("i = %d", i);
}


代码很简单,我就是做了一个file dialog打开文件,然后我点击文件打开之后就显示有瑕疵了。
没有点击打开前是这样的:

点击打开后,程序就进入了for循环。就变成这样了:

中间多了一个杠,也就是file dialog留下来的一片显示。

有什么办法解决么?谢谢了。我这个for循环仅仅是模拟一个实际的场景:读取文件,一行行的解析,文件内容多的时候,就是上面的样子了。。。
...全文
238 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-07-05
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
schlafenhamster 2013-06-05
  • 打赏
  • 举报
回复
“点击打开后,程序进入for循环前,RedrawWindow()”
  • 打赏
  • 举报
回复
MSG msg; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); }; 把上门代码写到for循环中试试
yaozhiyong110 2013-06-05
  • 打赏
  • 举报
回复
引用 8 楼 ztz0223 的回复:
[quote=引用 6 楼 dahaiI0 的回复:] for循环之后UpdateAllView试试,或者Invalidate。如果循环耗时太久还是得放到子线程里
for循环之后就ok了,不用做无效操作的,也是ok的,估计是卡for上面了[/quote] 你怎么还不明白 就一个线程 全在执行你的for 界面不更新才正常 你for里面执行久点 不仅仅是 界面残留了前一对话框的图像 你看下你卡的时候界面还会响应你任何操作不...
就呆在云上 2013-06-05
  • 打赏
  • 举报
回复
引用 6 楼 dahaiI0 的回复:
for循环之后UpdateAllView试试,或者Invalidate。如果循环耗时太久还是得放到子线程里
for循环之后就ok了,不用做无效操作的,也是ok的,估计是卡for上面了
就呆在云上 2013-06-05
  • 打赏
  • 举报
回复
引用 5 楼 yaozhiyong110 的回复:
[quote=引用 4 楼 ztz0223 的回复:] [quote=引用 2 楼 yaozhiyong110 的回复:] for里代码那么慢 你把for里的代码新开一个线程去执行啊 别在主线程
你的意思是,这个代码结构无解的? 开新线程肯定是能解决的,不想太复杂的解决方案。。。[/quote] for去掉还卡吗? 你for在主线程里执行耗时那么长的操作 界面卡很正常 [/quote] for去掉肯定不卡的,呵呵,for次数少一点也没有问题的,for结束之后就不会有问题了。。。
dahaiI0 2013-06-05
  • 打赏
  • 举报
回复
for循环之后UpdateAllView试试,或者Invalidate。如果循环耗时太久还是得放到子线程里
yaozhiyong110 2013-06-05
  • 打赏
  • 举报
回复
引用 4 楼 ztz0223 的回复:
[quote=引用 2 楼 yaozhiyong110 的回复:] for里代码那么慢 你把for里的代码新开一个线程去执行啊 别在主线程
你的意思是,这个代码结构无解的? 开新线程肯定是能解决的,不想太复杂的解决方案。。。[/quote] for去掉还卡吗? 你for在主线程里执行耗时那么长的操作 界面卡很正常
就呆在云上 2013-06-05
  • 打赏
  • 举报
回复
引用 2 楼 yaozhiyong110 的回复:
for里代码那么慢 你把for里的代码新开一个线程去执行啊 别在主线程
你的意思是,这个代码结构无解的? 开新线程肯定是能解决的,不想太复杂的解决方案。。。
就呆在云上 2013-06-05
  • 打赏
  • 举报
回复
再来一个更夸张的。。
yaozhiyong110 2013-06-05
  • 打赏
  • 举报
回复
for里代码那么慢 你把for里的代码新开一个线程去执行啊 别在主线程
yaozhiyong110 2013-06-05
  • 打赏
  • 举报
回复
for执行太久 主界面刷新不过来

15,979

社区成员

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

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