1.标准控件
可以在win32窗口程序中添加资源脚本来给程序添加标准控件;
具体操作为:新建资源脚本    ->在.rc文件中添加控件    ->给控件绑定事件;
 
常用的标准控件:
    Static    ->组框,用来将窗口分成多个块   
    Group Box    
    Button    
    Check Box    
    Radio Button    
    Edit    
    ComboBox    
    ListBox    
 
2.通用控件
标准控件是一些常用的控件,因此每当程序编译时,会将这些控件加到exe程序中;
因此标准控件总是可用的;
 
还有一些不常用的控件,因为不常用,每次编译时加到程序中会浪费空间;
这些控件就是通用控件;
微软为了节省程序空间,将不常用的通用控件放在Comctrl32.dll中;
如果要使用通用控件,首先要引入该动态链接库:
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib")
常用的通用控件:
    Animation        
    ComboBoxEx         
    Date_and_Time_Picker         
    Drag_List_Box         
    Flat_Scroll_Bar         
    Header         
    HotKey         
    ImageList         
    IPAddress         
    List_View         
    Month_Calendar         
    Pager         
    Progress_Bar         
    Property_Sheets         
    Rebar         
    Status Bars         
    SysLink         
    Tab         
    Toolbar         
    ToolTip         
    Trackbar         
    TreeView         
    Up_and_Down        
 
特别说明:                
    通用控件在使用前,需要通过INITCOMMONCONTROLSEX进行初始化                
    只要在您的程序中的任意地方引用了该函数就、会使得WINDOWS的程序加载器PE Loader加载该库                
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&icex);
也就是告诉PE Loader到底要dll中的哪些通用控件;
这段代码一般放winmain刚开始的地方;
在msdn中搜索INITCOMMONCONTROLSEX结构,可以看到哪个参数对应的是哪个控件,例如:ICC_WIN95_CLASSES表示包含大多数常用通用控件;
 
3.ListView的使用
ListView是一种通用控件;用来显示多条信息;
 
往listView中添加数据:
#include <windows.h>
#include "resource.h"
#include <commctrl.h>
#pragma comment(lib,"comctl32.lib") //给进程窗口添加内容;就是给ListView控件添加列,本来是要遍历进程的,为了简单填假数据
void EnumProcess(HWND hListProcess){
LV_ITEM vitem; //初始化
memset(&vitem,,sizeof(LV_ITEM));
vitem.mask = LVIF_TEXT; vitem.pszText = "csrss.exe"; //值
vitem.iItem = ; //行
vitem.iSubItem = ; //列
//ListView_InsertItem(hListProcess, &vitem); //一个宏和SendMessage作用一样
SendMessage(hListProcess, LVM_INSERTITEM,,(DWORD)&vitem); //如果用SendMessage,给第一列赋值用LVM_INSERTITEM,其它列用LVM_SETITEM,用ListView同理 vitem.pszText = TEXT("");
vitem.iItem = ;
vitem.iSubItem = ;
ListView_SetItem(hListProcess, &vitem); vitem.pszText = TEXT("");
vitem.iItem = ;
vitem.iSubItem = ;
ListView_SetItem(hListProcess, &vitem); vitem.pszText = TEXT("000F0000");
vitem.iItem = ;
vitem.iSubItem = ;
ListView_SetItem(hListProcess, &vitem); vitem.pszText = TEXT("winlogon.exe");
vitem.iItem = ;
vitem.iSubItem = ;
//ListView_InsertItem(hListProcess, &vitem);
SendMessage(hListProcess, LVM_INSERTITEM,,(DWORD)&vitem); vitem.pszText = TEXT("");
vitem.iSubItem = ;
ListView_SetItem(hListProcess, &vitem); vitem.pszText = TEXT("");
vitem.iSubItem = ;
ListView_SetItem(hListProcess, &vitem); vitem.pszText = TEXT("");
vitem.iSubItem = ;
ListView_SetItem(hListProcess, &vitem); } //初始化进程窗口,就是给ListView控件添加列
void initProcessView(HWND hDlg){
LV_COLUMN lv;
HWND hListProcess; //初始化,局部变量堆栈中分配,不知道是什么数据所以先清零
memset(&lv,,sizeof(LV_COLUMN));
//获取IDC_LIST_PROCESS句柄
hListProcess = GetDlgItem(hDlg,IDC_LIST_PROCESS);
//设置整行选中,窗口是windows来管理的无法直接操作,程序能做的只能发送一个消息来让windows直到该怎么做
SendMessage(hListProcess,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT,LVS_EX_FULLROWSELECT); //第一列
lv.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
lv.pszText = TEXT("进程"); //列标题
lv.cx = ; //列宽
lv.iSubItem = ;
//ListView_InsertColumn(hListProcess, 0, &lv);
SendMessage(hListProcess,LVM_INSERTCOLUMN,,(DWORD)&lv);
//第二列
lv.pszText = TEXT("PID");
lv.cx = ;
lv.iSubItem = ;
//ListView_InsertColumn(hListProcess, 1, &lv);
SendMessage(hListProcess,LVM_INSERTCOLUMN,,(DWORD)&lv);
//第三列
lv.pszText = TEXT("镜像基址");
lv.cx = ;
lv.iSubItem = ;
ListView_InsertColumn(hListProcess, , &lv);
//第四列
lv.pszText = TEXT("镜像大小");
lv.cx = ;
lv.iSubItem = ;
ListView_InsertColumn(hListProcess, , &lv); EnumProcess(hListProcess);
} //回调函数
BOOL CALLBACK DialogProc(
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_INITDIALOG :
initProcessView(hwndDlg); //初始化列表
return TRUE; case WM_COMMAND : switch (LOWORD (wParam))
{
case IDC_BUTTON_SHOW:
return TRUE; case IDC_BUTTON_ABOUT:
return TRUE; case IDC_BUTTON_OUT:
EndDialog(hwndDlg, );
return TRUE;
}
break ;
} return FALSE ;
} //程序入口
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevHinstance,
LPSTR lpCmdLine,
int nCmdShow
){
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&icex); //创建对话框窗口
DialogBox(
hInstance,
MAKEINTRESOURCE(DLG_MAIN),
NULL,
DialogProc
); return ;
}
结果:
aaarticlea/png;base64,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" alt="" />
 
3.WM_NOTIFY消息
该消息类型与WM_COMMAND类型相似,都是由子窗口向父窗口发送的消息。                        
WM_NOTIFY可以包含比WM_COMMAND更丰富的信息                        
Windows通用组件中有很多消息,都是通过WM_NOTIFY来描述的.                        
 
例如:
    当点击按钮时,按钮自身的回调函数会将消息转为WM_COMMAND消息给主窗口的回调函数;
    如果是想处理ListView的列的点击事件,则是通过WM_NOTIFY;
 
WM_NOTIFY消息参数如下:
    wParam:控件ID                    
    lParam:指向一个结构,并且这个结构是可以拓展的,因此比WM_COMMAND能传递更多消息                   
    typedef struct tagNMHDR {
HWND hwndFrom; //发送通知消息的控件窗口句柄; ->哪个子窗口发的消息
UINT idFrom; //发送通知消息的控件ID值; ->子窗口的哪个控件发过来的
UINT code; //通知码,如LVM_SELCHANGED; -> 做了那些事:点左键、点右键、值改变等等
} NMHDR;
这个结构体能满足一般的要求,但能描述的信息还是有限的                        
解决方案:对每种不同用途的通知消息都定义另一种结构来表示                        
typedef struct tagNMLVCACHEHINT {
NMHDR hdr;
int iFrom;
int iTo;
} NMLVCACHEHINT, *PNMLVCACHEHINT; typedef struct tagLVDISPINFO {
NMHDR hdr;
LVITEM item;
} NMLVDISPINFO, FAR *LPNMLVDISPINFO; typedef struct _NMLVFINDITEM {
NMHDR hdr;
int iStart;
LVFINDINFO lvfi;
} NMLVFINDITEM, *PNMLVFINDITEM;

这些结构有个特点:

    它们的第一个成员都是NMHDR结构;
    相当于c++中的继承,拓展了NMHDR结构; 
                    
                    
 

win32通用控件的更多相关文章

  1. WIN32通用控件之打开对话框获取文件路径

    OPENFILENAME ofn; char FileName[MAX_PATH]; memset(&ofn,,sizeof(OPENFILENAME)); memset(FileName,, ...

  2. delphi附带通用控件安装方法:

    附带通用控件安装方法:----------基本安装1.对于单个控件,Componet-->install component..-->PAS或DCU文件-->install;2.对于 ...

  3. C语言 SDK编程之通用控件的使用--ListView

    一.ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件 必须包含comctl32.dll,所以代码中要有头文件: commctrl.h 导入库:comctl32. ...

  4. MVC通用控件库展示-MVC4.0+WebAPI+EasyUI+Knockout--SNF快速开发平台3.0

    在我们开发中怎么才能提高效率,就是要有大量的公共组件(控件)可以直接使用而不用自己再开发一遍,既然是公共控件那也得简单实用才行.下面就介绍一下SNF-MVC当中的控件库. 总体控件库展示: 1.通用用 ...

  5. DevExpress Winform 通用控件打印方法(允许可自定义边距) z

    DevExpress Winform 通用控件打印方法,包括gridcontrol,treelist,pivotGridControl,ChartControl,LayoutControl...(所有 ...

  6. 零基础逆向工程32_Win32_06_通用控件_VM_NOTIFY

    标准控件与可用控件 windows标准控件,标准控件总是可用的 Static Group Box Button Check Box Radio Button Edit ComboBox ListBox ...

  7. Android下拉涮新第三方通用控件

    Android下拉涮新第三方通用控件https://github.com/chrisbanes/Android-PullToRefresh Pull To Refresh Views for Andr ...

  8. win32创建控件的一些问题

    在我们使用CreateWindow();像一般控件建Windows扩展控件的时候我们会发现控件没有创建成功 这是因为我们没有对Windows扩展控件库进行初始化,这要我们使用InitCommonCon ...

  9. 【转】Win32 创建控件风格不是Win XP解决方案

    有时候我有在用Win32 API来向窗体上添加控件时,通过CreateWindow或CreateWindowEx创建出来的控件的风格不像XP风格,而是像Windows 2000的风格,界面很难看.注意 ...

随机推荐

  1. Ubuntu 18.04 LTS 设置代理(系统代理;http 代理;sock5 代理;apt 代理 ...)

    1. 设置系统代理 1.1 设置 http 代理 1.1.1 只在当前 shell 生效 export http_proxy="http://<user>:<passwor ...

  2. pod宿主机挂载pv存储过程

    1处的控制循环Control Loop应该是:VolumeManagerReconciler ----------------------------------------------------- ...

  3. PAT(B) 1083 是否存在相等的差(Java)统计

    题目链接:1083 是否存在相等的差 (20 point(s)) 题目描述 给定 N 张卡片,正面分别写上 1.2.--.N,然后全部翻面,洗牌,在背面分别写上 1.2.--.N.将每张牌的正反两面数 ...

  4. linux 下搭建go开发环境

  5. ASP.NET Core依赖注入多个服务实现类

    依赖注入在 ASP.NET Core 中起中很重要的作用,也是一种高大上的编程思想,它的总体原则就是:俺要啥,你就给俺送啥过来. 服务类型的实例转由容器自动管理,无需我们在代码中显式处理. 因此,有了 ...

  6. Luogu5280 [ZJOI2019] 线段树 【线段树】

    题目分析: 这题除了分类讨论就没啥了... 容易发现问题实际就是所有操作选和不选按顺序执行的所有答案和.考虑每个点在多少种情况下会有tag. 那么,考虑新插入一个[l,r],所有有交集的点都会被清空, ...

  7. Python windows环境 搭建问题

    环境安装包下载地址: https://pan.baidu.com/s/1bnVhHMZ?fid=642139599707514 百度地址: http://sw.bos.baidu.com/sw-sea ...

  8. netcat瑞士军刀实现电脑远程控制termux

    关于nc实现远程控制termux 1.首先termux安装namp pkg install namp 2.windows系统安装netcat 此为netcat下载连接 下载得到zip压缩包,解压得到里 ...

  9. js入门之内置对象Math

    一. 复习数据类型 简单数据类型, 基本数据类型/值类型 Number String Boolean Null Undefined 复杂数据类型 引用类型 Object 数组 数据在内存中是如何存储的 ...

  10. tcping端口检测工具使用

    大家都知道检测网络状态是,无论是服务器/客户机 最常用的就是ping命令,但ping命令只能检测ICMP协议,若对方禁止ping协议了,自然ping命令也就无法检测了,此时,我们可以通过tcping工 ...