⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_38306.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:38306 发表者:陈剑 发表日期:2003-05-02 14:06:57
<br>主题:程序中断的问题!
<br>内容:我在一个动态的演示软件中想用Esc键来中断或暂停这个软件的画图过程。<BR>原来的c程序是这样写的<BR>if(kbhit()){<BR><BR>&nbsp;&nbsp;aa=getch();<BR>&nbsp;&nbsp;if(aa==ESCKEY)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;i=121;<BR>&nbsp;&nbsp;&nbsp;&nbsp; m=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp; }<BR>}作用是按一下Esc键就停止画图,但这个移到vc下后,这个键起不了作用了。请问各位前辈<BR>如果用mfc来写应该怎么写。<BR>还有如果想用一个键来控制整个画图过程,比如你按一下空格键,他就暂停画再按一下,又<BR>继续。请问该怎么做啊!<BR>说明一下,主要的控制函数就是上面这个(原来的c程序里,只有中断的没有暂停的)。<BR>请各位帮个忙。谢了!<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:huza 回复日期:2003-05-02 14:34:56
<br>内容:有点像是做游戏,你可以响应Onidle()<BR>然后在里边截获键盘操作就可以了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:moli 回复日期:2003-05-02 15:20:36
<br>内容:设计一个OnKeyDown函数,具体可查阅msdn,因为具体我也不是很清楚,在这个函数中可以处理任何的键盘消息。如下:<BR>void CyourclassView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;switch(nChar)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case VK_SPACE&nbsp;&nbsp;&nbsp;&nbsp;:{按要求写出你自己的代码<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:西北狼 回复日期:2003-05-02 16:57:48
<br>内容:好像不行的,如果你的画图工作量很大的话,是不是就不会响应中断了(必须使用多线程),向线程发送退出消息或者强行中断喔
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:moli 回复日期:2003-05-02 17:10:58
<br>内容:我做的是三维显示呀,我的程序在三维显示的时候各种情况都是靠键盘触发的呀,就是一按下space键三维景观就自动旋转呀。再一按下就停止,好像还挺好用的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:陈剑 回复日期:2003-05-02 17:21:04
<br>内容:请教楼上的,请问楼上的,怎么实现这样的键盘功能。就是以你上一个答复的OnKeyDown()函数来做吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syosinsya 回复日期:2003-05-02 17:38:35
<br>内容:如果你觉得现在用多线程干还有些困难的话,就用SetTimer()设定一个很短的时间间隔,在OnTimer()中画图并检查是否有Esc按下(画图速度当然是要降低了)。然后重载PreTranslateMessage(MSG* pMsg),在其中加入:<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(pMsg-&gt;message == WM_KEYDOWN)&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(pMsg-&gt;wParam)&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&nbsp;&nbsp;&nbsp;VK_ESCAPE:&nbsp;&nbsp; // Esc key<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设置Esc按下的Falg以便OnTimer()中判断<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:moli 回复日期:2003-05-02 23:10:44
<br>内容:对呀,楼上的也说得很对,我的OnKeyDown里面也有SetTimer函数,格式是<BR>case VK_SPACE&nbsp;&nbsp; :{flag= !flag;//就是你的标志<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(flag)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetTimer(1,40,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KillTimer(1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Invalidate(FALSE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;}。<BR>然后在OnTimer中,有如下if(flag){//加入你想要实现的代码},不知道我有没有说清楚,也可能有点走弯路了,其实我也不怎么会的,楼上的老兄说的也挺对的。你可以在msdn里面查到关于SetTimer 函数。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -