zoukankan      html  css  js  c++  java
  • 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;


     

  • 相关阅读:
    【POJ1961 Period】【KMP】
    浅谈KMP算法
    【关于动态开点线段树】
    【POJ3349 Snowflake Snow Snowflakes】【Hash表】
    【NOI 2002 银河英雄传说】【带权并查集】
    路径问题
    group_concat函数详解
    MySQL中GROUP_CONCAT中排序
    怎么实现CSS限制字数,超出部份显示点点点.
    jsp去掉小数点
  • 原文地址:https://www.cnblogs.com/vin2008/p/1576708.html
Copyright © 2011-2022 走看看