首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++ winapi listview项目已选中,但未突出显示

c++ winapi listview项目已选中,但未突出显示
EN

Stack Overflow用户
提问于 2013-12-22 19:59:18
回答 1查看 1.9K关注 0票数 3

下面是我的对话框的dialogProc,其中包含列表视图。该对话框由我的应用程序主窗口中的一个简单按钮创建。问题是ListView_SetItemState成功,但该项目未突出显示。此外,当我手动单击一个项目(图标)时,只有该图标被选中(突出显示),而不是该项目的整个矩形。谢谢你的帮助。

代码语言:javascript
运行
复制
   BOOL CALLBACK DialogProc(HWND ihDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
   {
   TCHAR pszfile[MAX_PATH];
   SIZE  size;
   int   selected_icon,wn_v;
   char  buffer[MAX_PATH];
   LVTILEVIEWINFO tileViewInfo;
   LVCOLUMN LvCol;
   size_t   i;
   switch(uMsg)
    {
      case WM_INITDIALOG: 

    EnableWindow(GetParent(ihDlg),false);

    hDLGedit     = CreateWindowEx(WS_EX_CLIENTEDGE,L"edit",L"",WS_HSCROLL|ES_AUTOHSCROLL|
                              WS_CHILD|WS_VISIBLE,5,25,250,25,ihDlg,(HMENU) DLG_edit_BX,0,0);
    hDLGb_browse = CreateWindowEx(WS_EX_CLIENTEDGE,L"BUTTON",L"Browse",
                              WS_CHILD|WS_VISIBLE,257,25,60,25,ihDlg,(HMENU) DLG_bt_BROWS,0,0);
    hDLGlistv    = CreateWindow(WC_LISTVIEW,L"",WS_HSCROLL|LVS_AUTOARRANGE|LVS_ICON|LVS_SINGLESEL|
                              WS_VISIBLE|WS_CHILD | LVS_REPORT | LVS_EDITLABELS,10,80,425,150,ihDlg,(HMENU) DLG_LIST_icons,0,0);
    size.cx=45;
    size.cy=45;
    tileViewInfo.cbSize   = sizeof(tileViewInfo);
    tileViewInfo.dwFlags  = LVTVIF_FIXEDSIZE;
    tileViewInfo.dwMask   = LVTVIM_COLUMNS | LVTVIM_TILESIZE;
    tileViewInfo.cLines   = 2;
    tileViewInfo.sizeTile = size;
    ListView_SetTileViewInfo(hDLGlistv, &tileViewInfo);     
    LvCol.mask=LVCF_IMAGE;    
    LvCol.fmt=LVCFMT_IMAGE;                                   
    LvCol.pszText=L"Item"; 
    ListView_InsertColumn(hDLGlistv,0,&LvCol);

    ShowScrollBar(hDLGedit,SB_HORZ,0);
    GetWindowsDirectory(pszfile,MAX_PATH);
    wcscat_s(pszfile,50,TEXT("\\system32\\SHELL32.dll"));
    SendMessage(hDLGedit,WM_SETTEXT,0,reinterpret_cast<LPARAM>(pszfile) );  
    iload_Icons(hDLGlistv,pszfile);//just a function that loads icons and fill up the listview
    ListView_SetView(hDLGlistv,LV_VIEW_TILE);
    ListView_SetItemState(hDLGlistv,0,LVIS_FOCUSED | LVIS_SELECTED,LVIS_FOCUSED | LVIS_SELECTED);
    break;
case WM_PAINT:    
    // some painting
     break;
case WM_COMMAND:
  switch(LOWORD(wParam))
     {
        case DLG_edit_BX:
            return TRUE;
        case DLG_bt_BROWS:
             Do_icon_open(ihDlg);// just filling the listview
             ListView_SetItemState(hDLGlistv,0,LVIS_FOCUSED | LVIS_SELECTED,LVIS_FOCUSED | LVIS_SELECTED );
            return TRUE;
        case IDOK:
             SendMessage(hDLGedit, WM_GETTEXT, 260, (LPARAM) pszfile);
             selected_icon= ListView_GetNextItem(hDLGlistv, -1, LVNI_SELECTED);              
    // some code related to the selection of an icon         
             EndDialog(ihDlg, wParam);
             hDlg=NULL;
             break;
        case IDCANCEL:
             EndDialog(ihDlg, wParam);
             hDlg=NULL; //golobal varialble (the dialog itself
             break;
     }
case WM_CLOSE:
     EndDialog(ihDlg, wParam);
     hDlg=NULL;
     break;
case WM_DESTROY:
     PostQuitMessage(0);
     break;
 }
 return 0;

}

EN

Stack Overflow用户

发布于 2013-12-23 00:59:08

如果希望即使列表视图没有焦点也显示所选内容,请使用LVS_SHOWSELALWAYS窗口样式。

如果要在选中时突出显示项和子项,请使用LVS_EX_FULLROWSELECT窗口扩展样式。

使用CreateWindowEx或带有GWL_EXSTYLESetWindowLong来指定扩展样式。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20729150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档