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

    你可能感兴趣的文章
    netstat命令用法详解
    查看>>
    Netstat端口占用情况
    查看>>
    Netty 4的内存管理:sun.misc.Unsafe
    查看>>
    Netty channelRegistered\ChannelActive---源码分析
    查看>>
    Netty NIO transport && OIO transport
    查看>>
    netty php,netty
    查看>>
    Netty WebSocket客户端
    查看>>
    netty 主要组件+黏包半包+rpc框架+源码透析
    查看>>
    Vue过渡 & 动画---vue工作笔记0014
    查看>>
    Netty 异步任务调度与异步线程池
    查看>>
    Netty 的 Handler 链调用机制
    查看>>
    Netty 编解码器和 Handler 调用机制
    查看>>
    Netty 编解码器详解
    查看>>
    Netty 解决TCP粘包/半包使用
    查看>>
    Netty 调用,效率这么低还用啥?
    查看>>
    Netty 高性能架构设计
    查看>>
    Netty+Protostuff实现单机压测秒级接收35万个对象实践经验分享
    查看>>
    Netty+SpringBoot+FastDFS+Html5实现聊天App详解(一)
    查看>>
    netty--helloword程序
    查看>>
    netty2---服务端和客户端
    查看>>