Newsgroup: it.comp.programmare.win32
Titolo: [VC++] LVM_SETVIEW

SendMessage(GetDlgItem(hwnd,105),LVM_SETVIEW,LV_VIEW_ICON,0);
Ho provato a mandare questo messaggio ad una ListView per cambiare lo stile
ma mi dice che non esistono ne LVM_SETVIEW e nemmeno LV_VIEW_ICON ! Come
ddevo fare insomma per cambiare lo stile ?

 wrote in message
news:84Ukc.178359$
rM4.7...@news4.tin.it

Immagino che tu non stia lavorando con Windows XP.
Si puo' infatti trovare la seguente spiegazione riguardo
LVM_SETVIEW Message
"Minimum operating systems Windows XP"
Header commctrl.h 
Soluzioni:
una via potrebbe essere quella dell'uso diretto
della struttura LVITEM:
   LVITEM lvi;
	lvi.mask = nMask;
	lvi.iItem = nItem;
	lvi.iSubItem = nSubItem;
	lvi.stateMask = nStateMask;
	lvi.state = nState;
	lvi.pszText = (LPTSTR) lpszItem;
	lvi.iImage = nImage;
	lvi.lParam = lParam;
	lvi.iIndent = nIndent;
	::SendMessage(m_hWnd, LVM_SETITEM, 0, (LPARAM)&lvi);
un'altra via e' quella di usare un WM_COMMAND con :
::SendMessage(m_hWnd, WM_COMMAND, wParam, 0L);
con wParam:
0x7029 vista Icone 
0x702B vista List 
0x702C vista Dettagli 
0x702D vista "Thumbnails" 
0x702E vista testuale 
Un'altra via e' di usare le gia' ben formate MFC o equivalenti...
Saluti
JJ
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:1966a3e7118b8205375...@mygate.mailgate.org...

Uso WindowsXp , ho trovato la soluzione mettendo questo come parametro
SendMessage(GetDlgItem(hwnd,105),LVM_FIRST + 142,0,0);

 SendMessage(GetDlgItem(hwnd,105),LVM_FIRST + 142,0,0);
Allora e' il tuo progetto a non essere ben configurato
in quanto non usa CommCtrl.h
In VC++.NET Lo trovi in 
...\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\CommCtrl.h
e li' alla linea 3944 trovi 
#define LVM_SETVIEW         (LVM_FIRST + 142)
Credo sia il caso di usare la libreria per non reinventare
LVM_SETVIEW sostituendo (LVM_FIRST + 142) nel codice ogni volta.


 ha scritto nel messaggio
news:833a3e18aa64450e391...@mygate.mailgate.org...

Eppure nel mio file .cpp o messo l'include di CommCtrl.h ! ?!?

 Eppure nel mio file .cpp o messo l'include di CommCtrl.h ! ?!?
???
Controlla il progetto nel senso di andare sul controllo
ad albero di "Esplora soluzioni", selezionare il progetto
e clickare il tasto destro del mouse, selezionare Proprieta'
e poi aprendo la cartella C/C++ (List di sinistra)
selezionare la voce "Generale".
Cosi' prova ad inserire esplicitamente il percorso del file header
nella prima riga del grid (a destra) "Directory di inclusione
aggiuntive".
Oppure dal Menu' progetto seleziona "Aggiungi elemento esistente".
Probabilmente cosi' va.


 ha scritto nel messaggio
news:b586257c44addc92a5f...@mygate.mailgate.org...

Non ho capito benenc osa devo fare :( !!! E poi non mi prende nemmeno
BTNS_SHOWTEXT per la toolbar , e anche altri , come mai ?

 BTNS_SHOWTEXT per la toolbar , e anche altri , come mai ?
Si trova ancora una volta in CommCtrl.h
(#define BTNS_SHOWTEXT   0x0040)
Oltre a scrivere nel tuo sorgente #include "commctrl.h"
dovresti provare ad istruire l'ambiente (il VC++) su dove trovarlo
(path)
e includerlo (con un comando da menu' Progetto del VC++) nel progetto.
Come spero avrai gia' fatto un mucchio di volte.
Attenzione pero' nell'Help del VC++ si possono trovare importanti
passi da eseguire per rendere poi disponibili gli stili "Windows XP"
vedi appunto "Using Windows XP Visual Styles" nell'Help
in cui si chiede di includere nel proprio progetto anche
un file col nome del programma p. es. MyApp.exe.manifest
e specificare in XML l'uso della ComCtl32.dll Version 6
p. es. il contenuto potrebbe essere
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="CompanyName.ProductName.YourApplication"
    type="win32"
/>
<description>Your application description here.</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>
Mi sembra una procedura un po' delirante....
ma l'hanno pensata proprio cosi'.
Chi vivra' vedra'.


 ha scritto nel messaggio
news:2df28a8e7c7d1b64c92...@mygate.mailgate.org...

Forse ho trovato il motivo ! Siccome io uso il VC++6.0 ho aperto le
CommCtrl.h e non ci sono quelle definizioni ,quindi penso che sia vecchio
l'header ! Come posso aggiornarlo ?

 l'header ! Come posso aggiornarlo ?
Permettimi un po' di allegria...
Metafora su cio' che si puo' fare e cio' che invece conviene.
Data una bicicletta si puo' aggiungere un motore.
Certo che si'. Ma dopo un po' si sente la necessita' di avere
freni adeguati. E si cambiano i freni.
E poi vibra alle alte velocita', e poi non tiene molto la strada.....
Tutto sommato e' meglio abbandonare l'idea di aggiungere il motore
e tutto quello che ne deriva e comprarsi un sistema congruo, la moto.
Idem per VC6 e VC7 rispetto a quello che stai cercando di fare.
Secondo la mia opinione, e sono un affezionato del VC6 che secondo
me e' un potentissimo strumento ancora sottosfruttato,
per mettere le mani su XP e' conveniente passare al VC7.
Ma se proprio insisti con l'aggiornare il VC6, prova a vedere
http://msdn.microsoft.com/visualc/vctoolkit2003/
su questo non andro' oltre.
