Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
15 mars 2006 à 04:48
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
18 mars 2006 à 02:10
Salut tout le monde,
j'ai un souci d'affichage de mon combo dans un dialog. Quand je click sur la fleche pour afficher la liste, il ne m'affiche rien!
Pour resumer mon prog, j'appele le dialog par
DialogBox(hInst, MAKEINTRESOURCE(IDD_DEVICEINFO), hWnd, DeviceInfo);
La methode DeviceInfo contient la gestion des evenements, du genre
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch(wmId)
{
case IDC_CB_DEVICE:
.....
et j'ajoute bien les elements au combo. Les elements sont bien presents parcequ'en envoyant un message pour selectionner le premier element, il me l'affiche bien.
Je pense qu'il faut que je fasse un truc du genre DefDialogProc(...) ou DefWindowProc(...), mais je sais pas trop comment my prendre.
Voici la partie interessante de mon code:
---- FICHIER RC ----
IDD_DEVICEINFO DIALOGEX 0, 0, 173, 103
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_STATICEDGE
CAPTION "Device Informations"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
COMBOBOX IDC_CB_DEVICE,7,7,159,14,CBS_DROPDOWN | CBS_SORT /*| CBS_HASSTRINGS*/ | WS_VSCROLL | WS_TABSTOP
LTEXT "Propriétaire",IDC_STATIC,7,30,37,8
CONTROL "",IDC_PB_BATTERY,"msctls_progress32",WS_BORDER,54,86,110,10
CONTROL "",IDC_DT_TIME,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_UPDOWN | DTS_APPCANPARSE | WS_TABSTOP | 0x8,116,46,50,13
CONTROL "",IDC_PB_VOLUME,"msctls_progress32",WS_BORDER,54,68,110,10
LTEXT "Volume",IDC_STATIC,7,68,37,8
LTEXT "Batterie",IDC_STATIC,7,86,37,8
LTEXT "Date",IDC_STATIC,7,49,37,8
EDITTEXT IDC_EDIT_OWNER,54,29,112,12,ES_AUTOHSCROLL | NOT WS_BORDER
CONTROL "",IDC_DT_DATE,"SysDateTimePick32",DTS_RIGHTALIGN | WS_TABSTOP,54,47,58,12
END
CONTROL "",IDC_DT_TIME,"SysDateTimePick32",DTS_RIGHTALIGN |
DTS_UPDOWN | DTS_APPCANPARSE | WS_TABSTOP | 0x8,116,46,50,13
CONTROL "",IDC_PB_VOLUME,"msctls_progress32",WS_BORDER,54,68,110,10
LTEXT "Volume",IDC_STATIC,7,68,37,8
LTEXT "Batterie",IDC_STATIC,7,86,37,8
LTEXT "Date",IDC_STATIC,7,49,37,8
EDITTEXT IDC_EDIT_OWNER,54,29,112,12,ES_AUTOHSCROLL | NOT WS_BORDER
CONTROL "",IDC_DT_DATE,"SysDateTimePick32",DTS_RIGHTALIGN | WS_TABSTOP,54,47,58,12
END
qu'il faut remplacer par
COMBOBOX IDC_CB_DEVICE,7,7,159,200,CBS_DROPDOWN | CBS_SORT /*| CBS_HASSTRINGS*/ |
en fait ce que je ne savais pas c'est que quand on créé un combobox avec l'editeur graphique, il faut faire le rectangle de selection qui contient la taille du combo complet (ie. la taille du combo déroulé)
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 15 mars 2006 à 14:50
nan le pb vien pas de la. j'ai aussi essayer de retourner FALSE mais ca change rien.
en fait, dans ma fenetre principale, g une combo aussi que j'ai declare comme ca:
hCombo = CreateWindowEx(WS_EX_CLIENTEDGE , WC_COMBOBOX, "", WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST , 10, 30, 200, 50, hWnd, NULL, hInst, NULL);
et la liste s'affiche bien quand je click dessus (meme vide ca m'affiche une liste vide). Mais la fenetre principale n'est pas un dialog, et je me demande si ca vien pas de la, parce que le handler de la fenetre contient des DefWindowProc(), et je n'ai pas créé de "case" pour ce combo.
Dans mon dialog, quand je click sur le combo, la liste ne saffiche pas, j'ai l'impression qu'il faut que je renvoie le message d'affichage.
j'ai essayer de mettre un messagebox pour l'evenement CBN_DROPDOWN dans le handler du dialog, et il m'affiche bien le messagebox.