C语言窗口底层原理,【求助】关于C语言做图形界面的【原理】的疑惑

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

给你个代码吧!

/********************************************************************

创建时间: 2009/11/22 19:24

文件名称: hello.c

文件后缀: c

文件作者: QianLiang

=====================================================================

功能说明: Windows应用程序

---------------------------------------------------------------------

其他说明:

*********************************************************************/

#include

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;//声明窗口过程函数int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR szCmdLine, int iCmdShow)

{

//Windows程序入口函数,功能类似C语言的main()函数static TCHAR szAppName[] = TEXT ("HelloWin") ; //窗口类标题

HWND hwnd;

MSG msg;

WNDCLASS wndclass; //定义一个WNDCLASS型结构

UINT nWight = 300; //窗口宽度

UINT nHeight = 400; //窗口高度

wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口大小发生变化时自动刷新

wndclass.lpfnWndProc = WndProc ; //设置窗口过程(fnp)

wndclass.cbClsExtra = 0 ; //预留空间,字节为单位

wndclass.cbWndExtra = 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 ; //指定窗口菜单项NULL为空

wndclass.lpszClassName = szAppName ; //窗口类名称,这里指想字符串数组if (!RegisterClass (&wndclass)) //注册窗口类

{

MessageBox (NULL, TEXT ("程序运行失败!"),szAppName, MB_ICONERROR) ;

return 0 ;

}

hwnd = CreateWindow (szAppName, // RegisterClass注册的窗口类名

TEXT ("The Hello Program"), // 窗口标题

WS_OVERLAPPEDWINDOW, // 窗口样式 *

CW_USEDEFAULT, // int x 窗口打开的X坐标

CW_USEDEFAULT, // int y 窗口打开的Y坐标

nWight, // int nWidth----窗口宽

nHeight, // int nHeight---窗口高

NULL, // parent window handle

NULL, // window menu handle

hInstance, // program instance handle

NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ; //在显示器上显示窗口

UpdateWindow (hwnd) ; //绘制窗口while (GetMessage (&msg, NULL, 0, 0))

{

//消息循环

TranslateMessage (&msg) ; //将击键消息转换为字符消息

DispatchMessage (&msg) ; //将消息回传给Windows,由Windows转发给适当的窗口过程//这里的窗口过程为WndProc()函数

}

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:

//InvalidateRect(hwnd,NULL,TRUE);

hdc = BeginPaint (hwnd, &ps) ; //创建设备描述表句柄

GetClientRect (hwnd, &rect) ;

DrawText (hdc, TEXT ("你好吗!"), -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) ; //处理所有窗口过程不予处理的消息

}

-------------------------------------------------------------------------------------------------------------------

/********************************************************************创建时间: 2009/11/22 19:24文件名称: hello.c文件后缀: c文件作者: QianLiang=====

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值