Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4740020
  • 博文数量: 206
  • 博客积分: 5240
  • 博客等级: 大校
  • 技术积分: 3224
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 21:40
文章分类

全部博文(206)

文章存档

2013年(13)

2012年(8)

2011年(33)

2010年(152)

我的朋友

分类:

2010-09-17 01:49:36

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;
阅读(1029) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~