import win.ui;
import win.clip;//导入剪贴板支持库
/*DSG{{*/
var winform = win.form(parent=...; min=1;bottom=249;max=1;text="AAuto Form";right=349 )
winform.add( 
edit={ bottom=175;right=314;left=47;multiline=1;top=31;z=0;text="剪贴板改变会显示在这里";edge=1;cls="edit" }
)
/*}}*/

//声明剪贴板监视器用到的API
SetClipboardViewer = ::User32.api( "SetClipboardViewer", "int(int hWndNewViewer)") 
ChangeClipboardChain = ::User32.api( "ChangeClipboardChain", "int(int hWndRemove,int hWndNewNext)") 

//注册加入成为监视窗口,nextClipboardViewer为上一个监视窗口
var nextClipboardViewer  =  SetClipboardViewer( winform.hwnd );

//窗口消息回调函数,在设计器中鼠标左键双击窗体会自动生成下面的函数
winform.wndproc = function(hwnd,message,wparam,lparam){
    select(message) {//判断消息类型
        case  0x308/*_WM_DRAWCLIPBOARD*/  {
            //剪贴板内容改变了,读取剪贴板数据
            winform.edit.text = win.clip.read() 
            //然后发送给下一个窗口
            ::SendMessageInt( nextClipboardViewer,message,wparam,lparam );
        } 
        case  0x30D/*_WM_CHANGECBCHAIN*/ {
            //监视剪贴板的窗口组成一个链表,如果链表发生改变,在下面处理之
            if (wparam == nextClipboardViewer)
                nextClipboardViewer = lparam;
            else
                ::SendMessageInt( nextClipboardViewer,message,wparam,lparam );
        
        }
    } 
}//endproc

//显示窗口
winform.show(true) 
//进入消息循环
win.loopMessage();
return winform;