c语言做一个图形化界面

c语言怎么编出图形界面?

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

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语言怎么实现图形化界面?

这是最简单的界面程序 : // c++.cpp : 定义应用程序的入口点。

//

#include “stdafx.h”

#include “c++.h”

#define MAX_LOADSTRING 100

// 全局变量:

HINSTANCE hInst;// 当前实例

TCHAR szTitle[MAX_LOADSTRING];// 标题栏文本

TCHAR szWindowClass[MAX_LOADSTRING];// 主窗口类名

// 此代码模块中包含的函数的前向声明:

ATOMMyRegisterClass(HINSTANCE hInstance);

BOOLInitInstance(HINSTANCE, int);

LRESULT CALLBACKWndProc(HWND, UINT, WPARAM, LPARAM);

INT_PTR CALLBACKAbout(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPTSTR    lpCmdLine,

int       nCmdShow)

{

UNREFERENCED_PARAMETER(hPrevInstance);

UNREFERENCED_PARAMETER(lpCmdLine);

// TODO: 在此放置代码。

MSG msg;

HACCEL hAccelTable;

// 初始化全局字符串

LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadString(hInstance, IDC_C, szWindowClass, MAX_LOADSTRING);

MyRegisterClass(hInstance);

// 执行应用程序初始化:

if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}

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()

//

//  目的: 注册窗口类。

//

//  注释:

//

//    仅当希望

//    此代码与添加到 Windows 95 中的“RegisterClassEx”

//    函数之前的 Win32 系统兼容时,才需要此函数及其用法。调用此函数十分重要,

//    这样应用程序就可以获得关联的

//    “格式正确的”小图标。

//

ATOM MyRegisterClass(HINSTANCE hInstance)

{

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_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));

return RegisterClassEx(wcex);

}

//

//   函数: InitInstance(HINSTANCE, int)

//

//   目的: 保存实例句柄并创建主窗口

//

//   注释:

//

//        在此函数中,我们在全局变量中保存实例句柄并

//        创建和显示主程序窗口。

//

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HWND hWnd;

hInst = hInstance; // 将实例句柄存储在全局变量中

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)

{

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

return TRUE;

}

//

//  函数: WndProc(HWND, UINT, WPARAM, LPARAM)

//

//  目的: 处理主窗口的消息。

//

//  WM_COMMAND- 处理应用程序菜单

//  WM_PAINT- 绘制主窗口

//  WM_DESTROY- 发送退出消息并返回

//

//

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

switch (message)

{

case WM_COMMAND:

wmId    = LOWORD(wParam);

wmEvent = HIWORD(wParam);

// 分析菜单选择:

switch (wmId)

{

case IDM_ABOUT:

DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;

case IDM_EXIT:

DestroyWindow(hWnd);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

break;

case WM_PAINT:

hdc = BeginPaint(hWnd, ps);

// TODO: 在此添加任意绘图代码…

EndPaint(hWnd, ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

// “关于”框的消息处理程序。

INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

{

UNREFERENCED_PARAMETER(lParam);

switch (message)

{

case WM_INITDIALOG:

return (INT_PTR)TRUE;

case WM_COMMAND:

if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)

{

EndDialog(hDlg, LOWORD(wParam));

return (INT_PTR)TRUE;

}

break;

}

return (INT_PTR)FALSE;

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 09:17:09
下一篇 2024年3月28日 09:25:21

相关推荐

  • 无法从网络安装linux,linux安装无法进入安装界面

    怎么装Linux系统 1、第一步:选择Linux发行版Linux系统由众多发行版组成,不过最常用的就是Ubuntu、Fedora和Debian等。它们各自拥有自己的特点和用途,因此在进行Linux安装之前,先应该选择一款适合自己需求的发行版。 2、linux系统安装方法如下:使用光驱或U盘或你下载的LinuxISO文件进行安装。直接skip就可以了。出现引导…

    2024年5月23日
    4600
  • linux退出可视化,linux怎么退出图形化界面

    linux的常用命令有那些 1、以下是一些常用的Linux命令,可以用于管理文件、目录、进程等:ls:列出当前目录下的文件和目录。cd:切换当前工作目录。pwd:显示当前工作目录的路径。mkdir:创建一个新的目录。rmdir:删除一个空目录。 2、linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内容及其内容属性信息。cd:全拼chang…

    2024年5月23日
    5200
  • linux打开写字板,linux怎么打开字符界面

    Linux:命令gedit主要作用是什么? Gedit是一款基于GTK+技术,在GNOME桌面环境下兼容UTF-8的文本编辑器。简单易用,支持的功能比较多,是Linux(桌面环境)下比较流行的文本编辑器。好比windows下的记事本程序,学习成本几乎是没有的。 gedit,kate等等:在图形界面打开任意文件或者url(gnome)。 启动:从菜单启动:应用…

    2024年5月23日
    3400
  • eclipsejava图形界面,eclipse 界面

    用Java语言设计一个界面, 界面建议用可视化来做,美观且便捷。下面这个是完全用代码写的,仅供参考。 java语言可以使用awt 和swing等技术实现图形界面 推荐使用Swing,因为Swing比AWT更专业,更漂亮,组件更丰富,功能更强大。 可以使用jswing包,这个包主要用于开发纯JAVA得界面,网上也有安装与使用教程,容易上手。还有一种可以使用JA…

    2024年5月23日
    3600
  • c语言实现计算器带界面,c语言实现计算器代码

    如何用C语言设计一个程序模拟有图形界面的计算器 C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。 总之,学图形化编程比较好的顺序是:C(结构化语言,入门)- C++(面向对象…

    2024年5月23日
    7200
  • java将组件引入界面,java将组件引入界面中

    java怎么将查询到的数据库的内容显示到java图形界面上? 1、Java图形化界面查询数据库中选手信息可按照以下步骤进行:首先需要建立Java和数据库之间的连接。使用Java自带的JDBC连接数据库,或使用一些数据源工具来进行连接。 2、先连接数据库,然后读取数据库中的数据 遍历出来后的数据打印显示即可。 3、数据库如果你是关系型数据库的话,定义一个Swi…

    2024年5月22日
    4500
  • linux下图形界面编程,linux图形化界面编程

    linux下的图形界面软件是用什么语言编写的 GTK,它是C写的一个通用图形库,GNOME是用它写的;QT,它是C写的一个类库,KDE是用它写的;另外还有wxWidget,是一个C的通用图形库,有很多软件是用它写的。 Linux操作系统是用C语言、汇编语言编写的。Linux(lnks/ LIN-ks)是一种自由和开放源码的类UNIX 操作系统。 Linux确…

    2024年5月22日
    4200
  • java按钮跳转代码,java 界面跳转

    请教一下,JAVA的Form表单中如何通过按钮跳转页面。 在swing里,给button加一个监听器,然后在监听事件中打开另一个页面。 假如你的那个按钮叫button,你要打开的那个窗体的类名叫Form你在button的click事件里面写个 Form2 fm=new Form2();fm.show();就行了。当然,你的Form2类,要设置Visible为…

    2024年5月22日
    3800
  • linux命令图形化界面,linux图形化界面打开命令窗口

    linux操作系统如何安装图形界面? 1、建议你直接 下载桌面版本的 linux 安装。你安装不带桌面版,然后进去再安装图形界面,这样不觉得怪怪的么,这样不但麻烦,而且还有可能会少安装一些重要组件,给后期维护带来隐患。 2、安装 CD1时有选择安装包的,如果你选择了安装桌面软件包,需要时会提醒你更换CD的,这时候你更改虚拟光驱挂载的ISO就可以安装CD2的软…

    2024年5月22日
    3800
  • c语言界面代码,c语言怎么做界面菜单

    C语言如何win32制作一个登录界面,我卡住了,不知道接下来代码该怎么写… 步骤一:登录页面总共分为四个部分。第一部分:DIV整体布局。第二部分:登录标题部分。第三部分:用户名和密码输入框。第四部分:网页布局样式。步骤二:div是所有DIV的样式。div1是整体样式。div2是登录标题样式。 新建一个C项目,点击文件,新建,项目,选择C++Win…

    2024年5月21日
    5300

发表回复

登录后才能评论



关注微信