嵌入控件的控件消息传递

嵌入控件的控件,最好用wndproc回调函数处理消息。否则应在父控件窗口中转发命令消息

示例1 

import win.ui;
/*DSG{{*/
var winform = ..win.form( bottom=399;parent=...;text="AAuto Form";right=599 )
winform.add( 
listview={ bgcolor=16777215;bottom=291;right=520;left=21;top=46;z=1;gridLines=1;edge=1;cls="listview" };
edit={ text="edit";bottom=363;right=431;left=82;top=337;z=2;edge=1;cls="edit" }
)
/*}}*/

winform.listview.insertColumn("dfdfd",150)
winform.listview.insertColumn("dfdfd",150)
winform.listview.insertColumn("dfdfd",-1)
winform.listview.addItem({"sdfsdf";'sdfd645';'fkdl'})
 
  // 插入控件
winform.listview.addCtrl(
    btn = { 
        cls="button";left=0;top=0;right=50;bottom=50;autoResize=false ;edge=1; 
        oncommand=function(id,event){
            winform.msgboxTest(winform.edit.text)
        } 
    }
)
//winform.cmdTranslate 转发命令消息,在父控件wndproc消息回调中调用,用于启用子控件的oncommand事件.
winform.listview.wndproc = function(hwnd,message,wParam,lParam){
    winform.cmdTranslate(hwnd,message,wParam,lParam); 
}
// 设置内嵌控件的位置
var rc = winform.listview.getItemRect(1,3,,2)
winform.listview.btn.setRect(rc)

winform.show() 
win.loopMessage();


示例 2 

import win.ui;
/*DSG{{*/
var winform = ..win.form( bottom=356;parent=...;text="AAuto Form";right=351 )
winform.add( 
listview={ bgcolor=16777215;bottom=296;right=309;left=37;top=41;z=1;edge=1;cls="listview" }
)
/*}}*/

winform.listview.addCtrl(
    btn1 ={ cls="button";left=0;top=0;right=50;bottom=50;autoResize=false ;hide=1;edge=1;hide=0;text="btn1";id=100;z=1 };
    btn2 ={ cls="button";left=0;top=52;right=50;bottom=102;autoResize=false ;hide=1;edge=1;hide=0;text="btn2";id=101;z=2 };
    btn3 ={ cls="button";left=0;top=104;right=50;bottom=154;autoResize=false ;hide=1;edge=1;hide=0;text="btn3";id=102;z=3 };
    btn4 ={ cls="button";left=0;top=156;right=50;bottom=206;autoResize=false ;hide=1;edge=1;hide=0;text="btn4";id=103;z=4 };
)

winform.listview.wndproc = function(hwnd, message, wParam, lParam) {
    winform.cmdTranslate(hwnd, message, wParam, lParam);
}

winform.listview.btn1.oncommand = function () {
    winform.msgbox("我是 btn1");
}

winform.listview.btn2.oncommand = function () {
    winform.msgbox("我是 btn2");
}

winform.show() 
win.loopMessage();

  

猜你喜欢

转载自www.cnblogs.com/yaoyue68/p/10486346.html