对话框中有一个编辑框和几个按钮,目的是鼠标位于按钮上时显示相应的说明。我新建了一个CBUTTON类的子类CXPButton,在其中重载OnMouseMove函数,想在响应消息的时候设置编辑框的文本。我在消息响应函数中用GetDlgItem(IDC_EDIT1)->SetWindowText("aa");编译器提示'IDC_EDIT1' : undeclared identifier。请问怎么才能调用对话框类中的编辑框?
本人是菜鸟,不知道我有没有表述清楚,这个问题今天一定要搞出来,请各位高手帮忙解答,本人倾囊相送!
 

解决方案 »

  1.   

    'IDC_EDIT1' : undeclared identifier
    IDC_EDIT1是啥,确认下你的编辑框的ID是不是这个。
      

  2.   

    你可以传第一个CEdit* p指针到你的CXPButton就可以了,在对话框初始化时传过去.
    直接使用 p->SetWindowText("aa");就可以了!
      

  3.   

    哦,你在CXPButton的OnMouseMove里面调用
    GetDlgItem(IDC_EDIT1)->SetWindowText("aa")
    你的CXPButton里面可没有编辑框啊。
      

  4.   

    打开你的资源编辑窗口,查看你的对话框,看看你的EDIT控件的ID。
      

  5.   

    另外只能在对话框中重载的OnMouseMove函数才能使用GetDlgItem(IDC_EDIT1)函数
      

  6.   

    你是在Button子类中调用GetDlgItem(IDC_TEXT1)->***,而IDC_TEXT1是在对话框中的,自然不可能认识了。
    二楼的方法可以使用。或者定义一个消息,Button将需要显示的信息通过消息发送给父对话框,父对话框中响应消息后将消息内容SetWIndowText到文本框。
    或者将GetParent()强制转换为父对话框指针,然后再GetDlgItem(IDC_TEXT1)->***
      

  7.   

    在CXPButton的cpp里加 主程序对话框头文件 
    #include "XXXDlg.h"
    这样就可以不报错了
    另外这个 
    GetDlgItem(IDC_EDIT1)->SetWindowText("aa");
    改为
    GetParent()->GetDlgItem(IDC_EDIT1)->SetWindowText("aa");
      

  8.   

    直接调用SetWindowText就可以了.
    默认的this 不就是 该CXPbutton 吗
      

  9.   

    不用继承了,这样反而被你搞复杂了;你可以在MOUSEMOVE里面判断下,是不是移到按钮上了。
      

  10.   

    是在父对话框类的mousemove里判断吗?怎么判断?
      

  11.   

    这种设计不太好,建议用函数钩子,按钮调用它。对话框将它的一个静态函数钩上,在这个函数中调用EDITOR显示你要显示的内容