Προς το περιεχόμενο

structs


spook3ros

Προτεινόμενες αναρτήσεις

Δημοσ.

gyes prospathw na kanw convert mia struct apo c# se c++ .net alla den mou bgainei.

 

o code se c# einai

 

public struct SHFILEINFO

{

public IntPtr hIcon;

public IntPtr iIcon;

public uint dwAttributes;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]

public string szDisplayName;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]

public string szTypeName;

};

 

enw autos pou prospathw na ftiaxw einai o

 

typedef struct _SHFILEINFO{

IntPtr hIcon;

IntPtr iIcon;

unsigned int dwAttributes;

TCHAR szDisplayName[260];

TCHAR szTypeName[80];

} SHFILEINFO,*PSHFILEINFO;

 

to error pou pairnw einai

cannot declare a managed 'hIcon' in an unmanaged '_SHFILEINFO'

 

profanws thewrei oti o IntPtr einai managed variable.Pws mporw na to kanw na symperiferetai san unmanaged.Giati re gamwto sthn c# douleuei etsi apla?

Δημοσ.

Υποθέτω πως θες να χρησιμοποιήσεις την δομή με την εντολή SHGetFileInfo. Η αλήθεια είναι πως δεν χρειάζεται να δηλώσεις αυτή την δομή μιας και είναι ήδη δηλωμένη μέσα στο shellapi.h. Το μόνο που έχεις να κάνεις είναι να κάνεις #include αυτό το αρχείο στον κώδικά σου. Πάντως η δήλωση της δομής είναι η ακόλουθη:

>
typedef struct _SHFILEINFO {
   HICON hIcon;
   int iIcon;
   DWORD dwAttributes;
   TCHAR szDisplayName[MAX_PATH];
   TCHAR szTypeName[80];
} SHFILEINFO;

Περισσότερα μπορείς να βρείς στο παρακάτω link: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/shfileinfo.asp

Δημοσ.

ta katafera na metatrepsw to paradeigma ths ms apo c# se c++.Den xerw an einai apolytws swsto alla douleuei.O kwdikas akolouthei (se periptwsh pou ton xreiastei kapios allos)

 

typedef void *HICON;

 

typedef struct _SHFILEINFO{

HICON hIcon;

int iIcon;

unsigned int dwAttributes;

System::Char szDisplayName __nogc[260];

System::Char szTypeName __nogc[80];

} SHFILEINFO ;

 

 

unsigned int SHGFI_ICON = 0x100;

unsigned int SHGFI_LARGEICON = 0x0; // 'Large icon

unsigned int SHGFI_SMALLICON = 0x1; // 'Small icon

 

[DllImport("Shell32.dll")]

extern "C" int SHGetFileInfo(String* path,

unsigned int fileAttributes,

[ref] SHFILEINFO *psfi,

unsigned int cbSizeFileInfo,

unsigned int uFlags);

 

SHFILEINFO *pShInfo=new SHFILEINFO;

String *fName="c:\\temp.txt" // to fName exei to onoma tou arxeiou tou opoiou theloume na paroume ton icon tou.

 

hImgSmall = SHGetFileInfo(fName, 0,pShInfo,sizeof(pShInfo),SHGFI_ICON |SHGFI_SMALLICON);

Icon *myIcon=Icon::FromHandle(pShInfo->hIcon);

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...