|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
[VC++] ComboBox
Ciao, ho un problema con il VC++ e una combobox.
Quando la popolo con: Codice:
SendMessage(GetDlgItem(hwnd, IDC_CB_PERCORSO), CB_ADDSTRING, 0, (LPARAM)(LPSTR)percorso); Cosa sbaglio ? Ho toccato un pò tutte le sue proprietà ma non cambia nulla.
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
Ma non posso!!
è dimensionabile solo verso SX o DX....
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO Ultima modifica di Spike79 : 19-06-2006 alle 12:38. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
Azz...mi sento scemo...
...ti ringrazio TANTISSIMO!
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
Riprendo questo mio thread per un'altra domandina....come posso modificare DA CODICE (a runtime, dipenderà da una variabile), la tipologia del Combo da SEMPLICE a DROPDOWN (non voglio che l'utente immetta testo, ma possa solo selezionare una voce dall'elenco)....e se esiste un altro modo, fatemelo sapere!
Grazie ancora
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
La cosa però si potrebbe risolvere con qualche artificio in uno di questi modi: a) Creare 2 ComboBox con la stessa dimensione/posizione ma di tipologia diversa. Quando ne serve una, la si visualizza e si nasconde l'altra. b) Distruggere la ComboBox e poi "al volo" ricrearne una nuova nella stessa posizione/dimensione con un diverso stile.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
uhm...se semplicemente la disabilito, diventa grigia, non scrivibile (e qui sarebbe ok), ma sparisce anche il bottone per la tendina....secondo te è fattibile 'bloccarla' e basta ?
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Una ComboBox è composta da più parti, una finestra di edit e una listbox. Mi sono ricordato che c'è un messaggio CB_GETCOMBOBOXINFO (e anche la funzione GetComboBoxInfo) che consente di ottenere una struttura dove, tra i vari campi, c'è l'handle della finestra di edit. Ho provato a fare così: Codice:
COMBOBOXINFO cbi;
cbi.cbSize = sizeof (COMBOBOXINFO);
if (GetComboBoxInfo (GetDlgItem (hDlg, IDC_COMBO1), &cbi))
{
SendMessage (cbi.hwndItem, EM_SETREADONLY, TRUE, 0);
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
La compilazione si incastra su
COMBOBOXINFO cbi; dicendo "Undeclared identifier" Praticamente non riconosce COMBOBOXINFO come tipo....
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Nota che per la funzione GetComboBoxInfo: Minimum operating systems: Windows 98, Windows NT 4.0 with Service Pack 6
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
Allora, avevo infatti notato sta cosa, ho aggiunto winuser.h ma non cambia, e non so perchè....sto usando VC++ 6, con un mega programmone in C.
Purtroppo non sono esperto in C, conosco il VB abbastanza bene, ma il C è da poco che lo sto usando.... se invece aggiungo la definizione: Codice:
typedef struct tagCOMBOBOXINFO {
DWORD cbSize;
RECT rcItem;
RECT rcButton;
DWORD stateButton;
HWND hwndCombo;
HWND hwndItem;
HWND hwndList;
} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
Ho letto su MSDN che funziona uguale al message CB_GETCOMBOBOXINFO, ma se uso: Codice:
SendMessage(GetDlgItem(hwnd, IDC_CB_PERCORSO), CB_GETCOMBOBOXINFO , 0, (LPARAM)(COMBOBOXINFO*)pcbi) allora ho aggiunto anche Codice:
BOOL
WINAPI
GetComboBoxInfo(
HWND hwndCombo,
PCOMBOBOXINFO pcbi
);
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO Ultima modifica di Spike79 : 21-06-2006 alle 13:57. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Io sto usando il VC++.net 2003 che è la versione successiva al VC++ 6 e ho il PSDK aggiornato che contiene la funzione, la struttura e il messaggio. Non saprei dirti a che aggiornamento è il PSDK sul VC++ 6.
Comunque, se ti può servire: Codice:
#define CB_GETCOMBOBOXINFO 0x0164
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
Ho aggiunto le definizioni che ho trovato in Winuser.h e ....
FUNZIONA PERFETTAMENTE!!!!!!!!!!!!! Sei un grande, non so come ringraziarti!
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#15 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
Sinceramente non so perchè includendo il Winuser non funzionasse...cmq così va e mi sta benissimo.
C'è un'ultima cosa, poi non ti stresso più, giuro, quello scassa maroni del mio collega mi fa "ma ora il combo è grigio! non si può lasciarlo bianco?" secondo te è fattibile ? si può impostare il background 'a default' come quello dei combo non bloccati in scrittura ? oppure cavo gli occhi al collega così non vede il combo grigio....
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ci provo un attimo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ok ... non è proprio così palloso, comunque ...
1) Metti una variabile globale (hai solo 1 ComboBox in 1 sola dialog, vero?): Codice:
WNDPROC g_WndProcCombo; Codice:
LRESULT CALLBACK Combo_WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_CTLCOLORSTATIC)
return (LRESULT) GetSysColorBrush (COLOR_WINDOW);
return CallWindowProc (g_WndProcCombo, hWnd, uMsg, wParam, lParam);
}
Codice:
HWND hWndCombo; hWndCombo = GetDlgItem (hDlg, IDC_COMBO1); g_WndProcCombo = (WNDPROC) SetWindowLongPtr (hWndCombo, GWL_WNDPROC, (LONG_PTR) Combo_WndProc); Codice:
HWND hWndCombo; hWndCombo = GetDlgItem (hDlg, IDC_COMBO1); SetWindowLongPtr (hWndCombo, GWL_WNDPROC, (LONG_PTR) g_WndProcCombo);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Provincia di Monza e Brianza
Messaggi: 6272
|
Troppo gentile....ma la 2) dove la devo inserire ?
(scusa la niubbaggine, me ne vergogno profondamente
__________________
AMD Ryzen 5 7600X - Dissipatore Thermalright Assassin King 120SE - RAM Kingston Fury Beast 2x16Gb DDR5 CL30 @ 6000 - Motherboard ASROCK B650 Pro RS - NVME Kingston KC3000 2Tb - PSU FSP Hydro PRO 600w - Win 11 PRO |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quindi conviene metterla prima di questi 2 punti.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:53.











...ti ringrazio TANTISSIMO!








