Page 1 sur 1

Afficher des Miniatures ??

Publié : ven. 15/juil./2005 10:12
par brossden
Bonjour à tous

Est il possible d'obtenir une fenetre du style ListIconGadget ou autre avec à l'intérieur des miniatures comme le propose l'explorateur de Windows.

Publié : mar. 19/juil./2005 5:27
par brossden
Bonjour

Mon problème reste sans réponse! :cry:

Je suppose que personne n'a la solution! :roll:

Je réactive ce post pour lui donner une seconde chance ! :idea:

Publié : mar. 19/juil./2005 6:06
par Anonyme2
Utilises la commande ChangeListIconGadgetDisplay() pour la ListIconGadget

Publié : mar. 19/juil./2005 6:07
par Droopy
J'ai lu vite fait la doc et trouvé :

ChangeListIconGadgetDisplay(#Gadget, Mode)

Publié : mar. 19/juil./2005 9:53
par brossden
Utilises la commande ChangeListIconGadgetDisplay() pour la ListIconGadget

Non, cette commande permet d'afficher entre autre des icones de grande taille mais pas les miniatures. J'entend par miniature un affichage en mode diapositive des images d'une répertoire (Oppsion de Windows Xp pour ceux qui connaisent )

Publié : mer. 20/juil./2005 21:31
par RegisLG
Salut,
ça doit être possible avec le mode SHVIEW_THUMBNAIL, j'ai trouvé deux exemples (équivalent à un ExplorerListGadget() de purebasic) mais c'est écrit en C et VB, si qqn a les compétences pour "traduire" ça en purebasic, c'est ici :

Exemple en VB : http://vbnet.mvps.org/index.html?code/h ... lvview.htm

Exemple en C: http://www.codeproject.com/dialog/FileDialogEx.asp

Publié : jeu. 21/juil./2005 16:10
par fweil
Voilà ce que je sais traduire de l'exemple VB.

Par contre je ne sais pas en faire plus pour activier une fenêtre contenant les thumbnails.

Ce code reprend les procédures du code VB et charge la structure d'appel dans la partie principale avant appel de GetOpenFileName().

Code : Tout sélectionner

Enumeration
  #Window_Main
  #Gadget_ExplorerList
EndEnumeration

m_lvInitialView.l

#VER_PLATFORM_WIN32_NT = $2
#OSV_LENGTH = 76
#OSVEX_LENGTH = 88
Global OSV_VERSION_LENGTH.l

#OFN_ENABLEHOOK = $20
#OFN_EXPLORER = $80000
#OFN_ENABLESIZING = $800000
#OFN_EX_NOPLACESBAR = $1

#SHVIEW_ICON = $7029
#SHVIEW_LIST = $702B
#SHVIEW_REPORT = $702C
#SHVIEW_THUMBNAIL = $702D
#SHVIEW_TILE = $702E

Procedure FARPROC(pfn.l)
  FARPROC = pfn
EndProcedure

Procedure IsWin2000Plus()
  osv.OSVERSIONINFO
  osv\dwOSVersionInfoSize = SizeOf(osv)
  If GetVersionEx_(osv) = 1
      IsWin2000Plus = (osv\dwPlatformId = VER_PLATFORM_WIN32_NT) And (osv\dwMajorVersion = 5 And osv\dwMinorVersion >= 0)
  EndIf
EndProcedure

Procedure OFN_SetInitialView(initview.l)
  m_lvInitialView = initview
EndProcedure

Procedure OFNHookProc(hwnd.l, uMsg.l, wParam.l, lParam.l)
  hWndParent.l
  hwndLv.l
  Static bLvSetupDone.l
  Select uMsg
    Case #WM_INITDIALOG
      bLvSetupDone = #FALSE
    Case #WM_NOTIFY
      If bLvSetupDone = #FALSE
          hWndParent = GetParent_(hwnd)
          hwndLv = FindWindowEx_(hWndParent, 0, "SHELLDLL_DefView", #NULL)
          If hwndLv > 0
              SendMessage_(hwndLv, #WM_COMMAND, m_lvInitialView, $0)
              bLvSetupDone = #TRUE
          EndIf
      EndIf
    Default
  EndSelect
EndProcedure

Procedure SetOSVersion()
  Select IsWin2000Plus()
    Case #TRUE
      OSV_VERSION_LENGTH = #OSVEX_LENGTH
    Default
      OSV_VERSION_LENGTH = #OSV_LENGTH
  EndSelect
EndProcedure

;
;
;
  WindowWidth = 640
  WindowHeight = 480
  hWnd = OpenWindow(#Window_Main, 0, 0, WindowWidth, WindowHeight, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "MyWindow")
  If hWnd
      AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
      sFilters.s
      OFN.OPENFILENAME
      SetOSVersion()
      sFilters = "All Files" + Chr(0) + "*.*" + Chr(0) + Chr(0)
      OFN\lStructSize = OSV_VERSION_LENGTH
      OFN\hwndOwner = hWnd
      OFN\lpstrFilter = @sFilters
      OFN\nFilterIndex = 0
      sFile.s = Chr(0) + Space(#MAX_PATH) + Chr(0) + Chr(0)
      OFN\lpstrFile = @sFile
      OFN\nMaxFile = Len(sFile)
      sDefExt.s = "*.*" + Chr(0) + Chr(0)
      OFN\lpstrDefExt = @sDefExt
      sFileTitle.s = Chr(0) + Space(512) + Chr(0) + Chr(0)
      OFN\lpstrFileTitle = @sFileTitle
      OFN\nMaxFileTitle = Len(sFileTitle)
      sInitialDir.s = "C:\Frw\Images"
      OFN\lpstrInitialDir = @sInitialDir
      sTitle.s = "tadaa !"
      OFN\lpstrTitle = @sTitle
      OFN\flags = #OFN_EXPLORER | #OFN_ENABLEHOOK | #OFN_ENABLESIZING
      OFN\lpfnHook = FARPROC(@OFNHookProc())
      GetOpenFileName_(OFN)
      Quit = #FALSE
      Repeat
        Select WindowEvent()
          Case #PB_Event_CloseWindow
            Quit = #TRUE
          Case #PB_Event_Menu
            Select EventMenuID()
              Case #PB_Shortcut_Escape
                Quit = #TRUE
            EndSelect
        EndSelect
      Until Quit
  EndIf
End

Publié : ven. 22/juil./2005 12:40
par RegisLG
Est ce que la fonction CreateViewWindow de l'api windows (http://msdn.microsoft.com/library/defau ... Window.asp) ne permettrait pas d'utiliser le mode thumbnail, car je vois que dans la structure foldersettings qui est passée en paramètre de la fonction, on retrouve le fameux viewmode que l'on peut définir à :

Code : Tout sélectionner

typedef enum {
    FVM_FIRST = 1,
    FVM_ICON = 1,
    FVM_SMALLICON = 2,
    FVM_LIST = 3,
    FVM_DETAILS = 4,
    FVM_THUMBNAIL = 5,
    FVM_TILE = 6,
    FVM_THUMBSTRIP = 7,
    FVM_LAST = 7
} FOLDERVIEWMODE;
Je dis p'tet des betises, je ne maitrise pas l'api... mais ça reviendrait à faire appel à cette fonction de l'API à la place de la fonction PB ChangeListIconGadgetDisplay, car on pourrait passer la valeur 5 (FVM_THUMNAIL) en paramètre.
Si qqn a un avis sur mon idee...