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

📄 subject_23146.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:23146 发表者:东海藏龙 发表日期:2002-12-02 09:05:21
<br>主题:turbo c2.0中能实现并行处理吗??
<br>内容:turbo c2.0中可以实现并行处理吗?<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>
回复者:塞翁 回复日期:2002-12-02 10:52:12
<br>内容:当然实现做到这样的功能,但我想不能算严格的并行处理;不知道你的要求有多严格?CPU处理总有先后顺序.<BR>你可以把要求讲的再具体些.看看我能否帮你:))<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>
回复者:东海藏龙 回复日期:2002-12-02 17:47:11
<br>内容:塞翁,你和我真有缘啊。<BR>有两种:1.我同时按下键盘上两个键,能实现某种功能,比如在屏幕上打印一句话。<BR>2.不管我在作什么,屏幕上总有一个计数器在跳变,显示秒数<BR><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>
回复者:白云 回复日期:2002-12-02 18:17:22
<br>内容:我有两种解决方法。一种是循环等,用bioskey等待按键,检查没键之后再去更新时间,程序量不大,感觉上好像是一齐,另外一种自然就是中断了,把时间显示放到时间中断里去就成
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:塞翁 回复日期:2002-12-03 11:03:10
<br>内容:同意白云<BR>1)用bioskey判断按了什么键,(同时按两个?shift+X或alt+X等吗?可以查键码)<BR>2)用中断
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:东海藏龙 回复日期:2002-12-03 14:44:34
<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>
回复者:东海藏龙 回复日期:2002-12-04 08:52:20
<br>内容:也就是说,程序在执行时,每隔1秒,就自动去执行1句打印语句。<BR>这1句打印语句很像中断的用法,但是每隔1 秒又是怎么才能做到呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:东海藏龙 回复日期:2002-12-04 09:14:28
<br>内容:解释上边的话,就是说在执行当前任务时,每隔1 秒会中断当前任务,而去执行1句打印语句<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>
回复者:塞翁 回复日期:2002-12-04 10:24:38
<br>内容:如果不用中断,简单点,检测系统时间的秒数,如果变化就执行打印语句;否则接着执行别的任务.大概示意如下(不光是时间任务,你体会一下)<BR>main()<BR>{<BR> for(;;)<BR> {<BR>&nbsp;&nbsp;if(a)<BR>&nbsp;&nbsp; {aa();}<BR>&nbsp;&nbsp;if(b)<BR>&nbsp;&nbsp; {bb();}<BR>&nbsp;&nbsp;if(c)<BR>&nbsp;&nbsp; {cc();}<BR>&nbsp;&nbsp;if(d)<BR>&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;}<BR>}<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>
回复者:白云 回复日期:2002-12-04 12:16:10
<br>内容:塞翁给出的是第一种方法的实现,称作:busy loop(忙等待)<BR>另一个是中断。<BR>说明一下,DOS中,对中断的处理函数的函数指针称作中断向量,中断向量放在内存的最起始位置,如果要写中断函数,其实就是把中断向量修改成指向我们自己函数就可以了。<BR>在TC中可以用setvect(int nIntNum,(void *)(fun));<BR>第一个参数是我们要截取的中断向量,第二个是我们自己的中断处理函数,注意,当你的程序结束后一定要恢复原来的中断向量<BR>下面是个例子,是BC3.1的:你可以参照一下,如果还是不行,我就帮你把它转成Turboc 2下。关于时间中断号,查一下相关手册就成<BR>//keys.cpp<BR>// 按键表索引发:<BR>// 首先建立key_table[]作为按键表,然后根据按键扫描码改变key_table[]中的状态,<BR>// 这样key_table[]中所有对应的索引按键即为需要的组合键。<BR>// 以下程序仅对上、下、左、右四个光标键做了组合按键的处理。<BR>// 本程序在Borland C++ 3.1 中调试通过。<BR>#include&lt;dos.h&gt;<BR>#include&lt;conio.h&gt;<BR>#include&lt;stdio.h&gt;<BR><BR>#define ESC 1<BR>#define UP 72<BR>#define _UP 200<BR>#define DOWN 80<BR>#define _DOWN 208<BR>#define LEFT 75<BR>#define _LEFT 203<BR>#define RIGHT 77<BR>#define _RIGHT 205<BR><BR>#define NUM_KEYS 4<BR><BR>#define INDEX_UP 0<BR>#define INDEX_DOWN 1<BR>#define INDEX_LEFT 2<BR>#define INDEX_RIGHT 3<BR>#ifdef __cplusplus<BR>#define __CPPARGS...<BR>#else<BR>#define __CPPARGS<BR>#endif<BR><BR>char * key_table_name[NUM_KEYS]<BR>= {"UP","DOWN","LEFT","RIGHT" };<BR>int key_scan_code; // 键盘扫描码<BR>int key_table[NUM_KEYS]; // 按键表<BR><BR>class INTERRUPT<BR>{// 定义中断类<BR>int INT;<BR>void far interrupt ( *Old_Int)(__CPPARGS);<BR>public:<BR>void BEGIN_INT(int Int,void far interrupt(*New_Int)(__CPPARGS));<BR>void END_INT(void);<BR>};<BR><BR>void INTERRUPT::BEGIN_INT(int Int,void far interrupt(*New_Int)(__CPPARGS))<BR>{// 开始自定义中断处理<BR>INT = Int;<BR>Old_Int = getvect(INT);<BR>setvect(INT,New_Int);<BR>}<BR><BR>void INTERRUPT::END_INT(void)<BR>{// 结束自定义中断处理<BR>setvect(INT,Old_Int);<BR>}<BR><BR>void far interrupt special_key(__CPPARGS)<BR>{// 自定义中断处理函数<BR>int status;<BR>key_scan_code = inp(0x60); // 读键盘扫描码<BR>status = inp(0x61); // 读键盘状态<BR>outp(0x61,status and 0x80); // 置位7并写<BR>outp(0x61,status); // 再写位7<BR>outp(0x20,0x20); // 复位PIC<BR>switch(key_scan_code){ // 记录光标键,设置key_table[]中的状态<BR>// 1为按下键,0为松开键<BR>case UP: key_table[INDEX_UP] = 1; break;<BR>case _UP: key_table[INDEX_UP] = 0; break;<BR>case DOWN: key_table[INDEX_DOWN] = 1; break;<BR>case _DOWN: key_table[INDEX_DOWN] = 0; break;<BR>case LEFT: key_table[INDEX_LEFT] = 1; break;<BR>case _LEFT: key_table[INDEX_LEFT] = 0; break;<BR>case RIGHT: key_table[INDEX_RIGHT] = 1;break;<BR>case _RIGHT:key_table[INDEX_RIGHT] = 0;break;<BR>}<BR>}<BR><BR>void init_key_table(void)<BR>{// 初始化键盘表<BR>register i;<BR>for(i=0;i&lt;NUM_KEYS;i++)<BR>key_table[i]=0;<BR>}<BR><BR>void main(void)<BR>{<BR>int i;<BR>INTERRUPT KEY;<BR>init_key_table();<BR>clrscr();<BR>KEY.BEGIN_INT(9,special_key);<BR>printf("Play with the arrow keys,press ESC to quit.\n");<BR>while(key_scan_code != ESC){<BR>gotoxy(5,5);<BR>printf("Key scancode: %d",key_scan_code);<BR>gotoxy(5,10);<BR>printf("Key name:");<BR>for(i=0;i&lt;NUM_KEYS;i++)<BR>if(key_table[i] != 0) printf("%s",key_table_name[i]);<BR>printf("%10c",' ');<BR>}<BR>printf("\n");<BR>KEY.END_INT();<BR>return;<BR>}<BR><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>
回复者:东海藏龙 回复日期:2002-12-05 15:10:02
<br>内容:实在多谢白兄贴了这么长的给我,虽然Borland C我不懂,但是,还是很感谢,而且也能看出一些眉目。<BR><BR>可是,关键不在于中断向量的安装与设置,这些可能不难。难是难在“每秒一次”这4个字上。你想,当前任务在执行,但是每过1秒都会产生一次中断,去调用另一个程序(打印语句)。它凭什么“每秒一次”呢? 就是说“每秒一次”究竟要如何去实现,一直是我困惑的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:塞翁 回复日期:2002-12-05 16:53:31
<br>内容:1)白云好文章!如何使用中断<BR>2)东海可能没体会到中断的优势<BR>3)建议:<BR> a)一般情况下没有什么任务会连续占用CPU一秒吧?除非大量运算或大量图形处理<BR> b)那么就有可能利用任务间隙实现每秒一次的功能<BR> c)还是这招:(因为每个单独任务的处理都不会超过一秒,所以就有时间进行秒数变化判断)<BR>&nbsp;&nbsp; for(;;)<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(秒数变化)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {打印语句;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(其他条件1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {任务1;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(其他条件2)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {任务2;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(退出条件)<BR>&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp; }<BR> <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>回复者:白云 回复日期:2002-12-05 17:12:34
<br>内容:龙兄,我可以告诉你,如果你把你的截取时间中断程序做好,那么,在DOS中,一秒会产生19.2个时间中断,你就可以利用一个静态变量来计数了,再一个方法就是,每次利用gettime得到newsec,用一个oldsec保存秒,如果oldsec!=newsec表示一秒钟过了,进行操作,同时oldsec=newsec不就行了,我常这么干&nbsp;&nbsp;:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:塞翁 回复日期:2002-12-05 17:34:22
<br>内容:18.2个:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:白云 回复日期:2002-12-06 08:29:36
<br>内容:呵呵,好像是18.2个,很久以前做的程序了&nbsp;&nbsp;:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bottle_fish 回复日期:2002-12-06 12:51:49
<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>
回复者:东海藏龙 回复日期:2002-12-07 09:05:33
<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>
回复者:塞翁 回复日期:2002-12-07 15:53:27
<br>内容:做游戏吗?有demo版的话我来试试!:)))<BR>如果这种情况,还是中断好.Good luck!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:东海藏龙 回复日期:2002-12-08 09:32:10
<br>内容:thank you
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:白云 回复日期:2002-12-08 10:23:45
<br>内容:老塞,有没有做过这样的程序,就是像FPE可以读写其它WIN32进程内存,NND,这个问题难住我了,帮帮手啊
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:塞翁 回复日期:2002-12-08 23:16:24
<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>
回复者:塞翁 回复日期:2002-12-08 23:44:43
<br>内容:http://www.cx66.com/cxgzs/program/delphi/682.htm<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>
回复者:白云 回复日期:2002-12-09 14:14:49
<br>内容:没用的,我试过了OpenProcess打不开别的进程,必须其他的进程新建一块共享进程才可以,也就是其他进程允许才行
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:东海藏龙 回复日期:2002-12-10 17:48:09
<br>内容:gettime()果然好用!多谢拉!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:东海藏龙 回复日期:2002-12-15 09:36:08
<br>内容:昨天才领悟到中断的好处,原来是这样,白兄果然好文章。:D
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:白云 回复日期:2002-12-16 08:36:52
<br>内容:呵呵,龙兄做什么好玩的东西,完成后能否给大家Show一下啊?
<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 + -