利用sendmessage触发listbox的onselchange消息

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

群里有人问, 怎么用代码触发外部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可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...