频道栏目
读书频道 > 软件开发 > C++ > Visual C++入门很简单
2.控件关联变量类型
2013-08-22 14:02:17     我来说两句
收藏   我要投稿

本文所属图书 > Visual C++入门很简单

本书介绍Visual C++的函数调用形式、面向对象编程、MFC工作原理、开发软件流程及一些实用开发技巧。全书共15章,分为4篇。第1篇介绍Visual C++开发环境、C++语法基础及MFC运行机制;第2篇介绍利用Visual Stud...  立即去当当网订购

同时还要为显示位图的静态控件关联一个对象,它的创建过程跟按钮的一样,读者可参考。按钮的变量类型只有一种Control,而静态控件关联的变量有两种类型:Control、Value。重点是它们的区别,先看如图5.20 所示的为静态控件添加变量的向导。

注意:它的ID号必须要改为其他名字。

 

(1 )Control

如果要给静态控件关联Control型的变量,只有一种类型:CStatic 。这种类型是用来响应CStatic 类的各种成员函数的。变量名设为ShowPic ,单击“完成”按钮即可。

(2 )Value

静态控件还可以关联另一种类型的变量,即Value。而Value 这种类型又有很多种类型数据,如图5.21 所示。

 

图中最左边的“变量类型”就是Value类别下的静态控件可被定义的不同数据类型。

读者可根据项目要求自行选择,这里只是改变文本显示内容,所以选择CString用来改变静态控件的显示内容。

上面步骤完成好后,编写具体内容。代码5-3 为各种所用变量和函数的声明。

代码5-3  静态控件应用示例:Fif_Solu2Dlg.h
01  class CFif_Solu2Dlg : public CDialog
02 {
03  …
04 public:
05    afx_msg void Stn_ShowPic();  //响应静态控件函数
06 public:
07   // 显示图片区
08   CStatic ShowPic;     //静态控件类对象
09   HBITMAP hBitmap;     //位图对象
10 public:
11   CString brand;      //是否显示图片标志量
12   int count;       //按了几下
13 };

第08行是关联显示位图的静态控件CStatic 变量,第09行是位图对象的定义,第11行是关联文本的静态控件CString变量,第 12行用来计算到底单击了多少次静态控件。代码5-4 是成员变量的应用和成员函数的具体定义。

代码5-4  静态控件应用示例:Fif_Solu2Dlg.cpp
01  …
02 CFif_Solu2Dlg::CFif_Solu2Dlg(CWnd
*
 pParent /
*
=NULL
*
/)
03    : CDialog(CFif_Solu2Dlg::IDD, pParent)
04   , brand(_T(""))
05 {
06   m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
07   brand = _T("显示图片");      //静态控件CString变量初始化
08   count = 0;         //标志量初始化
09 }
10 
11 void CFif_Solu2Dlg::DoDataExchange(CDataExchange
*
 pDX)
12 {
13   CDialog::DoDataExchange(pDX);
14   DDX_Control(pDX, IDC_ShowPic, ShowPic); //静态变量与控件数据关联
15   DDX_Text(pDX, IDC_Pic, brand);    // 标志量与控件关联
16 }
17 
18 BEGIN_MESSAGE_MAP(CFif_Solu2Dlg, CDialog)
19   ON_WM_SYSCOMMAND()
20   ON_WM_PAINT()
21   ON_WM_QUERYDRAGICON()
22   //}}AFX_MSG_MAP
23   ON_STN_CLICKED(IDC_Pic, &CFif_Solu2Dlg::Stn_ShowPic)//消息映射宏
24 END_MESSAGE_MAP()
25 
26 BOOL CFif_Solu2Dlg::OnInitDialog()
27 {
28  …
29   // TODO: 在此添加额外的初始化代码
30   hBitmap = LoadBitmapW(AfxGetApp()->m_hInstance,
(LPCWSTR)IDB_BITMAP1);//赋31  值位图资源
32   ShowPic.ModifyStyle(0, SS_BITMAP | SS_CENTERIMAGE); //这句非常重要,
33  让静态控件可以关联图像
34    return TRUE;  // 除非将焦点设置到控件,否则返回TRUE
35 }
36  …
37 void CFif_Solu2Dlg::Stn_ShowPic()
38 {
39   // TODO: 在此添加控件通知处理程序代码
40  count ++;        //计数
41  if((count % 2) == 0)     //如果是双数次单击静态控件
42   {
43   brand = _T("显示图片");
44   ShowPic.ShowWindow(false);   //隐藏控件
45   }
46  else         //单数次
47   {
48   brand = _T("隐藏图片");
49   ShowPic.SetBitmap(hBitmap);   //与静态文本框关联
50   ShowPic.ShowWindow(true);   //显示控件
51   }
52   GetDlgItem(IDC_Pic)->SetWindowText(brand);
            //将当前控件的变量值实时显示
53 }

第07~08行是对变量的初始化,第14~15行是进行数据实时交互,将静态控件与关联的变量捆绑起来。第 23行是控件响应函数的消息映射宏,第 52行是用SetWindowText()函数改变静态控件的内容。

提示:最重要的是第32行,没有这一行代码,控件上是不会显示出位图的。它的作用是向控件的样式中添加显示位图这一项功能并且使位图居中。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:5.3.3 响应控件的消息
下一篇:5.3.4 调试并展示效果图
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站