博客
关于我
NativeWindow_01
阅读量:793 次
发布时间: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/

    你可能感兴趣的文章
    ndarray 比 recarray 访问快吗?
    查看>>
    ndk-cmake
    查看>>
    NdkBootPicker 使用与安装指南
    查看>>
    ndk特定版本下载
    查看>>
    NDK编译错误expected specifier-qualifier-list before...
    查看>>
    Neat Stuff to Do in List Controls Using Custom Draw
    查看>>
    Necurs僵尸网络攻击美国金融机构 利用Trickbot银行木马窃取账户信息和欺诈
    查看>>
    Needle in a haystack: efficient storage of billions of photos 【转】
    查看>>
    NeHe OpenGL教程 07 纹理过滤、应用光照
    查看>>
    NeHe OpenGL教程 第四十四课:3D光晕
    查看>>
    Neighbor2Neighbor 开源项目教程
    查看>>
    neo4j图形数据库Java应用
    查看>>
    Neo4j图数据库_web页面关闭登录实现免登陆访问_常用的cypher语句_删除_查询_创建关系图谱---Neo4j图数据库工作笔记0013
    查看>>
    Neo4j图数据库的介绍_图数据库结构_节点_关系_属性_数据---Neo4j图数据库工作笔记0001
    查看>>
    Neo4j图数据库的数据模型_包括节点_属性_数据_关系---Neo4j图数据库工作笔记0002
    查看>>
    Neo4j安装部署及使用
    查看>>
    Neo4j电影关系图Cypher
    查看>>
    Neo4j的安装与使用
    查看>>
    Neo4j(1):图数据库Neo4j介绍
    查看>>
    Neo4j(2):环境搭建
    查看>>