1. 怎麼用c語言做界面
VC里可以生成一些界面代碼,你可以參考一下,或者參考一下MSDN也可以。這個問題不是能在這里回答的了的,因為要很多話才說的完。也不是一天兩天能學會的。強烈建議你看看這方面的書。
2. c語言如何編寫界面程序
一、C語言中要做圖形界面,首先需要設置為圖形模式,確定顯卡類型,對屏幕進行初始化等等。
二、相關的函數如下:
1. detectgraph() 顯示卡檢測函數
2. initgraph() 圖形初始化函數
3. getdrivername() 獲取圖形驅動程序名的指針
4. getgraphmode() 獲取圖形模式函數
5. getmoderange()獲取模式值范圍函數
6. getmaxmode()獲取最大顯示模式函數
7. getmodename()獲取顯示模式名函數
8. graphdefaults()圖形設置復位預設值函數
9. setgraphmode() 設置圖形模式函數
10. restorecrtmode() 恢復文本顯示模式函數
11. graphresult() 圖形操作結果函數
12. grpaherrormsg() 圖形錯誤信息函數
13. setgraphbufsize()設置圖形緩沖區大小函數
14. setactivepage() 設置可輸出顯示頁函數
15. setvisualpage() 設置可見顯示頁數
16. closegraph()關閉圖形模式函數
3. c語言如何給自己寫的程序加上圖形界面
標題、背景和前景顏色、窗口大小等等這些可以用API函數實現
#include<windows.h>//加入頭文件就可調用API函數
intmain()
{
HWNDhWnd=GetForegroundWindow();
HANDLEhandle=GetStdHandle(STD_OUTPUT_HANDLE);
SetWindowText(hWnd,"測試");//標題
SetConsoleTextAttribute(handle,FOREGROUND_GREEN|BACKGROUND_BLUE);//前景、背景顏色
return0;
}
VC6.0 能夠在 XP 下很好的運行,無需進行額外的設置,但在 Win7、Win8 和 Win10 下,安裝完成後還要修改兼容模式才可以。解決方法如下:
一、對於Win7和Win10,需要將VC6.0的兼容模式修改為WindowsXP SP3:
1、在 VC6.0 的快捷方式或開始菜單上單擊滑鼠右鍵,選擇「屬性」。
4. 編寫的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;
}
5. 學c語言如何做出有界面的程序
1、新建一個C項目,點擊文件,新建,項目,選擇C++Win32控制台應用。
6. 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;
}
7. 怎麼用c語言做一個界面
C 語言,就像他的名字一樣,他就是一門計算機編程語言;
要做界面,需要調用繪圖函數,而繪圖函數有很多種,Windows 的 GDI 和 GDI+ 或者 Direct2D,Linux 下的 OpenGL,移動設備上的 XNA ,都可以;
MFC 是微軟為咱們創建 Windows 窗體程序而設計好的開發包,可以提高開發效率,以面向對象的方式思考和設計程序,學習這個,需要有 Windows API 基礎;
至於 API,在 Windows 下面,就是指 Win32 API 了,就是 32 位 Windows 操作系統的應用程序編程介面,是 Windows 系統提供給開發者的底層功能;
這些都不是一兩句話可以概括的,需要自己多點去接觸,才會有自己的心得;
最後一條比喻不是很恰當,面向對象拆開來,可以是一堆 API,也可以是單純的一堆 C 語言句子,當然,也可以是一堆嵌入式匯編語句,所以沒辦法進行比喻;
8. C語言怎麼製作GUI界面的程序
用C/C++直接開發界面程序一般有以下幾種方式:
1、直接調用系統api
這一種比較麻煩而且開發的效率不高,但通過練習可以讓你很好的掌握GUI程序的原理和技巧。因為常用的第3種也是以此為基礎的,學會api有利於更加深入的了解GUI程序原理。
2、直接使用繪圖介面自己畫
這種最麻煩而且一般適用於游戲、虛擬現實等專業領域,比如使用OpenGl繪圖介面製作3D程序。
3、調用其他封裝好庫
這一種就是別人把系統api封裝好了,給了你一個簡單的使用介面,比如MFC。對於C/C++來說,現在比較流行的有Qt,xwidget等GUI庫,使用簡單,文檔豐富,而且跨平台使用,是目前比較好的選擇。如果以前沒有用過MFC,建議還是別學MFC了,繁瑣而且不是跨平台的。
還有,如果用VS開發,.NET裡面的一些標准控制項也足以應付日常開發了,這個其實是現在用的最普遍的。
9. 如何用C語言編程出可視化界面
//調用api函數創建窗口
//示例:
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口過程函數
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("MyWindows");//定義窗口類名
HWND hwnd;//窗口句柄
MSG msg; //
WNDCLASS wndclass; //窗口類
wndclass.style = CS_HREDRAW | CS_VREDRAW;//指定窗口類型,各種「類風格」(詳見下方↓)可以使用按位或操作符組合起來
wndclass.lpfnWndProc = WndProc;//指定窗口過程(必須是回調函數)
wndclass.cbClsExtra = 0;//預留的額外空間,一般為 0
wndclass.cbWndExtra = 0;//預留的額外空間,一般為 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 = szAppName;//指定窗口類名
if (!RegisterClass(&wndclass))//注冊窗口
{
MessageBox(NULL, TEXT("這個程序需要在 Windows NT 才能執行!"), szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName, //創建窗口
TEXT("windows"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, iCmdShow); //顯示窗口
UpdateWindow(hwnd); //更新窗口,重繪
while (GetMessage(&msg, NULL, 0, 0)) //獲得消息
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)//回調函數
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("第一個C語言窗口程序!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
10. 用C語言可以進行有界面的編程嗎
1、Windows下用API函數完全可以進行圖形界面編程,不過效率太低,不如用VC、VB這種東西直接用滑鼠拖放生成來得方便。非圖形界面就容易一些了,命令行對話式界面在技術上很容易。
2、常式:
//Window.cpp:.
#include<windows.h>
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intAPIENTRYWinMain(HINSTANCEhInstance,//應用程序的實例句柄,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,//命令行
intnCmdShow)//顯示方式
{
MSGmsg;
HWNDhWnd;
charszTitle[]="系統信息";//Thetitlebartext
charszWindowClass[]="popMsg";//Thetitlebartext
WNDCLASSEXwcex={0};
wcex.cbSize=sizeof(WNDCLASSEX);//WNDCLASSEX結構體大小
wcex.style=CS_HREDRAW|CS_VREDRAW;//位置改變時重繪
wcex.lpfnWndProc=(WNDPROC)WndProc;//消息處理函數
wcex.hInstance=0;//當前實例句柄
wcex.hbrBackground=(HBRUSH)COLOR_WINDOWFRAME;//背景色
wcex.lpszClassName=szWindowClass;//參窗口類名
wcex.hIcon=0;//圖標
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);//游標
wcex.lpszMenuName=0;//菜單名稱
wcex.hIconSm=0;//最小化圖標
RegisterClassEx(&wcex);//注冊窗口類
hWnd=CreateWindow(szWindowClass,szTitle,WS_SYSMENU|WS_VISIBLE,//創建窗口
CW_USEDEFAULT,CW_USEDEFAULT,400,300,NULL,NULL,0,NULL);
if(!hWnd){
returnFALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg,NULL,0,0))//消息循環:
{
TranslateMessage(&msg);//轉化虛擬按鍵到字元消息
DispatchMessage(&msg);//分派消息調用回調函數
}
returnmsg.wParam;
}
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
PAINTSTRUCTps;
HDChdc;
RECTrect;
switch(message)
{
caseWM_PAINT://重繪消息
hdc=BeginPaint(hWnd,&ps);
GetClientRect(hWnd,&rect);
MoveToEx(hdc,10,10,0);
SelectObject(hdc,::CreatePen(PS_SOLID,1,RGB(0xFF,0,0)));
LineTo(hdc,100,200);
//DrawText(hdc,szHello,strlen(szHello),&rt,DT_CENTER);
EndPaint(hWnd,&ps);
break;
caseWM_CREATE:
RegisterHotKey(hWnd,1,0,0x41);
break;
caseWM_HOTKEY:
MessageBox(0,0,0,0);
break;
caseWM_TIMER:
break;
caseWM_DESTROY://窗口銷毀消息
PostQuitMessage(0);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
return0;
}