4.5--如何给一个对话框加入预览区域?

来源:互联网 发布:人民日报数据库账号 编辑:程序博客网 时间:2024/04/30 07:20

      在对话框预览区域内动态的显示用户动作的结果可以使应用程序更加生动,更加吸引人,而且这样看起来也更加专业,具体的实现步骤如下代码:

第一步:在对话框里添加一个Picture控件以标示预览区域,将该控件的风格设置为"Frame 、Black、不选Visible"

第二步:用ClassWizard为Picture控件添加一个Control类型的变量m_DrawArea

CStatic m_DrawArea;

第三步:用ClassWizard为对话框添加一个WM_PAINT消息处理函数,该函数实现在预览区内绘画。

 

第四步:手工增加RedrawArea帮助函数来强制刷新区域,为了防止闪烁,该函数只刷新占位符区域,而不是整个对话框窗口,该函数实现如下:

 

第五步:当用户改变对话框内相关的数据时调用RedrawArea()函数,实现动态更新对话框的预览区域

 

如果要显示位图,使用与下面EkDrawBitmap()函数相似的代码:

 

 


 

CRect::DeflateRect

void DeflateRect( int x, int y );
void DeflateRect( SIZE size );
void DeflateRect( LPCRECT lpRect );
void DeflateRect( int l, int t, int r, int b );

参数:
x指定缩小CRect的左和右边的单位数。
y指定缩小CRect的上、下边的单位数。
size一个指定缩小CRect的单位数的SIZE或CSize。cx值指定缩小左、右边的单位数,cy指定缩小上、下边的单位数。
lpRect指向一个RECT结构或CRect,指定缩小每一边的单位数。
l指定缩小CRect左边的单位数。
t指定缩小CRect上边的单位数。
r指定缩小CRect右边的单位数。
b指定缩小CRect下边的单位数。

说明:
DeflateRect通过将CRect的边向其中心移动来缩小它。为了做到这一点,DeflateRect将单位数增加到矩形的左边和上边,从右边和下边减去单位数。DeflateRect的参数是有符号的值;正值缩小CRect,而负值则放大它。
前两个重载函数使CRect相对的两对边都缩小,因此CRect的总宽度减小了两倍x(或cx),总高度减小了两倍y(或cy)。其它两个重载函数使CRect的边相对独立的缩小。

 


UpdateWindow

  函数原型:
  BOOL UpdateWindow(HWND hWnd);
  描述:
  这个 UpdateWindow 函数通过发送重绘消息 WM_PAINT 给目标窗体来更新目标窗体客户区的无效区域。如果那个窗体的无效区域没有,就不发送重绘消息 WM_PAINT 了 。注意了,这个 API 函数是直接发送消息 WM_PAINT 给目标窗体的,没有进入过消息队列。
  函数参数:
  hWnd 一个要更新的窗体的句柄
  函数返回值:
  如果函数调用成功,返回值为非零值。
  如果函数调用不成功,返回值为零。
原创粉丝点击