新聞中心
怎么用c語言做一個(gè)界面?
空窗口:
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、長樂ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的長樂網(wǎng)站制作公司
#include?windows.h
/*?所有的窗口輸出到這里去?*/
LRESULT?CALLBACK?WndProc(HWND?hwnd,?UINT?Message,?WPARAM?wParam,?LPARAM?lParam)?{
switch(Message)?{
/*?停止后,告訴主線程停止?*/
case?WM_DESTROY:?{
PostQuitMessage(0);
break;
}
/*?所有其他消息都使用默認(rèn)程序處理?*/
default:
return?DefWindowProc(hwnd,?Message,?wParam,?lParam);
}
return?0;
}
/*?Win32?GUI程序的主要功能:從這里開始執(zhí)行?*/
int?WINAPI?WinMain(HINSTANCE?hInstance,?HINSTANCE?hPrevInstance,?LPSTR?lpCmdLine,?int?nCmdShow)?{
WNDCLASSEX?wc;?/*?窗口的屬性結(jié)構(gòu)?*/
HWND?hwnd;?/*?"句柄"?一個(gè)窗口的標(biāo)識符?*/
MSG?Msg;?/*?所有消息的臨時(shí)位置?*/
/*?修改結(jié)構(gòu)和設(shè)置的東西?*/
memset(wc,0,sizeof(wc));
wc.cbSize ?=?sizeof(WNDCLASSEX);
wc.lpfnWndProc ?=?WndProc;?/*?發(fā)送消息的地方?*/
wc.hInstance ?=?hInstance;
wc.hCursor ?=?LoadCursor(NULL,?IDC_ARROW);
/*?白色,COLOR_WINDOW是系統(tǒng)定義的顏色值,其數(shù)值是5?*/
wc.hbrBackground?=?(HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName?=?"WindowClass";
wc.hIcon ?=?LoadIcon(NULL,?IDI_APPLICATION);?/*?載入一個(gè)標(biāo)準(zhǔn)圖標(biāo)?*/
wc.hIconSm ?=?LoadIcon(NULL,?IDI_APPLICATION);?/*?使用名稱“A”來作為該項(xiàng)目圖標(biāo)?*/
if(!RegisterClassEx(wc))?{
MessageBox(NULL,?"Window?Registration?Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return?0;
}
hwnd?=?CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,?/*?x?*/
CW_USEDEFAULT,?/*?y?*/
640,?/*?寬度?*/
480,?/*?高度?*/
NULL,NULL,hInstance,NULL);
if(hwnd?==?NULL)?{
MessageBox(NULL,?"Window?Creation?Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return?0;
}
/*
所有的輸入處理和發(fā)送到窗口過程。
注意,這個(gè)塊代碼流,直到它接收到的東西,?
所以回路不會產(chǎn)生不合理的高CPU使用率。?
*/
while(GetMessage(Msg,?NULL,?0,?0)??0)?/*?如果沒有收到任何錯(cuò)誤…*/
{
TranslateMessage(Msg);?/*?如果存在翻譯關(guān)鍵碼字符*/
DispatchMessage(Msg);?/*?發(fā)送它到WndProc?*/
}
return?Msg.wParam;
}
怎么用c語言實(shí)現(xiàn)選擇界面
1函數(shù)說明編輯函數(shù)原型:int
bioskey
(int
cmd)說明:bioskey()的函數(shù)原型在bios.h中bioskey()完成直接鍵盤操作,cmd的值決定執(zhí)行什么操作。cmd
=
0:當(dāng)cmd是0,bioskey()返回下一個(gè)在鍵盤鍵入的值(它將等待到按下一個(gè)鍵)。它返回一個(gè)16位的二進(jìn)制數(shù),包括兩個(gè)不同的值。當(dāng)按下一個(gè)普通鍵時(shí),它的低8位數(shù)存放該字符的ASCII碼,高8位存放該鍵的掃描碼;對于特殊鍵(如方向鍵、F1~F12等等),低8位為0,高8位字節(jié)存放該鍵的掃描碼。cmd
=
1:當(dāng)cmd是1,bioskey()查詢是否按下一個(gè)鍵,若按下一個(gè)鍵則返回非零值,否則返回0。cmd
=
2:當(dāng)cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert鍵的狀態(tài)。各鍵狀態(tài)存放在返回值的低8位字節(jié)中。字節(jié)位
含義0
右邊Shift鍵狀態(tài)1
左邊Shift鍵狀態(tài)2
Ctrl鍵狀態(tài)3
Alt鍵狀態(tài)4
ScrollLock鍵狀態(tài)5
NumLock鍵狀態(tài)6
CapsLock鍵狀態(tài)7
Insert鍵狀態(tài)字節(jié)位為1表示該鍵被按下,為0表示松開。2函數(shù)例子編輯程序例:#include
c語言如何編寫界面程序
C語方下可以在文本模式下作出,也可以在圖形模式下畫出,用的是一些擴(kuò)展庫,就是說不是C標(biāo)準(zhǔn)庫,下面給一個(gè)框架,不知道建不建議學(xué),感覺過時(shí)了,看你自已的興趣了,感興趣下了功夫肯定能學(xué)好,因?yàn)樗揪筒浑y,只不過用了些非標(biāo)準(zhǔn)庫的所謂高級函數(shù)而已
#include process.h
#include dos.h
#include conio.h
#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[] = ;
/* 主菜單各項(xiàng) */
char *red[] = ; /* 加上紅色熱鍵 */
char *f[] = ;
/* File 項(xiàng)的子菜單 */
char buf[16*10*2],buf1[16*2]; /* 定義保存文本的緩沖區(qū) */
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;i8;i++)
{
x=wherex(); /* 得到當(dāng)前光標(biāo)的坐標(biāo) */
y=wherey();
cprintf("%s",menu[i]); /* 顯示各菜單項(xiàng) */
l=strlen(menu[i]); /* 得到菜單項(xiàng)的長度 */
gotoxy(x,y);
textcolor(RED);
cprintf("%s",red[i]); /* 在主菜單項(xiàng)各頭字符寫上紅字符 */
x=x+l+5;
gotoxy(x,y);
textcolor(BLACK); /* 為顯示下一個(gè)菜單項(xiàng)移動(dòng)光標(biāo) */
}
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 項(xiàng) */
gettext(5,2,20,12,buf); /* 保存窗口原來的文本 */
window(5,2,20,9);/* 設(shè)置作矩形框的窗口 */
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,7,16); /* 調(diào)用作框函數(shù) */
for(i=2;i7;i++) /* 顯示子菜單各項(xiàng) */
{ gotoxy(2,i);
cprintf("%s",f[i-2]);
}
gettext(2,2,18,3,buf1); /*將下拉菜單的內(nèi)容保存在 buf1*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",f[0]);/*加黑下拉菜單的第一項(xiàng) load file*/
gotoxy(2,2);
y=2;
while ((key=bioskey(0))!=Key_ALT_X) /* 等待選擇下拉菜單項(xiàng)*/
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(2,y,18,y+1,buf1); /* 恢復(fù)原先的項(xiàng) */
if (key==Key_UP)
y=y==2?6:y-1;
else
y=y==6?2:y+1;
gettext(2,y,18,y+1,buf1);/*保存要壓上光條的子菜單項(xiàng)*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",f[y-2]); /* 產(chǎn)生黑條壓在所選項(xiàng)上 */
gotoxy(2,y);
}
else
if (key==Key_ENTER)/* 若是回車鍵,判斷是哪一子菜單按的回
車,在此沒有相應(yīng)的特殊處理*/
{
switch ( y-1 ){
case 1: /* 是子菜單項(xiàng)第一項(xiàng):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) /* 畫矩形框函數(shù) */
{ int i;
gotoxy(startx,starty);
putch(0xda); /* 畫┌ */
for (i=startx+1;iwidth;i++) putch(0xc4); /* 畫— */
putch(0xbf); /* 畫┐ */
for( i=starty+1;ihigh;i++)
{
gotoxy(startx,i);putch(0xb3); /* 畫│ */
gotoxy(width,i);putch(0xb3); /* 畫│ */
}
gotoxy(startx,high);
putch(0xc0); /* 畫└ */
for (i=startx+1;iwidth;i++) putch(0xc4); /* 畫— */
putch(0xd9); /* 畫┘ */
return ;
}
C語言課程設(shè)計(jì)的界面應(yīng)該使用哪些函數(shù)?
以下是graphics.h中的聲明,常用的都比較好懂,實(shí)在不行就查查MSDN吧,上面有好多名字類似的函數(shù)功能都一樣.
void far _Cdecl arc(int x, int y, int stangle, int endangle,
int radius);
void far _Cdecl bar(int left, int top, int right, int bottom);
void far _Cdecl bar3d(int left, int top, int right, int bottom,
int depth, int topflag);
void far _Cdecl circle(int x, int y, int radius);
void far _Cdecl cleardevice(void);
void far _Cdecl clearviewport(void);
void far _Cdecl closegraph(void);
void far _Cdecl detectgraph(int far *graphdriver,int far *graphmode);
void far _Cdecl drawpoly(int numpoints, int far *polypoints);
void far _Cdecl ellipse(int x, int y, int stangle, int endangle,
int xradius, int yradius);
void far _Cdecl fillellipse( int x, int y, int xradius, int yradius );
void far _Cdecl fillpoly(int numpoints, int far *polypoints);
void far _Cdecl floodfill(int x, int y, int border);
void far _Cdecl getarccoords(struct arccoordstype far *arccoords);
void far _Cdecl getaspectratio(int far *xasp, int far *yasp);
int far _Cdecl getbkcolor(void);
int far _Cdecl getcolor(void);
struct palettetype * far _Cdecl getdefaultpalette( void );
char * far _Cdecl getdrivername( void );
void far _Cdecl getfillpattern(char far *pattern);
void far _Cdecl getfillsettings(struct fillsettingstype far *fillinfo);
int far _Cdecl getgraphmode(void);
void far _Cdecl getimage(int left, int top, int right, int bottom,
void far *bitmap);
void far _Cdecl getlinesettings(struct linesettingstype far *lineinfo);
int far _Cdecl getmaxcolor(void);
int far _Cdecl getmaxmode(void);
int far _Cdecl getmaxx(void);
int far _Cdecl getmaxy(void);
char * far _Cdecl getmodename( int mode_number );
void far _Cdecl getmoderange(int graphdriver, int far *lomode,
int far *himode);
unsigned far _Cdecl getpixel(int x, int y);
void far _Cdecl getpalette(struct palettetype far *palette);
int far _Cdecl getpalettesize( void );
void far _Cdecl gettextsettings(struct textsettingstype far *texttypeinfo);
void far _Cdecl getviewsettings(struct viewporttype far *viewport);
int far _Cdecl getx(void);
int far _Cdecl gety(void);
void far _Cdecl graphdefaults(void);
char * far _Cdecl grapherrormsg(int errorcode);
void far _Cdecl _graphfreemem(void far *ptr, unsigned size);
void far * far _Cdecl _graphgetmem(unsigned size);
int far _Cdecl graphresult(void);
unsigned far _Cdecl imagesize(int left, int top, int right, int bottom);
void far _Cdecl initgraph(int far *graphdriver,
int far *graphmode,
char far *pathtodriver);
int far _Cdecl installuserdriver( char far *name, int huge (*detect)(void) );
int far _Cdecl installuserfont( char far *name );
void far _Cdecl line(int x1, int y1, int x2, int y2);
void far _Cdecl linerel(int dx, int dy);
void far _Cdecl lineto(int x, int y);
void far _Cdecl moverel(int dx, int dy);
void far _Cdecl moveto(int x, int y);
void far _Cdecl outtext(char far *textstring);
void far _Cdecl outtextxy(int x, int y, char far *textstring);
void far _Cdecl pieslice(int x, int y, int stangle, int endangle,
int radius);
void far _Cdecl putimage(int left, int top, void far *bitmap, int op);
void far _Cdecl putpixel(int x, int y, int color);
void far _Cdecl rectangle(int left, int top, int right, int bottom);
void far _Cdecl restorecrtmode(void);
void far _Cdecl sector( int X, int Y, int StAngle, int EndAngle,
int XRadius, int YRadius );
void far _Cdecl setactivepage(int page);
void far _Cdecl setallpalette(struct palettetype far *palette);
void far _Cdecl setaspectratio( int xasp, int yasp );
void far _Cdecl setbkcolor(int color);
void far _Cdecl setcolor(int color);
void far _Cdecl setfillpattern(char far *upattern, int color);
void far _Cdecl setfillstyle(int pattern, int color);
unsigned far _Cdecl setgraphbufsize(unsigned bufsize);
void far _Cdecl setgraphmode(int mode);
void far _Cdecl setlinestyle(int linestyle, unsigned upattern,
int thickness);
void far _Cdecl setpalette(int colornum, int color);
void far _Cdecl setrgbpalette(int colornum,
int red, int green, int blue);
void far _Cdecl settextjustify(int horiz, int vert);
void far _Cdecl settextstyle(int font, int direction, int charsize);
void far _Cdecl setusercharsize(int multx, int divx,
int multy, int divy);
void far _Cdecl setviewport(int left, int top, int right, int bottom,
int clip);
void far _Cdecl setvisualpage(int page);
void far _Cdecl setwritemode( int mode );
int far _Cdecl textheight(char far *textstring);
int far _Cdecl textwidth(char far *textstring);
/***** graphics drivers *****/
int _Cdecl registerbgidriver(void (*driver)(void));
int far _Cdecl registerfarbgidriver(void far *driver);
/* !! These "functions" are NOT user-callable !! */
/* !! They are there just so you can link in graphics drivers !! */
void _Cdecl CGA_driver(void);
void _Cdecl EGAVGA_driver(void);
void _Cdecl IBM8514_driver(void);
void _Cdecl Herc_driver(void);
void _Cdecl ATT_driver(void);
void _Cdecl PC3270_driver(void);
extern int far _Cdecl CGA_driver_far[];
extern int far _Cdecl EGAVGA_driver_far[];
extern int far _Cdecl IBM8514_driver_far[];
extern int far _Cdecl Herc_driver_far[];
extern int far _Cdecl ATT_driver_far[];
extern int far _Cdecl PC3270_driver_far[];
/***** graphics fonts *****/
int _Cdecl registerbgifont(void (*font)(void));
int far _Cdecl registerfarbgifont(void far *font);
/* !! These "functions" are NOT user-callable, !! */
/* !! they are there just so you can link in fonts !! */
void _Cdecl triplex_font(void);
void _Cdecl small_font(void);
void _Cdecl sansserif_font(void);
void _Cdecl gothic_font(void);
extern int far _Cdecl triplex_font_far[];
extern int far _Cdecl small_font_far[];
extern int far _Cdecl sansserif_font_far[];
extern int far _Cdecl gothic_font_far[];
新聞標(biāo)題:界面函數(shù)c語言,c語言的界面
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/hdhsej.html