Shell Common Dialogs

Shell Common Dialogs

Postby Antonio Linares » Mon Jul 11, 2011 8:21 am

http://koti.mbnet.fi/vaultec/files/miscellaneous/undocw95/common.html

comdlg32.prg
Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   MsgInfo( PickIconDlg() )

return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

BOOL WINAPI PickIconDlg(
     HWND     hwndOwner,
     LPSTR    lpstrFile,
     DWORD    nMaxFile,
     LPDWORD  lpdwIconIndex );

HB_FUNC( PICKICONDLG )
{
   DWORD dwIconIndex = 0;
   char buffer[ 256 ];
   
   memset( buffer, 0, 256 );

   if( PickIconDlg( ( HWND ) hb_parnl( 1 ), buffer, 256, &dwIconIndex ) )
      hb_retnl( dwIconIndex );
}

#pragma ENDDUMP


Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42063
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Shell Common Dialogs

Postby Antonio Linares » Mon Jul 11, 2011 8:32 am

http://www.codeproject.com/KB/shell/runfiledlg.aspx

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   // MsgInfo( PickIconDlg() )

   RunFileDlg()

return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

BOOL WINAPI PickIconDlg(
     HWND     hwndOwner,
     LPSTR    lpstrFile,
     DWORD    nMaxFile,
     LPDWORD  lpdwIconIndex );
     
typedef void WINAPI ( * PRUNFILEDLG ) (
     HWND    hwndOwner,
     HICON   hIcon,
     LPCSTR  lpstrDirectory,
     LPCSTR  lpstrTitle,
     LPCSTR  lpstrDescription,
     UINT    uFlags );    

HB_FUNC( PICKICONDLG )
{
   DWORD dwIconIndex = 0;
   char buffer[ 256 ];
   
   memset( buffer, 0, 256 );

   if( PickIconDlg( ( HWND ) hb_parnl( 1 ), buffer, 256, &dwIconIndex ) )
      hb_retnl( dwIconIndex );
}

HB_FUNC( RUNFILEDLG )
{
   FARPROC pRunFileDlg = GetProcAddress( GetModuleHandle( "shell32.dll" ), ( LPCSTR ) 61 );
   PRUNFILEDLG p = ( PRUNFILEDLG ) pRunFileDlg;
   
   p( ( HWND ) hb_parnl( 1 ), ( HICON ) hb_parnl( 2 ), hb_parc( 3 ), hb_parc( 4 ), hb_parc( 5 ), hb_parnl( 6 ) );
}
   
#pragma ENDDUMP


Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42063
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Shell Common Dialogs

Postby cuatecatl82 » Mon Jul 11, 2011 7:12 pm

Hola Maestro Antonio:

Yo hize lo mismo que la funcion PickIconDlg(), algo parecido, pero muy muy rudimentario.

Image

http://forums.fivetechsupport.com/viewtopic.php?f=6&t=8814&p=106798#p106798

Woow. me hubiera esperado unos meses más jejeje, que se necesita para implementarlo..?

Como siempre: Elegante función..
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Shell Common Dialogs

Postby cuatecatl82 » Mon Jul 11, 2011 8:12 pm

Contnuando y molestando con los dialogos de Windows:

Hay alguna corrección o modo de poder hacer trabajar la función WNetBrowseDialog()

tengo lo siguiente:

Code: Select all  Expand view

#Include "FIVEWIN.CH"

STATIC oWnd

#Define TYPE_DRIVE   1  
#Define TYPE_FILE   2  
#Define TYPE_PRINTER   3  
#Define TYPE_COMM   4  
 
//--------------------------------------------------------------------//
FUNCTION Main()

DEFINE Window oWnd TITLE    "Probando la Red Local"
ACTIVATE Window oWnd MAXIMIZED ON INIT MSGInfo(WNetBrowseDialog(oWnd,TYPE_FILE, "Z:\"),"Demo")

Return nil


Siempre retorna "Nil", ya agregue el archivo "netapi32.Prg", y tampoco funciona...

Gracias.
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Shell Common Dialogs

Postby Cgallegoa » Tue Jul 12, 2011 4:16 am

Maestro Antonio,

No compila con xHarbour: "Error: Unresolved external 'PickIconDlg' referenced from C:\TRANSI68\PRUEBA1.OBJ
"
Qué cambio debe hacerse para xHarbour ?

Observo desde hace semanas que tus ejemplos están hechos sólo para Harbour, por lo que los que usamos sólo xHarbour quedamos out. Hay alguna razón ?

Saludos y gracias,

Carlos Gallego
Saludos,

Carlos Gallego

*** FWH-24.07, xHarbour 1.3.1 Build 20240624, Borland C++7.70, PellesC ***
Cgallegoa
 
Posts: 491
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Re: Shell Common Dialogs

Postby cuatecatl82 » Thu Jul 14, 2011 12:40 am

Perdón por la Inistencia :oops: :cry: :oops: :oops:

Pero alguien le funciona bien la función WNetBrowseDialog(), si fuera posible me explicaran como poder usarla, o explicar porque me retorna "Nil", usando el ejemplo "SAMPLES\\TestNet.prg "

Gracias de antemano.. :mrgreen: :cry: :lol:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Shell Common Dialogs

Postby xmanuel » Thu Jul 14, 2011 6:03 am

Tal vez la linea:
ACTIVATE Window oWnd MAXIMIZED ON INIT MSGInfo(WNetBrowseDialog(oWnd,TYPE_FILE, "Z:\"),"Demo")
Deberás cambiarla a:
ACTIVATE Window oWnd MAXIMIZED ON INIT MSGInfo(WNetBrowseDialog(oWnd:hWnd,TYPE_FILE, "Z:\"),"Demo")

:D :D :D :D
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 761
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Shell Common Dialogs

Postby cuatecatl82 » Thu Jul 14, 2011 3:56 pm

Manuel:

Gracias pero ya lo habia probado, y tampoco funciona.. :cry:

Maestro Antonio o Daniel, una ayudita por favor.. :roll: :roll: :cry:

Gracias.. :mrgreen: :mrgreen:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Shell Common Dialogs

Postby Daniel Garcia-Gil » Thu Jul 14, 2011 5:07 pm

Victor

al parecer es una funcion que se usaba en 16bit, no sabria decir la equivalemte a 32bit
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Shell Common Dialogs

Postby cuatecatl82 » Fri Jul 15, 2011 12:21 am

Gracias Daniel por la Info, no tengo a la mano Fivewin para Clipper para comprobarlo y asegurarlo, buscando en la red encontre un codigo en VB6 que hace lo mismo, pero no entiendo y no lo puedo traducirlo a FW, Alguien puede darme una mano:

Image

Code: Select all  Expand view
Option Explicit  
 
'Constantes  
Private Const ERROR_SUCCESS As Long = 0  
Private Const MAX_PATH As Long = 260  
Private Const CSIDL_NETWORK As Long = &H12  
Private Const BIF_RETURNONLYFSDIRS As Long = &H1  
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000  
 
'
Estructura BROWSEINFO necesaria para el Api SHBrowseForFolder  
 
Private Type BROWSEINFO 'BI  
    hOwner As Long  
    pidlRoot As Long  
    pszDisplayName As String  
    lpszTitle As String  
    ulFlags As Long  
    lpfn As Long  
    lParam As Long  
    iImage As Long  
End Type  
 
'
Declaramos la función Api SHBrowseForForlder  
Private Declare Function SHBrowseForFolder _  
    Lib "shell32.dll" _  
    Alias "SHBrowseForFolderA" ( _  
        lpBrowseInfo As BROWSEINFO) As Long  
 
'Declaramos la función Api SHGetSpecialFolderLocation  
 
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" ( _  
    ByVal hwndOwner As Long, _  
    ByVal nFolder As Long, _  
    pidl As Long) As Long  
 
 
'
Función que devuelve el nombre de la máquina  
 
 
Private Function Buscar_Equipo_De_Red() As String  
 
Dim BI As BROWSEINFO  
Dim pidl As Long  
Dim sPath As String  
Dim pos As Integer  
 
' Obtener el pidl de la carpeta Entorno de red  
If SHGetSpecialFolderLocation(Me.hWnd, CSIDL_NETWORK, pidl) = ERROR_SUCCESS Then  
 
    With BI  
        .hOwner = Me.hWnd  
        .pidlRoot = pidl  
        .pszDisplayName = Space$(MAX_PATH)  
        .lpszTitle = " Seleccionar el ordenador de la red de la lista :"  
        .ulFlags = BIF_BROWSEFORCOMPUTER  
    End With  
 
    '
Esto abre el diálogo para buscar el equipo de red  
    If SHBrowseForFolder(BI) <> 0 Then  
        'retorna el valor a la función, es decir el nombre del equipo  
        Buscar_Equipo_De_Red = "\\" & Replace(BI.pszDisplayName, Chr(0), vbNullString)  
    End If  
 
End If  
End Function  
 
Private Sub Command1_Click()  
    '
Llama a la función que abre el cuadro de diálogo  
    Call Buscar_Equipo_De_Red  
End Sub  
 
Private Sub Form_Load()  
    Command1.Caption = " Buscar equipo de Red "  
End Sub


Fuente:
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/3.htm

Gracias.. :P :P :wink:
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Shell Common Dialogs

Postby Daniel Garcia-Gil » Fri Jul 15, 2011 1:12 am

Hola

asi es mas facil....
te dejo el codigo

Code: Select all  Expand view

#include "fivewin.ch"

#define BIF_RETURNONLYFSDIRS   0x0001  // For finding a folder to start document searching
#define BIF_DONTGOBELOWDOMAIN  0x0002  // For starting the Find Computer
#define BIF_STATUSTEXT         0x0004   // Top of the dialog has 2 lines of text for BROWSEINFO.lpszTitle and one line if
                                        // this flag is set.  Passing the message BFFM_SETSTATUSTEXTA to the hwnd can set the
                                        // rest of the text.  This is not used with BIF_USENEWUI and BROWSEINFO.lpszTitle gets
                                        // all three lines of text.
#define BIF_RETURNFSANCESTORS  0x0008
#define BIF_EDITBOX            0x0010   // Add an editbox to the dialog
#define BIF_VALIDATE           0x0020   // insist on valid result (or CANCEL)

#define BIF_NEWDIALOGSTYLE     0x0040   // Use the new dialog layout with the ability to resize
                                        // Caller needs to call OleInitialize() before using this API

#define BIF_USENEWUI           (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)

#define BIF_BROWSEINCLUDEURLS  0x0080   // Allow URLs to be displayed or entered. (Requires BIF_USENEWUI)
#define BIF_UAHINT             0x0100   // Add a UA hint to the dialog, in place of the edit box. May not be combined with BIF_EDITBOX
#define BIF_NONEWFOLDERBUTTON  0x0200   // Do not add the "New Folder" button to the dialog.  Only applicable with BIF_NEWDIALOGSTYLE.
#define BIF_NOTRANSLATETARGETS 0x0400   // don't traverse target as shortcut

#define BIF_BROWSEFORCOMPUTER  0x1000  // Browsing for Computers.
#define BIF_BROWSEFORPRINTER   0x2000  // Browsing for Printers
#define BIF_BROWSEINCLUDEFILES 0x4000  // Browsing for Everything
#define BIF_SHAREABLE          0x8000  // sharable resources displayed (remote shares, requires BIF_USENEWUI)



function main()

? BrowseFolder( 0, "Probando", BIF_BROWSEFORCOMPUTER )

return nil



#pragma BEGINDUMP
#include <hbapi.h>
#include <windows.h>
#include <shlobj.h>
#include <shtypes.h>

HB_FUNC( BROWSEFOLDER )
{
   
   HWND hWnd = ( HWND ) hb_parnl( 1 );
   ITEMIDLIST * ppidl;
   BROWSEINFO  lpbi;
   char pszDisplayName[MAX_PATH];
   char pszReturn[MAX_PATH];
   
   memset( &lpbi, 0x00, sizeof( BROWSEINFO ) );
   
   if( SHGetSpecialFolderLocation( hWnd, CSIDL_NETWORK, &ppidl ) == S_OK )
   {
      lpbi.hwndOwner   = hWnd;  
      lpbi.pidlRoot = ppidl;  
      lpbi.pszDisplayName = pszDisplayName;
      lpbi.lpszTitle = hb_parc( 2 );  
      lpbi.ulFlags = hb_parnl( 3 ) ;
      if( SHBrowseForFolder(&lpbi) != 0 )
         strcpy( pszReturn, lpbi.pszDisplayName );
      else
         strcpy( pszReturn, "\0" );
   }
   
   hb_retc( pszReturn );

}


#pragma ENDDUMP
 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Shell Common Dialogs

Postby Antonio Linares » Fri Jul 15, 2011 1:19 pm

Cgallegoa wrote:Maestro Antonio,

No compila con xHarbour: "Error: Unresolved external 'PickIconDlg' referenced from C:\TRANSI68\PRUEBA1.OBJ
"
Qué cambio debe hacerse para xHarbour ?

Observo desde hace semanas que tus ejemplos están hechos sólo para Harbour, por lo que los que usamos sólo xHarbour quedamos out. Hay alguna razón ?

Saludos y gracias,

Carlos Gallego


Carlos,

Vamos a revisarlo. La razón de usar Harbour preferentemente es que está mucho más maduro y desarrollado que xHarbour, además de funcionar perfectamente en multiples versiones y sistemas operativos (32, 64 bits) (Windows, OSX, Linux, Android, iPhone) algo que xHarbour no soporta y que por lo que se ve no hay intención de implementar.

Nuestro mejor consejo es que los usuarios migren a Harbour y estarán muy contentos con el cambio. Según se ha comentado en varios grupos de desarrollo, parece que xHarbour pueda dejar de desarrollarse. Esto es algo que el propio Patrick Mast me comentó por email (no pretendo con esto desvelar conversaciones privadas pero creo que es justo que los usuarios de xHarbour lo sepan).
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42063
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Shell Common Dialogs

Postby cuatecatl82 » Fri Jul 15, 2011 3:41 pm

Daniel:

Gracias por traducir el ejemplo, pero al compilar me da 1 Warning y 1 Error: :oops: :oops:

Code: Select all  Expand view
Z:\PRUEBAS\OBJ\ntbrwdlg.hrb:
Warning W8065 Z:\\PRUEBAS\\ntbrwdlg.prg 55: CALL TO FUNCTION 'IF' WITH no prototype in FUNCTION HB_FUN_BROWSEFOLDER
Error E2379 Z:\\PRUEBAS\\Variable\\ntbrwdlg.prg 56: Statement missing ; in FUNCTION HB_FUN_BROWSEFOLDER
*** 1 errors in Compile ***


Maestro Antonio:

Gracias por la Información que pena si en un futuro ya no se siga trabajando y desarrollando este compilador, esperemos que esto no pase por lo menos muy pronto. :| :|
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Re: Shell Common Dialogs

Postby Daniel Garcia-Gil » Fri Jul 15, 2011 3:54 pm

Hola

acabo de copiar y pegar y funciona bien

verifica que estes copiando bien el codigo...

te dejo el link de descarga

http://www.sitasoft.net/fivewin/samples/net.zip
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Shell Common Dialogs

Postby cuatecatl82 » Fri Jul 15, 2011 4:15 pm

Rapida Respuesta Daniel:

Cierto, Funciona, que Flags debo poner para compilar, lo tengo asi para xHarbour: /n /m /es2 /gc1, para BCC32: /c /O2 y para ilink32 /Gn /Tpe, creo que por aqui esta el detalle.

Garcias de nuevo. :P :P
Soluciones y Diseño de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
User avatar
cuatecatl82
 
Posts: 625
Joined: Wed Mar 14, 2007 6:49 pm
Location: San Cristobal de las Casas, Chiapas México

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: russimicro and 52 guests