`
mybwu_com
  • 浏览: 178379 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

VC控件----如何根据句柄判断其类型

 
阅读更多
hWnd=GetWindow(hDlg,GW_CHILD);
if(hWnd == NULL || !::IsWindow(hWnd))
return FALSE;
nIdFirst=GetDlgCtrlID(hWnd);

do
{
GetClassName(hWnd,szBuf,256);

//Edit子类化

if( _tcsicmp(szBuf,_T( "Edit ")) == 0)
{
//验证是否已经被永久映射
if(CWnd::FromHandlePermanent(hWnd) == NULL)
{

CEditEx *pEdit=new CEditEx();
if(pEdit == NULL)
return FALSE;
pSkin-> m_edtList.AddTail(pEdit);

//子类化此窗口
pEdit-> SubclassWindow(hWnd);
}

}

//button子类化

if(_tcsicmp(szBuf,_T( "Button ")) == 0)
{
dwStyle = GetWindowLong(hWnd,GWL_STYLE);
if((dwStyle & SS_TYPEMASK) == BS_DEFPUSHBUTTON)
dwStyle = BS_PUSHBUTTON;
if((dwStyle & SS_TYPEMASK) == BS_AUTOCHECKBOX)
dwStyle = BS_CHECKBOX;

TCHAR szBuf[256];
GetWindowText(hWnd,szBuf,256);

//PushButton子类化

if( (dwStyle & SS_TYPEMASK) == BS_PUSHBUTTON)
{
if(CWnd::FromHandlePermanent(hWnd) == NULL)
{
CXPButton *pBtn=new CXPButton();
if(pBtn == NULL)
return FALSE;
pSkin-> m_btnList.AddTail(pBtn);
pBtn-> SubclassWindow(hWnd);
}
}

//Checkbox子类化

else if( (dwStyle & SS_TYPEMASK) == BS_CHECKBOX )
{
if(CWnd::FromHandlePermanent(hWnd) == NULL)
{
CExCheckBox *pChk=new CExCheckBox();
if(pChk == NULL)
return FALSE;
pSkin-> m_chkList.AddTail(pChk);
pChk-> SubclassWindow(hWnd);
}
}
else if( ( dwStyle & SS_TYPEMASK) == BS_GROUPBOX)
{
if(CWnd::FromHandlePermanent(hWnd) == NULL)
{
CExGroupBox *pGrp=new CExGroupBox();
if(pGrp == NULL)
return FALSE;
pSkin-> m_grpList.AddTail(pGrp);
pGrp-> SubclassWindow(hWnd);
}

}
}

//static子类化

if( (_tcsicmp(szBuf,_T( "Static ")) == 0)
&& (GetWindowLong(hWnd,GWL_STYLE) & SS_ETCHEDHORZ) == SS_ETCHEDHORZ)
{
if(CWnd::FromHandlePermanent(hWnd) == NULL)
{
CLineStatic * pLine=new CLineStatic();
if(pLine == NULL)
return FALSE;
pSkin-> m_lineList.AddTail(pLine);
pLine-> SubclassWindow(hWnd);
}
}

//ComboBox子类化

if( _tcsicmp(szBuf,_T( "ComboBox ")) == 0)
{
if(CWnd::FromHandlePermanent(hWnd) == NULL)
{
CFlatComboBox *pCmb=new CFlatComboBox();
if(pCmb == NULL)
return FALSE;
pSkin-> m_cmbList.AddTail(pCmb);
pCmb-> SubclassWindow(hWnd);
}

}

//etc

hWnd=GetWindow(hWnd,GW_HWNDNEXT);
if(!::IsWindow(hWnd) || hWnd==NULL)
break;

}while(nIdFirst != GetDlgCtrlID(hWnd));
分享到:
评论

相关推荐

    vb-EnumChildWindows所有窗口及子窗口句柄免费版

    vb-EnumChildWindows所有窗口及子窗口句柄是一款vb枚举窗口枚举出所有父窗口和其对应的子窗口句柄信息获取查看工具,每个子窗口控件都具有一个在其兄弟中唯一的窗口句柄和ID值。对于句柄和ID这两者,知道其中的一个...

    VC遍历窗口及窗口子控件

    该程序可遍历当前打开的所有窗口,以及每个窗口的子控件,显示出窗口名字,子控件名字及类型,使用VC++开发

    VC 获取任务管理器进程项ListView控件内的内容

    VC 获取任务管理器进程项ListView控件内的内容的例子,注意操作系统与编译平台的对应关系,否则获取不到内容

    窗口枚举遍历的例子-win7 -VC2010-debug 调试成功

    初学者,请多多指教 窗口枚举遍历的例子-win7 -VS2010-debug 调试成功 找到的窗口 的句柄、窗口标题和类名 用树形控件显示。 [img=http://img.bbs.csdn.net/upload/201510/23/1445586090_885745.jpg][/img]

    VC写的窗口截图工具,可截取当前名目中的所有控件

    仿qq截图,并可实时截图,比QQ更好。按S键保存图片。

    VC 截获鼠标移开事件.rar

    VC 截获鼠标移开事件,自制了一个Mousehook.dll控件,VC 将使用这个HOOK控件截获鼠标移开时的事件,包括有该控件的代码,安装钩子并设定接收显示窗口句柄,设置显示目标窗口标题编辑框的句柄:  HWND glhPrevTarWnd...

    VB编程常用的模块及CTL控件集打包.rar

    VB一些常用控件集,以及一些方法模块,编辑框.ctl、进度条、全局热键钩子、网站服务器、托盘控件、WinSock.ctl、曲线图.ctl、压缩算法-升级版.cls、数组加解密.cls、打开文件属性面板.bas等,其中一个模块的部分代码...

    VC++窗口取色、获取坐标、获取句柄窗口管理器

    VC++ 窗口取色 坐标 获取句柄 窗口管理 很好用,勇芳最新版本

    在mfc中picture控件中显示Mat图片

    该程序已经被放在了一个函数中间,只需调用该函数ShowMatImgToWnd(CWnd* pWnd, cv::Mat img)就可以将所需的图片显示在picture控件上了,其中CWnd* pWnd参数中输入picture控件的句柄,可使用GetDlgItem(IDC_picture)...

    窗口句柄抓取工具 ViewWizard vc&vb;编程所用

    一个类似于SPY++的工具,可查看窗口和控件句柄、类名、标题、风格等信息,可向窗口发送文字,可控制窗口状态,如显示、隐藏、置顶、关闭、终止等,可以突破灰色的按钮。WSEdit用来修改窗口的样式信息,如是否可调整...

    易语言程序免安装版下载

     增加静态编译功能,支持挂接第三方链接器(比如VC6中的link.exe)。  静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理...

    CTabCtrl的子对话框获取主对话框的句柄实例

    VC2008基于对话框的工程TabDemoDlg中,添加了CTabCtrl控件,CTabCtrl控件中,又添加了几个子对话框Page1Dlg、Page2Dlg和Page3Dlg。而在每个子对话框里,需要调用TabDemoDlg的函数和控件。示例提供了调用和发消息的...

    C#获取其他程序ListView控件中的内容

    C#获取其他程序ListView控件中的内容 http://blog.csdn.net/liehuo123/article/details/22043945

    VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:

    WM_CTLCOLOR消息缺省处理函数CWnd::OnCtlColor返回一个HBRUSH类型的句柄,这样,就可以设置前景和背景文本颜色,并为控件或者对话框的非文本区域选定一个刷子。 WM_CTLCOLOR的映射函数原型如下: afx_msg HBRUSH ...

    VC类似QQ游戏大厅导航的树型控件

    第一步:新建一个基于对话框的MFC工程,拖动一棵标准树型控件放于界面之上。添加一个新类CTreeCtrlBT派生自CTreeCtrl。 第二步:为该类添加一些消息响应以及虚函数。其详细作用如下: void PreSubclassWindow(); //...

    标准MFC WinSock ActiveX控件开发实例

    另外还提供了WinSock的详细开发步骤,以及如何响应网络超时,网络断开的事件方法以及在VC,VB调用该控件的方法。 一、MFC ActiveX控件开发步骤(VC 6.0): New->Projects->MFC ActiveX ControlWizard,然后输入...

    vc对其进程的窗口置顶、取消置顶操作;拖拽消息DROPFILES封装及发送给其他进程

    vs2010实现对其进程的窗口置顶、取消置顶操作;实现DROPFILES消息封装并发送给其他进程。 注:1.一个pid获取到的是多个窗口句柄,操作的要是主窗口句柄;2.可以配合spy++看获取到的句柄是否正确;

    VC++用树形控件列出文件夹

    摘要:VC/C++源码,界面编程,树形控件 VC++用树形控件列出文件夹,者讲解怎样用树形控件列出本机的所有文件夹,在树形控件中每一个节点都有一个句柄(HTREEITEM),添加节点时必须提供的参数是该节点的父节点句柄...

    C++获得其他程序窗体控件中信息的方法

    本文实例讲述了C++获得其他程序窗体控件中信息的方法。分享给大家供大家参考。具体分析如下: 这里演示了获得其他程序窗体控件信息的方法, 用FindWindow API找到文本框句柄,用SendMessage(WM_GETTEXT)获得文本 #...

    VC编程技巧精选,很不错

    36、如何在OLE控件中使用OLE_COLOR数据类型 37、在不使用通用文件打开对话的情况下如何显示一个文件列表 38、为什么旋转按钮控件看起来倒转 39 为什么旋转按钮控件不能自动地更新它下面的编辑控件 40、如何用位图...

Global site tag (gtag.js) - Google Analytics