如何用C语言编程出可视化界面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C语言编程出可视化界面?相关的知识,希望对你有一定的参考价值。

就像QQ那样的界面

//调用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);

参考技术A c语言是面向过程的
c++,vb,java是面向对象的
现在的图形界面的程序一般都是面向对象的语言写的
因为c++兼容c的语法
可以用vc环境下的mfc库实现图形界面的程序
c语言不适合图形界面的程序,并不是说不能写图形界面的程序,调用api函数这些应该是可以实现的追问

VB是微软的Visual Basic??这个容易编写是吧?

追答

想学编程还是先学好c吧,到后面你就知道多好的一门语言了
但是刚开始的时候一定会觉得非常没用,全是在debug的黑框框中运行程序
vb是容易编写,但是学那个没必要了感觉,学好c,c++,汇编,java,再去学别的语言,一个月就能上手了
qq只是一个界面,里面涉及到好多网络的知识,最简单的模拟qq的就是mfc,然后跟socket套接字实现信息的发送和接收
要是单纯想了解,随便找个视频看看图形界面编程到底是什么就行了,比如c++写个计算器的,百度文库可以搜到,图文教程,,你还是学好c了再去仔细看那个

本回答被提问者采纳
参考技术B 纯C语言C++很难。那得是大神中的大神。你可以借助QT工具。或者window 的VS 或者VC编辑。利用win32Api 或者MFC等追问

那有了windows32 API之后就用不到C++罗?

如何用C++Builder控件实现UDP通信

    打开C++Builder编程软件,新建一个项目,新建一个窗口,在工具栏上找到UDPSocket控件

    在图中,选择【Internet】页面,出面控件列表,选择【UDPSocket】控件,在倒数第三个,图中都时行了标注,在新窗口中,按住鼠标左键,拖出控件

    选中该控件,在属性列表中设置其属性

    设置LocalHost(为客户端的IP地址)、RemoteHost(服务器端的IP地址)、RemotePort(服务器端的通信端口)的值。双击窗口中的UDPSocket控件

    弹出代码编写界面后,编写UDPSocket控件连接代码:

    //---------------------------------------------------------------------------

    void __fastcall TForm7::UdpSocket1Connect(TObject *Sender)

            Label2->Caption="连接中...";

            AnsiString s="abcdef";

            Char *Buffer;

            Buffer[0]=0x11;     // 数据块长度

            Buffer[1]=0x11;    // 重置命令

            Buffer[2]=0x11;     // 当前版本号

            Buffer[3]=0x11;     //重置结果,应答时有效

            Buffer[4]=\'\\0\';

            //发送数据

            //UdpSocket1->SendBuf(Buffer,sizeof(Buffer));

            UdpSocket1->Sendln(s,"");

           Label2->Caption="发送连接报文...";

    代码编写完成后,添加触发按钮,在窗口中添加【确定】和【退出】按钮

    分别双击【确定】和【退出】按钮,跳转到代码编写界面。点击【确定】按钮,触发UDP连接事件,代码如下:

            //发送设置报文

            //UdpSocket1->Active=true;

            Label2->Caption="开始发送报文...";

            UdpSocket1->Open();

    都设置完成后,打开网络调试助手,设置好配置条件,连接

    设置完成后,运行程序,可以在网络调试助手界面上显示程序发过来的数据。

参考技术A 打开C++Builder编程软件,新建一个项目,新建一个窗口,在工具栏上找到UDPSocket控件,如图

2
在图中,选择【Internet】页面,出面控件列表,选择【UDPSocket】控件,在倒数第三个,图中都时行了标注,在新窗口中,按住鼠标左键,拖出控件,如图

3
选中该控件,在属性列表中设置其属性,如图

4
设置LocalHost(为客户端的IP地址)、RemoteHost(服务器端的IP地址)、RemotePort(服务器端的通信端口)的值。双击窗口中的UDPSocket控件,出现如图界面

5
弹出代码编写界面后,编写UDPSocket控件连接代码:
//---------------------------------------------------------------------------
void __fastcall TForm7::UdpSocket1Connect(TObject *Sender)

Label2->Caption="连接中...";
AnsiString s="abcdef";
Char *Buffer;
Buffer[0]=0x11; // 数据块长度
Buffer[1]=0x11; // 重置命令
Buffer[2]=0x11; // 当前版本号
Buffer[3]=0x11; //重置结果,应答时有效
Buffer[4]='\0';
//发送数据
//UdpSocket1->SendBuf(Buffer,sizeof(Buffer));
UdpSocket1->Sendln(s,"");
Label2->Caption="发送连接报文...";

6
代码编写完成后,添加触发按钮,在窗口中添加【确定】和【退出】按钮,如图

7
分别双击【确定】和【退出】按钮,跳转到代码编写界面。点击【确定】按钮,触发UDP连接事件,代码如下:
//发送设置报文
//UdpSocket1->Active=true;
Label2->Caption="开始发送报文...";
UdpSocket1->Open();
【退出】按钮的事件如图

8
都设置完成后,打开网络调试助手,设置好配置条件,连接,如图

9
设置完成后,运行程序,可以在网络调试助手界面上显示程序发过来的数据。
参考技术B 打开C++Builder编程软件,新建一个项目,新建一个窗口,在工具栏上找到UDPSocket控件,如图

在图中,选择【Internet】页面,出面控件列表,选择【UDPSocket】控件,在倒数第三个,图中都时行了标注,在新窗口中,按住鼠标左键,拖出控件,如图

选中该控件,在属性列表中设置其属性,如图

设置LocalHost(为客户端的IP地址)、RemoteHost(服务器端的IP地址)、RemotePort(服务器端的通信端口)的值。双击窗口中的UDPSocket控件,出现如图界面

弹出代码编写界面后,编写UDPSocket控件连接代码:
//---------------------------------------------------------------------------
void __fastcall TForm7::UdpSocket1Connect(TObject *Sender)

Label2->Caption="连接中...";
AnsiString s="abcdef";
Char *Buffer;
Buffer[0]=0x11; // 数据块长度
Buffer[1]=0x11; // 重置命令
Buffer[2]=0x11; // 当前版本号
Buffer[3]=0x11; //重置结果,应答时有效
Buffer[4]='\0';
//发送数据
//UdpSocket1->SendBuf(Buffer,sizeof(Buffer));
UdpSocket1->Sendln(s,"");
Label2->Caption="发送连接报文...";

代码编写完成后,添加触发按钮,在窗口中添加【确定】和【退出】按钮,如图

分别双击【确定】和【退出】按钮,跳转到代码编写界面。点击【确定】按钮,触发UDP连接事件,代码如下:
//发送设置报文
//UdpSocket1->Active=true;
Label2->Caption="开始发送报文...";
UdpSocket1->Open();
【退出】按钮的事件如图

都设置完成后,打开网络调试助手,设置好配置条件,连接,如图
步骤阅读
设置完成后,运行程序,可以在网络调试助手界面上显示程序发过来的数据。

以上是关于如何用C语言编程出可视化界面?的主要内容,如果未能解决你的问题,请参考以下文章

怎样用c语言在vc上编写可视化?

如何用c语言作出有图形界面的小程序?

如何用C语言设计这个界面?尤其是边框

如何用c语言作出有图形界面的小程序?

Python可视化界面编程入门

C 语言实现计算器(可视化界面和多功能)