c語言簡單界面
Ⅰ c語言圖形界面怎麼做出來
這是最簡單的界面程序://c++.cpp:定義應用程序的入口點。
//
#include"stdafx.h"
#include"c++.h"
#defineMAX_LOADSTRING100
//全局變數:
HINSTANCEhInst; //當前實例
TCHARszTitle[MAX_LOADSTRING]; //標題欄文本
TCHARszWindowClass[MAX_LOADSTRING]; //主窗口類名
//此代碼模塊中包含的函數的前向聲明:
ATOM MyRegisterClass(HINSTANCEhInstance);
BOOL InitInstance(HINSTANCE,int);
LRESULTCALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT_PTRCALLBACK About(HWND,UINT,WPARAM,LPARAM);
intAPIENTRY_tWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPTSTRlpCmdLine,
intnCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
//TODO:在此放置代碼。
MSGmsg;
HACCELhAccelTable;
//初始化全局字元串
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_C,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance);
//執行應用程序初始化:
if(!InitInstance(hInstance,nCmdShow))
{
returnFALSE;
}
hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_C));
//主消息循環:
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return(int)msg.wParam;
}
//
//函數:MyRegisterClass()
//
//目的:注冊窗口類。
//
//注釋:
//
//僅當希望
//此代碼與添加到Windows95中的「RegisterClassEx」
//函數之前的Win32系統兼容時,才需要此函數及其用法。調用此函數十分重要,
//這樣應用程序就可以獲得關聯的
//「格式正確的」小圖標。
//
ATOMMyRegisterClass(HINSTANCEhInstance)
{
WNDCLASSEXwcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style =CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc =WndProc;
wcex.cbClsExtra =0;
wcex.cbWndExtra =0;
wcex.hInstance =hInstance;
wcex.hIcon =LoadIcon(hInstance,MAKEINTRESOURCE(IDI_C));
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground =(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName =MAKEINTRESOURCE(IDC_C);
wcex.lpszClassName =szWindowClass;
wcex.hIconSm =LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
returnRegisterClassEx(&wcex);
}
//
//函數:InitInstance(HINSTANCE,int)
//
//目的:保存實例句柄並創建主窗口
//
//注釋:
//
//在此函數中,我們在全局變數中保存實例句柄並
//創建和顯示主程序窗口。
//
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
{
HWNDhWnd;
hInst=hInstance;//將實例句柄存儲在全局變數中
hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
returnFALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
}
//
//函數:WndProc(HWND,UINT,WPARAM,LPARAM)
//
//目的:處理主窗口的消息。
//
//WM_COMMAND -處理應用程序菜單
//WM_PAINT -繪制主窗口
//WM_DESTROY -發送退出消息並返回
//
//
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
intwmId,wmEvent;
PAINTSTRUCTps;
HDChdc;
switch(message)
{
caseWM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
//分析菜單選擇:
switch(wmId)
{
caseIDM_ABOUT:
DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);
break;
caseIDM_EXIT:
DestroyWindow(hWnd);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
break;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&ps);
//TODO:在此添加任意繪圖代碼...
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
return0;
}
//「關於」框的消息處理程序。
INT_PTRCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)
{
UNREFERENCED_PARAMETER(lParam);
switch(message)
{
caseWM_INITDIALOG:
return(INT_PTR)TRUE;
caseWM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
{
EndDialog(hDlg,LOWORD(wParam));
return(INT_PTR)TRUE;
}
break;
}
return(INT_PTR)FALSE;
}
Ⅱ 怎麼用c語言做一個界面
通過調用API來創建界面:
#include<windows.h>
int
main()
{
MessageBox(NULL,"Hello
World!","C圖形程序",MB_OK);
return
0;
}
linux下通過調用圖形庫來創建界面。
Ⅲ C語言怎麼做界面
空窗口:
#include<windows.h>
/*所有的窗口輸出到這里去*/
LRESULTCALLBACKWndProc(HWNDhwnd,UINTMessage,WPARAMwParam,LPARAMlParam){
switch(Message){
/*停止後,告訴主線程停止*/
caseWM_DESTROY:{
PostQuitMessage(0);
break;
}
/*所有其他消息(很多人)都使用默認程序處理*/
default:
returnDefWindowProc(hwnd,Message,wParam,lParam);
}
return0;
}
/*Win32GUI程序的主要功能:執行從這里開始*/
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){
WNDCLASSEXwc;/*窗口的屬性結構*/
HWNDhwnd;/*"句柄"一個窗口的標識符*/
MSGMsg;/*所有消息的臨時位置*/
/*修改結構和設置的東西*/
memset(&wc,0,sizeof(wc));
wc.cbSize =sizeof(WNDCLASSEX);
wc.lpfnWndProc =WndProc;/*將發送消息的地方*/
wc.hInstance =hInstance;
wc.hCursor =LoadCursor(NULL,IDC_ARROW);
/*白色,COLOR_WINDOW是系統定義的顏色值,其數值是5*/
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName="WindowClass";
wc.hIcon =LoadIcon(NULL,IDI_APPLICATION);/*載入一個標准圖標*/
wc.hIconSm =LoadIcon(NULL,IDI_APPLICATION);/*使用名稱「A」來作為該項目圖標*/
if(!RegisterClassEx(&wc)){
MessageBox(NULL,"WindowRegistrationFailed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return0;
}
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,"WindowCreationFailed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return0;
}
/*
所有的輸入處理和發送到窗口過程。
注意,這個塊代碼流,直到它接收到的東西,
所以迴路不會產生不合理的高CPU使用率。
*/
while(GetMessage(&Msg,NULL,0,0)>0)/*如果沒有收到任何錯誤…*/
{
TranslateMessage(&Msg);/*如果存在翻譯關鍵碼字元*/
DispatchMessage(&Msg);/*發送它到WndProc*/
}
returnMsg.wParam;
}
Ⅳ C語言如何設計簡單的界面
這個是這樣的
1.使用C調用window
API來畫,其實C++也是這樣作的
2.使用C的圖型庫,這樣的程序如果你是成手,也會作出好看的GUI,但是比1要難一些
3.使用QT等第三方庫
Ⅳ C語言做一個簡單的聊天工具界面
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定義用戶名最大長度
#define P 20
//定義密碼最大長度
#define Q 20
//定義用戶最大數量
#define N 100
//定義用戶屬性的結構體
struct user
{
char user_name[P]; //用戶名
char user_code[Q]; //密碼
int friend_num; //好友數量
int user_friend[N]; //好友名單
};
void main()
{
int p = 0; //操作步驟
int n = 0; //用戶數量
int i = 0; //過程操作數
int j = 0; //過程操作數
int log_id; //合格登陸號碼
char log_name[P]; //用戶名臨時存儲
char log_code[Q]; //密碼臨時存儲
user my_user[N]; //定義用戶
while(1)
{
switch(p)
{
case 0: //注冊登陸選擇界面
printf("請選擇功能:\n");
printf("1.登陸\n");
printf("2.注冊\n");
scanf("%d",&i); //過程數i記錄接收數據
if(i ==1 || i == 2)
{
p = i;
}
else
{
printf("輸入錯誤!\n");
p = 0;
}
i = 0; //過程數i清零
break;
case 1: //登陸界面
printf("請輸入用戶名:\n");
scanf("%s", &log_name);
printf("請輸入密碼:\n");
scanf("%s", &log_code);
for(i=0;i<n;i++) //驗證登陸用戶,過程數i作為循環變數
{
if(strcmp(my_user[i].user_name, log_name) == 0) //驗證用戶名
{
if(strcmp(my_user[i].user_code, log_code) == 0) //驗證密碼
{
printf("登陸成功!\n");
log_id = i; //記錄合格登陸號碼
p = 3;
j = 1; //過程數j作為操作步驟變化標識
}
else
{
printf("密碼錯誤!\n");
p = 1;
j = 1;
}
}
}
i = 0; //過程數i清零
j = 0; //過程數j清零
break;
case 2: //注冊界面
printf("請輸入用戶名:\n");
scanf("%s", &log_name);
printf("請輸入密碼:\n");
scanf("%s", &log_code);
strcpy(my_user[n].user_name, log_name); //保存用戶名
strcpy(my_user[n].user_code, log_code); //保存密碼
n++; //記錄注冊用戶數
printf("注冊成功!\n");
p = 0;
break;
case 3: //用戶界面
printf("當前登陸用戶:%s\n", my_user[log_id].user_name);
printf("請選擇其他操作:\n");
printf("1.顯示好友名單\n");
printf("2.增加好友\n");
printf("3.刪除好友\n");
printf("4.好友分組\n");
printf("5.自選功能\n");
printf("6.登出\n");
scanf("%d",&i); //過程數i記錄接收數據
if(i >=1 && i <= 6)
{
p = i+3;
}
else
{
printf("輸入錯誤!\n");
p = 3;
}
i = 0; //過程數i清零
break;
case 4: //顯示好友名單
printf("好友名單:\n");
for(i=0;i<my_user[log_id].friend_num;i++)
{
j = my_user[log_id].user_friend[i]; //過程數j記錄用戶好友號碼
printf("%s\n", my_user[j].user_name);
}
p = 3;
i = 0;
j = 0;
break;
case 5: //增加好友,未實現
p = 3;
break;
case 6: //刪除好友,未實現
p = 3;
break;
case 7: //好友分組,未實現
p = 3;
break;
case 8: //自選功能,未實現
p = 3;
break;
case 9: //登出
for(i=0;i<20;i++)
{
log_name[i] = 0; //清除用戶名臨時存儲
log_code[i] = 0; //清除密碼臨時存儲
}
p = 0; //返回初始頁面
i = 0; //過程數i清零
break;
default:
p = 0;
break;
}
}
}
Ⅵ 用C語言怎麼做簡單的界面,編譯器的VC6.0,不需要好看的,就是不用在dos實現,可以在界面上實現功能就可以
用api制圖函數畫吧,或者做一張點陣圖底圖(在上面畫下按鈕、編輯框什麼的),然後用C畫點陣圖、獲取滑鼠位置,計算按鈕的點陣圖位置,模擬點擊處理等。
比較復雜的。
Ⅶ 怎麼用c語言做一個界面
空窗口:
#include<windows.h>
/*所有的窗口輸出到這里去*/
LRESULTCALLBACKWndProc(HWNDhwnd,UINTMessage,WPARAMwParam,LPARAMlParam){
switch(Message){
/*停止後,告訴主線程停止*/
caseWM_DESTROY:{
PostQuitMessage(0);
break;
}
/*所有其他消息都使用默認程序處理*/
default:
returnDefWindowProc(hwnd,Message,wParam,lParam);
}
return0;
}
/*Win32GUI程序的主要功能:從這里開始執行*/
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){
WNDCLASSEXwc;/*窗口的屬性結構*/
HWNDhwnd;/*"句柄"一個窗口的標識符*/
MSGMsg;/*所有消息的臨時位置*/
/*修改結構和設置的東西*/
memset(&wc,0,sizeof(wc));
wc.cbSize =sizeof(WNDCLASSEX);
wc.lpfnWndProc =WndProc;/*發送消息的地方*/
wc.hInstance =hInstance;
wc.hCursor =LoadCursor(NULL,IDC_ARROW);
/*白色,COLOR_WINDOW是系統定義的顏色值,其數值是5*/
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName="WindowClass";
wc.hIcon =LoadIcon(NULL,IDI_APPLICATION);/*載入一個標准圖標*/
wc.hIconSm =LoadIcon(NULL,IDI_APPLICATION);/*使用名稱「A」來作為該項目圖標*/
if(!RegisterClassEx(&wc)){
MessageBox(NULL,"WindowRegistrationFailed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return0;
}
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,"WindowCreationFailed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return0;
}
/*
所有的輸入處理和發送到窗口過程。
注意,這個塊代碼流,直到它接收到的東西,
所以迴路不會產生不合理的高CPU使用率。
*/
while(GetMessage(&Msg,NULL,0,0)>0)/*如果沒有收到任何錯誤…*/
{
TranslateMessage(&Msg);/*如果存在翻譯關鍵碼字元*/
DispatchMessage(&Msg);/*發送它到WndProc*/
}
returnMsg.wParam;
}
Ⅷ 編寫的C語言程序,怎樣製作一個UI界面
c語言製作UI界面需要相關的UI庫
如windows操作系統本身就提供了UI的介面
一個簡單的示例代碼如下
#include<windows.h>
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intWINAPIWinMain(HINSTANCEhinstance,HINSTANCEhprevinstance,LPSTRline,intcmd)
{
staticTCHARAppName[]=TEXT("99");
HWNDhwnd;
MSGmsg;
WNDCLASSwndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hinstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=AppName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("ThisprogramrequiresWindowsNT!"),AppName,MB_ICONERROR);
return0;
}
hwnd=CreateWindow(AppName,TEXT("九九乘法口訣表"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hinstance,
NULL);
ShowWindow(hwnd,cmd);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
returnmsg.wParam;
}
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwparam,LPARAMlparam)
{
HDChdc;
PAINTSTRUCTps;
RECTrect;
staticx,y;
inti,j;
intlen;
TCHARbuf[50];
TEXTMETRICtm;
switch(message)
{
caseWM_CREATE:
hdc=GetDC(hwnd);
GetTextMetrics(hdc,&tm);
x=tm.tmAveCharWidth;
y=tm.tmHeight+tm.tmExternalLeading;
ReleaseDC(hwnd,hdc);
//MessageBox(NULL,TEXT("CreateSuccessed!"),TEXT("Successed"),MB_OK);
//PlaySound(TEXT("hello.wav"),NULL,SND_FILENAME|SND_ASYNC);
return0;
caseWM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);
//DrawText(hdc,TEXT("HelloWorld!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
//TextOut(hdc,rect.right/2-(strlen("HelloWorld!")/2)*x,rect.bottom/2-y/2,TEXT("HelloWorld!"),12);
for(i=1;i!=10;++i)
{
for(j=1;j!=i+1;++j)
{
len=wsprintf(buf,TEXT("%dx%d=%-4d"),j,i,i*j);
TextOut(hdc,j*len*x,i*y,buf,len);
}
}
EndPaint(hwnd,&ps);
return0;
caseWM_DESTROY:
PostQuitMessage(0);
return0;
}
returnDefWindowProc(hwnd,message,wparam,lparam);
}
上面是一個列印windows下擁有窗口界面的九九乘法口訣表的c語言程序代碼
同樣的c語言也會有其它的UI庫
比如Gtk,Gtk是可移植的UI庫
可以使用它在Linux、windows包括mac等等操作系統上做ui程序設計
一個簡單的示例代碼如下
#include<gtk/gtk.h>
intmain(intargc,char**argv)
{
GtkWidget*win;
GtkWidget*label;
inti,j;
GString*str;
gtk_init(&argc,&argv);
win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(win),GTK_WIN_POS_CENTER);
g_signal_connect(G_OBJECT(win),"delete-event",G_CALLBACK(gtk_main_quit),NULL);
str=g_string_new(NULL);
for(i=1;i<=9;++i)
{
for(j=1;j!=i+1;++j)
g_string_append_printf(str,"%dx%d=%-4d",j,i,i*j);
g_string_append(str," ");
}
label=gtk_label_new(str->str);
gtk_container_add(GTK_CONTAINER(win),label);
gtk_widget_show_all(win);
gtk_main();
g_string_free(str,TRUE);
return0;
}