
照你的程序来看,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++中如何获取当前窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)