如果注册失败 , 那么就退出程序 */ if (!RegisterClassEx (&wincl)) return 0; /* 窗口类已被注册 。创建它的程序 */ hWnd = CreateWindowEx ( 0, szClassName , /* 类名 */ TEXT("Windows App") , /* 窗口标题栏的文字 */ WS_OVERLAPPEDWINDOW , /* 默认窗口 */ CW_USEDEFAULT , /* 窗口左上角的位置 */ CW_USEDEFAULT , /* 窗口右下角的位置 */ 544 , /* 窗口宽度(以“像素”位单位) */ 375 , /* 窗口高度(以“像素”位单位) */ HWND_DESKTOP , /* 窗口是桌面的子窗口 */ NULL , /* 该窗口无菜单 */ hThisInstance , /* 程序实例的句柄 */ NULL /* 没有窗口创建的数据 */ ); /* 显示窗口 */ ShowWindow (hWnd, nFunsterStil); /* 重绘窗口 */ UpdateWindow(hWnd); /* 运行消息循环 。
循环到GetMessage()函数返回0 */ while (GetMessage (&messages, NULL, 0, 0)) { /* 把虚拟信息翻译成字符信息 */ TranslateMessage(&messages); /* 发送信息到窗口过程 */ DispatchMessage(&messages); } /* 返回PostQuitMessage()函数的返回值 */ return messages.wParam;} 。
6. c语言如何编写界面程序 C语方下可以在文本模式下作出 , 也可以在图形模式下画出 , 用的是一些扩展库 , 就是说不是C标准库 , 下面给一个框架 , 不知道建不建议学 , 感觉过时了 , 看你自已的兴趣了 , 感兴趣下了功夫肯定能学好 , 因为它根本就不难 , 只不过用了些非标准库的所谓高级函数而已#include #include #include #define Key_DOWN 0x5100 #define Key_UP 0x4900 #define Key_ESC 0x011b #define Key_ALT_F 0x2100 #define Key_ALT_X 0x2d00 #define Key_ENTER 0x1c0d void box(int startx,int starty,int high,int width); main() { int i,key,x,y,l; char *menu[] = ; /* 主菜单各项 */ char *red[] = ; /* 加上红色热键 */ char *f[] = ; /* File 项的子菜单 */ char buf[16*10*2],buf1[16*2]; /* 定义保存文本的缓冲区 */ while(1) { textbackground(BLUE); clrscr(); textmode(C80); window(1,1,80,1);/* 定义显示主菜单的窗口 */ textbackground(LIGHTGRAY); textcolor(BLACK); clrscr(); gotoxy(5,1); for(i=0,l=0;i<8;i++) { x=wherex(); /* 得到当前光标的坐标 */ y=wherey(); cprintf("%s",menu[i]); /* 显示各菜单项 */ l=strlen(menu[i]); /* 得到菜单项的长度 */ gotoxy(x,y); textcolor(RED); cprintf("%s",red[i]); /* 在主菜单项各头字符写上红字符 */ x=x+l+5; gotoxy(x,y); textcolor(BLACK); /* 为显示下一个菜单项移动光标 */ } gotoxy(5,1); key=bioskey(0); switch (key){ case Key_ALT_X: exit(0); /* ALT_X 则退出 */ case Key_ALT_F: { textbackground(BLACK); textcolor(WHITE); gotoxy(5,1); cprintf("%s",menu[0]); /* 加黑 File 项 */ gettext(5,2,20,12,buf); /* 保存窗口原来的文本 */ window(5,2,20,9);/* 设置作矩形框的窗口 */ textbackground(LIGHTGRAY); textcolor(BLACK); clrscr(); box(1,1,7,16); /* 调用作框函数 */ for(i=2;i<7;i++) /* 显示子菜单各项 */ { gotoxy(2,i); cprintf("%s",f[i-2]); } gettext(2,2,18,3,buf1); /*将下拉菜单的内容保存在 buf1*/ textbackground(BLACK); textcolor(WHITE); gotoxy(2,2); cprintf("%s",f[0]);/*加黑下拉菜单的第一项 load file*/ gotoxy(2,2); y=2; while ((key=bioskey(0))!=Key_ALT_X) /* 等待选择下拉菜单项*/ { if ((key==Key_UP)||(key==Key_DOWN)) { puttext(2,y,18,y+1,buf1); /* 恢复原先的项 */ if (key==Key_UP) y=y==2?6:y-1; else y=y==6?2:y+1; gettext(2,y,18,y+1,buf1);/*保存要压上光条的子菜单项*/ textbackground(BLACK); textcolor(WHITE); gotoxy(2,y); cprintf("%s",f[y-2]); /* 产生黑条压在所选项上 */ gotoxy(2,y); } else if (key==Key_ENTER)/* 若是回车键 , 判断是哪一子菜单按的回车 , 在此没有相应的特殊处理*/ { switch ( y-1 ){ case 1: /* 是子菜单项第一项:Load file */ break; case 2: /* Save file */ break; case 3: /* print */ break; case 4: /* modify */ break; case 5: exit(0); default: break; } break; } else if (key==Key_ESC) break; /* 是 Esc 键 , 返回主菜单 */ } if (key==Key_ALT_X) exit(0); break; } } } } void box(int startx,int starty,int high,int width) /* 画矩形框函数 */ { int i; gotoxy(startx,starty); putch(0xda); /* 画┌ */ for (i=startx+1;i