mfc的单文档中从一个视图的treeview类中获取Ctestview产生的视图窗口句柄

mfc的单文档中从一个视图的treeview类中获取Ctestview产生的视图窗口句柄,第1张

呵呵。没有那么复杂。

方法真的很多。

如果你没有用到文档/视图结构,单文档是在创框架窗口中创建的。有一个变量m_wndView。这个就是那个句柄了。他是CWnd派生的。

如果你用到了文档/视图结构,直接GetActiveView就可以。

还有一种情况,如果你用了切分窗口。。。。。。。

忘了哪个函数了。GetPane好像。。查一下便知。

如果你只是想了解获取窗口句柄,那么学习FindWindowEx,FindWindow这俩函数,既然你给出了例子,我就拿你的例子示范一下。

测试通过,加的是改动内容

'自定义函数

Function getname(link As String) As String '获取FileTitle函数

Dim i As Integer

link = Trim(link)

For i = Len(link) To 1 Step -1

If Mid(link, i, 1) = "\" Then getname = Mid(link, i + 1): Exit For

Next i

End Function

'

Private Sub Text1_Change()

Dim NotepadHwnd As Long, hwnd As Long

Dim fpath As String '路径

If 1 < Val(Text1Text) And 35 > Val(Text1Text) Then

fpath = "C:\Documents and Settings\Administrator\桌面\新建 文本文档txt" '

ShellExecute 0, "open", fpath, 0, 0, 6 '打开文件

Sleep 3000 '等待文件打开

NotepadHwnd = FindWindow(vbNullString, getname(fpath) & " - 记事本") '

'得到窗口类名为Edit的窗口句柄

hwnd = FindWindowEx(NotepadHwnd, 0, "Edit", vbNullString)

PostMessage hwnd, WM_KEYDOWN, vbKeyA, MakeKeyLparam(vbKeyA, WM_KEYDOWN) '按下A键

PostMessage hwnd, WM_CHAR, vbKeyS, MakeKeyLparam(vbKeyS, WM_KEYDOWN) '输入字符A

PostMessage hwnd, WM_KEYUP, vbKeyY, MakeKeyLparam(vbKeyY, WM_KEYUP) '释放A键

End If

End Sub

'以下是完整声明部分

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Declare Function ShellExecute Lib "shell32dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Const WM_KEYDOWN = &H100

Private Const WM_CHAR = &H102

Private Const WM_KEYUP = &H101

Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long

Dim s As String

Dim Firstbyte As String 'lparam参数的24-31位

If flag = WM_KEYDOWN Then '如果是按下键

Firstbyte = "00"

Else

Firstbyte = "C0" '如果是释放键

End If

Dim Scancode As Long

'获得键的扫描码

Scancode = MapVirtualKey(VirtualKey, 0)

Dim Secondbyte As String 'lparam参数的16-23位,即虚拟键扫描码

Secondbyte = Right("00" & Hex(Scancode), 2)

s = Firstbyte & Secondbyte & "0001" '0001为lparam参数的0-15位,即发送次数和其它扩展信息

MakeKeyLparam = Val(" H" & s)

End Function

以上就是关于mfc的单文档中从一个视图的treeview类中获取Ctestview产生的视图窗口句柄全部的内容,包括:mfc的单文档中从一个视图的treeview类中获取Ctestview产生的视图窗口句柄、vb模拟键盘事件如何获取exe文件句柄、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9707865.html

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

发表评论

登录后才能评论

评论列表(0条)

保存