哇.好多问题啊.

qq230825277 2005-07-22 11:19:20
问题一.

我在一个dialog上面放置了一个picture的控件.我要在这个控件的范围那画一些图片.
在每次画图之前我要把上一次的图片给清理掉.

操作一.用GetDlgItem(ID_PIC)->Invalidate();来使区域重绘.但是没有反应.

操作二.用GetDlgItem(ID_PIC)->SendMessage(WM_PAINT);来让那个控件区域重绘也不行.

但是通过GetDlgItem(ID_PIC)->ShowWindow()来先隐藏再显示,那么原来的图就没有.

为什么我上面的两个操作不能实现区域的重绘.?

问题二.
SubclassDlgItem()有什么用,可以解释一下么?

问题三.
我在对话框上加了richedit的控件后,dialog就运行不起来了,就是没有窗口.why?

问题四.
我的操作系统是英文的,在mfc向导生成的dialog,在它的上面放置中文的static text
显示乱码,如何解决?


谢谢.分数不够可以再给哈.
...全文
69 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq230825277 2005-07-23
  • 打赏
  • 举报
回复
还有.在窗口隐藏-显示这样一个过程会发送什么消息?

xie
qq230825277 2005-07-23
  • 打赏
  • 举报
回复
恩.我第一个的目的是让被图片画过的窗口为空.呵呵.
调用Invalidate()后它会发送一个WM_PAINT的消息.
而且会查处background;
而在那个控件的区域内.默认的擦除背景何重绘应该会把早些时候贴上去的那个图给搞没了啊.

handsomerun 2005-07-22
  • 打赏
  • 举报
回复
问题四不懂
没用过英文操作系统,估计原因是没有中文字库,所以…………
handsomerun 2005-07-22
  • 打赏
  • 举报
回复
问题一
GetDlgItem(ID_PIC)->Invalidate();
只是使你的窗口无效
并没有重画,

你还要把重画的代码加上
handsomerun 2005-07-22
  • 打赏
  • 举报
回复
第二个问题
SubclassDlgItem作用是子类话,使一个控件和你的一个控件对象attach
比如你有个Button的控件,iD是IDC_BUTTON1
那么
你可以
CButton m_myButton;
m_myButton.SubclassDlgItem(IDC_BUTTON1, this);

那么这个m_myButton就是你这个控件的CButton型的变量,和你用向导做的一样
CodeKey 2005-07-22
  • 打赏
  • 举报
回复
问题确实不少,呵呵

1) (按照你的说) a)Invalidate不是清屏函数, b)在控件的OnPaint中 是否有相关变量,画的图是否与之有关,如果就只有固定的语句,无论怎样都没有变化

2)关联

3)需要初始化
InitInstance()
{
......
AfxInitRichEdit( );
.........
}
4)没用过e文的系统,估计系统本身需要支持中文才行
handsomerun 2005-07-22
  • 打赏
  • 举报
回复
先回答一个最简单的
问题三
用richedit。
要先调用
BOOL AFXAPI AfxInitRichEdit( );

这个函数

你在app的InitInstance 调用AfxInitRichEdit();就可以了

还有,用richedit
在stdAfx.h中要加入#include <afxcmn.h>
如果没有就要加上

15,979

社区成员

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

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