马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lm68140318 于 2023-4-29 20:22 编辑 SetWindowLong(hWnd4, GWL_STYLE, Styles | LVS_REPORT| LVS_EX_GRIDLINES | LVS_EX_ONECLICKACTIVATE | LVS_SHOWSELALWAYS| LVS_EX_FULLROWSELECT);
mylist4.SetItemState(1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
我的问题:LVS_EX_FULLROWSELECT 已经设置,可是选中时不是显示一行 ??
根据您的问题,看起来您想使用LVS_EX_FULLROWSELECT样式来实现整行选择功能,但似乎没有达到预期的效果。请注意,您在 SetWindowLong 函数中设置了一些样式,但 LVS_EX_FULLROWSELECT 不应该在这里设置。LVS_EX_FULLROWSELECT是一个扩展样式,应该使用 CListCtrl 的 SetExtendedStyle 方法进行设置。
请尝试使用以下代码:
CListCtrl mylist4;
// ... 假设您已经初始化了mylist4
// 设置基本样式
DWORD Styles = mylist4.GetStyle();
SetWindowLong(mylist4.m_hWnd, GWL_STYLE, Styles | LVS_REPORT | LVS_EX_GRIDLINES | LVS_EX_ONECLICKACTIVATE | LVS_SHOWSELALWAYS);
// 设置扩展样式
DWORD ExStyles = mylist4.GetExtendedStyle();
mylist4.SetExtendedStyle(ExStyles | LVS_EX_FULLROWSELECT);
// 选中第一行
mylist4.SetItemState(1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
这样,您的列表控件应该能够实现整行选择的功能。注意,我已经将您的 SetWindowLong 调用修改为使用 CListCtrl 对象的 m_hWnd 成员,而不是直接使用 hWnd4。这是因为您需要操作实际的列表控件窗口。同时,不要忘记包含必要的头文件和库文件,以便正确编译和链接您的代码。
|