begin process at 2012 05 29 15:11:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

pb affichage ComboBox dans Dialog


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb affichage ComboBox dans Dialog

mercredi 15 mars 2006 à 04:48:56 | pb affichage ComboBox dans Dialog

Guillemouze

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


---- HANDLER DE LA FENETRE PRINCIPALE ----

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDM_DEVICEINFO:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_DEVICEINFO), hWnd, DeviceInfo);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    ...
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

---- HANDLER DU DIALOG EN QUESTION ----
INT_PTR CALLBACK DeviceInfo(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
    int wmId, wmEvent;
    HWND tmp;
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        m_nomadTools->initDialogDeviceInfo(hDlg);
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        switch(wmId)
        {
        case IDC_CB_DEVICE:
            //TODO:gerer le changement de device
            return (INT_PTR) TRUE;
         ...//traitement des autres elements
        case IDCANCEL:
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        default:
            return (INT_PTR) FALSE;
        }
    default:
        return (INT_PTR) FALSE;
    }
    return (INT_PTR) FALSE;
}

--- LA FONCTION m_nomadTools->initDialogDeviceInfo ----
    void initDialogDeviceInfo(HWND hDlg) {
        //init the device list
        HWND hCb = GetDlgItem(hDlg, IDC_CB_DEVICE);
        SendMessage(hCb, CB_RESETCONTENT, 0, 0);
        SendMessage(hCb,CB_ADDSTRING, 0, (LPARAM) "element 0");
        SendMessage(hCb,CB_ADDSTRING, 0, (LPARAM) "element 1");
        SendMessage(hCb,CB_SETCURSEL, 0, 0);
        LRESULT x = SendMessage(hCb,CB_GETCOUNT, 0, 0); //retoure bien 2
    }


Merci de vaotre aide :)
mercredi 15 mars 2006 à 11:04:48 | Re : pb affichage ComboBox dans Dialog

BruNews

Administrateur CodeS-SourceS
COMBOBOX IDC_CB_DEVICE,7,7,159,14,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
peut-etre ira mieux.

Dans la dialogProc les events de bouton devraient retourner 0.

ciao...
[ Lien ]
BruNews, MVP VC++
mercredi 15 mars 2006 à 14:50:37 | Re : pb affichage ComboBox dans Dialog

Guillemouze

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.
samedi 18 mars 2006 à 02:10:48 | Re : pb affichage ComboBox dans Dialog

Guillemouze

Réponse acceptée !
c bon j'ai trouve mon erreur :)
pour ceux que ca interesse l'erreur se trouve ici:

---- 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

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é)


Cette discussion est classée dans : case, hwnd, ws, wparam, idc


Répondre à ce message

Sujets en rapport avec ce message

Creer un controle standard API Win32 [ par Kazuya ] Bojour,Alors voila, j'essaie de me mettre aux API win32 et la j'ai un petit probleme, lorsque j'affiche un controle dans ma feuille principale, il sci CreateWindowEx [ par Galmiza ] Salut,J'ai fait une application en plein ecran en utilisant la fonction CreateWindowEx et directX. (pour l'instant j'ai desactivé les textures)L'appui Edit Control [ par cybermatthieu ] Bonjours,Je suis en Train d'apprendre comment progrmmer en Win32 avec la Class Windows.h. Ce petit programme ne fait q'afficher des caracter mais j'ai ChooseColor bloqué ? [ par NeKoF ] Salut tous le monde !J'ai un gros soucis ma boite de dialogJe vous explique :Dans ma boite de configuration, je souhaite sélectionner une couleur en c Savoir quand on clique sur un bouton [ par cyberlewis ] Slt à tous, Voilà j'ai un code que j'ai fait, et normalement si on cliques sur les boutons, ça lance la fonction Encode() ou Decode() en fonction du b Hep Hep Hep [ par Joky ] Salut les gens :pPtit Pb, me lancer pas de cailloux s'il vous plait ;)Bon me lance dans vc++ 6.0 win32jdéfinie tout mes controle de fenetreIDC_EDIT et Où passent mes tabulations... [ par Nebula ] Bonjour, En utilisant des richedits dans une fenêtre créée avec CreateWindowEx et dont les messages sont traités avec IsDialogMessage, je me suis ape probleme de menu [ par Stubbornman ] Bonsoir a tous,J'ai un soucis avec des menus. Je souhaite creer des fenetres filles qui ont chacune un menu. Or je n'arrive pas a afficher les menus d Win32 problème. [ par TeniX ] Salut, Voila j'ai crée de maniere simple une source qui exprime mon problème , je trouve pas la source du problème , enfaite quand les fenêtres sont l PROBLEME DE CHARGEMENT JPEG DANS UN ECRAN DE VEILLE [ par Batman60 ] bonjourclic droit sur l'exe et puis "tester" le prog fonctionne à merveille mais une fois installé à l'execution de l'ecran de veille les textures jpe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,706 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales