照你的程序来看,ReadTime
h_d
=
AfxGetMainWnd()->GetSafeHwnd();
::SetWindowText(::GetDlgItem(h_d,
IDC_STATIC),
str);
顺便说一句,IDC_STATIC很多static
control都是用的这个ID,建议改一下。
这一句还是错的:GetDlgItem(IDC_STATIC)->SetWindowText(str);
因为全局函数GetDlgItem不仅需要两个参数,而且返回值是HWND,是不能调用的。
1、启动VS,新建C# WinForm项目。
2、在Form1中添加4个Label控件,并布局如下。
3、在Form1中添加代码,如下。
4、完成之后,调试运行,结果如下。
注意事项:
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
把每个相同类名的子窗口改不同窗口标题,下次查找时,可以直接找你编辑的标题
其实有用的就三句:
Hwnd = PluginWindowFind(0, "无标题 - 记事本")//找到父窗口
HwndEx = PluginWindowFindEx(Hwnd, 0, "Button", 0)
//根据子窗口类名找到子窗口
Call PluginWindowSetText(HwndEx,"AJJL")
//把这个子窗口名字改为AJJL
分类: 电子数码
解析:
了解什么是句柄就好理解了
就是获得这个窗口的识别代码
句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。
有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一
(如线程句柄,全局的有另一个标识符)。
详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。
常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),
文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),
区域句柄(HRGN)等等。
在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。
而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释
放。
>
如果只用VB本身的代码一般是不会用到句柄的,但要是使用API函数的话,
大多数会使用。
再Windows系统中,句柄(我一直觉得这个词翻译得特别别扭)分为三大类:Kernel
Handle、UserHandle和应用程序自定义的Handle。
KernelHandle实际上是进程内Kernel对象的指针表索引,Kernel对象包括进程、文
件、信号等。但是MS为了掩盖着一事实,在系统启动时生成了一个所谓Obsfucator的值
(其实应该是Obfuscator,MicrosoftBugs(R):),生成Handle后将Handle与这个值异
或后返回给应用程序,所以看到的Handle都是一些很大而且毫无意义的数字。这些
Handle和索引的对象是由KRNL32DLL和VMM32VXD共同管理的,所以称之为Kernel
Handle。
UserHandle是用来标示窗口、DC等对象的,他们是真实的指针,但指向的并不是对象
的开头,有一个偏移量。同样,这些对象是由USER32DLL管理的。
第三种Handle不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关
以上就是关于mfc获取窗口句柄全部的内容,包括:mfc获取窗口句柄、C++中如何获取当前窗口句柄、如何用按键精灵获取同一类名窗口的句柄并识别窗口内数字。窗口为子窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)