我程序有个弹出菜单,不管选中其某项还是不选中,菜单消失后,菜单原来遮住的那部分就会呈白色.这种情况怎么处理呢?程序相关内容:
(1)这个菜单是在CTreeView上面弹出的.
(2)由于软件使用了皮肤,所以弹出菜单采用TrackSkinPopupMenu.我现在怀疑跟以上两点有关系,就是不知道该怎么处理.因为一般弹出的菜单是不会存在重绘的问题的.
(1)这个菜单是在CTreeView上面弹出的.
(2)由于软件使用了皮肤,所以弹出菜单采用TrackSkinPopupMenu.我现在怀疑跟以上两点有关系,就是不知道该怎么处理.因为一般弹出的菜单是不会存在重绘的问题的.
解决方案 »
- 关于读取不定宽度的字符串,然后转为数字
- IE 开发
- VC对话框中 list box 怎么使用啊
- 我在一个CFrameWnd中建了两个CView,请问我在一个CView中怎么得到另一个CView的hWnd?
- VC中哪个工程是类似tc下写出来的程序,就是要有通过屏幕可以输入的。scanf()函数使用
- MDI 子窗体最大化问题
- 如何在文档类中定时?
- 程序启动文档建立失败——我要疯了
- please help me!hurry!hurry!我的程序报以下错误,难道就没人帮我一下吗?SqlDumpExceptionHander:Process 10 gengerated fatal exception c0000005
- 重载屏蔽属性
- 驱动安装程序的问题!急!!!
- 【急!!!求助!!!】一个软件 在别人电脑上能打开串口 到我这里如果想打开串口 应该修改一些什么东西?
如果在某菜单项的处理函数里面调用Invalidate是有效的,可以擦除空白.
如果不是点在菜单项上使菜单消失(点击菜单外面),这种情况在哪儿调用Invalidate呢?
做一个自定义消息调用Invalidate
LRESULT CLeftView::OnMM(WPARAM wParam,LPARAM lParam)
{
Invalidate();
UpdateWindow(); return 0;
}
请问一下,在TrackSkinPopupMenu之后直接调用Invalidate跟通过消息调用Invalidate有什么区别吗?
PostMessage会立即返回然后将一个消息送入队列
原消息函数会结束
然后可能会执行其它消息直到执行到PostMessage的消息才执行它
就是说直接调用Invalidate产生的消息不一定马上处理?是这个意思吧,但是后面接着调用UpdateWindow不是应该立即引发处理该消息了吗,难道不是这样的?我现在用消息的方式解决这个问题了,不同之处就是,给MainFrame自定义消息,然后由MainFrame调用LeftView的Invalidate...,这样就可以实现立即重绘. 真是奇怪,,用leftview自定义消息怎么就不行呢?