『壹』 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語言寫一個圖形界面
代碼
#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語言如何在控制台輸出圖片,已經取模
dos操作界面當然可以顯示圖形的,只不過是DOS沒有象windows那樣提供圖形的操作界面和介面,必須由用戶在自己的應用程序里,編寫自己圖形界面的顯示方法,甚至操作硬體底層,比如說:直接寫屏技術(直接對顯卡編程)
『肆』 c語言如何寫出一個圖形化的界面,難道只能是黑白的win32控制台程序么
控制台字元界面,只要是字元來進通信。win32
只要是用來開發主流windows程序的。一步一步來看:首先從函數介面:int
main(int
argc,
char
*argv[])單單的一個入口點,兩個參數就是,命令行參數。一個數組和一個整形。說實話讓我來說我也說不出來這個
int
main有什麼可講的。重點講一講這個winmainint
winapi
winmain(hinstance
hinstance,hinstance
hprevinstance,lpstr
lpcmdline,int
ncmdshow)在你創建win32程序的時候,入口點是這個:所以,系統在載入你的程序進入內存的時候cs:ip在完成程序初始化之後就會指向這個winmain
首地址。我看來看參數:
hinstance是windows
為每一個win32程序分配的實例化句柄(用來管理程序的一個標識符)hprevinstance前一個執行實體的執行實體句柄
lpcmdline
同樣,命令行ncmdshow
狀態。-----------------------簡而言之,一般的c編譯器默認都會用main
來作為程序入口,這個規范。但是windows為了方便程序的內存管理或者是圖形界面的管理。重新自定義了一個入口函數,當然編譯器肯定要重新編寫了,因為這個一個新的規范。參數即是為了管理程序的。基本上每一個windows程序都會有一個winmain
。以前寫過mrp的手機程序。int
tmain(int
x,int
y,int
flags)顯而易見,這個觸屏的坐標個觸發的事件。
我相信你已經懂了。如果你想研究win32參數具體作用,那麼推薦一本
『伍』 編寫C語言程序,然後製作窗口界面,可以獨立運行的,能在WIN7下運行的那種,怎麼做
只要不是DOS時代的Turbo C2.0,Turbo C++ 3.0一類的老古董,現在C編譯器都可以,如VC,Borland C++ Builder,Dev-C++,MingW,Code::Blocks一類的都可以,你說的類似DOS命令的那種窗口是因為你編寫的是控制台應用程序,想要有圖形界面的必須編寫圖形用戶界面程序,可以考慮直接用Windows API,或者VC里用MFC或WTL,或者用跨平台的QT,WxWidget一類的圖形庫。