一个编辑框的成员变量与这个编辑框到底是什么关系?

lometric 2014-11-18 11:20:23
给一个编辑框添加了类型为CEDIT类型的成员变量m_edit1和一个value型变量m_edit2
问题如下:
1、既然是成员变量,一个类应该能存在多个成员变量,但为什么在MFC CLASSWIZARD中为这个控件添加CEDIT类型的变量和VALUE型变量时,都是只能添加一个,不能添加多个?
不用MFC CLASSWIZARD这种方式,是否可以给他们添加多个成员变量?
2、为什么m_edit1可以调用getwindowtext函数,它不只是一个成员变量吗,为什么可以调用这个函数?
3、这个成员变量和这个编辑框到底是一种什么样的关系?
...全文
224 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-11-24
  • 打赏
  • 举报
回复
引用 4 楼 lometric 的回复:
[quote=引用 1 楼 lx624909677 的回复:] edit是控件类型变量,可以调用这个控件的一些方法,比如setwindowtext等来修改这个控件的内容或者获取内容之类的操作,如果是value类型就是数值类型,可以直接通过改变这个变量的数值来改变这个控件上对应的数值,用UpDateData(TRUE)来刷新就可以
非常感谢,但是我还是不明白:请问edit这个变量,调用了函数应该是改变它自己的某些属性,怎么却改变了与之相关联的控件的属性呢?[/quote] 没有「自己」一说。CWnd (包括 CEdit) 对象 (或指针) 必然是要与一个存在的实体窗口 (控件) 关联的,如果这个窗口句柄代表的窗口已经不存在,即使这个对象关联的 m_hWnd 不为空,所有的操作也都没有了意义。而你所谓的改变属性,事实上就是改变了这这个关联的窗口 (控件) 的属性。如果窗口是有效的,其实得到指针 (对于 Windows API 编程而言就是得到 HWND) 就行了,创建对象没必要,创建多个对象更没必要,反正最终操作的是同一窗口 (控件)。
「已注销」 2014-11-18
  • 打赏
  • 举报
回复
m_edit1 是編輯框的類指針,比如 CEdit。不過從 Windows API 層面來講,他就是與句柄關聯起來。每個控件都有句柄,m_edit1 指向的類只是將這個句柄和與句柄相關 API 封裝在一起而已。
lx624909677 2014-11-18
  • 打赏
  • 举报
回复
edit是控件类型变量,可以调用这个控件的一些方法,比如setwindowtext等来修改这个控件的内容或者获取内容之类的操作,如果是value类型就是数值类型,可以直接通过改变这个变量的数值来改变这个控件上对应的数值,用UpDateData(TRUE)来刷新就可以
「已注销」 2014-11-18
  • 打赏
  • 举报
回复
引用 5 楼 lometric 的回复:
[quote=引用 2 楼 SXJIAKE 的回复:] m_edit1 是編輯框的類指針,比如 CEdit。不過從 Windows API 層面來講,他就是與句柄關聯起來。每個控件都有句柄,m_edit1 指向的類只是將這個句柄和與句柄相關 API 封裝在一起而已。
非常感谢,m_edit1 是CEDIT类型的成员变量,怎么会成了指针,我搞不明白了,能说的再详细些吗?[/quote] 其实不管是指针还是对象都不重要的,句柄可以有副本,从对象的指针怎么就不能再创建个新的对象呢?创建两个新对象 m_edit1,m_edit2 将它们关联为同一个句柄也就是那个编辑框控件,这两个对象就都可以操作那个控件。就好像创建了多个 HWND 变量都指向同一个窗口,感觉没意义。
hubo86915531 2014-11-18
  • 打赏
  • 举报
回复
引用 8 楼 lometric 的回复:
[quote=引用 6 楼 hubo86915531 的回复:] [quote=引用 5 楼 lometric 的回复:] [quote=引用 2 楼 SXJIAKE 的回复:] m_edit1 是編輯框的類指針,比如 CEdit。不過從 Windows API 層面來講,他就是與句柄關聯起來。每個控件都有句柄,m_edit1 指向的類只是將這個句柄和與句柄相關 API 封裝在一起而已。
非常感谢,m_edit1 是CEDIT类型的成员变量,怎么会成了指针,我搞不明白了,能说的再详细些吗?[/quote] m_edit1 是CEDIT的对象,不是指针 [/quote] m_edit1 是編輯框的類指針 这可是你的原话唉?[/quote] 麻烦你看清楚回复的是同一个人吗?
lometric 2014-11-18
  • 打赏
  • 举报
回复
引用 6 楼 hubo86915531 的回复:
[quote=引用 5 楼 lometric 的回复:] [quote=引用 2 楼 SXJIAKE 的回复:] m_edit1 是編輯框的類指針,比如 CEdit。不過從 Windows API 層面來講,他就是與句柄關聯起來。每個控件都有句柄,m_edit1 指向的類只是將這個句柄和與句柄相關 API 封裝在一起而已。
非常感谢,m_edit1 是CEDIT类型的成员变量,怎么会成了指针,我搞不明白了,能说的再详细些吗?[/quote] m_edit1 是CEDIT的对象,不是指针 [/quote] m_edit1 是編輯框的類指針 这可是你的原话唉?
lx624909677 2014-11-18
  • 打赏
  • 举报
回复
引用 4 楼 lometric 的回复:
[quote=引用 1 楼 lx624909677 的回复:] edit是控件类型变量,可以调用这个控件的一些方法,比如setwindowtext等来修改这个控件的内容或者获取内容之类的操作,如果是value类型就是数值类型,可以直接通过改变这个变量的数值来改变这个控件上对应的数值,用UpDateData(TRUE)来刷新就可以
非常感谢,但是我还是不明白:请问edit这个变量,调用了函数应该是改变它自己的某些属性,怎么却改变了与之相关联的控件的属性呢?[/quote] 因为i这个变量代表的就是那个控件啊,比如有一个人叫张三,假设这人完全听你话,你对他说张三过来,张三过来了,也可以说,有个人过来了
hubo86915531 2014-11-18
  • 打赏
  • 举报
回复
引用 5 楼 lometric 的回复:
[quote=引用 2 楼 SXJIAKE 的回复:] m_edit1 是編輯框的類指針,比如 CEdit。不過從 Windows API 層面來講,他就是與句柄關聯起來。每個控件都有句柄,m_edit1 指向的類只是將這個句柄和與句柄相關 API 封裝在一起而已。
非常感谢,m_edit1 是CEDIT类型的成员变量,怎么会成了指针,我搞不明白了,能说的再详细些吗?[/quote] m_edit1 是CEDIT的对象,不是指针
lometric 2014-11-18
  • 打赏
  • 举报
回复
引用 2 楼 SXJIAKE 的回复:
m_edit1 是編輯框的類指針,比如 CEdit。不過從 Windows API 層面來講,他就是與句柄關聯起來。每個控件都有句柄,m_edit1 指向的類只是將這個句柄和與句柄相關 API 封裝在一起而已。
非常感谢,m_edit1 是CEDIT类型的成员变量,怎么会成了指针,我搞不明白了,能说的再详细些吗?
lometric 2014-11-18
  • 打赏
  • 举报
回复
引用 1 楼 lx624909677 的回复:
edit是控件类型变量,可以调用这个控件的一些方法,比如setwindowtext等来修改这个控件的内容或者获取内容之类的操作,如果是value类型就是数值类型,可以直接通过改变这个变量的数值来改变这个控件上对应的数值,用UpDateData(TRUE)来刷新就可以
非常感谢,但是我还是不明白:请问edit这个变量,调用了函数应该是改变它自己的某些属性,怎么却改变了与之相关联的控件的属性呢?

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧