如何获取控件句柄 vc

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取控件句柄 vc相关的知识,希望对你有一定的参考价值。

1、GetWindowLong是获得有关指定窗口的信息,这个信息包括窗口扩展风格、标识、父句柄、风格等;通过第二个参数在控制的
2、GWL_EXSTYLE
获得扩展窗口风格。
GWL_HINSTANCE
获得应用事例的句柄。
GWL_HWNDPARENT
如果父窗口存在,获得父窗口句柄。
GWL_ID
获得窗口标识。
GWL_STYLE
获得窗口风格。
GWL_USERDATA
获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。
GWL_WNDPROC
获得窗口过程的地址,或代表窗口过程的地址的句柄。
同样SetWindowLong也需要通过参数设定不同的信息;
参考技术A 自绘控件?
如果你是基于原始控件类
派生的新类
那么可以用
控件的id
getdlgitem()获得句柄
如果是
语句cwnd
自己
create的
cwnd::create(_t("listbox"),
"hi",dwstyle,rc,
pparent,
nid);
最后一个参数
也是
控件
id
可以自己设定
同样用getdlgitem()
获取句柄
参考技术B GetDlgItem
FindWindowEx
EnumChildWindows

...
都可以 随便你自己选择本回答被提问者采纳
参考技术C HWND
hEdit;
hEdit
=
GetDlgItem(hDlg,IDC_EDIT1);//hDlg为父窗口句柄
if(hEdit
!=
NULL)

SetWindowPos(hEdit,HWND_TOP,x0,y0,cx,cy,SWP_NOSIZE
|
SWP_SHOWWINDOW);

vb如何获取到窗口的句柄

如果我用getwindow找到窗口的hdc属性,但是我想要它的hwnd,怎么办呢?
求教。。

参考技术A 获取句柄不一定要用 FindWindow ,还可以枚举:

Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDNEXT = 2

Private Sub Command1_Click()
Dim lngHwnd As Long, ret As Long
Dim s As String * 255
Dim sName As String

lngHwnd = GetWindow(Me.hwnd, GW_HWNDFIRST)
Do While lngHwnd
ret = GetWindowText(lngHwnd, s, 255)
sName = Blank(s)
If InStr(sName, "记事本") <> 0 Then '这里“记事本”替换成程序标题相同的部分
'这里写 将句柄加入数组的相关代码
End If
lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)
Loop
End Sub

Public Function Blank(ByVal szString As String) As String
Dim l As Integer

l = InStr(szString, Chr(0))
If l > 0 Then
Blank = Left(szString, l - 1)
Else
Blank = szString
End If
End Function
参考技术B GetWindow怎么会找到hdc呢?他的返回值就是hwnd啊。
============
话说回来,如果你已知一个hdc想要找他的hwnd,用WindowFromDC函数。本回答被提问者采纳

以上是关于如何获取控件句柄 vc的主要内容,如果未能解决你的问题,请参考以下文章

c#如何获取串口的句柄?

VC如果得到其他程序窗口的控件句柄

c#获取窗口句柄后 如何遍历所有控件

主窗口中如何获取子窗口某控件句柄?

VC 如何获取一个控件内的字体

VC TAB控件子对话框如何使用主对话框的成员函数.