c语言能实现可视化吗?

Python014

c语言能实现可视化吗?,第1张

1、可使用微软的Windows API进行可视化编程,实质上C++也没有可视化的东西,只是在VC编C++时用了微软的工具编出了可视化界面 。

2、如果要vb那样拖控件请用LabWindow CVI,C语言可以写窗口程序 ,可以看Window程序设计第五版  、Linux GTK+2.0编程范例  (gtk+开源且跨平台 支持windows的,比windows api 编程要容易上手)。

C语言

C语言是一门通用计算机编程语言,应用广泛。

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

}