API之FindWindowEx和SendMessage

API之FindWindowEx和SendMessage最近在VC6.0开发中碰到了两个函数,经过一番搜索查阅,特记录于此。

大家好,又见面了,我是你们的朋友全栈君。

最近在VC6.0开发中碰到了两个函数,经过一番搜索查阅,特记录于此。

FindWindowEx

// The FindWindowEx function retrieves a handle to a window

// whose class name and window name match the specified strings.

// The function searches child windows, beginning with the one following

// the specified child window. This function does not perform a case-sensitive search.

// 翻译:该函数获取一个指定类名和窗口标题字符串(大小写不敏感)都匹配的子窗口的句柄。

//

// HWND FindWindowEx(

//  

 

 

  

 

 

  

 

 
HWND hwndParent, 

 

 

 

   

 // handle to parent window父窗口句柄,如果为NULL,则指
桌面

//            HWND hwndChildAfter,  // handle to child window直系子窗口该窗口和此函数要查
//找的窗口
即返回的结果窗口是兄弟关系
//  


 

 

  

 

 

  

 

 
LPCTSTR lpszClass, 

 

 

      // class name类名,编辑框为EDIT,组合框为COMBOBOX等

//  

 

 

  

 

 

  

 

 
LPCTSTR lpszWindow 

 

 

 // window name标题名字字符串


//  

 )

CBN_SELCHANGE 

利用SendMessage向指定的组合框发送消息,
直接引用MSDN中关于CBN_SELCHANGE的描述:

The CBN_SELCHANGE notification message is sent when the user changes the current selection in the list box of a combo box. The user can change the selection by clicking in the list box or by using the arrow keys. The parent window of the combo box receives this notification in the form of a WM_COMMAND message with CBN_SELCHANGE in the high-order word of the
wParam
parameter.

CBN_SELCHANGE
idComboBox = (int) LOWORD(wParam); // identifier of combo box 
hwndComboBox = (HWND) lParam; // handle to combo box 

To get the index of the current selection, send the CB_GETCURSEL message to the control.
The CBN_SELCHANGE notification message is not sent when the current selection is set using the CB_SETCURSEL  message. 

也就是说,需要先发送CB_SETCURSEL消息后,再发送CBN_SELCHANGE消息才能响应事件,举例如下:
::SendMessage(hwndCombo, CB_SETCURSEL, 1, 0);
int id = ::GetDlgCtrlID(hwndCombo);
::SendMessage(hwndDialog, WM_COMMAND, MAKEWPARAM(id, CBN_SELCHANGE), (LPARAM)hwndCombo);
注意第二次发送消息时,第一个参数hwndDialog是父窗口的句柄,与组合框的句柄要区别开来,第三个参数用到了MAKEWPARM函数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140708.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 机器学习常见的采样方法[通俗易懂]

    机器学习常见的采样方法[通俗易懂]我们在训练模型的过程,都会经常进行数据采样,为了就是让我们的模型可以更好的去学习数据的特征,从而让效果更佳。但这是比较浅层的理解,更本质上,数据采样就是对随机现象的模拟,根据给定的概率分布从而模拟一个

  • 手眼标定 matlab源码,经典手眼标定算法matlab

    手眼标定 matlab源码,经典手眼标定算法matlab【实例简介】经典手眼标定算法matlab代码,程序作者为ChristianWengert。工具箱包含的主要算法有Tsai-Lenz算法、NAVY算法(Park)、INRIA算法(Horaud)以及对偶四元数手眼定标算法【实例截图】【核心代码】1cdffffa-57b3-468c-8073-d4f45202c11a└──calib_toolbox_addon├──addDistortion…

  • C语言 条件运算符(? : )的用法[通俗易懂]

    C语言 条件运算符(? : )的用法[通俗易懂]条件运算符(?:)是一个三目运算符,即有三个操作数。使用条件运算符(?:)可以实现IfElse的功能,其一般形式为:          表达式1?表达式2:表达式3其意思是:如果表达式1为真,则运算表达式2,整个条件表达式的值为表达式2的值;反之,则运算表达式3,整个条件表达式的值为表达式3的值。

  • java中import是什么意思_java中import关键字是什么意思「建议收藏」

    java中import是什么意思_java中import关键字是什么意思「建议收藏」import关键字是用来导入包的,因为实际开发中,你不可能把所有的类都放在同一个default包里面。包的作用就是给java类进行分拣,不同业务逻辑的java类放在同一个包中,比如工具包,实体包。那么,你在a包中的A类,希望调用b包中的B类,就需要导入b包。import关键字使用1、显示导入指定包下的类或者接口importjava.util.Scanner;2、写在包的声明和源文件之间packa…

  • 小程序跳转公众号_小程序跳转APP

    小程序跳转公众号_小程序跳转APP即用即走——这个是从微信小程序上线就开始打的概念。即用即走使得小程序可以代替许多APP,或是做APP的整体嫁接,或是作为阉割版功能的承载体。对用户使用上来说,确实方便,要用的时候打开,不用的时候关掉,即用即走。但是却并不会关注相关联的公众号。那么怎么在小程序中加入公众号的关注功能呢?简单来说就这么几步:1,登入微信公众号的管理后台微信公众平台。2,选择要跳转的公众号登录进去,点击小程序管理。3,直接点击关联小程序即可,如果关联过其他小程序点击添加即可,该操作只能由公众号管理员完成,.

    2022年10月23日
  • 动态标题怎么写_网站主题

    动态标题怎么写_网站主题1.快并快乐着!2.共享世界,有你才精彩!3.你共享一小文件,对于你来说是一小文件,但对于世界上的骡友来说是一个大文件。4.分享互联网5.梦里寻她千百度,蓦然回首,那资源竟在VeryCD下载处。6.想象力比知识更重要。7.学历代表过去,学习力掌握将来。8.把自己当傻瓜,不懂就问,你会学的更多。9.学问和修持的力量,来使人受益,就等于欠了一份债。10.不是事业为了思想,而是思想为了事业。11.睡觉是为了踏实地工作,工作是为了踏实地睡觉。12.人生在世界是短暂的,对这短暂的人生,我们最好的报答就是工作。13.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号