c圖形化編程
1. 怎樣用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處理我們自定義的消息處理函數沒有處理到的消息
}
2. 什麼是圖形化編程編程語言是什麼
圖形化編程就是編寫有界面的程序,編程語言是一種被標准化的交流技巧,用來向計算機發出指令,定義計算機程序。
一、圖形化編程
1、使用圖形化編程可以進行良好的頁面布局,在現有的很多Web應用中,其應用程序的頁面布局經常需要使用圖像,這樣能夠讓頁面整體效果更加友好。用戶會對界面友好的應用程序印象深刻從而會進行回訪。
2、在頁面布局中,很多設計人員喜歡使用CSS設計,這樣能夠簡化頁面代碼,將頁面布局代碼和頁面代碼相分離,從而提高了維護性。
二、編程語言
1、允許程序員准確地定義計算機需要使用的數據以及在不同情況下要採取的行動。在不斷的發展和變化過程中,從最初的機器語言到2500多種高級語言,每種語言都有其特定的目的和不同的發展道路。
2、編程語言不像人類自然語言的發展和變化那樣緩慢和持久,它的發展是相當迅速的。這主要是因為計算機硬體、互聯網和IT產業的發展促進了編程語言的發展。
(2)c圖形化編程擴展閱讀:
編程語言選用技巧
1、在選擇編程語言之前,應充分考慮項目的總體框架,以確定編程語言的分布。因為整個項目的所有部分都是用一種語言寫的。在一些項目中,可以相對簡單地選擇最佳編程語言,但是編程過程是靈活多變的。最佳語言選擇需要根據程序要求進行更改。
2、在科學合理的原則下,我們應該選擇最熟悉的編程語言。因為開發人員熟悉某種語言,他們可以極大地幫助他們預測開發時間、過程和其他內容,這可以很好地避免大的變化,提高編程效率。
3、對於高成本操作,如加密、圖形渲染、視頻處理和其他內容操作,應給予充分考慮。對於這些高成本的操作模塊,開發人員應該選擇需要編譯的靜態語言。JAVA和C#是最好的選擇。
參考資料來源:網路-編程語言
3. 圖形化編程語言有哪些
問題一:什麼是圖形化編程?編程語言是什麼? 圖形化編程就是編寫有界面的程序,你平時接觸的一般都是界面程序,就是有按鈕之類的界面。編程語言就是開發者控制或者是是與計算機交流的手段,開發者通過編寫編程語言告訴計算機該怎麼運行
問題二:圖形編程語言有哪幾種? 三圍的圖形編程一般就採用兩種主流技術,都和顯卡的支持相關。三維技術是需要硬體提供支持的,因為顯卡可以提供強大的硬體處理能力來幫助我們完成矩陣計算。
OpenGL是目前用的最多的圖形庫,旗下又有用於手機和平板的以及網頁應用的OpenGL ES精簡版本。支持的語言總李睜類眾多,其中主流語言有:C++,Java,Javascript,C#,Objective-C。
DirectX3D主要是用於windows系統。它是由微軟公司開發的一套程序庫。主要用於windows游戲開發,和windows平台的模擬軟體開發。支持的語言也有很多:C++,Java,C#都支持
學哪一種看激缺你喜歡什麼樣的平台以及以後用於什麼目的。各種系統上以及各種語言的library變種和打包版本都各不相同。
問題三:Windows7圖形界面編程,用什麼語言,什麼工具好? 如果僅需要在Windows下運行的話,最方便的就是C#。
C#自帶強大的庫,並且圖形化做的非常好。
現在,開發C#最好的工具就是Visual Studio系列。
問題四:目前做GUI(圖形界面)都用哪些編程語言?這些語言所佔比例大概是多少? 200分 你是想找人來替你做作業嗎? 這些數據應該你去調查的呀~
問題五:開發出圖形界面(GUI) ,用什麼編程語言比較好? 如果不考慮跨平台的話用C#搭配宇宙最強IDE----visual studio就很爽,很簡單,基本上就是拖控制項來構建
問題六:電腦開發軟體用什麼編程語言?涉及到多語,有圖形界面,用戶交互等 圖形化編程就是編寫有界面的程序,你平時接觸的一般都是界面程序,就是有按鈕之類的界面。
編程語言就是開發者控制或者是是與計算機交流的手段,開發者通過編寫編程語言告訴計算機該怎麼運行
問題七:c語言編程如何實現圖形化? 如果你是說編寫用戶界面的C語言編程,那就應該學習平台編程.主流平台有windows,linux等.
樓主是領會到C得要點了.C不像JAVA和C#,它們才叫編寫應用程序,因為它們的庫直接可以編寫出程序的應用部分(比如用戶界面,調用系統資源等).
但是C語言不能叫做編寫應用程序,因為它的應用和程序是分開的,C語言編寫程序核心,然後套一層應用層,可以在各種平台平台下編譯運行.
如果你要在windows下開發圖形化的程序,
建議你看<<windows programming 5rd>> charles petzold 經典中的經典
祝LZ早日成功.
問題八哪鉛歲:linux下用什麼編程語言寫圖形界面的軟體比較好看 1.先備份ORACLE用戶的數據2.重新新建一個ORACLE的用戶3.在/etc/inittab文件下把選項3改為選項5(圖形界面)
問題九:請問有什麼可以c語言圖形化編程的軟體 Visual C 6.0
問題十:為什麼圖形化編程語言還沒出現還沒普及 因為並不方便。
硬體設計領域,初學都會用畫電路圖的方式。但是一旦規模增長到一定程度(這程度並不是很大,一個加法器就會很復雜了),圖形的方法已經完全無法管理和維護了。於是硬體設計人員也會使用類似編程語言的方式(硬體描述語言)來開發硬體。
4. C語言如何做圖形界面
/* 以下代碼不含絲毫MFC,在Visual C++ 6.0測試通過,能夠出現一個正規的Windows窗口 */
#pragma comment(linker,"/SUBSYSTEM:Windows /ENTRY:mainCRTStartup")
#include <windows.h>
/* 使類名成為全局變數 */
TCHAR szClassName[ ] = TEXT("WindowsApp");
/* 這個函數由Windows內部函數DispatchMessage()調用 */
LRESULT CALLBACK WindowProcere (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message) /* 處理信息 */
{
case WM_DESTROY:
PostQuitMessage (0); /* 發送WM_QUIT到消息隊列 */
break;
case WM_PAINT:
hdc = BeginPaint (hWnd, &ps) ;
GetClientRect (hWnd, &rect) ;
DrawText (hdc, TEXT("Hello, Windows NT!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hWnd, &ps) ;
break ;
default: /* 不處理的消息 */
return DefWindowProc (hWnd, message, wParam, lParam);
}
return 0;
}
/* 下面是主函數 */
int main ( void )
{
HINSTANCE hThisInstance = GetMoleHandle(NULL) ;
int nFunsterStil = SW_SHOW ;
HWND hWnd; /* 這是窗口的句柄 */
MSG messages;/* 應用程序的消息保存在這里 */
WNDCLASSEX wincl;/* 窗口類的數據結構 */
/* 窗口結構 */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcere;/* 這個函數由Windows操作系統調用 */
wincl.style = CS_DBLCLKS; /* 獲取雙擊指令 */
wincl.cbSize = sizeof (WNDCLASSEX);
/* 使用默認圖標和滑鼠指針 */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* 沒有菜單 */
wincl.cbClsExtra = 0;/* 窗口類後面沒有多餘的位元組 */
wincl.cbWndExtra = 0;/* 結構或者窗口實例 */
/* 使用窗口的默認顏色作為窗口的背景色 */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* 注冊窗口類。如果注冊失敗,那麼就退出程序 */
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;
}
5. c語言編程如何實現圖形化
這要看你所使用的系統平台,圖形化編程與系統平台息息相關
對於C語言來說,有許多成熟的框架。比如Windows上可使用Windows的系統API,Linux下有GTK,嵌入式環境下有miniGUI等。
C語言是一門比較特殊的語言,雖然也是高級編程語言的一種,但是為了和其他語言區分開來,部分人也會將C語言稱作中級語言,主要是因為C語言不是面向對象的語言,並且有指針這樣的利器可以直接對底層以及硬體進行操作。
正是因為C語言不是面向對象的語言,在圖形化這樣更偏上層的應用中,一般會使用C++替代C語言,這樣能極大的降低開發的工作量。
比如,Windows下可使用MFC,WPF也支持C++。Linux下一般用跨平台的QT(可在Windows/MAC等多種平台運行)。嵌入式環境下有嵌入式的QT版本。
6. 怎麼用codeblocks編寫c語言的圖形程序
在codeblocks中,可以通過集成EGE庫,來實現C語言圖形程序的編寫,具體方式如下:
一、安裝:
1、下載ege安裝包;
2、將安裝包解壓;
3、把壓縮包里include目錄下所有文件,復制到編譯器安裝目錄下的include目錄內,例如D:MinGWinclude;
4、把lib目錄下對應編譯器名目錄下的文件,復制到編譯器安裝目錄下的lib目錄內,例如D:MinGWlib。
二、建立工程:
只要第1步做好以後,其實已經安裝好ege了,剩下的只是配置build option.
點擊file-new-projects,選擇Console application:
7. C語言如何畫圖
framebuffer(幀緩沖)。
幀的最低數量為24(人肉眼可見)(低於24則感覺到畫面不流暢)。
顯卡與幀的關系:由cpu調節其數據傳輸速率來輸出其三基色的配比。
三基色:RGB(紅綠藍)。
在沒有桌面和圖形文件的系統界面,可以通過C語言的編程來實現在黑色背景上畫圖!
用下面的代碼,在需要的地方(有注釋)適當修改,就能畫出自己喜歡的圖形!
PS:同樣要編譯運行後才能出效果。
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <stdlib.h>
#define RGB888(r,g,b) ((r & 0xff) <<16 | (g & 0xff) << 8 | (b & 0xff))
#define RGB565(r,g,b) ((r & 0x1f) <<11 | (g & 0x3f) << 5 | (b & 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd < 0){
perror("open err. ");
exit(EXIT_FAILURE);
printf("xres: %d ", info.xres);
printf("yres: %d ", info.yres);
printf("bits_per_pixel: %d ", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel >> 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. ");