C语言如何做图形界面?

Python09

C语言如何做图形界面?,第1张

C语言中要做图形见面,首先需要设置为图形模式,确定显卡类型,对屏幕进行初始化等等,相关的函数如下:

1. detectgraph() 显示卡检测函数

2. initgraph() 图形初始化函数

3. getdrivername() 获取图形驱动程序名的指针

4. getgraphmode() 获取图形模式函数

5. getmoderange()获取模式值范围函数

6. getmaxmode()获取最大显示模式函数

7. getmodename()获取显示模式名函数

8. graphdefaults()图形设置复位缺省值函数

9. setgraphmode() 设置图形模式函数

10. restorecrtmode() 恢复文本显示模式函数

11. graphresult() 图形操作结果函数

12. grpaherrormsg() 图形错误信息函数

13. setgraphbufsize()设置图形缓冲区大小函数

14. setactivepage() 设置可输出显示页函数

15. setvisualpage() 设置可见显示页数

16. closegraph()关闭图形模式函数

标题、背景和前景颜色、窗口大小等等这些可以用API函数实现

#include <windows.h>//加入头文件就可调用API函数

int main()

{

HWND hWnd=GetForegroundWindow()

HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE)

SetWindowText(hWnd,"测试")//标题

SetConsoleTextAttribute(handle,FOREGROUND_GREEN|BACKGROUND_BLUE)//前景、背景颜色

return 0

}

VC6.0 能够在 XP 下很好的运行,无需进行额外的设置,但在 Win7、Win8 和 Win10 下,安装完成后还要修改兼容模式才可以。解决方法如下:

一、对于Win7和Win10,需要将VC6.0的兼容模式修改为 Windows XP SP3:

1、在 VC6.0 的快捷方式或开始菜单上单击鼠标右键,选择“属性”。

2、在弹出的对话框中,将兼容模式修改为Windows XP SP3 或 SP2,如下图所示。

二、相比Win7和Win10,Win8稍微麻烦一些,要先将 MSDEV.EXE 重命名为 MSDEV3.EXE,再按照上面的步骤设置兼容模式。

1、找到MSDEV.EXE所在,MSDEV.EXE是 VC6.0 的主程序,位于 VC6.0 的安装目录下,可以在属性面板中快速找到 MSDEV.EXE。

2、将MSDEV.EXE重命名为MSDEV3.EXE。

3、在 VC6.0 的快捷方式或开始菜单上单击鼠标右键,选择“属性”。

4、在弹出的对话框中,将兼容模式修改为Windows XP SP3 或 SP2,如下图所示。

代码

#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处理我们自定义的消息处理函数没有处理到的消息

}