當前位置:首頁 » 編程語言 » c語言做圖形界面

c語言做圖形界面

發布時間: 2023-05-04 08:22:34

① 怎樣用c語言寫一個圖形界面

代碼

#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("MyWindow") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ; //聲明一個窗口類對象


//以下為窗口類對象wndclass的屬性

wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口樣式

wndclass.lpszClassName = szAppName ; //窗口類名

wndclass.lpszMenuName = NULL ; //窗口菜單:無

wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ; //窗口背景顏色

wndclass.lpfnWndProc = WndProc ; //窗口處理函數

wndclass.cbWndExtra = 0 ; //窗口實例擴展:無

wndclass.cbClsExtra = 0 ; //窗口類擴展:無

wndclass.hInstance = hInstance ; //窗口實例句柄

wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION ) ; //窗口最小化圖標:使用預設圖標

wndclass.hCursor = LoadCursor( NULL, IDC_ARROW ) ; //窗口採用箭頭游標


if( !RegisterClass( &wndclass ) )

{ //注冊窗口類, 如果注冊失敗彈出錯誤提示

MessageBox( NULL, TEXT("窗口注冊失敗!"), TEXT("錯誤"), MB_OK | MB_ICONERROR ) ;

return 0 ;

}


hwnd = CreateWindow( //創建窗口

szAppName, //窗口類名

TEXT("我的窗口"), //窗口標題

WS_OVERLAPPEDWINDOW, //窗口的風格

CW_USEDEFAULT, //窗口初始顯示位置x:使用預設值

CW_USEDEFAULT, //窗口初始顯示位置y:使用預設值

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_CREATE: //窗口創建完成時發來的消息

MessageBox( hwnd, TEXT("窗口已創建完成!"), TEXT("我的窗口"), MB_OK | MB_ICONINFORMATION ) ;

return 0;

case WM_PAINT: //處理窗口區域無效時發來的消息

hdc = BeginPaint( hwnd, &ps ) ;

GetClientRect( hwnd, &rect ) ;

DrawText( hdc, TEXT( "Hello, 衛班科技!" ), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER ) ;

EndPaint( hwnd, &ps ) ;

return 0 ;

case WM_LBUTTONDOWN: //處理滑鼠左鍵被按下的消息

MessageBox( hwnd, TEXT("滑鼠左鍵被按下。"), TEXT("單擊"), MB_OK | MB_ICONINFORMATION ) ;

return 0;

case WM_DESTROY: //處理窗口關閉時的消息

MessageBox( hwnd, TEXT("關閉程序!"), TEXT("結束"), MB_OK | MB_ICONINFORMATION ) ;

PostQuitMessage( 0 ) ;

return 0;

}

return DefWindowProc( hwnd, message, wParam, lParam ) ; //DefWindowProc處理我們自定義的消息處理函數沒有處理到的消息

}

② 學c語言如何做出有界面的程序

1、新建一個C項目,點擊文件,新建,項目,選擇C++Win32控制台應用。

③ c語言編程如何實現圖形化

這要看你所使用的系統平台,圖形化編程與系統平台息息相關

對於C語言來說,有許多成熟的框架。比如Windows上可使用Windows的系統API,Linux下有GTK,嵌入式環境下有miniGUI等。

C語言是一門比較特殊的語言,雖然也是高級編程語言的一種,但是為了和其他語言區分開來,部分人也會將C語言稱作中級語言,主要是因為C語言不是面向對象的語言,並且有指針這樣的利器可以直接對底層以及硬體進行操作。

正是因為C語言不是面向對象的語言,在圖形化這樣更偏上層的應用中,一般會使用C++替代C語言,這樣能極大的降低開發的工作量。
比如,Windows下可使用MFC,WPF也支持C++。Linux下一般用跨平台的QT(可在Windows/MAC等多種平台運行)。嵌入式環境下有嵌入式的QT版本。

④ 請問如何用c語言做一個圖形界面呢比如一個迷宮游戲的界面

圖形界面介面因系統(windows
/Linux)而不一樣。
在windows下因為系統是用C開發的,標准API介面就是C介面,稱好windows
API
這就是常說的API編程
int
WINAPI
WinMain(HINSTANCE
hInstance,
HINSTANCE
hPrevInstance,
LPSTR
lpCmdLine,
int
nCmdShow)
{
WNDCLASSEX
wcex;
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_APPLICATION));
wcex.hCursor
=
LoadCursor(NULL,
IDC_ARROW);
wcex.hbrBackground
=
(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName
=
NULL;
wcex.lpszClassName
=
szWindowClass;
wcex.hIconSm
=
LoadIcon(wcex.hInstance,
MAKEINTRESOURCE(IDI_APPLICATION));
if
(!RegisterClassEx(&wcex))
{
MessageBox(NULL,
_T("Call
to
RegisterClassEx
failed!"),
_T("Win32
Guided
Tour"),
NULL);
return
1;
}
hInst
=
hInstance;
//
Store
instance
handle
in
our
global
variable
//
The
parameters
to
CreateWindow
explained:
//
szWindowClass:
the
name
of
the
application
//
szTitle:
the
text
that
appears
in
the
title
bar
//
WS_OVERLAPPEDWINDOW:
the
type
of
window
to
create
//
CW_USEDEFAULT,
CW_USEDEFAULT:
initial
position
(x,
y)
//
500,
100:
initial
size
(width,
length)
//
NULL:
the
parent
of
this
window
//
NULL:
this
application
dows
not
have
a
menu
bar
//
hInstance:
the
first
parameter
from
WinMain
//
NULL:
not
used
in
this
application
HWND
hWnd
=
CreateWindow(
szWindowClass,
szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
500,
100,
NULL,
NULL,
hInstance,
NULL
);
if
(!hWnd)
{
MessageBox(NULL,
_T("Call
to
CreateWindow
failed!"),
_T("Win32
Guided
Tour"),
NULL);
return
1;
}
//
The
parameters
to
ShowWindow
explained:
//
hWnd:
the
value
returned
from
CreateWindow
//
nCmdShow:
the
fourth
parameter
from
WinMain
ShowWindow(hWnd,
nCmdShow);
UpdateWindow(hWnd);
//
Main
message
loop:
MSG
msg;
while
(GetMessage(&msg,
NULL,
0,
0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return
(int)
msg.wParam;
}
http://msdn.microsoft.com/en-us/library/bb384843.aspx
不過你得知道怎麼建工程,不然就得在命令行編譯、鏈接

⑤ c語言怎樣編圖形界面啊求高手代碼!!

#include <graphics.h>
#include <math.h>
#define PI 3.1415926
void main()
{
double a;
int x,y,y1,r,r1;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\turboc2\\bgi");
printf("Please input Ras(<80): ");
scanf("%d",&r);
cleardevice();
setbkcolor(9);
setcolor(4);
outtextxy(80,20,"This program show the Kidney picture.");

y1=240-r;
for(a=0;a<=2*PI;a+=PI/27)
{
x=320+r*cos(a);
y=240+r*sin(a);
r1=sqrt((x-320)*(x-320)+(y-y1)*(y-y1));
circle(x,y,r1);
}
outtextxy(80,460,"Press any key to quit...");
getch();
closegraph();
}
這是一個例子
繪圖要用到頭文件 <graphics.h>
要進行圖形界面的初始化:
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\turboc2\\bgi");
清除屏幕
cleardevice();
設置背景顏色
setbkcolor(9);
設置前景顏色
setcolor(4);
輸出圖形文字
outtextxy(80,20,"This program show the Kidney picture.");
畫圓
circle(x,y,r1);
最後關閉圖形模式
closegraph();

以上程序需要在TC下面運行,VC裡面有自己的繪圖命令,和這個不同!

⑥ 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 的快捷方式或開始菜單上單擊滑鼠右鍵,選擇「屬性」。

⑦ 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;

}

熱點內容
伺服器存儲1gb租賃費多少錢 發布:2024-11-01 12:38:09 瀏覽:871
蘋果6vpn添加配置怎麼弄 發布:2024-11-01 12:36:18 瀏覽:796
職場的幸福密碼是什麼 發布:2024-11-01 12:34:57 瀏覽:748
18經驗起床的伺服器ip 發布:2024-11-01 12:30:15 瀏覽:39
這個鎖屏密碼是什麼 發布:2024-11-01 12:24:51 瀏覽:92
相機存儲卡排名 發布:2024-11-01 12:24:49 瀏覽:958
androidxml格式化 發布:2024-11-01 12:23:14 瀏覽:165
Vb6編譯是錯誤不知道錯誤代碼 發布:2024-11-01 12:16:23 瀏覽:159
區域網電腦訪問伺服器怎麼提速 發布:2024-11-01 12:14:09 瀏覽:322
美創資料庫 發布:2024-11-01 12:05:45 瀏覽:916