文章目录
1.GetDlgItem函数
- 1.GetDlgItem函数
- 2.SendMessage函数--编辑列表
- 3.列表增加专用宏函数
根据窗口控件ID获取对话框窗口句柄。
WINUSERAPI
HWND
WINAPI
GetDlgItem(
_In_opt_ HWND hDlg,
_In_ int nIDDlgItem);
2.SendMessage函数–编辑列表
LVM_GETITEMTEXT消息获取窗口内容,LVM_GETITEMCOUNT获取行数,LVM_SETITEMTEXT修改内容,LVM_INSERTITEM插入一项。
#include
#include
#include
#include "stdio.h"
#include
#include
#include
#include
//在列表中增加一行
static void ListAddOneFile(HWND hDlgWnd,std::wstring filename)
{
//获取列表句柄
HWND listHWnd = ::GetDlgItem(hDlgWnd, 1000);
//列表中增加一行
LVITEM lvitem;
lvitem.mask = LVIF_TEXT;
lvitem.pszText = L"1";
lvitem.cchTextMax = 512;
lvitem.iItem = 0;
lvitem.iSubItem = 0;
int r = ::SendMessage(listHWnd, LVM_INSERTITEM, 0, (LPARAM)&lvitem);
//修改列表内容
lvitem.iSubItem = 1;
wchar_t pItem[256] = { 0 };
wsprintf(pItem, _T("%s"), filename.c_str());//应用
lvitem.pszText = pItem;
::SendMessage(listHWnd, LVM_SETITEMTEXT, (WPARAM)0, (LPARAM)&lvitem);
}
void Test(HWND hDlgWnd)
{
//获取列表句柄
HWND listHWnd=::GetDlgItem(hDlgWnd, 1000);
//获取列表第一行数据
wchar_t pItem[256] = { 0 };
LVITEM lvitem;
lvitem.cchTextMax = 512;
lvitem.iSubItem = 2;
lvitem.pszText = pItem;
int iItem = 0;
::SendMessage(listHWnd, LVM_GETITEMTEXT, (WPARAM)iItem, (LPARAM)&lvitem);
//总行数
int count = SendMessage(listHWnd, LVM_GETITEMCOUNT, 0, 0);
//修改列表
wsprintf(pItem, _T("%d"), 123);//应用
::SendMessage(listHWnd, LVM_SETITEMTEXT, (WPARAM)iItem, (LPARAM)&lvitem);
std::wstring flag = pItem;
if (!flag.empty())
{
return true;
}
else
{
return false;
}
}
3.列表增加专用宏函数
#include
void Test(HWND hDlgWnd)
{
//获取列表句柄
HWND listHWnd = ::GetDlgItem(hDlgWnd, 1000);
//插入一行
LVITEM lvItem = { 0 };
ListView_InsertItem(listHWnd, (LPARAM)&lvItem);
//修改数据
char pItem[256] = { 0 };
sprintf(pItem, _T("%s"), filename.c_str());//应用
ListView_SetItemText(listHWnd, 0, 1, pItem);
//获取数据
char state_str[256] = { 0 };
ListView_GetItemText(listHWnd, 0, 1, state_str, 256);
//获取列表行数
int count = ListView_GetItemCount(listHWnd);
}
希望能够帮到需要原生代码的朋友。