c语言做图形界面
① 怎样用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;
}