请问如何利用GetWindow函数,把某个Dialog上面的所有Button全部Disable掉?
注意只能用GetWindow,因为是在WinCE上面,不支持EnumWindow之类的函数。
同时这个Dialog上面还有其他的控件,但是我只想Disable那些Button。我在这个Dialog的某个函数中尝试了如下代码,但是似乎不起作用,而且进入了死循环。
就是说GetWindow(this->m_hWnd, GW_HWNDNEXT)一直有返回,但是又都不是Button,
我断点过,一直返回的是CDialog,为什么? pWnd = CWnd::FromHandle(::GetWindow(this->m_hWnd, GW_CHILD));
GetClassName(pWnd->m_hWnd, strClassName.GetBufferSetLength(102), 100);
while (NULL != pWnd)
{
if (strClassName.Compare(TEXT("Button")) == 0) {
pWnd->EnableWindow(FALSE);
}
pWnd = CWnd::FromHandle(::GetWindow(this->m_hWnd, GW_HWNDNEXT));
GetClassName(pWnd->m_hWnd, strClassName.GetBufferSetLength(102), 100);
}
注意只能用GetWindow,因为是在WinCE上面,不支持EnumWindow之类的函数。
同时这个Dialog上面还有其他的控件,但是我只想Disable那些Button。我在这个Dialog的某个函数中尝试了如下代码,但是似乎不起作用,而且进入了死循环。
就是说GetWindow(this->m_hWnd, GW_HWNDNEXT)一直有返回,但是又都不是Button,
我断点过,一直返回的是CDialog,为什么? pWnd = CWnd::FromHandle(::GetWindow(this->m_hWnd, GW_CHILD));
GetClassName(pWnd->m_hWnd, strClassName.GetBufferSetLength(102), 100);
while (NULL != pWnd)
{
if (strClassName.Compare(TEXT("Button")) == 0) {
pWnd->EnableWindow(FALSE);
}
pWnd = CWnd::FromHandle(::GetWindow(this->m_hWnd, GW_HWNDNEXT));
GetClassName(pWnd->m_hWnd, strClassName.GetBufferSetLength(102), 100);
}
解决方案 »
- 0x004048dc 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突
- 如何屏蔽CRichEditCtrl的拷贝,粘贴,剪切事件?
- 有判断一个字符串是否是IP地址的函数吗?
- ActiveSkin问题:如何更改Form的Caption文字字体?
- 面向对象的简单问题
- 在程序中我想同时响应两个键该怎么办?比如同时按下向上键和向左键,让光标向左上方移动。
- socket的数据,浏览器如何获取
- 如何使一个基于对话框的应用程序启动时使对话框最大化?紧急!!
- 工业曲线绘制 哪个控件比较好呢
- VC的编程理念与VB的最大区别是什么?
- 怎样用vc绘制autocad的图形?
- 求简单的图形矢量化的代码
=>
pWnd = CWnd::FromHandle(::GetWindow(pWnd->m_hWnd, GW_HWNDNEXT));
pChild = this->GetWindow(GW_CHILD);
while (pChild != NULL) {
if (pChild->IsKindOf(CButton)) {
pChild->EnableWindow(false);
}
pChild = pChild->GetWindow(GW_HWNDNEXT);
}
pChild = this->GetWindow(GW_CHILD);
TCHAR szClass[128]={0};
while (pChild)
{
GetClassName(pChild->m_hWnd, szClass, sizeof(szClass)); //得到子窗口的类名
if(lstrcmp(szClass, "Button") == 0) //判断该子窗口是否是编辑框
{
pChild->EnableWindow(0);
}
pChild = pChild->GetWindow(GW_HWNDNEXT);
}
lyl_rabbit(lyl_rabbit)
的方法比较好.