`
- 浏览:
113809 次
- 性别:
- 来自:
北京
-
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));
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在VC中改变控件的背景色是开发者在使用Microsoft Visual C++进行界面开发时常遇到的需求,特别是在基于MFC(Microsoft Foundation Classes)的应用程序开发中。在本篇文章中,我们将详细了解如何在VC中改变控件的...
vb-EnumChildWindows所有窗口及子窗口句柄是一款vb枚举窗口枚举出所有父窗口和其对应的子窗口句柄信息获取查看工具,每个子窗口控件都具有一个在其兄弟中唯一的窗口句柄和ID值。对于句柄和ID这两者,知道其中的一个...
在Microsoft Visual C++ (VC) 开发环境中,窗口句柄(HWND)是Windows API中用于标识应用程序窗口的一个重要标识符。窗口句柄是系统分配的一个唯一整数值,它允许程序与特定窗口进行交互。本篇文章将详细介绍在VC中...
这两个函数接受控件类型、父窗口句柄、控件ID、位置、大小、样式等相关参数。 4. **设置控件属性**: 一旦控件创建成功,你可以使用`SetWindowLong`或`SetWindowPos`等函数调整其属性,如字体、颜色、位置和大小等。...
在Windows编程中,Visual C++(简称VC)为我们提供了丰富的用户界面组件,其中包括树形控件(Tree Control),它常用于展示层次结构的数据。本文将深入探讨如何在VC环境中利用树控件,并专注于一个特定的问题:如何...
该程序可遍历当前打开的所有窗口,以及每个窗口的子控件,显示出窗口名字,子控件名字及类型,使用VC++开发
【VC常用控件简介】 在Microsoft Visual C++ (VC++)编程环境中,常用控件是构建用户界面的关键元素,它们提供用户交互的界面元素。本文主要介绍传统控件的使用方式,特别是控件通知消息的处理,以及静态控件的创建...
6. **界面集成**:将VB控件添加到VC的窗口或对话框中,通常需要使用`CreateWindowEx`函数或MFC的`CWnd::CreateControl`方法,指定控件类名和父窗口句柄。 7. **资源管理**:在程序运行过程中,正确管理VB控件的生命...
printf("控件句柄: %p, 类名: %s, ID: %d\n", hwnd, className, id); // 继续枚举 return TRUE; } ``` - 调用`EnumChildWindows()`遍历: ```cpp EnumChildWindows(hWndMain, EnumChildProc, 0); ``` 5. ...
- `CWnd::GetDlgItem`:获取指定控件的句柄。 - `CWnd::GetWindowText`:获取窗口标题文本。 - `C::atoi`:字符串转整数。 - `itoa`:整数转字符串。 - `CWnd::SetWindowText`:设置窗口标题文本。 - `CWnd::...
在OnSize()函数内,通过循环遍历所有控件,使用GetDlgItem()获取控件句柄,然后调用GetWindowRect()得到控件的原始矩形,再用ScreenToClient()将其转换为相对于对话框的坐标。接下来,计算比例并使用MoveWindow()...
Socket编程是计算机网络编程中的重要组成部分,特别是在Windows环境下,Visual C++ 6.0(简称VC6.0)因其简洁的界面和强大的编程能力,常被用于开发基于Socket的网络应用。本篇将深入探讨如何在VC6.0中进行Socket...
当控件需要绘制其背景时,会发送这些消息,我们可以捕获并处理这些消息来实现透明效果。 1. **WM_CTLCOLORSTATIC**:这是静态文本控件(Static)发送的一个消息,通知父窗口准备绘制控件的背景。我们可以通过重载`...
在VC++编程环境中,"vc Tree控件"指的是MFC(Microsoft Foundation Classes)库中的CTreeCtrl类,它是Windows API中的TreeView控件的封装。这个控件常用于创建树状结构,显示层次化的数据,例如文件系统目录或应用...
在VC++编程环境中,动态改变对话框(DLG)的大小是一项常见的需求,特别是在设计用户界面时,为了提供更好的用户体验,我们需要让对话框及其控件能够根据窗口的变化自适应布局。本篇文章将深入探讨如何实现这一功能,...
2. **获取控件句柄**:在代码中,我们需要获取控件的句柄,以便对它进行操作。句柄可以通过ON_WM_CREATE()消息处理函数或者其他适当的消息响应函数来获取。 3. **设置颜色**:改变控件颜色主要通过调用Windows API...
在函数内,你需要创建一个画刷对象(CBrush),设置其颜色为你想要的字体颜色,然后使用CDC::SetBkColor()函数设置背景颜色,最后返回画刷的句柄。 ```cpp HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT...
4. **在对话框或视图中使用自定义控件**:在对话框资源中,添加一个CStatic控件,并将其Class属性设置为你刚才创建的类名(例如,CMyStatic)。在代码中,你可以通过LoadBitmap()函数加载图片资源,并调用SetImage()...
为了支持指定窗口的捕获,程序需要获取目标窗口的句柄并创建其窗口DC,然后将窗口的内容复制到内存DC,最后保存为图像文件。此外,全屏捕获相对简单,只需获取桌面DC并复制其内容即可。 总之,这个项目提供了一套...