mfc获取窗口句柄

mfc获取窗口句柄,第1张

你的程序来看,ReadTime

是全局函数,所以要获取主窗口句柄应该:

h_d

=

AfxGetMainWnd()->GetSafeHwnd();

::SetWindowText(::GetDlgItem(h_d,

IDC_STATIC),

str);

顺便说一句,IDC_STATIC很多static

control都是用的这个ID,建议改一下。

这一句还是错的:GetDlgItem(IDC_STATIC)->SetWindowText(str);

因为全局函数GetDlgItem不仅需要两个参数,而且返回值是HWND,是不能调用的。

窗体代码如下 在TEXT输入进程PID

Private Sub Command1_Click()

List1Clear

Find_Window Val(Text1Text)

End Sub

Private Sub Form_Load()

Text1Text = ""

Command1Caption = "枚举窗口"

End Sub

模块代码如下

Option Explicit

Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId 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

Dim IfPid As Long

Private Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long

Dim Pid1 As Long

Dim wText As String 255

GetWindowThreadProcessId hwnd, Pid1

If IfPid = Pid1 Then

GetWindowText hwnd, wText, 100

Form1List1AddItem "句柄:" & hwnd & " 标题:" & wText

End If

EnumWindowsProc = True

End Function

Public Sub Find_Window(ByVal Pid As Long)

IfPid = Pid

EnumWindows AddressOf EnumWindowsProc, 0

End Sub

进程名称是需要枚举的。我个人认为也就这个方法了。

1、启动VS,新建C# WinForm项目。

2、在Form1中添加4个Label控件,并布局如下。

3、在Form1中添加代码,如下。

4、完成之后,调试运行,结果如下。

注意事项:

C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。

你的理解稍微有点错误,其实渲染窗口是在glutCreateWindow之后立刻就创建了,我一直都是在这个接口之后用windows API: GetActiveWindow就可以获取窗口句柄了,你试试。没有必要在渲染函数内每次都获取。

可以通过一个东西来共享Hwnd吧,就是WinForm的把自己的Hwnd写到某个地方,WFC的去获取

仅一思路而已~~[align=center]

FindWindow( "", NULL);

以上就是关于mfc获取窗口句柄全部的内容,包括:mfc获取窗口句柄、vb中已知进程名称(不知道窗口标题),如何获取其hWnd(句柄)、C++中如何获取当前窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9534194.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存