如何确定是不是BUTTON类?

nckwater 2003-04-10 03:16:04
我用Hook得到一个即将创建的窗口的信息,其中包含该窗口的ClassName,但是我要如何才能知道这个是不是系统内建的BUTTON类呢?

现在已经知道该ClassName是一个Atom,值为0x0000C017。
...全文
66 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fhbkyo 2003-04-11
  • 打赏
  • 举报
回复
都明白了?我也差不多明白了
strongerman 2003-04-11
  • 打赏
  • 举报
回复

其实用SPY++看看就知道了: ' [句柄] #32770 (Dialog) '

但要注意的是:在VB中的 按钮的类名不是VC中的'Button',
是另一种经过封装的类,类名是:ThunderRT6CommandButton
nckwater 2003-04-11
  • 打赏
  • 举报
回复
嘿嘿,还是我自己解决了。
虽然我在得到ClassName的时候,窗口还没有被真正创建起来,也就是说,窗口还没有收到WM_NCCREATE消息,但是它的HWND句柄已经可以使用了。
我就用GetClassName得到了类名。是"Button"。

另外,对话框的类名是"#32770",虽然MSDN中早就有说明,但是直到这时,我才更清楚。:)
KcSoft 2003-04-11
  • 打赏
  • 举报
回复
::GetWindowLong()是SDK函数,可用。
In355Hz 2003-04-10
  • 打赏
  • 举报
回复
抱歉,试了一下,GetAtomName 不行,GetClassInfo / GetClassInfoEx 也不行,看来没有办法了
strongerman 2003-04-10
  • 打赏
  • 举报
回复
关注
In355Hz 2003-04-10
  • 打赏
  • 举报
回复
UINT GetAtomName(
ATOM nAtom, // atom identifying character string
LPTSTR lpBuffer, // buffer for atom string
int nSize // size of buffer
);

判断 lpBuffer 是不是 _T("BUTTON")
guoxiny 2003-04-10
  • 打赏
  • 举报
回复
CObject::IsKindof(...)
nckwater 2003-04-10
  • 打赏
  • 举报
回复
To:
whjpn(常盘平) and fhbkyo(琴月阳)

我都说了我用的是SDK,没有运行时识别的方法可用。
whjpn 2003-04-10
  • 打赏
  • 举报
回复
用GetClassName啊!

GetClassName(控件句柄,buffer,sizeof(buffer));
if(strcmp(buffer,"Button")==0)
  if(((CButton*)控件指针)->GetButtonStyle()==BS_PUSHBUTTON)
  .....


fhbkyo 2003-04-10
  • 打赏
  • 举报
回复
用RTTI方法来查看它的基类是不是CButton不就行了?
whjpn 2003-04-10
  • 打赏
  • 举报
回复
CWnd* pChildWnd = GetWindow(GW_CHILD);
char buffer[256];
while(pChildWnd)
{
GetClassName((pChildWnd->m_hWnd),buffer,sizeof(buffer));
if(strcmp(buffer,"Button")==0)
{
if(((CButton*)pChildWnd)->GetButtonStyle()==BS_AUTOCHECKBOX)
{
((CButton*)pChildWnd)->SetCheck(1);
}
}
pChildWnd = pChildWnd->GetWindow(GW_HWNDNEXT);
}
nckwater 2003-04-10
  • 打赏
  • 举报
回复
Up again and again.
nckwater 2003-04-10
  • 打赏
  • 举报
回复
up
nckwater 2003-04-10
  • 打赏
  • 举报
回复
谢谢了,可是我用的是SDK,那么应该怎么判断呢?

16,472

社区成员

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

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

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