#include
#include
#include
#include "resource.h"
// 链接到comctl32.lib库
#pragma comment(lib,"comctl32.lib")
BOOL __stdcall DlgProc(HWND, UINT, WPARAM, LPARAM);
void UpdateProcess(HWND hWndList);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
// 初始化Comctl32.dll库
::InitCommonControls();
::DialogBoxParam(hInstance, (LPCTSTR)IDD\_DIALOG1, NULL, DlgProc, NULL);
return ;
}
BOOL __stdcall DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
{
// 初始化列表视图控件
HWND hWndList = ::GetDlgItem(hDlg, IDC\_LIST);
TCITEM tci={};
tci.mask=TCIF\_TEXT;
tci.pszText="进程";
TabCtrl\_InsertItem(GetDlgItem(hDlg,IDC\_TAB1),,&tci);
tci.pszText="标签2";
TabCtrl\_InsertItem(GetDlgItem(hDlg,IDC\_TAB1),,&tci);
tci.pszText="标签3";
TabCtrl\_InsertItem(GetDlgItem(hDlg,IDC\_TAB1),,&tci);
//进程标签分栏
LVCOLUMN lvi={};
lvi.mask=LVCF\_WIDTH|LVCF\_TEXT|LVCF\_FMT;
lvi.pszText="进程名称";
lvi.cx=;
lvi.fmt=LVCFMT\_CENTER;
ListView\_InsertColumn(GetDlgItem(hDlg,IDC\_LIST),,&lvi);
lvi.pszText="PID";
ListView\_InsertColumn(GetDlgItem(hDlg,IDC\_LIST),,&lvi);
//标签2分栏
lvi.mask=LVCF\_WIDTH|LVCF\_TEXT|LVCF\_FMT;
lvi.pszText="进程名称2";
lvi.cx=;
lvi.fmt=LVCFMT\_CENTER;
ListView\_InsertColumn(GetDlgItem(hDlg,IDC\_LIST1),,&lvi);
lvi.pszText="PID2";
ListView\_InsertColumn(GetDlgItem(hDlg,IDC\_LIST1),,&lvi);
// 刷新进程列表
UpdateProcess(hWndList);
}
break;
case WM\_NOTIFY:
{
if (\*(LPDWORD)((LPBYTE)lParam+)==TCN\_SELCHANGE )
{
int i = SendMessage(GetDlgItem(hDlg,IDC\_TAB1),TCM\_GETCURSEL,,);
//第一个标签被点击时
if (i == )
{
UpdateProcess(::GetDlgItem(hDlg, IDC\_LIST));
//显示ID为IDC\_LIST的列表控件
ShowWindow(GetDlgItem(hDlg,IDC\_LIST),true);
//隐藏ID为IDC\_LIST1的列表控件
ShowWindow(GetDlgItem(hDlg,IDC\_LIST1),false);
}
//第二个标签被点击时
else if (i==)
{
//隐藏ID为IDC\_LIST的列表控件
ShowWindow(GetDlgItem(hDlg,IDC\_LIST),false);
//显示ID为IDC\_LIST1的列表控件
ShowWindow(GetDlgItem(hDlg,IDC\_LIST1),true);
}
//第三个标签被点击时
else if (i==)
{
//隐藏ID为IDC\_LIST的列表控件
ShowWindow(GetDlgItem(hDlg,IDC\_LIST),false);
//隐藏ID为IDC\_LIST1的列表控件
ShowWindow(GetDlgItem(hDlg,IDC\_LIST1),false);
MessageBox(NULL,"标签3","您点击了标签3!",MB\_OK);
}
}
}
break;
case WM\_COMMAND:
switch(LOWORD(wParam))
{
case IDCANCEL:
::EndDialog(hDlg, IDCANCEL);
break;
}
break;
}
return ;
}
void UpdateProcess(HWND hWndList)
{
// 删除所有的项
::SendMessage(hWndList, LVM_DELETEALLITEMS, , );
int nItem = ; // 项计数
PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) };
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS\_SNAPPROCESS, );
if(hProcessSnap == INVALID\_HANDLE\_VALUE)
return;
if(Process32First(hProcessSnap, &pe32))
{
do
{
// 取得进程ID号
char szID\[\];
wsprintf(szID, "%u", pe32.th32ProcessID);
// 插入一个项
LVITEM item = { };
item.iItem = nItem;
item.mask = LVIF\_TEXT; // 指定pszText域有效
item.pszText = (LPTSTR)pe32.szExeFile; // 设置文本
::SendMessage(hWndList, LVM\_INSERTITEM, , (long)&item);
// 设置新项的文本
LVITEM lvi;
lvi.iSubItem = ; // 指定要设置第1个专栏的文本
lvi.pszText = (LPTSTR)szID; // 要设置的文本
::SendMessage(hWndList, LVM\_SETITEMTEXT, nItem, (LPARAM)&lvi);
nItem++;
}
while(Process32Next(hProcessSnap, &pe32));
}
::CloseHandle(hProcessSnap);
}
初始化消息最好添加:
//隐藏ID为IDC_LIST1的列表控件
ShowWindow(GetDlgItem(hDlg,IDC_LIST1),false);
手机扫一扫
移动阅读更方便
你可能感兴趣的文章