private void fvmw_ViewModeChanged(object sender, EventArgs e) { IShellView shellView = null; try { if (0 == shellBrowser.QueryActiveShellView(out shellView)) { IFolderView folderView = shellView as IFolderView; if (folderView != null) { FOLDERVIEWMODE currentMode = 0; folderView.GetCurrentViewMode(ref currentMode); FOLDERVIEWMODE mode = fvmw.ViewMode; if (currentMode != mode) { folderView.SetCurrentViewMode(mode); UpdateButtonImage(mode); } } } } catch { } finally { if (shellView != null) { Marshal.ReleaseComObject(shellView); } } }
private FOLDERVIEWMODE GetCurrentViewMode() { IShellView shellView = null; try { if (0 == shellBrowser.QueryActiveShellView(out shellView)) { IFolderView folderView = shellView as IFolderView; if (folderView != null) { FOLDERVIEWMODE currentMode = 0; folderView.GetCurrentViewMode(ref currentMode); return(currentMode); } } } catch { } finally { if (shellView != null) { Marshal.ReleaseComObject(shellView); } } return(FOLDERVIEWMODE.FVM_ICON); }
private void UpdateButtonImage(FOLDERVIEWMODE mode) { switch (mode) { case FOLDERVIEWMODE.FVM_THUMBSTRIP: this.button.Image = Resource.imgFilm; break; case FOLDERVIEWMODE.FVM_THUMBNAIL: this.button.Image = Resource.imgThumb; break; case FOLDERVIEWMODE.FVM_TILE: this.button.Image = Resource.imgTiles; break; case FOLDERVIEWMODE.FVM_ICON: this.button.Image = Resource.imgIcon; break; case FOLDERVIEWMODE.FVM_LIST: this.button.Image = Resource.imgList; break; case FOLDERVIEWMODE.FVM_DETAILS: this.button.Image = Resource.imgDetails; break; } }
public void ShowWindow(Point pnt, FOLDERVIEWMODE fvmCurrentMode) { const uint SWP_NOACTIVATE = 0x0010; const int SW_SHOWNOACTIVATE = 4; trackBar1.Value = ModeToInt(fvmCurrentMode); // set the slider of trackbar under mouse position RECT rct = GetThumbRect(); Point pntCenter = new Point(rct.left + rct.Width / 2, rct.top + rct.Height / 2); Rectangle rctScreen = Screen.FromPoint(pnt).Bounds; pnt.X = pnt.X - pntCenter.X; pnt.Y = pnt.Y - pntCenter.Y; // ensure visible in the screen if(pnt.X < rctScreen.Left) pnt.X = rctScreen.Left; else if(pnt.X + Width > rctScreen.Right) pnt.X = rctScreen.Right - Width; if(pnt.Y < rctScreen.Top) pnt.Y = rctScreen.Top; else if(pnt.Y + Height > rctScreen.Bottom) pnt.Y = rctScreen.Bottom - Height; PInvoke.SetWindowPos(Handle, (IntPtr)(-1), pnt.X, pnt.Y, Width, Height, SWP_NOACTIVATE); PInvoke.ShowWindow(Handle, SW_SHOWNOACTIVATE); trackBar1.Focus(); }
/// <summary> /// ¸üа´Å¥Í¼Æ¬ /// ÐÞ¸´Æ¤·ôÅäÖÿÕͼƬ±¨´í /// </summary> /// <param name="mode"></param> private void UpdateButtonImage(FOLDERVIEWMODE mode) { switch (mode) { case FOLDERVIEWMODE.FVM_THUMBSTRIP: if (null != Resource.imgFilm) { button.Image = Resource.imgFilm; } break; case FOLDERVIEWMODE.FVM_THUMBNAIL: if (null != Resource.imgThumb) { button.Image = Resource.imgThumb; } break; case FOLDERVIEWMODE.FVM_TILE: if (null != Resource.imgTiles) { button.Image = Resource.imgTiles; } break; case FOLDERVIEWMODE.FVM_ICON: if (null != Resource.imgIcon) { button.Image = Resource.imgIcon; } break; case FOLDERVIEWMODE.FVM_LIST: if (null != Resource.imgList) { button.Image = Resource.imgList; } break; case FOLDERVIEWMODE.FVM_DETAILS: if (null != Resource.imgDetails) { button.Image = Resource.imgDetails; } break; } }
public void ShowWindow(Point pnt, FOLDERVIEWMODE fvmCurrentMode) { const uint SWP_NOACTIVATE = 0x0010; const int SW_SHOWNOACTIVATE = 4; trackBar1.Value = ModeToInt(fvmCurrentMode); // set the slider of trackbar under mouse position RECT rct = GetThumbRect(); Point pntCenter = new Point(rct.left + rct.Width / 2, rct.top + rct.Height / 2); Rectangle rctScreen = Screen.FromPoint(pnt).Bounds; pnt.X = pnt.X - pntCenter.X; pnt.Y = pnt.Y - pntCenter.Y; // ensure visible in the screen if (pnt.X < rctScreen.Left) { pnt.X = rctScreen.Left; } else if (pnt.X + Width > rctScreen.Right) { pnt.X = rctScreen.Right - Width; } if (pnt.Y < rctScreen.Top) { pnt.Y = rctScreen.Top; } else if (pnt.Y + Height > rctScreen.Bottom) { pnt.Y = rctScreen.Bottom - Height; } PInvoke.SetWindowPos(Handle, (IntPtr)(-1), pnt.X, pnt.Y, Width, Height, SWP_NOACTIVATE); PInvoke.ShowWindow(Handle, SW_SHOWNOACTIVATE); trackBar1.Focus(); }
private static int ModeToInt(FOLDERVIEWMODE fvm) { switch (fvm) { case FOLDERVIEWMODE.FVM_THUMBSTRIP: return(5); case FOLDERVIEWMODE.FVM_THUMBNAIL: return(4); case FOLDERVIEWMODE.FVM_TILE: return(3); case FOLDERVIEWMODE.FVM_LIST: return(1); case FOLDERVIEWMODE.FVM_DETAILS: return(0); default: return(2); } }
private static RECT GetLVITEMRECT(IntPtr hwndListView, int iItem, bool fSubDirTip, FOLDERVIEWMODE fvm) { // get the bounding rectangle of item specified by iItem, in the screen coordinates. // fSubDirTip true to get RECT depending on view style, false to get RECT by LVIR_BOUNDS const uint LVM_FIRST = 0x1000; const uint LVM_GETVIEW = (LVM_FIRST + 143); const uint LVM_GETITEMW = (LVM_FIRST + 75); const uint LVM_GETSTRINGWIDTHW = (LVM_FIRST + 87); const uint LVM_GETITEMSPACING = (LVM_FIRST + 51); const int LVIR_BOUNDS = 0; const int LVIR_ICON = 1; const int LVIR_LABEL = 2; const int LV_VIEW_ICON = 0x0000; const int LV_VIEW_DETAILS = 0x0001; const int LV_VIEW_LIST = 0x0003; const int LV_VIEW_TILE = 0x0004; const int LVIF_TEXT = 0x00000001; int view = (int)PInvoke.SendMessage(hwndListView, LVM_GETVIEW, IntPtr.Zero, IntPtr.Zero); int code = view == LV_VIEW_DETAILS ? LVIR_LABEL : LVIR_BOUNDS; bool fIcon = false; // for XP bool fList = false; // for XP if(fSubDirTip) { switch(view) { case LV_VIEW_ICON: fIcon = !QTUtility.IsVista; code = LVIR_ICON; break; case LV_VIEW_DETAILS: code = LVIR_LABEL; break; case LV_VIEW_LIST: if(!QTUtility.IsVista) { fList = true; code = LVIR_ICON; } else { code = LVIR_LABEL; } break; case LV_VIEW_TILE: code = LVIR_ICON; break; default: // Here only in case of Vista LV_VIEW_SMALLICON. code = LVIR_BOUNDS; break; } } // get item rectangle RECT rct = PInvoke.ListView_GetItemRect(hwndListView, iItem, 0, code); // convert to screen coordinates PInvoke.MapWindowPoints(hwndListView, IntPtr.Zero, ref rct, 2); // adjust rct // these magic numbers have no logical meanings if(fIcon) { // XP, subdirtip. // THUMBNAIL, THUMBSTRIP or ICON. if(fvm == FOLDERVIEWMODE.FVM_THUMBNAIL || fvm == FOLDERVIEWMODE.FVM_THUMBSTRIP) { rct.right -= 13; } else // fvm == FVM_ICON { int currentIconSpacing = (int)(long)PInvoke.SendMessage(hwndListView, LVM_GETITEMSPACING, IntPtr.Zero, IntPtr.Zero); Size sz = SystemInformation.IconSize; rct.right = rct.left + (((currentIconSpacing & 0xFFFF) - sz.Width)/2) + sz.Width + 8; rct.bottom = rct.top + sz.Height + 6; } } else if(fList) { // XP, subdirtip. // calculate item text rectangle LVITEM lvitem = new LVITEM(); lvitem.pszText = Marshal.AllocCoTaskMem(520); lvitem.cchTextMax = 260; lvitem.iItem = iItem; lvitem.mask = LVIF_TEXT; IntPtr pLI = Marshal.AllocCoTaskMem(Marshal.SizeOf(lvitem)); Marshal.StructureToPtr(lvitem, pLI, false); PInvoke.SendMessage(hwndListView, LVM_GETITEMW, IntPtr.Zero, pLI); int w = (int)PInvoke.SendMessage(hwndListView, LVM_GETSTRINGWIDTHW, IntPtr.Zero, lvitem.pszText); w += 20; Marshal.FreeCoTaskMem(lvitem.pszText); Marshal.FreeCoTaskMem(pLI); rct.right += w; rct.top += 2; rct.bottom += 2; } return rct; }
private void labelButtons_Click(object sender, EventArgs e) { FOLDERVIEWMODE mode = (FOLDERVIEWMODE)((LabelEx)sender).Tag; trackBar1.Value = ModeToInt(mode); }
private static int ModeToInt(FOLDERVIEWMODE fvm) { switch(fvm) { case FOLDERVIEWMODE.FVM_THUMBSTRIP: return 5; case FOLDERVIEWMODE.FVM_THUMBNAIL: return 4; case FOLDERVIEWMODE.FVM_TILE: return 3; case FOLDERVIEWMODE.FVM_LIST: return 1; case FOLDERVIEWMODE.FVM_DETAILS: return 0; default: return 2; } }
private void UpdateButtonImage(FOLDERVIEWMODE mode) { switch(mode) { case FOLDERVIEWMODE.FVM_THUMBSTRIP: this.button.Image = Resource.imgFilm; break; case FOLDERVIEWMODE.FVM_THUMBNAIL: this.button.Image = Resource.imgThumb; break; case FOLDERVIEWMODE.FVM_TILE: this.button.Image = Resource.imgTiles; break; case FOLDERVIEWMODE.FVM_ICON: this.button.Image = Resource.imgIcon; break; case FOLDERVIEWMODE.FVM_LIST: this.button.Image = Resource.imgList; break; case FOLDERVIEWMODE.FVM_DETAILS: this.button.Image = Resource.imgDetails; break; } }
public HRESULT SetViewModeAndIconSize(FOLDERVIEWMODE uViewMode, int iImageSize) { return(((delegate * unmanaged <IFolderView2 *, FOLDERVIEWMODE, int, int>)(lpVtbl[35]))((IFolderView2 *)Unsafe.AsPointer(ref this), uViewMode, iImageSize)); }