博客
关于我
NativeWindow_01
阅读量:791 次
发布时间:2023-02-14

本文共 2127 字,大约阅读时间需要 7 分钟。

《在 Delphi 中创建自定义窗口(二)—— 代码优化与实现步骤详解》

Delphi 代码优化与实现步骤详解

本文将详细介绍如何在 Delphi 中实现自定义窗口,重点介绍代码优化与实现步骤。

一、代码优化与实现步骤

Delphi 中创建自定义窗口的实现步骤如下:

  • 窗口类别注册
  • 首先需要注册一个窗口类别。通过 RegisterClass 函数注册窗口类别,定义窗口的样式、大小和处理函数。

    代码示例如下:

    unit NativeWindow;interfaceuses  Windows, Messages, SysUtils;procedure CreateWindow;implementation  function ProcWindow(_hWnd : HWND; _uMsg : UINT; _wParam : WPARAM; _lParam : LPARAM): longint; stdcall;  var    hDc1 : HDC;    ps : PAINTSTRUCT;  begin    if (_uMsg = WM_LBUTTONUP) then    begin      MessageBox(0, 'Up', '1', 0);    end    else if (_uMsg = WM_PAINT) then    begin      hDc1 := BeginPaint(_hWnd, ps);      TextOut(hDc1, 0, 0, 'ASDFG zxcvb', strlen('ASDFG zxcvb'));      EndPaint(_hWnd, ps);      Result := 0;      Exit;    end    else if (_uMsg = WM_DESTROY) then    begin      DestroyWindow(_hwnd);      PostQuitMessage(0);      Result := 0;      Exit;    end    Result := DefWindowProc(_hWnd, _uMsg, _wParam, _lParam);  end;
    1. 窗口创建
    2. 通过 CreateWindowEx 函数创建窗口,设置窗口的各种属性和样式。

      代码示例如下:

      procedure CreateWindow;var  wndcls : WNDCLASS;  hInstance : THandle;  hWnd1 : HWND;  iErr : integer;begin  hInstance := Windows.GetModuleHandle(nil);  ZeroMemory(@wndcls, sizeof(wndcls));  wndcls.cbClsExtra := 0;  wndcls.cbWndExtra := 0;  wndcls.hbrBackground := HBRUSH(GetStockObject(WHITE_BRUSH));  wndcls.hCursor := LoadCursor(0, IDC_CROSS);  wndcls.hIcon := LoadIcon(0, IDI_ERROR);  wndcls.hInstance := hInstance;  wndcls.lpfnWndProc := @ProcWindow;  wndcls.lpszClassName := 'zc20110929';  wndcls.lpszMenuName := nil;  wndcls.style := CS_HREDRAW or CS_VREDRAW;  RegisterClass(wndcls);  hWnd1 := CreateWindowEx(    WS_EX_CLIENTEDGE,    wndcls.lpszClassName,    'ZC Window',    WS_OVERLAPPEDWINDOW,    100,    100,    400,    300,    0,    0,    hInstance,    0);  if (hWnd1 = 0) then  begin    iErr := GetLastError;    // ShowWindow(hWnd1, SW_SHOWNORMAL);    UpdateWindow(hWnd1);  end;end;
      1. 窗口功能实现
      2. 通过 ProcWindow 函数实现窗口的各种功能,包括按钮释放、绘制以及窗口销毁等。

        代码功能说明:

        • 当窗口接收到 WM_LBUTTONUP 消息时,显示 "Up" 对话框。
        • 当窗口接收到 WM_PAINT 消息时,绘制 "ASDFG zxcvb" 字符。
        • 当窗口接收到 WM_DESTROY 消息时,销毁窗口并调用 PostQuitMessage

        本文详细介绍了 Delphi 中创建自定义窗口的实现步骤,包括代码优化与功能实现,希望对开发者有所帮助。

    转载地址:http://ckcfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL存储过程入门
    查看>>
    mysql存储过程批量建表
    查看>>
    mysql存储过程详解
    查看>>
    MySQL学习-group by和having
    查看>>
    MySQL学习-MySQL条件查询
    查看>>
    MySQL学习-子查询及limit分页
    查看>>
    MySQL学习-排序与分组函数
    查看>>
    Mysql学习总结(21)——MySQL数据库常见面试题
    查看>>
    Mysql学习总结(22)——Mysql数据库中制作千万级测试表
    查看>>
    Mysql学习总结(24)——MySQL多表查询合并结果和内连接查询
    查看>>
    Mysql学习总结(25)——MySQL外连接查询
    查看>>
    Mysql学习总结(26)——MySQL子查询
    查看>>
    Mysql学习总结(38)——21条MySql性能优化经验
    查看>>
    Mysql学习总结(45)——Mysql视图和事务
    查看>>
    Mysql学习总结(58)——深入理解Mysql的四种隔离级别
    查看>>
    Mysql客户端中文乱码问题解决
    查看>>
    Mysql工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
    查看>>
    MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
    查看>>
    MySQL必知必会总结笔记
    查看>>
    mysql手工注入
    查看>>