zoukankan      html  css  js  c++  java
  • 怎样记住WNDCLASS(EX)结构和CreateWindow(Ex)参数

    Windows图形编程最先遇到的就是WNDCLASS(EX)结构和CreateWindow(Ex)函数,都有一堆东西要记。虽然有IDE可以自动生成一个模板,或者有智能提示,我还是喜欢自己写,我喜欢从底层把握一切细节。Windows的编程其实很简洁的,函数名称也比较直观,就是有一些大的结构或函数很难记(极少数),例如Direct3D就要用D3DPRESENT_PARAMETERS,创建字体的LOGFONT结构等。不过用多了也就熟悉了,而且这些结构一般都有些规律。

    其实WNDCLASS结构还比较好记,总共有10个成员,可以简称为1,2,3,4,分别为:

    1个style;

    2个cb(count byte),分别是cbClsExtra和cbWndExtra;

    3个lp(long pointer),lpfnWndProc,lpszClassName,lpszMenuName;

    4个h(handle),分别是hbrBackground, hIcon, hCursor, hInstance;

    后来的WNDCLASSEX结构比原版多了两个:cbSize(结构本身大小),hIconSm(小图标)。关于小图标,其实Petzold在其经典著作中说这个WNDCLASSEX很奇怪,因为增加的两个成员用处都不大。ico文件本来就可以存储两个图标,一大一小,Windows可以根据情况选择合适的图标;但是又添了一个hIconSm,既要额外创建文件,又要手工指定,实在是费力不讨好,所以他就建议,直接用WNDCLASS算了,不要用这个EX的东西。其实MSDN的文档也说了,如果不需要指定小图标,还是用原来的吧,没啥影响。

    CreateWindow也有不少参数,我一般写成四行

    1. LPCTSTR lpClassName, LPCTSTR lpWindowName, //这行是窗口类名,窗口Title:指定你想创建什么窗口和窗口的标题

    2. DWORD dwStyle, //这行是窗口的Style:细节问题
    3. int x,    int y,    int nWidth,    int nHeight, //这行是窗口的Dimension,或者Geometry,即位置和大小:不用多说
    4. HWND hWndParent,    HMENU hMenu,    HINSTANCE hInstance,    LPVOID lpParam //这行是父窗口句柄,菜单句柄(或控件ID),实例句柄,额外参数:一堆句柄

    CreateWindowEx只在最前面多了一个参数DWORD dwExStyle,但这个扩展的Style特别重要,因为很多种类的窗口只有通过这个才能创建,比如透明窗口、工具窗口、置顶窗口、多文档界面(MDI)窗口等,一般做游戏的都要使用扩展Style(全屏窗口)。所以创建窗口时还是推荐使用Ex版本,一般情况第一个参数传0就行了。

  • 相关阅读:
    getline在windows系统下的怪现象
    android camera根据屏幕图像大小设置显示
    android camera以时间来命名照片文件
    android 基本的画图方法
    android 开发使用剪切板传递数据
    用keytool生成一个自签名证书,并导出到文件
    VBA,两个sheet根据第一列id相同比较其余列,不同的值放到sheet3中
    摄像头视频采集压缩及传输
    Extjs 3根据数据库动态生成checkboxgroup(extjs系列1)
    Extjs 3,jstl根据数据库数据自动构建FormPanel(Extjs系列2)
  • 原文地址:https://www.cnblogs.com/leading/p/remember_window_class_structure_and_create_window_function.html
Copyright © 2011-2022 走看看