zoukankan      html  css  js  c++  java
  • api(一) 创建窗口 (转)

    所有的Windows SDK编程都有一个类似的框架,本文就说说这个框架,Windows程序设计的框架分为“三部曲”:

    一、注册窗口类

    注册窗口类的API函数是RegisterClass或者RegisterClassEx,这两个函数参数区别不大,具体看MSDN,这里以RegisterClass为例。函数原型如下:

    参数WNDCLASS定义如下:

    结构成员说明如下:

    style:指示类窗口类的风格,比如指定水平、垂直重画;是否显示关闭窗口等。

    lpfnWndProc:窗口过程函数指针,这个是最重要的参数,该参数指定消息执行的处理函数入口。

    cbClsExtra:类扩展数据大小,一般不用。

    cbWndExtra:窗口扩展数据大小,一般不用。

    hInstance:应用程序实例,这个参数会从WinMain函数传过来。

    hIcon:应用程序的图标句柄。

    hCursor:应用程序的光标句柄。

    hbrBackground:窗口的背景画刷。Windows预定义了一些纯色画刷,如COLOR_GRAYTEXT、COLOR_BACKGROUND、COLOR_ACTIVECAPTION等等。

    lpszMenuName:菜单名,该名以资源的方式存在。

    lpszClassName:窗口类的名字,这个必须指定且不能重复,否则会失败,除非你需要重复的,否则尽量避免。

    二、创建主窗口并显示

    参数如下:

    lpClassName:类名,就是WNDCLASS结构中的 lpszClassName。

    lpWindowName:本窗口的名字,一个字符串。

    dwStyle:窗口风格,比如是否有边框、标题框、子窗口、水平垂直滚动条、弹出、重叠性等,具体看MSDN,很多特殊效果都是用这个风格指定的,比如类似迅雷的悬浮窗等。

    x,y, nWidth, nHeight:指定窗口相对于父窗口的位置和宽高。

    hWndParent:指定父窗口句柄,如果该窗口没有父窗口,则为NULL,比如应用程序主窗口。

    hMenu:菜单句柄。

    hInstance:应用程序实例句柄,跟WNDCLASS中的hInstance一样。

    lpParam:指向一个CREATESTRUCT结构的参数。

    显示并刷新窗口的API函数如下,参数都有对应的窗口句柄:

    ShowWindow(hWnd, iCmdShow);

    UpdateWindow(hWnd);

    三、进入消息循环

    这个过程基本是一个固定的格式:

    该过程从系统消息队列里面获取一个消息,然后翻译虚拟按键成字符消息,并派送到窗口消息队列中,等待消息处理函数处理。如果获取到的消息为WM_QUIT,则返回0,于是就退出循环。

    通过上面的三部曲,我们就创建了windows程序设计的框架,几乎任何的windows程序都可以在这个框架基础上衍生出来。下面我们给出完整的框架代码:

    在消息处理函数中,根据消息类型执行不同的处理,比如WM_CREATE可以处理一些创建的工作;WM_PAINT可以处理画图,显示文本;WM_DESTROY处理在窗口被销毁时的事件;当然还有很多其他的消息事件,根据情况我们做出相应的处理。

    【Windows编程】系列第一篇: Windows SDK编程基本框架

    该框架程序运行起来就是一个空空的窗口,没有任何其他内容。虽然整个框架简单,但是对于windows程序设计来说非常重要。如果你想学习windows编程,就需要把每一个部分都真正理解,这样就算基本入门windows编程了,剩下的就是如何根据需求丰富这个框架使之成为一个“有用”的程序。

    下一篇我们将讲解如何在windows SDK创建各种常用的控件,请继续关注。

    转载请注明原文出处:http://www.coderonline.net/?p=565

  • 相关阅读:
    DRUPAL-PSA-CORE-2014-005 && CVE-2014-3704 Drupal 7.31 SQL Injection Vulnerability /includes/database/database.inc Analysis
    WDCP(WDlinux Control Panel) mysql/add_user.php、mysql/add_db.php Authentication Loss
    Penetration Testing、Security Testing、Automation Testing
    Tomcat Server Configuration Automation Reinforcement
    Xcon2014 && Geekpwn2014
    phpMyadmin /scripts/setup.php Remote Code Injection && Execution CVE-2009-1151
    Linux System Log Collection、Log Integration、Log Analysis System Building Learning
    The Linux Process Principle,NameSpace, PID、TID、PGID、PPID、SID、TID、TTY
    Windows Management Instrumentation WMI Security Technology Learning
    IIS FTP Server Anonymous Writeable Reinforcement, WEBDAV Anonymous Writeable Reinforcement(undone)
  • 原文地址:https://www.cnblogs.com/yangjig/p/6028506.html
Copyright © 2011-2022 走看看