如何获得对话框工程中的子对话框的窗口句柄?

matrix2009 2009-07-17 12:53:12
如题,如何获得对话框工程中的子对话框的窗口句柄?
主框架类是CMainFrame,子对话框类为CViewTrust,
子对话框中有个按钮,ID为IDC_BUTTON_UP_ALL,
我想知道怎么获取子对话框CViewTrust的句柄以及那个按钮的句柄?
...全文
284 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xylicon 2009-07-17
  • 打赏
  • 举报
回复
子窗口应该用FindWindowEx

FindWindow只能用于顶层窗口。

xylicon 2009-07-17
  • 打赏
  • 举报
回复
子窗口应该用FindWindowEx

FindWindow只能用于顶层窗口。

xylicon 2009-07-17
  • 打赏
  • 举报
回复
子窗口应该用FindWindowEx

FindWindow只能用于顶层窗口。

matrix2009 2009-07-17
  • 打赏
  • 举报
回复
我仔细看了一下,(代码不是我写的)
子对话框都是从CFormView类派生的,

主框架类是CMainFrame是从 CMDIFrameWnd派生的
matrix2009 2009-07-17
  • 打赏
  • 举报
回复
xylicon的办法不行
我知道我的代码的问题在哪里了
是HWND hWnd = ::FindWindow("CViewTrust",NULL); 这个函数没有获得那个对话框的句柄

如何获取子对话框或是子框架的句柄啊
matrix2009 2009-07-17
  • 打赏
  • 举报
回复
代码如下:

HWND hWnd = ::FindWindow("CViewTrust",NULL);
HWND hBtn = ::GetDlgItem(hWnd,IDC_BUTTON_UP_ALL);
::ShowWindow(hBtn,SW_HIDE);
spring203 2009-07-17
  • 打赏
  • 举报
回复
m_btnUpAll.ShowWindow(SW_HIDE),里面就是调用::ShowWindow(hButton, SW_HIDE)的, 不可能不行的, 楼主你的调用的地方不对吧,把代码贴下!
matrix2009 2009-07-17
  • 打赏
  • 举报
回复
TO spring203
用::ShowWindow(hButton, SW_HIDE)不行,只是变灰了而已
matrix2009 2009-07-17
  • 打赏
  • 举报
回复
不是不会,是不熟,好久没使用MFC和Windows API了
spring203 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 matrix2009 的回复:]
我现在把按钮和一个按钮控件变量关联,叫m_btnUpAll,
我是想把那个按钮隐藏起来,使用::GetDlgItem只是使按钮变灰,没有完全隐藏。
用这个可以把m_btnUpAll.ShowWindow(SW_HIDE) 真正隐藏起来,
但是在主框架类里不能直接使用m_btnUpAll.ShowWindow(SW_HIDE),我该怎么做呢?
[/Quote]
用xylicon的办法, ::ShowWindow(hButton, SW_HIDE);API的用法不会?
matrix2009 2009-07-17
  • 打赏
  • 举报
回复
我现在把按钮和一个按钮控件变量关联,叫m_btnUpAll,
我是想把那个按钮隐藏起来,使用::GetDlgItem只是使按钮变灰,没有完全隐藏。
用这个可以把m_btnUpAll.ShowWindow(SW_HIDE) 真正隐藏起来,
但是在主框架类里不能直接使用m_btnUpAll.ShowWindow(SW_HIDE),我该怎么做呢?
xylicon 2009-07-17
  • 打赏
  • 举报
回复
HWND hButton = ::GetDlgItem(hDlg, IDC_BUTTON_UP_ALL);
应该是这样才对。
xylicon 2009-07-17
  • 打赏
  • 举报
回复
CViewTrust dlg;
HWND hDlg = dlg.GetSafeHwnd();
HWND hButton = GetDlgItem(hDlg, IDC_BUTTON_UP_ALL);
danxuezx 2009-07-17
  • 打赏
  • 举报
回复
1楼的方法感觉可行
forimprove 2009-07-17
  • 打赏
  • 举报
回复
比如说你有一个CViewTrust类型的变量m_wndVT,那么m_wndVT.GetSafeHwnd()就能获得它的句柄.
::GetDlgItem(m_wndVT.GetSafeHwnd(), IDC_BUTTON_UP_ALL)获取那个按钮的句柄
yanjing_mail 2009-07-17
  • 打赏
  • 举报
回复
定义一个全局变量,在CViewTrust初始化的时候把句柄赋值

16,551

社区成员

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

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

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