oyxx1023 发表于 2006-7-21 20:44:00

帮忙看下 这代代码有什么问题

<P>............<BR>struct resbuf rb;<BR>ads_getvar("osmode",&amp;rb);</P>
<P>if(rb.resval.rint==0)<BR>{<BR>&nbsp;int newosmode=161;<BR>&nbsp;SetOsMODE(newosmode);<BR>&nbsp;ads_printf("\nOSMode=0");<BR>&nbsp;&nbsp;}<BR>...........<BR>void SetOsMODE(int n)<BR>{<BR>struct resbuf rb1;<BR>rb1.restype = RTSHORT;<BR>rb1.resval.rint = n;<BR>ads_setvar("OSmode",&amp;rb1);<BR>}</P>
<P>环境ARX14,现在IF成立了,但是编译后执行却没达到预期结果.我的意图是如果捕捉是0的话,设置捕捉"端点,交点,垂足",即OSMODE=161.</P>
<P>我执行这个命令以后,查看OSMODE=16545,</P>
<P>也就是说必须再双击状态栏的"对象捕捉",才能设置捕捉"端点,交点,垂足",</P>
<P>但是这时它不会出现对话框要你勾选"端点,交点,垂足".只是必须要双击这一步才能正式打开需要 的捕捉.请问这是为什么?(不知道 我描述清楚没有.)<BR></P>

wzz1968 发表于 2006-7-25 16:20:00

<P>思路是不错的</P>
<P>问题出在判断上,因为你判断的条件根本不成立,一致没有执行.</P>
<P>试试下边的办法:</P>
<P>struct resbuf rb1,rb2;</P>
<P>ads_getvar("osmode",&amp;rb1);</P>
<P>rb2.restype=RTSHORT;</P>
<P>rb2.resval.rint=(short)161);</P>
<P>ads_setvar("osmode",&amp;rb2);</P>
<P>.....</P>
<P>ads_setvar("osmode",&amp;rb1);</P>
<P>&nbsp;</P>

oyxx1023 发表于 2006-7-25 21:31:00

<P>我的IF是成立的啊.</P>
<P>我是手工把捕捉设为0,再来执行这段代码的.</P>
<P>奇怪的是,我如果把这段代码做成一个普通的命令,它可以执行,而且结果正确.</P>
<P>实际 上我是把这段代码放在一个F3的钩子程序里面,我是想按下F3,如果OSMODE是0的话,就打默认的捕捉(161),但是放钩子里面执行就不行.真是相当的奇怪. 百思不得其解.</P>
<P>更奇怪的 是,我如果不定义F3,而是定义F2键什么的,都执行正确.绝对正确.</P>
<P>哈哈,就F3不行.真是....不晓得么办.</P>
<P>谁知道如何屏蔽CAD系统的F1~F12这种热键么.</P>
页: [1]
查看完整版本: 帮忙看下 这代代码有什么问题