MFC 访问控件的几种方法

访问控件的方法 

  控件是一种交互的工具,应用程序需要通过某种方法来访问控件以对其进行查询和设置.访问控件有四种方法: 

  1.  利用对话框的数据交换功能访问控件.这种方法适用于自动创建的控件.先用ClassWizard为对话框类加入与控件对应的数据成员变量,然后在适当的时侯调用UpdateData,就可以实现对话框和控件的数据交换.这种方法只能交换数据,不能对控件进行全面的查询和设置,而且该方法不是针对某个控件,而是针对所有参与数据交换的控件.另外,对于新型的Win32控件,不能用ClassWizard创建数据成员变量.因此,该方法有较大的局限性. 
  2.  通过控件对象来访问控件.控件对象对控件进行了封装,它拥有功能齐全的成员函数,用来查询和设置控件的各种属性.通过控件对象来访问控件无疑是最能发挥控件功能的一种方法,但这要求程序必需创建控件对象并使该对象与某一控件相连.对于自动创建的控件,可利用ClassWizard方便地创建与控件对应的控件对象.对于手工创建的控件,因为控件本身就是通过控件对象创建的,所以不存在这一问题. 
  3.  利用CWnd类的一些用于管理控件的成员函数来访问控件.这些函数已在表5.5列出.只要向这些函数提供控件的ID,就可以对该控件进行访问.使用这些函数的好处是无需创建控件对象,就可以对控件的某些常用属性进行查询和设置.该方法对自动和手工创建的控件均适用. 
  4.  用CWnd::GetDlgItem访问控件.该函数根据参数说明的控件ID,返回指定控件的一个CWnd型指针,程序可以把该指针强制转换成相应的控件类指针,然后通过该指针来访问控件.该方法对自动和手工创建的控件均适用.在上一章中就曾经使用过这种方法,读者可参见5.3.6.其实该方法与通过控件对象来访问控件的方法在本质上是一样的,在表5.5中亦包括GetDlgItem函数,但为了强调其重要性,这里把它单独列为一种方法. 
时间: 2024-10-12 20:08:06

MFC 访问控件的几种方法的相关文章

WPF编程,通过Double Animation同时动态缩放和旋转控件的一种方法。

原文:WPF编程,通过Double Animation同时动态缩放和旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87260287 ?1. 可直接调用.需要将控件的名称,缩放的位数,时间等参数传进去.? /// <summary> /// 同时旋转和缩放的动画 /// </summary> /// <param name="element&quo

WPF编程,通过Double Animation动态旋转控件的一种方法。

原文:WPF编程,通过Double Animation动态旋转控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87259162 ? ?1.控件旋转,可直接调用.需要将控件的名称,旋转的角度,时间等参数传进去. /// <summary> /// 控件绕中心旋转动画 /// </summary> /// <param name="element"

WPF编程,通过Double Animation动态缩放控件的一种方法。

原文:WPF编程,通过Double Animation动态缩放控件的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87260143 ? ?1.控件缩放,可直接调用.需要将控件的名称,缩放的位数,时间等参数传进去. /// <summary> /// 控件绕中心缩放动画 /// </summary> /// <param name="element"

【转】VC 多线程中控制界面控件的几种方法

原文网址:https://software.intel.com/zh-cn/blogs/2010/11/30/vc-3 为了保证界面的用户体验经常要把数据处理等放到子线程中进行,然后把结果更新到主界面,通常有这样几种方法. 1. 启动线程时把控件关联变量的指针传参给线程函数,这种方法无疑是最简单的方法,但极容易造成访问异常,因为VC6中的控件都不是线程安全的. 2. 就是先进一点的方法,把控件的句柄传给线程函数,有时也不好用在子线程中通过SendNotifyMessage or PostMess

MFC使控件失去焦点的方法

转自:http://newthnote.blogbus.com/logs/67403982.html 1.SetFocus另外一个控件 GetDlgItem(另一个控件名)->SetFocus(); 2.给要失去焦点的控件发WM_KILLFOCUS消息        GetDlgItem(要失去焦点的控件名)->PostMessage(WM_KILLFOCUS, 0, 0);        ::SendMessage(GetDlgItem(要失去焦点的控件名)-> m_hWnd,WM_K

ViewDragHelper(拖拽控件之3种方法)

+++++++++++++++++++++++++++++++方法1++++++++++++++++++++++++++++++++++++ activity_main.xml布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_wi

多线程总结之旅(112):跨线程调用控件的几种方式

本来是写完线程池就结束多线程总结之旅系列的,但是想想平时在项目中用到线程仅仅不够的,为什么这么说呢?举个例子:我们有一个函数,它的功能就是加载数据,然后绑定到datagridview.现在我们开启一个线程去执行这个函数.结果可想而知,它会报错:提示线程无法访问...之类的话.为什么报错呢?因为你在开启的线程中操作了datagridview控件,也就是你跨线程调用控件了. 那么我们应该怎么跨线程调用控件呢?下面我就把我总结的几种方法奉献给各位. 跨线程调用控件的几种方法: 1.方法一:Contro

跨线程访问控件解决办法

在多线程中访问控件有两种方式 方式1: 取消对跨线程操作的检查 在 from 的构造 函数中增加 system.window.forms.control.CheckForIllegalCrossThreadCalls=false; 方式2 : 采用委托的形式作为代理通知主线程控件,允许访问. delegate void   showData(string para); visistControl(string para) { if (this.textbox1.invokeRequered) /

android在代码中四种设置控件背景颜色的方法(包括RGB)

转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.Color.RED);//系统自带的颜色类 // 第2种: tText.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据