zoukankan      html  css  js  c++  java
  • windows程序设计笔记(8)

    子窗口
    使用GetParent()可以获得父窗口的窗口句柄.然后SendMessage与父窗口通信,自定义窗口消息>=WM_USER
    Windows系统预定义了一系列控件(子窗口),在CreateWindow时指定WS_CHILD的window style,及设置父窗口句柄.指定子窗口ID时应强制转换为HMENU类型

    1.按钮控件 (10个按钮风格) button
    WM_COMMAND消息由父窗口捕获,wParam低字为子窗口ID,高字为通知码,lParam子窗口句柄

    具有BS_GROUPBOX的按钮,既不处理鼠标输入也不处理键盘输入也不向父窗口发送WM_COMMAND消息
    其中BS_OWNERDRAW风格是需要程序来绘制.父窗口需要响应WM_DRAWITEM消息,从lParam参数(一个指向DRAWITEMSTRCUT结构的指针)中获取绘制信息进行处理,是在父窗口的窗口过程处理.
    该消息的wParam参数为需要绘制的子窗口ID

    按钮外观设计最佳方案:
    1.按钮的高度:文本字符高度的7/4倍
    2.按钮的宽度:文本字符总宽度再加上至少2个字符的宽度

    子窗口显示的文本SetWindowText, GetWindowText,可以通过GetWindowTextLength(hwnd)获得窗口的文本长度
    窗口可见ShowWindow IsWindowVisible 窗口启用EnableWindow IsWindowEnabled

    WM_CTLCOLORBTN wParam按钮的设备描述表句柄 lParam按钮的窗口句柄, 按钮在即将绘制客户区时,会向父窗口发送该消息.父窗口可以捕获该消息并设置按钮颜色
    (1).SetTextColor为按钮文本设置颜色
    (2).SetBkColor为文本背景设置颜色
    (3).将一个画刷句柄返回给子窗口* //子窗口会使用该画刷进行着色背景.在不需要使用时应清除该画刷

    2.静态文本控件 static
    既不接收鼠标或键盘的输入也不向父窗口发送WM_COMMAND消息,在捕获WM_CTLCOLORSTATIC消息时,可以通过SetTextColor改变文本颜色,SetBkColor改变背景颜色
    文本对齐风格SS_LEFT SS_CENTER SS_RIGHT

    3.滚动条控件 scrollbar
    风格SB_HORZ,SB_VERT
    其不向父窗口发送WM_COMMAND消息,发送WM_VSCROLL和WM_HSCROLL.在处理滚动条消息时区分窗口滚动条与滚动条控件的方法:lParam==0为窗口滚动条,非0为滚动条控件的窗口句柄
    窗口风格标识符SBS_LEFTALIGN SBS_RIGHTALIGN SBS_TOPALIGN SBS_BOTTOMALIGN给出滚动条的标准尺寸,但是这些风格只在对话框中对滚动条有效

    4.编辑文本控件 edit
    窗口风格ES_xxxxx,控件通知WM_COMMAND消息的参数与按钮控件的含义相同(wParam低字为子窗口ID,高字为通知码,lParam子窗口句柄) 通知码格式EN_xxxx

    5.列表框控件  listbox
    创建时,默认不向父窗口发送WM_COMMAND消息,所以通常包含LBS_NOTIFY. Windows头文件定义了一个LBS_STANDARD的风格, (LBS_NOTIFY|LBS_SORT|WS_VSCROLL|WS_BORDER)
    相关的消息LB_xxxxx,常用LB_ADDSTRING, LB_INSERTSTRING, LB_DELETESTRING, LB_RESETCONTENT, LB_GETCOUNT, LB_SETCURSEL/LB_GETCURSEL, LB_SELECTSTRING,LB_GETTEXTLEN,
    LB_GETTEXT
    控件通知WM_COMMAND消息的参数与按钮控件的含义相同(wParam低字为子窗口ID,高字为通知码,lParam子窗口句柄)通知码格式LBN_xxxx

    窗口子类化:调用SetWindowLong(hwnd,GWL_WNDPROC,WNDPROC)给窗口设置一个新的窗口过程,可以给现存的窗口过程设置"钩子",以便在自己的程序中处理一些消息,同时将其他消息传给旧的窗口过程CallWindowProc

  • 相关阅读:
    rsyslog 定义模板
    rsyslog ~ 波浪号
    rsyslog ~ 波浪号
    过滤器
    过滤器
    rsyslog masg和rawmsg的区别
    rsyslog masg和rawmsg的区别
    nginx 通过rsyslog发日志 rsyslog服务器挂掉 日志丢失问题
    nginx 通过rsyslog发日志 rsyslog服务器挂掉 日志丢失问题
    NYOJ64
  • 原文地址:https://www.cnblogs.com/neking/p/2547395.html
Copyright © 2011-2022 走看看