利用sendmessage触发listbox的onselchange消息

By admin at 2021-08-22 • 0人收藏 • 139人看过

群里有人问, 怎么用代码触发外部exe中listbox的onselchange消息?

 根据他提供的vb中的代码, 那么转换到aardio中应该这样:


vb代码如下:

HiWord& = LBN_SELCHANGE * &H10000
LoWord& = GetDlgCtrlID(tHWND) And &HFFFF&
SendMessage hwnd, WM_COMMAND, HiWord Or LoWord, tHWND

转换到aardio后, 使用示例如下:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=423;bottom=476)
winform.add(
button={cls="button";text="Button";left=242;top=382;right=410;bottom=437;z=2};
listbox={cls="listbox";left=25;top=31;right=225;bottom=443;edge=1;items={"1";"2";"3";"4";"5";"6"};z=1}
)
/*}}*/

import console
console.open()

winform.listbox.onSelChange = function(){
	console.log("出发了onchange")
}

winform.button.oncommand = function(id,event){
	var mainhwnd = winform.hwnd;
	var listboxhwnd = winform.listbox.hwnd;
	var id = win.getId(listboxhwnd);
	//第一种方式
	//::SendMessage(mainhwnd, 0x111/*_WM_COMMAND*/, topointer(::MAKELONG(id,0x1/*_LBN_SELCHANGE*/)),topointer(listboxhwnd))
	//第二种方式
	::SendMessageInt(mainhwnd, 0x111/*_WM_COMMAND*/, ::MAKELONG(id,0x1/*_LBN_SELCHANGE*/),listboxhwnd);
}

winform.show();
win.loopMessage();


触发外部exe中的listbox  , 只需要你自己去查找窗口并定位到listbox句柄, 然后用上面的代码即可.

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
加入本站专享群:783804676
AARDIO语言QQ大群:70517368
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
C大Aardio论坛:Aar爱好者论坛
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
赞助商:才仁机械
下载站:
非凡软件站



Loading...