{"id":7737,"date":"2009-04-09T10:57:03","date_gmt":"2009-04-09T07:57:03","guid":{"rendered":"http:\/\/studentpmr.ru\/?p=7737"},"modified":"2009-04-09T10:57:03","modified_gmt":"2009-04-09T07:57:03","slug":"%d0%bb%d0%b8%d1%81%d1%82%d0%b8%d0%bd%d0%b3-%d0%b7%d0%b0%d0%b3%d0%be%d0%bb%d0%be%d0%b2%d0%be%d1%87%d0%bd%d0%be%d0%b3%d0%be-%d1%84%d0%b0%d0%b9%d0%bb%d0%b0-menu1h","status":"publish","type":"post","link":"https:\/\/studentpmr.ru\/?p=7737","title":{"rendered":"\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 &ldquo;menu1.h&rdquo;"},"content":{"rendered":"<p>#include &lt;conio.h&gt;<\/p>\n<p>#include &lt;dos.h&gt;<\/p>\n<p>#include &lt;bios.h&gt;<\/p>\n<p>#include &lt;stdio.h&gt;<\/p>\n<p>#include &lt;string.h&gt;<\/p>\n<p>#include &lt;malloc.h&gt;<\/p>\n<p> <!--more-->  <\/p>\n<p>#define GOR_MENU 3<\/p>\n<p>#define VERT_MENU 5<\/p>\n<p>#define INVERSE BLACK|GREEN&lt;&lt;4<\/p>\n<p>#define NORMAL BLACK|LIGHTGRAY&lt;&lt;4<\/p>\n<p>#define ARROW_DOWN 20480<\/p>\n<p>#define ARROW_UP 18432<\/p>\n<p>#define ARROW_RIGHT 19712<\/p>\n<p>#define ARROW_LEFT 19200<\/p>\n<p>#define ARROW_ENTER 7181<\/p>\n<p>#define ARROW_ESC 283<\/p>\n<p>#define ARROW_DEL 21248<\/p>\n<p>#define ARROW_AltX 11520<\/p>\n<p>#define ARROW_F10 17408<\/p>\n<p>#define ARROW_F2 15360<\/p>\n<p>#define ARROW_F3 15616<\/p>\n<p>#define ARROW_F4 15872<\/p>\n<p>#define TAB -8<\/p>\n<p>#define DEL -3<\/p>\n<p>#define ESC -2<\/p>\n<p>#define F2 -4<\/p>\n<p>#define F3 -5<\/p>\n<p>#define F4 -6<\/p>\n<p>#define F10 -7<\/p>\n<p>#define AltX -10<\/p>\n<p>char *text_menu1[GOR_MENU] = {<\/p>\n<p>&quot; \u041c\u0435\u043d\u044e \\0&quot;,<\/p>\n<p>&quot;\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430\\0&quot;,<\/p>\n<p>&quot;\u041f\u043e\u043c\u043e\u0449\u044c\\0&quot;<\/p>\n<p>};<\/p>\n<p>char text_menu[GOR_MENU] [VERT_MENU][15]={<\/p>\n<p>{<\/p>\n<p>&quot;\u0421\u043e\u0437\u0434\u0430\u0442\u044c \\0&quot;,<\/p>\n<p>&quot;\u041e\u0442\u043a\u0440\u044b\u0442\u044c F3\\0&quot;,<\/p>\n<p>&quot;\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c F2\\0&quot;,<\/p>\n<p>&quot;\u0421\u043e\u0445\u0440. \u043a\u0430\u043a \\0&quot;,<\/p>\n<p>&quot;\u0412\u044b\u0445\u043e\u0434 AltX\\0&quot;,<\/p>\n<p>},<\/p>\n<p>{<\/p>\n<p>&quot;\u041f\u043e \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0443 \\0&quot;,<\/p>\n<p>&quot;\u041f\u043e \u0446\u0435\u043d\u0435 \\0&quot;,<\/p>\n<p>},<\/p>\n<p>{<\/p>\n<p>&quot;\u0421\u043f\u0440\u0430\u0432\u043a\u0430 \\0&quot;,<\/p>\n<p>&quot;\u041e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \\0&quot;,NULL<\/p>\n<p>}<\/p>\n<p>};<\/p>\n<p>struct menu {<\/p>\n<p>int count;<\/p>\n<p>int active_col;<\/p>\n<p>} main_menu;<\/p>\n<p>struct popup {<\/p>\n<p>int count;<\/p>\n<p>int border;<\/p>\n<p>int x, y;<\/p>\n<p>int number;<\/p>\n<p>int active_row;<\/p>\n<p>} vert_menu[GOR_MENU];<\/p>\n<p>void draw_doubleborder(int startx,int starty,int endx,int endy);<\/p>\n<p>void draw_border(int startx,int starty,int endx,int endy);<\/p>\n<p>void print_statusbar(void);<\/p>\n<p>void display_vmenu(popup v_menu);<\/p>\n<p>void display_gmenu(void);<\/p>\n<p>void display_row(popup v_menu, int mode);<\/p>\n<p>int get_resp();<\/p>\n<p>int get_popup(int num);<\/p>\n<p>void init_popup(popup &amp;v_menu,int cnt, int b, int x, int y, int num);<\/p>\n<p>void goto_xy(int x,int y);<\/p>\n<p>void display_col(int mode);<\/p>\n<p>int get_resp()<\/p>\n<p>{<\/p>\n<p>int choice_popup= ESC, key;<\/p>\n<p>display_col(INVERSE);<\/p>\n<p>while( choice_popup == ESC) {\/\/(key != ARROW_ENTER) || (key != ARROW_DOWN)) {<\/p>\n<p>while( !(key = bioskey(0)) );<\/p>\n<p>switch(key) {<\/p>\n<p>case ARROW_RIGHT:<\/p>\n<p>display_col(NORMAL);<\/p>\n<p>if(main_menu.active_col == GOR_MENU-1) main_menu.active_col = 0;<\/p>\n<p>else main_menu.active_col++;<\/p>\n<p>display_col(INVERSE);<\/p>\n<p>break;<\/p>\n<p>case ARROW_LEFT:<\/p>\n<p>display_col(NORMAL);<\/p>\n<p>if(main_menu.active_col == 0) main_menu.active_col = GOR_MENU-1;<\/p>\n<p>else main_menu.active_col&#8212;;<\/p>\n<p>display_col(INVERSE);<\/p>\n<p>break;<\/p>\n<p>case ARROW_ENTER:<\/p>\n<p>case ARROW_DOWN:<\/p>\n<p>choice_popup = get_popup(main_menu.active_col);<\/p>\n<p>break;<\/p>\n<p>case ARROW_ESC:<\/p>\n<p>display_col(NORMAL);<\/p>\n<p>return -2;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>display_col(NORMAL);<\/p>\n<p>return main_menu.active_col*10 + choice_popup;<\/p>\n<p>}<\/p>\n<p>int get_popup(int number)<\/p>\n<p>{<\/p>\n<p>int arrow_choice, key;<\/p>\n<p>void *buf;<\/p>\n<p>buf = malloc(12*vert_menu[number].count*2);<\/p>\n<p>gettext(vert_menu[number].x-1, vert_menu[number].y-1, vert_menu[number].x +12,<\/p>\n<p>vert_menu[number].y + vert_menu[number].count, buf);<\/p>\n<p>display_vmenu(vert_menu[number]);<\/p>\n<p>display_row(vert_menu[number], INVERSE);<\/p>\n<p>while(key != ARROW_ENTER) {<\/p>\n<p>while( !(key = bioskey(0)) );<\/p>\n<p>switch(key) {<\/p>\n<p>case ARROW_DOWN:<\/p>\n<p>display_row(vert_menu[number], NORMAL);<\/p>\n<p>if(vert_menu[number].active_row == vert_menu[number].count-1)<\/p>\n<p>vert_menu[number].active_row = 0;<\/p>\n<p>else<\/p>\n<p>vert_menu[number].active_row++;<\/p>\n<p>display_row(vert_menu[number], INVERSE);<\/p>\n<p>break;<\/p>\n<p>case ARROW_UP:<\/p>\n<p>display_row(vert_menu[number], NORMAL);<\/p>\n<p>if(vert_menu[number].active_row == 0)<\/p>\n<p>vert_menu[number].active_row = vert_menu[number].count-1;<\/p>\n<p>else<\/p>\n<p>vert_menu[number].active_row&#8212;;<\/p>\n<p>display_row(vert_menu[number], INVERSE);<\/p>\n<p>break;<\/p>\n<p>case ARROW_ENTER:<\/p>\n<p>break;<\/p>\n<p>case ARROW_ESC:<\/p>\n<p>puttext(vert_menu[number].x-1, vert_menu[number].y-1, vert_menu[number].x +12,<\/p>\n<p>vert_menu[number].y + vert_menu[number].count, buf);<\/p>\n<p>free(buf);<\/p>\n<p>return -2;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>puttext(vert_menu[number].x-1, vert_menu[number].y-1, vert_menu[number].x +12,<\/p>\n<p>vert_menu[number].y + vert_menu[number].count, buf);<\/p>\n<p>free(buf);<\/p>\n<p>return vert_menu[number].active_row;<\/p>\n<p>}<\/p>\n<p>void display_gmenu(void)<\/p>\n<p>{<\/p>\n<p>int i, x = 0;<\/p>\n<p>textattr(BLACK|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>goto_xy(0, 0);<\/p>\n<p>for(i=0;i&lt;80;i++)<\/p>\n<p>cprintf(&quot; &quot;);<\/p>\n<p>for(i=0; i&lt;main_menu.count; i++) {<\/p>\n<p>x += 3;<\/p>\n<p>goto_xy(x, 0);<\/p>\n<p>cprintf(text_menu1[i]);<\/p>\n<p>x += strlen(text_menu1[i]);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>\/\/<\/p>\n<p>void display_col(int mode)<\/p>\n<p>{<\/p>\n<p>int i, x = 3;<\/p>\n<p>textattr(mode);<\/p>\n<p>for(i=0; i&lt;main_menu.active_col; i++) {<\/p>\n<p>x += 3;<\/p>\n<p>x += strlen(text_menu1[i]);<\/p>\n<p>}<\/p>\n<p>goto_xy(x, 0);<\/p>\n<p>cprintf(text_menu1[i]);<\/p>\n<p>}<\/p>\n<p>\/\/\u0412\u044b\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void display_row(popup v_menu, int mode)<\/p>\n<p>{<\/p>\n<p>textattr(mode);<\/p>\n<p>gotoxy(v_menu.x, v_menu.y+v_menu.active_row);<\/p>\n<p>cprintf(text_menu[v_menu.number][v_menu.active_row]);<\/p>\n<p>}<\/p>\n<p>\/\/\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u043d\u044e&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void display_vmenu(popup v_menu)<\/p>\n<p>{<\/p>\n<p>register int i;<\/p>\n<p>int y = v_menu.y;<\/p>\n<p>textattr(BLACK|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>for(i=0; i&lt;v_menu.count; i++,y++) {<\/p>\n<p>gotoxy(v_menu.x, y);<\/p>\n<p>\/\/ cprintf(&quot;%d %d&quot;,v_menu.number,i);<\/p>\n<p>cprintf(text_menu[v_menu.number][i]);<\/p>\n<p>}<\/p>\n<p>draw_border(v_menu.x-1, v_menu.y-1,v_menu.x+12, v_menu.y+v_menu.count);<\/p>\n<p>}<\/p>\n<p>\/\/\u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u0440\u0430\u043c\u043a\u0443 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>void print_statusbar(void)<\/p>\n<p>{<\/p>\n<p>draw_doubleborder(1,2,80,24);<\/p>\n<p>goto_xy(27, 1);<\/p>\n<p>cprintf(&quot; \u0420\u0435\u0439\u0442\u0438\u043d\u0433 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u0418\u0422\u0424 &quot;);<\/p>\n<p>textattr(RED|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>goto_xy(1, 24);<\/p>\n<p>cprintf(&quot; \u041a\u043b\u0430\u0432\u0438\u0448\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 Enter F4 Del &quot;);<\/p>\n<p>textattr(BLACK|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>goto_xy(18, 24);<\/p>\n<p>cprintf(&quot;\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435&quot;);<\/p>\n<p>goto_xy(38, 24);<\/p>\n<p>cprintf(&quot;\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c&quot;);<\/p>\n<p>goto_xy(53, 24);<\/p>\n<p>cprintf(&quot;\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c&quot;);<\/p>\n<p>goto_xy(69, 24);<\/p>\n<p>cprintf(&quot;\u0443\u0434\u0430\u043b\u0438\u0442\u044c&quot;);<\/p>\n<p>}<\/p>\n<p>\/\/\u0420\u0438\u0441\u0443\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u0443\u044e \u0440\u0430\u043c\u043a\u0443 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void draw_border(int startx,int starty,int endx,int endy)<\/p>\n<p>{<\/p>\n<p>register int i;<\/p>\n<p>textattr(BLACK|LIGHTGRAY&lt;&lt;4);<\/p>\n<p>for(i=startx+1;i&lt;endx;i++) {<\/p>\n<p>gotoxy(i,starty);<\/p>\n<p>cprintf(&quot;-&quot;);<\/p>\n<p>gotoxy(i,endy);<\/p>\n<p>cprintf(&quot;-&quot;);<\/p>\n<p>}<\/p>\n<p>for(i=starty+1;i&lt;endy;i++) {<\/p>\n<p>gotoxy(startx,i);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>gotoxy(endx,i);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>}<\/p>\n<p>gotoxy(startx,starty); cprintf(&quot;-&quot;); \/\/ &#8216;-&#8216; == 218<\/p>\n<p>gotoxy(startx,endy ); cprintf(&quot;L&quot;); \/\/ &#8216;\u00ac&#8217; == 191<\/p>\n<p>gotoxy(endx ,starty); cprintf(&quot;\u00ac&quot;); \/\/ &#8216;L&#8217; == 192<\/p>\n<p>gotoxy(endx ,endy ); cprintf(&quot;-&quot;); \/\/ &#8216;-&#8216; == 217<\/p>\n<p>}<\/p>\n<p>\/\/\u0420\u0438\u0441\u0443\u0435\u0442 \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u0440\u0430\u043c\u043a\u0443 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void draw_doubleborder(int startx,int starty,int endx,int endy)<\/p>\n<p>{<\/p>\n<p>register int i;<\/p>\n<p>textattr(WHITE|CYAN&lt;&lt;4);<\/p>\n<p>for(i=startx+1;i&lt;endx;i++) {<\/p>\n<p>gotoxy(i,starty);<\/p>\n<p>cprintf(&quot;=&quot;);<\/p>\n<p>gotoxy(i,endy);<\/p>\n<p>cprintf(&quot;=&quot;);<\/p>\n<p>}<\/p>\n<p>for(i=starty+1;i&lt;endy;i++) {<\/p>\n<p>gotoxy(startx,i);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>gotoxy(endx,i);<\/p>\n<p>cprintf(&quot;\u00a6&quot;);<\/p>\n<p>}<\/p>\n<p>gotoxy(startx,starty); cprintf(&quot;\u0433&quot;); \/\/ &#8216;-&#8216; == 218<\/p>\n<p>gotoxy(startx,endy ); cprintf(&quot;L&quot;); \/\/ &#8216;\u00ac&#8217; == 187<\/p>\n<p>gotoxy(endx ,starty); cprintf(&quot;\u00ac&quot;); \/\/ &#8216;L&#8217; == 192<\/p>\n<p>gotoxy(endx ,endy ); cprintf(&quot;-&quot;); \/\/ &#8216;-&#8216; == 188<\/p>\n<p>}<\/p>\n<p>\/\/\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u043d\u044e&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>void init_popup(popup &amp;v_menu,int c, int b, int x, int y, int num)<\/p>\n<p>{<\/p>\n<p>int i;<\/p>\n<p>v_menu.count = c;<\/p>\n<p>v_menu.border = b;<\/p>\n<p>v_menu.x = x;<\/p>\n<p>v_menu.y = y;<\/p>\n<p>v_menu.number = num;<\/p>\n<p>v_menu.active_row = 0;<\/p>\n<p>}<\/p>\n<p>\/\/\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>void goto_xy(int x,int y)<\/p>\n<p>{<\/p>\n<p>union REGS r;<\/p>\n<p>r.h.ah=2; \/* \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 *\/<\/p>\n<p>r.h.dl=x; \/* \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 *\/<\/p>\n<p>r.h.dh=y; \/* \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 *\/<\/p>\n<p>r.h.bh=0; \/* \u0432\u0438\u0434\u0435\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 *\/<\/p>\n<p>int86(0x10,&amp;r,&amp;r);<\/p>\n<p>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>#include &lt;conio.h&gt; #include &lt;dos.h&gt; #include &lt;bios.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;malloc.h&gt;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[67],"tags":[],"_links":{"self":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/posts\/7737"}],"collection":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7737"}],"version-history":[{"count":0,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=\/wp\/v2\/posts\/7737\/revisions"}],"wp:attachment":[{"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studentpmr.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}