当前位置:首页 » 编程语言 » c语言能写出图形界面吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言能写出图形界面吗

发布时间: 2022-06-26 01:22:16

‘壹’ 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。确切的说是要学MFC。

MFC编图形化程序也是很麻烦的,难学,繁琐。

其实你可以再学Java或者C#。

Java本身也不适合做图形化应用程序,但是比MFC要简单得多。

C#则是当前做图形化程序最简单高效的了,不需要编程单靠鼠标拖拽就能做出图形界面。特别是C#的WPF图形框架更是把图形化编程简化到了极限。

所以强烈建议学C#。

C#语言综合Java和C++的优点。Java和C++都源自C语言。所以学C#之前最好先学一下C++,C、C++、C#可以说是一脉相承,向下兼容的。

总之,学图形化编程比较好的顺序是:

C(结构化语言,入门)-> C++(面向对象语言,铺垫) -> C# (享受快速图形化开发吧)

忘解释那几个名词了,补上:

集成开发环境:就是IDE,一类开发工具。

你的代码本来可以直接在记事本里写完,然后命令行下调用编译器编译就能执行了。

集成开发环境将代码编辑、代码编译执行、代码调试功能集成在一起(甚至集成更多功能),使开发人员的开发变得更加高效。比如Visual C++ 6.0就是一个集成开发环境,还有Eclipse、CodeBlocks、Visual Studio等都是。

‘叁’ C语言可做出精美的图形界面吗

如果只用C里的函数是不行的
必须通过其它的图形程序接口(例如OpenGL,DirectX等)可以办到

‘肆’ 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语言编写的程序可以实现界面化吗

可以,但是很麻烦,需要编写很长的代码!你可以学面向对象的程序设计软件,比如VF,VB.

‘陆’ 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语言写图形界面

这是最简单的界面程序://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语言图形界面怎么做出来

windows平台下,含入windows.h,就可以编写图形界面的程序了。跟面向过程还是面向对象没有关系。
并且C++写界面一点都不麻烦,它也有很多类库可以让你选择,如VCL,MFC,还有qt之类的跨平台库。
初学者很想写windows图形界面的程序,推荐C++ Builder,虽然现在它的发展不太明朗,但写起图形界面来,还是相当容易的,跟Visual Basic一样拖拖控件就好了。

‘拾’ 弱弱的问句:C语言能进行图形界面(GUI)开发吗

可以的 我现在就在用呢

1.可以用 winC ,就是直接在windows下编程。这个比较麻烦,因为所有的东西都必须自己写(如创建窗口,初始化等一些基本的)以前老师上课的时候讲过,理解了之后,感觉其实很简单,而且都是一个套路,看个例子就能明白的

2.可以用MFC创建界面,里面要具体实现的东西,直接用C语言写就可以了,很方便,其实MFC就是对winC的一种封装,就是第一点说的你要写的那些基本的东西(创建窗口,初始化之类的),他都给你弄好了,不用自己写,直接创建一个工程就OK了

3.可以创建C#工程,用C#创建界面(直接拖控件就行,像VB那样),然后,你要实现的东西用C语言写。或者,你先将要实现的东西,用C语言写好,编译成动态链接库DLL,然后在C#工程中调用该DLL。C#工程实际上就起到一个界面封装的目的,也比较方便

个人建议用 MFC