gheg
27-03-2006, 16:06
Salve, questo è il mio primo post nel forum (anche se mi accorgo di essermi registrato da una vita) quindi saluto tutti gli utenti.
Ho un problema con cimagelist e clistctrl in visual c++ 6.0
ho creato un form con una ctrllist alla quale voglio associare un image list
il codice riportato di seguito non sembra funzionare (non da errore ma non avviene nulla)
ho dovuto utilizzare i sendmessage per via del fatto che il programma nel quale vado ad inserire questa cosa sfrutta le API e non MFC (non so se si può aggirare l'ostacolo, ma non è questa l'oggetto del messaggio, l'ho scritto solo per giustificare il mancato utilizzo delle funzioni fornite con la classe cimagelist)
riporto alcune porzioni del codice:
DICHIARATE COME VARIABILI GLOBALI:
static CImageList m_ImageListThumb;
static CImageList *m_pImageList;
static HIMAGELIST ilmiohandle;
int m_nSelectedItem;
HICON miaicona;
all'interno della callback procedure invocata:
[omissis]
h_Immaginiselezionate = GetDlgItem (hDlg, IDC_LIST1);
[omissis]
/*Handle different messages from the dialog box*/
switch (message)
{
case WM_INITDIALOG:
/*Set the initial default values*/
{
CheckDlgButton(hDlg,IDC_MODBYTE, 1);
CheckDlgButton(hDlg,IDC_MODBIT, 0);
SetDlgItemText(hDlg,IDC_NOMEDIRECTORY, directorydaelaborare);
SetDlgItemText(hDlg,IDC_LIST, "Nessun file selezionato al momento");
m_ImageListThumb.Create(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, ILC_COLOR24, 0, 1);
m_pImageList = new CImageList();
m_pImageList->Create(32, 32, TRUE, 4, 4);
miaicona = LoadIcon(NULL, IDI_ERROR);
m_pImageList->Add(miaicona);
ilmiohandle = m_pImageList->GetSafeHandle();
SendMessage(h_Immaginiselezionate, TVM_SETIMAGELIST, (UINT)LVSIL_NORMAL, (LPARAM)ilmiohandle);
}
eccetera eccetera
la parte del file di risorse relativo al blocco trattato è riportata di seguito
BLOCCO DIALOG DISCARDABLE 0, 0, 475, 260
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
GROUPBOX "",IDC_VISUALIZZA,0,28,475,232
EDITTEXT IDC_NOMEDIRECTORY,10,6,275,12,ES_AUTOHSCROLL
GROUPBOX "Modalità trasferimento",IDC_MODALITA,389,0,86,28
DEFPUSHBUTTON "Execute",IDC_ESECUZIONEELABORAZIONE,423,234,45,24
CONTROL "Byte",IDC_MODBYTE,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,406,11,30,10
CONTROL "Bit",IDC_MODBIT,"Button",BS_AUTORADIOBUTTON,441,11,29,
10
DEFPUSHBUTTON "Seleziona directory",IDC_SELDIR,290,7,96,12
LISTBOX IDC_LIST,282,34,138,221,LBS_SORT | LBS_MULTIPLESEL |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
CONTROL "Tutte",IDC_TUTTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
429,41,36,10
CONTROL "List1",IDC_LIST1,"SysListView32",LVS_SHOWSELALWAYS |
LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,2,33,146,223
CONTROL "List2",IDC_LIST2,"SysListView32",WS_BORDER | WS_TABSTOP,
149,34,130,223
END
qualche parere sul perchè non funziona?
sparate anche molto basso xchè sono molto inesperto nell'utilizzare visual c++ ed in generale alla programmazione di windows.
grazie in anticipo per l'attenzione (more to come... :-) )
Ho un problema con cimagelist e clistctrl in visual c++ 6.0
ho creato un form con una ctrllist alla quale voglio associare un image list
il codice riportato di seguito non sembra funzionare (non da errore ma non avviene nulla)
ho dovuto utilizzare i sendmessage per via del fatto che il programma nel quale vado ad inserire questa cosa sfrutta le API e non MFC (non so se si può aggirare l'ostacolo, ma non è questa l'oggetto del messaggio, l'ho scritto solo per giustificare il mancato utilizzo delle funzioni fornite con la classe cimagelist)
riporto alcune porzioni del codice:
DICHIARATE COME VARIABILI GLOBALI:
static CImageList m_ImageListThumb;
static CImageList *m_pImageList;
static HIMAGELIST ilmiohandle;
int m_nSelectedItem;
HICON miaicona;
all'interno della callback procedure invocata:
[omissis]
h_Immaginiselezionate = GetDlgItem (hDlg, IDC_LIST1);
[omissis]
/*Handle different messages from the dialog box*/
switch (message)
{
case WM_INITDIALOG:
/*Set the initial default values*/
{
CheckDlgButton(hDlg,IDC_MODBYTE, 1);
CheckDlgButton(hDlg,IDC_MODBIT, 0);
SetDlgItemText(hDlg,IDC_NOMEDIRECTORY, directorydaelaborare);
SetDlgItemText(hDlg,IDC_LIST, "Nessun file selezionato al momento");
m_ImageListThumb.Create(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, ILC_COLOR24, 0, 1);
m_pImageList = new CImageList();
m_pImageList->Create(32, 32, TRUE, 4, 4);
miaicona = LoadIcon(NULL, IDI_ERROR);
m_pImageList->Add(miaicona);
ilmiohandle = m_pImageList->GetSafeHandle();
SendMessage(h_Immaginiselezionate, TVM_SETIMAGELIST, (UINT)LVSIL_NORMAL, (LPARAM)ilmiohandle);
}
eccetera eccetera
la parte del file di risorse relativo al blocco trattato è riportata di seguito
BLOCCO DIALOG DISCARDABLE 0, 0, 475, 260
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
GROUPBOX "",IDC_VISUALIZZA,0,28,475,232
EDITTEXT IDC_NOMEDIRECTORY,10,6,275,12,ES_AUTOHSCROLL
GROUPBOX "Modalità trasferimento",IDC_MODALITA,389,0,86,28
DEFPUSHBUTTON "Execute",IDC_ESECUZIONEELABORAZIONE,423,234,45,24
CONTROL "Byte",IDC_MODBYTE,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,406,11,30,10
CONTROL "Bit",IDC_MODBIT,"Button",BS_AUTORADIOBUTTON,441,11,29,
10
DEFPUSHBUTTON "Seleziona directory",IDC_SELDIR,290,7,96,12
LISTBOX IDC_LIST,282,34,138,221,LBS_SORT | LBS_MULTIPLESEL |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
CONTROL "Tutte",IDC_TUTTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
429,41,36,10
CONTROL "List1",IDC_LIST1,"SysListView32",LVS_SHOWSELALWAYS |
LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,2,33,146,223
CONTROL "List2",IDC_LIST2,"SysListView32",WS_BORDER | WS_TABSTOP,
149,34,130,223
END
qualche parere sul perchè non funziona?
sparate anche molto basso xchè sono molto inesperto nell'utilizzare visual c++ ed in generale alla programmazione di windows.
grazie in anticipo per l'attenzione (more to come... :-) )