Chinaunix首页 | 论坛 | 博客
  • 博客访问: 166434
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-26 00:58
文章分类
文章存档

2014年(2)

2013年(41)

我的朋友

分类: C/C++

2013-03-11 19:32:00

很多时候书上只是直接告诉我们添加一个类或者添加一个变量,但为什么我们却不得而知,下面我把我的理解写下
 
比如控件A是一个视频播放控件,控件B是一个EDIT编辑框
 
A有很多功能,比如播放,暂停and so on
 
先说A,可以添加一个播放类类,内部的实现你看不到,但是你可以使用里面的函数,因为在dll文件里面已经包好了,只要动态连接上就可以。
你需要在主函数中创建一个播放类,因为这个类不是系统提供的,所以必须先建立一个类,这时候也进行了dll的导入,然后再主方法中使用这个类 A  PLAYER,就可以建立一个对象
 
而B,如果你需要使用B 的所以功能你也需要这样,但是B是系统类,所以你可以直接添加这个类的变量,然后很多时候我们发现我们还可以添加不是Class B 的对象关联变量,比如添加一个字符串。
其实A和B都是WNDCLASS,所以,可以使用WNDCLASS的函数,假设你需要使用的函数只有这个变量作为参数你当然可以不添加对象,而是通过GetItemDlg或者其他函数获取它的句柄就可以了。
 
那么如何把一个控件和一个变量建立联系呢?个人感觉其实也是通过GetItemDlg之类的东西,你添加变量后,系统会有
DDX_Text(pDX, IDC_PORT, m_uPort);类似的话,通过指定ID,在初始化的时候直接调用GetDlgItem,将控件的句柄保存在对象中,然后调用这个类的一些拓展函数。
 
如果是这样,如果是类似A那样的,添加类然后添加对象,或者是B中直接添加控件对象的方法还有用,类似B中关联一个字符串或者一个int short有什么用呢?又是如何进行关联的呢?
这个问题没想通,因为我发现所以这种关联都不是很有必要,比如B关联一个字符串,
DDX_Text(pDX, IDC_SHOWTEXT, m_sShowText);
GetDlgItem(IDC_SHOWTEXT)->SetWindowText(m_sShowText);
这样我可以随意输出一个字符串。比如
GetDlgItem(IDC_SHOWTEXT)->SetWindowText(TEXT("hello"));
所以这个问题标记下,等我遇到使用的比较有意义的时候我在告诉大家。
 
这里也许就是一个占位,因为B需要保存一些数据,也就是说,关键在于需要这个字符串,通过标记告诉大家,这个字符串是这个控件专用,相当于一个注释,没什么别的用了。
 
其实,不添加变量也可以这样
CEdit *output;
output=(CEdit *)GetDlgItem(IDC_SHOWTEXT);
这样省空间,同一个窗口内存中只有一个拷贝
 
但是控件A的话必须先添加类,不然没法转化
阅读(1264) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~