begin process at 2012 05 28 12:55:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

System

 > 

[API win32 sans MFC] Création textbox et evenement bouton


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

[API win32 sans MFC] Création textbox et evenement bouton

mardi 16 mai 2006 à 14:38:25 | [API win32 sans MFC] Création textbox et evenement bouton

nitrique

Bonjour,

Je fais un petit soft pour windows CE (embedded) et je découvre en même temps le C++.
J'aimerais comprendre le fonctionnement de base pour créer des composants (textbox et bouton).

Je me sert de CreateWindow (est-ce la bonne solution ?).
hEdit = CreateWindow(_T("EDIT"),_T("Texte"),WS_VISIBLE|WS_CHILD|ES_MULTILINE|ES_WANTRETURN|WS_VSCROLL,0,0,150,100,hWnd,NULL,hInst,NULL);
(hEdit est déclaré à la racine de la classe)
Seulement ça ne marche que si il est dans le WM_PAINT... Ca me semble étrange de le créer à chaque fois !
En toute logique, il faut le créer une fois dans le WM_CREATE et le redessiner dans le WM_PAINT mais ça ne marche pas...

J'ai retourné le Web mais pas moyen de trouver des exemples pour cette chose qui a l'air si simple !

Quelqu'un peut-il m'éclairer ?

Merci d'avance.

[;)] David, à VERSAILLES
[ Lien ]

mardi 16 mai 2006 à 14:52:49 | Re : [API win32 sans MFC] Création textbox et evenement bouton

mogwai93

pour creer un textbox ou edit ou tout autre fenetre
--> CreateWindow
ou
--> utiliser les ressources

et il faut bien le creer dans le WM_CREATE
le WM_PAINT de le dessine pas


voici un exemple qui fonctionne sous windows "tout court" donc ca devrait fonctionner pour windows CE (embedded) à qques parametres près
---------------

#include <windows.h>

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
HINSTANCE hInst;

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    hInst = hThisInstance;
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND hEdit;

    switch (message)                  /* handle the messages */
    {
        case WM_CREATE:
hEdit = CreateWindow("EDIT","Texte",WS_VISIBLE|WS_CHILD|ES_MULTILINE|ES_WANTRETURN|WS_VSCROLL,0,0,150,100,hwnd,NULL,hInst,NULL);

            break;

        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

 

mardi 16 mai 2006 à 15:18:15 | Re : [API win32 sans MFC] Création textbox et evenement bouton

nitrique

Bonjour Mogwai93,
Merci de ta rapidité !

En effet, ça marche... Je ne sais pas ce qu'il s'est passé quand j'avais essayé avant !
J'aimerais aussi savoir comment créer un bouton qui, quand on clique dessus, change le texte du texteBox !

Avec ces bases, je pourrais comprendre le fonctionnement de C++ et aller plus loin de moi même.

[;)] David, à VERSAILLES
[ Lien ]
mardi 16 mai 2006 à 19:52:48 | Re : [API win32 sans MFC] Création textbox et evenement bouton

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
case WM_COMMAND:
switch(wParam) {
  case idTonBouton:
    SetWindowText(hedit, "Mon texte");
    return 0;
  case autreID:
    etc....
}
......

ciao...
BruNews, MVP VC++
mercredi 17 mai 2006 à 11:07:58 | Re : [API win32 sans MFC] Création textbox et evenement bouton

nitrique

Impeccable, merci pour tout BruNews

[;)] David, à VERSAILLES
[ Lien ]
mercredi 17 mai 2006 à 11:19:41 | Re : [API win32 sans MFC] Création textbox et evenement bouton

nitrique

Heu...

Juste comme ça... Comment on ajoute du texte ?
J'ai bien essayé: SendMessage(hEdit,CB_ADDSTRING,0,(LPARAM)(LPCTSTR)_T("Entree"));
Mais il me semble que c'est pour une comboBox...

[;)] David, à VERSAILLES
[ Lien ]
mercredi 17 mai 2006 à 17:31:34 | Re : [API win32 sans MFC] Création textbox et evenement bouton

BruNews

Administrateur CodeS-SourceS
ben oui, CB_xxxx est message combo.

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : bouton, textbox, créer, wm, ws


Répondre à ce message

Sujets en rapport avec ce message

plus de precisions pour la communication multiple stp !!! [ par Xs ] salut !bon, recement, j'ai posté un msg demandant comment faire plusieurs boites de dialog(cf : plusieurs dialogs [API])bon, comme dit, ca marche.mais Créer un bouton [ par kazimir34 ] Bonsoir,Je suis en train de faire une application win32, et j'aimerais bien que dès que je fais un clic gauche, un bouton soit créé a l'emplacement de redessiner un bouton après appui [ par tdeco ] SalutEn fait j'ai une boite de dialogue où j'ai plusieurs boutons. Sur j'appui d'un bouton, je modifie une variable, puis j'envoie un message WM_DRAWI Custom draw sur bouton [ par youpiyoyo ] J'aimerai "customizer" un bouton ki contient une image.En faite j'aimerai k'il ne m'affiche pas les bordures de celui-ci.je suppose ke c le meme princ créer une listview dynamiquement avec plusieurs colonnes [ par romydamour ] salut à tous,voilà, si je vous montre ce petit bou Problème textbox + Helppp [ par emmanuel9 ] Bonjour à tous, En faite mon problème est que je voudrais empecher le copier coller dans un textbox on m'a conseillé ce code en c# dans le composant Redessiner un bouton WM_DRAWITEM: [ par timy94 ] Bonjour.J'utilise WM_DRAWITEM pour redessiner mes boutons (boutons créer par CreateWindow(....).Premier problème : Quand je fais marcher mon programme Prb touche TAB sur controls dans window créer par createwindowex [ par Elffin ] Bonjour,la touche TAB pour passer d'un contrôle à un autre (edit, button etc..) ne fonctionne pas sur une window  et des contrôles que j'ai créer avec bouton 2 etats [ par mcallan ] Bonjour,Comment faites t on ?Sous windows en API WIN32 , on peut ajouter un bouton dans une fenetre CreateWindow("button", ..., WS_CHILD|WS_VISIBLE|BS Bouton, TextBox, PictureBox ca existe? [ par wilvart ] Bonjour je débute en C++ en ayant quelque base en VB6 et aprés avoir lu et compris les bases du C++ je voudrais savoir s'il existe un programme simila


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 1,763 sec (3)

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