注册 登录
编程论坛 VC++/MFC

关于c++子窗口与父窗口的问题(Tab控件)

破风浪挂云帆 发布于 2013-08-06 16:54, 1113 次点击
CCTab1Dlg*pDlg = (CCTab1Dlg *)GetParent()->GetParent();
    pDlg->m_Text;
我用到了一个Tab 控件想通过控件  在创建一个按钮 通过按钮再控制父窗口的EDIT控件的变量m_Text(即给变量赋值),通过上面的代码  父窗口的指针应该找到了,但目的无法达到;希望大神指点一二。一下是我的窗口
只有本站会员才能查看附件,请 登录
6 回复
#2
yuccn2013-08-06 18:16
不要用tab控件创建按钮
把按钮扔到一个子对话框去,然后有tab空间控制子对话框的显示和隐藏就行了
#3
破风浪挂云帆2013-08-06 18:29
回复 2楼 yuccn
我怕就是这样做的啊 ! 但怎么样用子对话框的按钮控制主对话狂的变量了
#4
yuccn2013-08-06 19:52
以下是引用破风浪挂云帆在2013-8-6 18:29:25的发言:

我怕就是这样做的啊 ! 但怎么样用子对话框的按钮控制主对话狂的变量了   

不要用子对话框去控制主对话框的变量,把变量扔到子对话框里面去就行了。  你可以看一线windows任务管理器。主对话框只是控制子对话框(们)的。所有的功能由对应的子对话框去控制
#5
破风浪挂云帆2013-08-06 20:11
回复 4楼 yuccn
首先谢谢你的回答
但情况比较多,这样做的话是不是有些不方便啊
#6
yuccn2013-08-06 20:31
回复 5楼 破风浪挂云帆
不会,那样会更加好控制的。
你可以看一下windows的任务管理器的结构:


  #32770 (HWND:1049492)
    #32770 (HWND:1377822)
      SysListView32 (HWND:1508560)
        SysHeader32 (HWND:918802)
      Button (HWND:853252)
      Button (HWND:525942)
      Button (HWND:525940)
    #32770 (HWND:525944)
      Static (HWND:328954)
      ScrollBar (HWND:197798)
      SysListView32 (HWND:722538)
        SysHeader32 (HWND:329354)
      Button (HWND:263410)
      DavesFrameClass (HWND:198062)
      Button (HWND:1312276)
      DavesFrameClass (HWND:853612)
    SysTabControl32 (HWND:1181318)
      msctls_updown32 (HWND:328882)
    msctls_statusbar32 (HWND:1115532)
    #32770 (HWND:328856)
      SysListView32 (HWND:984554)
        SysHeader32 (HWND:1967620)
      Button (HWND:918780)
      Button (HWND:853196)
    #32770 (HWND:3539884)
      SysListView32 (HWND:525476)
        SysHeader32 (HWND:263348)
      Static (HWND:328886)
      Button (HWND:263362)
    #32770 (HWND:328890)
      Button (HWND:525442)
      Button (HWND:263342)
      Button (HWND:656572)
      Static (HWND:2491628)
      Edit (HWND:525570)
      Static (HWND:328888)
      Edit (HWND:591196)
      Static (HWND:394874)
      Edit (HWND:525578)
      Static (HWND:656582)
      Edit (HWND:459922)
      Static (HWND:263338)
      Edit (HWND:1115298)
      Static (HWND:328862)
      Edit (HWND:394508)
      Static (HWND:1246446)
      Edit (HWND:329000)
      Static (HWND:3605752)
      Edit (HWND:1967648)
      Static (HWND:591484)
      Edit (HWND:1377906)
      Static (HWND:1770606)
      Edit (HWND:2164242)
      Static (HWND:2688254)
      Edit (HWND:263292)
      DavesFrameClass (HWND:198082)
      DavesFrameClass (HWND:263294)
      DavesFrameClass (HWND:263304)
      DavesFrameClass (HWND:263424)
      Button (HWND:328948)
      DavesFrameClass (HWND:656518)
      DavesFrameClass (HWND:984670)
      DavesFrameClass (HWND:328854)
      Button (HWND:591402)
    #32770 (HWND:460046)
      SysListView32 (HWND:198078)
        SysHeader32 (HWND:328858)
      Button (HWND:1508458)
      Button (HWND:1377544)
      Button (HWND:198064)

结构是这样的
1 主对话框包括 一个tab, 几个子对话框(进程、窗口、网络 等)
2 tab空间控制子对话框的显示和隐藏状态
3 每个子对话实现控制对应的功能,比如进程相关的控件都扔在进程子对话框中,网络相关的控件都在网络子对话框中


这样会使逻辑更加简单的,如果你什么控件都扔在主对话框来控制,这样就很乱了。
#7
破风浪挂云帆2013-08-06 20:45
对的,突然自己也想通了 ,这样的确方便。谢谢啊
1