當前位置:首頁 » 編程語言 » c語言用BC實現圖形界面
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言用BC實現圖形界面

發布時間: 2022-04-19 15:41:27

⑴ 如何用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);

}

⑵ 如何使用C語言實現圖形化界面,C++,C#都行,但不使用API,

標准C裡面有沒有實現圖形化界面,只能使用API
除非你是真正的高手,能自己用匯編寫一個API
給你一個簡單的例子
main(){
asm{

loop
1000;
}
}
asm關鍵字,就是在下面使用匯編語言,你可以自己實現圖形界面等等,這都可以

⑶ C語言製作簡單圖形界面

雖然是簡單的代碼但是C和C++實現GUI的代碼非常冗長.建議你去用java實現比較快,new
一個窗口再設置可見就行了

⑷ 怎麼用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語言在VC中能編寫出圖形界面的軟體嗎象VB一樣

當然可以,VB不是也是用高級語言寫出來的嗎?

VC只是一個環境而已,用C語言能做到的事,在VC中都能夠實現的。

本人過去就用VC開發過不少自己定義的圖形界面,VB界面也沒有太復雜的地方,即使再復雜,用C語言都能夠實現的(這里不必強調VC還是BC還是其他的編程環境)

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

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

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

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

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

⑺ 怎樣用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語言如何做圖形界面

/* 以下代碼不含絲毫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;
}



⑼ C語言實現畫圖功能

tc/bc在dos下自帶圖形驅動,可以使用graphics.h 頭文件調用標准C函數,如果堅決不用,請使用系統功能調用,自己編寫繪圖功能,DOS下使用int86()函數實現功能調用。有,你可以參考:

支持SVGA的高解析度繪圖通過調用中斷 10h的4f功能來實現

主要解析度設置代碼

unsigned char set_SVGA_mode(int vmode)
{union REGS r;
r.x.ax=0x4f02;
r.x.bx=vmode;
int86(0x10,&r,&r);
return(r.h.ah);
}

void hide_text_cursor(void)
{union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,&r,&r);
}

void selectpage(register char page)
{union REGS r;
r.x.ax=0x4f05;
r.x.bx=0;
r.x.dx=page;
int86(0x10,&r,&r);
}

void show_text_cursor(char size)
{union REGS r;
r.h.ah=1;
r.h.cl=size;
r.h.ch=7;
int86(0x10,&r,&r);
}

unsigned int get_SVGA_mode()
{union REGS r;
r.x.ax=0x4f03;
int86(0x10,&r,&r);
return(r.x.bx);
}
windows下本來就是圖形界面,隨便可以畫,有關的概念是:Canvas,brush,color等類/參數,DrawLine/DrawArc函數/方法。