chlh_jd
发表于 2011-4-28 16:00:47
本帖最后由 chlh_jd 于 2011-4-28 16:06 编辑
用楼主的代码把派送消息行注释掉(vlax-invoke DWX 'DispatchMessage ptr) ;派送消息,就可以不让屏幕跟着滚动了 ;但这个amsg始终返回±7864320,C++中的wParam好像可以返回滚动距离;
另一个问题请教下斑竹:有没有一种可能把这个功能附加到grread上?
鼠标滚轮的消息处理,这篇文章可能叙述得不错
http://topic.csdn.net/t/20030820/15/2168554.html
这段代码貌似精髓诠释
WM_MOUSEWHEEL
fwKeys = LOWORD(wParam); /* key flags */
zDelta = (short) HIWORD(wParam);
/* wheel rotation */
xPos = (short) LOWORD(lParam);
/* horizontal position of pointer */
yPos = (short) HIWORD(lParam);
/* vertical position of pointer */
highflybird
发表于 2011-4-28 16:41:11
回复 chlh_jd 的帖子
这样是可以的,等于截获CAD发出来的消息。但我不知道会有什么意外发生。
aMsg = wParam
bMsg = lParam
可以通过lParam或者屏幕坐标,然后把屏幕坐标转换为CAD的坐标(需要获得窗口大小,
要用到ScreenToClient 的API,参见下面:
http://hi.baidu.com/sppeivan/blog/item/98ba4ba337f84aa7cbefd041.html
最后用trans pt2 0
但这样我没测试过。
chlh_jd
发表于 2011-4-28 19:14:30
本帖最后由 chlh_jd 于 2011-4-28 19:43 编辑
滚轮信息即时截取要协同VLISP做ACAD屏幕的动态显示,这个确实有点麻烦;
不防先看下这个VLISP ;;;use Alan method
;;;to easy to control add method devided by viewsize .
(defun c:test (/ en ent str ds pto pt)
(if (and (setq en (car (entsel "Select Integer Number Text :")))
(setq ent (entget en))
(setq str (cdr (assoc 1 ent)))
(numberp (eval (read str)))
(equal (atoi str) (atof str))
(setq ds (/ (getvar "viewsize") 100.));_here can be changed cond to your need
(setq pto (grread t 15 0))
)
(while (and (setq pt (grread pto))
(not (and (= 2 (car pt))
(or (= 13 (cadr pt)) (= 32 (cadr pt)))
)
) ;_Enter Space
(not (or (= (car pt) 11) (= (car pt) 25))) ;_Right button
)
(if (and (= (car pt) 5)
(> (abs (- (cadadr pt) (cadadr pto))) ds)
)
(cond
((> (- (cadadr pt) (cadadr pto)) 0);_Y+ move
(setq str (rtos (1+ (atoi str)) 2 0))
(entmod (list (cons 1 str) (cons -1 en)))
(setq pto pt)
)
((< (- (cadadr pt) (cadadr pto)) 0);_Y- move
(setq str (rtos (1- (atoi str)) 2 0))
(entmod (list (cons 1 str) (cons -1 en)))
(setq pto pt)
)
)
(princ)
)
)
(princ)
)
(princ)
)
icefrog
发表于 2011-4-28 22:31:08
这个一定要顶
xiaotao
发表于 2011-4-29 13:04:08
再一次佩服!
carrot1983
发表于 2011-4-29 13:41:08
很好,很强大。看来不得不恶补VB。
carrot1983
发表于 2011-4-29 13:51:10
你甚至可以将它打包到vlx文件中。
楼主所言是真的?请教怎么做到?
carrot1983
发表于 2011-4-29 13:51:46
你甚至可以将它打包到vlx文件中。
楼主所言是真的?请教怎么做到?
carrot1983
发表于 2011-4-29 13:52:25
本帖最后由 carrot1983 于 2011-4-29 13:53 编辑
你甚至可以将它打包到vlx文件中。
楼主所言是真的?请教怎么做到?
还以为没有发出去,怎么一下子就发了三条。哈哈,不太会用。
zark
发表于 2011-4-29 14:12:54
我相信这是迟来的爱,楼主,你太高了
页:
1
2
3
4
[5]
6
7
8
9
10
11
12
13
14