vc++工作笔记1

 
1)    透明位图按钮
在对话框上添加一个按钮,定义按钮的风格为BS_OWNERDRAW(自画风格),添加一个按钮类继承于CButton,重载虚函数virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);这个函数的作用就是在改变按钮。可以变成ICON,也可以变成位图,要想改变按钮的背景还必须执行消息WM_ ERASEBKGND的消息函数OnEraseBkgnd(CDC* pDC),在此函数设备内显示图片。
2)        嵌套窗体的实现
嵌套窗体可以使两个窗体分开来写各自的功能,然后把这两个窗体融合在第三个窗体内,可以使功能开发更加清晰。首先这两个窗体必需是第三个窗体的成员变量,即在第三个窗体类中定义这两个窗体类的成员,如
              CDialogue1 m_cDialogue1;
              CDialogue1 m_cDialogue2;
在初始化对话框时或着在你要添加窗体的函数中实现一下代码:
// 添加第一个窗体
       m_cDialogue1.Create(IDD_DIALOG1,this);// 创建窗体
m_cDialogue1.MoveWindow(nPosX1,nPosY1,nWidth,nHeight,TRUE); // 定位窗体
       m_cDialogue1.ShowWindow(SW_SHOW);// 显示窗体
 
// 添加第二个窗体
m_cDialogue2.Create(IDD_DIALOG2,this); // 创建窗体
m_cDialogue2.MoveWindow(nPosX2,nPosY2,nWidth,nHeight,TRUE); // 定位窗体
       m_cDialogue2.ShowWindow(SW_SHOW);// 显示窗体
即可实现嵌套窗体
3)   在对话框窗体上打印文字
在对话框窗体上显示文字,在实现WM_PAINT消息的OnPaint()函数中实现一下类似的代码:
       CClientDC dc1(this);/ 定义客户区域显示设备
       CFont mFont;// 定义一个类字体变量
       dc1.SetTextColor(crColor);// 设置字体的颜色
       dc1.SetBkMode(TRANSPARENT);// 设置显示文字的背景透明
       VERIFY(mFont.CreateFont(
            30, 30, 0, 0, FW_HEAVY, false, FALSE,
            0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,       
            CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,            
            DEFAULT_PITCH | FF_SWISS, "宋体")); // 创建字体的大小 30X30, 宋体,不是斜体
       CFont * pOldFont;
    pOldFont = dc1.SelectObject( &mFont );// 把文字载入设备
       dc1.TextOut(0,30,szNum);// 打印文字
       UpdateWindow();
在视频上不断的显示数字,视频会不断的更新窗体,导致最开始打印的在对话框上数字被视频更新,如何让视频上不断的显示数字,一个最简单的方法就是定义一个定时器把上述过程写在一个函数里,定时器不断地调用这个函数,但是这样也有缺点,就是当定时器很多时,定时器执行很多函数,导致这个过程变慢,字体在视频上显示就是不断闪烁,定时器内执行的程序很少时,就看不出来闪烁。
  4 )在视频上添加按钮
                     直接在视频中添加按钮,视频会不断的更新窗体,导致按钮会被更新的视频隐埋,如何在视频上一直显示按钮,人工实现控件的更新,如下代码:
                     CButton m_Button;// 定义一个按钮成员
                     m_Button.GetClientRect(rect);// 获得按钮的客户区域
                     m_Button.InvalidateRect(rect,true);// 更新按钮
但是执行一次的话,按钮还是会只出现一次,最简单的方法还是把此过程写在定时器中,不断的执行按钮更新,还是一样的问题如果定时器内执行的过程过多的话 , 按钮会出现闪烁的现象,所以不要在定时器里写太多的执行过程。
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值