Windows编程基础 - 文本显示
2008-02-23 05:35:33来源:互联网 阅读 ()
2.1、显示信息
下面的程式从用户区的左上角开始显示“Hello,Welcome to Windows”。
// 2-1.c 显示信息
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int PASCAL WinMain(
HINSTANCE hInstance, // 应用程式的实例句柄
HINSTANCE hPrevInstance, // 该应用程式前一个实例的句柄
LPSTR lpszCmdLine, // 命令行参数串
int nCmdShow ) // 程式在初始化时如何显示窗口
{
char szAppName[] = "DispText";
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
if (!hPrevInstance) {
// 该实例是程式的第一个实例,注册窗口类
wndclass.style = CS_VREDRAW | CS_HREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if (!RegisterClass(&wndclass))
// 假如注册失败
return FALSE;
}
// 对每个实例,创建一个窗口对象
hwnd = CreateWindow(
szAppName,
"Display Text",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL );
ShowWindow(hwnd, nCmdShow);
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)
{
char msg[] = "Hello, Welcome to Windows!";
PAINTSTRUCT ps;
HDC hDC;
switch(message)
{
case WM_PAINT:
hDC = BeginPaint(hwnd, &ps);
TextOut (hDC, 0, 0, msg, sizeof(msg) - 1);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
我们首先介绍这个程式中使用的Windows数据类型,然后介绍和这几个类型有的Windows函数,最后介绍消息WM_PAINT的含义。
HDC是在Windows.h中定义的一个数据类型,类似于HWND,他是用于标识一个设备对象的句柄;许多绘图函数需要这个句柄,这些绘图函数在这个句柄标识的对象上绘图。
PAINTSTRUCT结构类型的变量所包含的信息可被用来重新绘制窗口的用户区域,下面的定义中只给出应用程式关心的几个域,其他未列出的域是供Windows系统使用的。
typedef struct tagPAINTSTRUCT {
HDC hdc; // 标识显示设备对象的句柄
BOOL fErase; // 若为非零。说明用户背景已被重画过,否则未被重画
RECT rcPaint; // 指定需要重画(着色)的矩形区域的左上角和右下角坐标
//......
} PAINTSTRUCT;
其中,类型RECT的说明为:
typedef struct tagRECT {
int left; // 矩形左上角的X坐标值
int top; // 矩形左上角的Y坐标值
int right; // 矩形右上角的X坐标值
int bottom; // 矩形右上角的Y坐标值
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 使用CreateProcess()函数
下一篇: Windows编程基础 - 设备对象属性
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash