MyView:public CFormView我自定义了一个formview视,在上面放了个CTabctrl控见,属性页上放了CMSFLEXGRID控见我想让其在窗口改变大小时充满视图。但Movewindow放在onpaint里闪烁得很严重我想放在ondraw里,但自定义视图在初始化时没有默认执行ondraw这是为什么???
而系统默认的视图初始化时自动执行了ondraw?请问各位,要如何做才能避免闪烁???
而系统默认的视图初始化时自动执行了ondraw?请问各位,要如何做才能避免闪烁???
解决方案 »
- 【80分求助】MFC对话框程序,添加工具条的问题
- 紧急求助,自绘combo后响应SELCHANG如何做
- VS2008关于动态链接库一个很奇怪的操作问题
- 如何让程序在每天的某一事件执行一些功能
- 为什么VS2005中没有了DirectX功能?
- 我有raw SOCKET和多线程的编程经验,需要编写一个对应用程序透明的C/S加密解密程序,哪位大侠有好的建议?
- 打印求助:更改纸张方向后,如何刷新打印预览页????
- 出现Link错误?
- 请教一个按钮动态效果的问题?
- 各位,怎样解决runtime error ?!!
- 读文件的问题
- 新手,求教!做了一个.chm的帮助,请问我怎么在VC的工程里打开它,实现点击帮助菜单就可打开这个文件
Movewindow放在onpaint?
为了避免闪烁,应该在OnDraw/OnPaint中使用双缓冲。你不需要映射WM_PAINT,直接在OnDraw中写代码就行了。(MFC已经为你映射了WM_PAINT,对于CFormView并直接调用了OnDraw)
系统默认的视图初始化时自动执行了ondraw,执行OnDraw中的代码与系统初始化无关,它是在窗口需要重绘时执行。
请您帮帮忙吧。我立刻放分。
在OnSize里用MoveWindow(...)
{
CRect rect;
this->GetWindowRect(&rect);
this->ScreenToClient(&rect);
rect.OffsetRect(2,2);
m_Tab.MoveWindow(&rect);
CRect rect1;
m_Tab.GetClientRect(&rect1);
rect1.top=rect1.top+20;
m_page1->MoveWindow(&rect1);
m_page2->MoveWindow(&rect1); m_page3->MoveWindow(&rect1);
}请各位老大看一下该怎么该。
楼上得兄台,您有源代码吗?
为什么我在debug方式下,在onsize里使用movewindow出现系统错误,而release下面正常?
在FormView的OnSize里面将TabControl充满客户区然后从CTabControl继承一个,同样处理OnSize,将各个页面的控件也使用MOVEWINDOW来充满TabControl客户区,
兄台如果肯帮忙200分,全给您。
你必须加上这句话:
if( m_tabCtrl.GetSafeHwnd() )
{
GetClientRect(..);
m_tabCtrl.MoveWindow(...)
}
实在不行,你分别拷贝一下CFormView的OnSize的声明,映射,和定义就可以了
如果你不想继承,那么可以试试这样
if( m_tabCtrl.GetSafeHwnd() )
{
GetClientRect(..);
m_tabCtrl.MoveWindow(...);
m_tabCtrl.GetClientRect(.. );
if ( m_page.GetSafeHwnd() )
{
m_page.MoveWindow(.. )
}
}
应该不会闪的
http://community.csdn.net/Expert/topic/4252/4252046.xml?temp=.4188196