Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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();
        }
Esempio n. 5
0
        /// <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);
            }
        }
Esempio n. 8
0
        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;
     }
 }
Esempio n. 11
0
 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));
 }