Delphi Win32核心API参考-窗口创建
窗口的创建是Windows程序的基础,几乎所有的用户界面都是窗口。在所有的Windows API函数中,窗口创建函数是最复杂也是最容易产生错误的函数。幸运的是,Delphi可以很好的将窗口的创建细节隐藏起来。但是,了解窗口创建的复杂步骤有助于使开发人员扩展Delphi提供的基本功能,以及实现没有被VCL封装的一些功能。
创建窗口:基本的步骤
使用底层的Windows API函数创建一个窗口是一个繁琐但是易于理解的任务。为了创建一个窗口开发者必须实现下面三个步骤:
一、 首先注册一个新的窗口类。如果开发人员创建的窗口基于系统预定义的类,则该过程可以省略。
二、 然后使用窗口创建函数创建窗口。
三、 最后将窗口显示在屏幕上。如果在调用创建窗口函数时dwStyle参数中包括了WS_VISIBLE风格标志,则这个过程可以省略。
好,废话不多说了。就按照基本步骤创建一个窗口的范例。
{注册窗口类}
function RegisterClassEx: Boolean;
var
WindowClass: TWndClass;
begin
//设置自己的新窗口类
WindowClass.style := CS_HREDRAW OR CS_VREDRAW; //设置类风格
WindowClass.lpfnWndProc := @DefWindowProc; //指向默认窗口过程的指针
WindowClass.cbClsExtra := 0; //没有额外的类信息
WindowClass.cbWndExtra := 0; //没有额外的窗口信息
WindowClass.hInstance := hInstance; //程序实例
WindowClass.hIcon := 0; //没有指定图标
WindowClass.hCursor := 0; //没有 指定光标。
WindowClass.hbrBackground := COLOR_WINDOW; //使用预定义的颜色。
WindowClass.lpszMenuName := nil; //没有菜单
WindowClass.lpszClassName := 'Test Class';//注册的类名称
//窗口类已经设置完毕,在系统中注册
Result := Windows.RegisterClass(WindowClass)<>0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hWindow: HWnd;
begin
//注册新的窗口类
if not RegisterClassEx then
begin
ShowMessage('窗口注册失败');
Exit;
end;
//在窗口类的基础上建立新窗口
hWindow := CreateWindowEx(0, //没有扩展风格
'Test Class', //注册的类名称
'New Window', //标题栏文本
WS_OVERLAPPEDWINDOW, //通用窗口风格
CW_USEDEFAULT, //默认水平位置
CW_USEDEFAULT, //默认垂直位置
CW_USEDEFAULT, //默认宽带
CW_USEDEFAULT, //默认高度
0, //没有属主窗口
0, //没有菜单
hInstance, //程序实例
nil); //没有附加信息
//显示窗口
if hWindow<>0 then
begin
ShowWindow(hWindow,SW_SHOWNORMAL);
UpdateWindow(hWindow);
end else begin
ShowMessage('窗口创建失败');
Exit;
end;
下面是运行效果图,我用的是Delphi 2010试用版
end;
转载于:https://www.cnblogs.com/vin2008/archive/2009/09/30/1576708.html
- 点赞
- 收藏
- 分享
- 文章举报
- How to Set Currency Field DisplayFormat without Currency Symbol in Delphi
- Delphi Tmessage标准消息详解
- delphi 获取MAC地址
- delphi 获取文件的相关时间
- Delphi 中串口通讯的实现
- Delphi中MsComm控件的安装使用
- Delphi读取本机存在的串口
- delphi6+winxp的DLL断点调试
- DELPHI 控制EXCEL
- Delphi 2007 安装程序不能放在中文目录下安装.
- DELPHI国外经典站
- delphi中PE文件结构
- delphi中使用ADOQuery时的中文参数问题
- 通过delphi将秒数转换成日期格式
- 通过delphi将秒数转换成日期格式
- VC调用Delphi制作的动态链接库如何互相传递字符串
- Delphi 中用 GetEnvironmentVariable 获取常用系统变量
- Speed up the display of Delphi list components
- 用Delphi写ActiveX的经验
- Delphi6利用WebService 编写 SendEMail程序