- 积分
- 86
- 注册时间
- 2004-12-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
这几天通过对activex控件的调式,总结出如下内容:
传给activex控件event handler之参数
传给activex控件event handler的参数为:
varargin{1}:object handle(com,progid)
varargin{2}:event id
varargin{3}:event args
varargin{4}:event name
object handle指向被监听activex控件
event id有:
-600: Single Click
-601: Double Click
-602: KeyPress
-603: CharPress
-604: KeyRelease
-605: Mousedown
-606: MouseMove,事实上没有任何事件发生时,监听器以id=-606不断调用handler
-607: MouseUp
当接受字符键盘输入时(event id=-602,-603,-604),字符信息在event name中,此时event args为字符ascii码,
可以接受SHIFT+character
可以接受Ctrl+character, ascii码规律如:
Ctrl+A: 1 ,CtrL+B: 2, CtrL+C: 3
非字符键盘输入(event id=-602,-604),键的信息位于event args,常用键的event args值为:
shift: 16
ctrl: 17
F1: 112
F2: 113
Up: 38
Left: 37
Right: 39
Down 40
-------------------------------------------------------------------
附上调试时用的一些代码:
function test_eventhandler
ID='MSFlexGridLib.MSFlexGrid';
fi=figure('NumberTitle','off','toolbar','none','menubar','none','Name','Test Activex','pos',[159 150 550 250]);
h = actxcontrol(ID,[0 0 550,250],fi,@gridhandler);
function gridhandler(varargin)
%varargin{1}:object (com,progid)
%varargin{2}:event id
%varargin{3}:event args
%varargin{4}:event name
% 测试代码
disp(char(13));
disp(['ID:',num2str(varargin{2})]);disp(['eventname:']);disp(varargin{4});
disp('eventarg:');disp(varargin{3});
[ 本帖最后由 nostalgica 于 2006-9-2 14:49 编辑 ] |
评分
-
1
查看全部评分
-
|