Pb de CreateWindowEx

graall Messages postés 27 Date d'inscription mercredi 4 août 2004 Statut Membre Dernière intervention 2 novembre 2005 - 18 déc. 2004 à 15:19
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 - 18 déc. 2004 à 16:18
Bonjour,

j'ai un pb dans une API :
//---------------------------------------
//  dans le fichier mainlib.hpp :
//---------------------------------------
#ifndef _MAINLIB_HPP_
#define _MAINLIB_HPP_

#define ID_EDIT_TITLE 100
#define ID_EDIT_TEXT 101

#include <windows.h>

#endif // _MAINLIB_HPP_

//---------------------------------------
// dans le fichier main.cpp :
//---------------------------------------
#include "mainlib.hpp"

const char WinClassName[] = "className";
HINSTANCE hMainInstance;
LRESULT CALLBACK WinProc (HWND,UINT,WPARAM,LPARAM);

HWND hWindow;
HWND hEdit_title;
HWND hEdit_text;

const HBRUSH hBackground = CreateSolidBrush(RGB(176,190,243));// bleu clair

int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE PrevInstance,LPSTR CmdLine, int CmdShow)
{
    MSG message;
    WNDCLASSEX wc;
    
    hMainInstance = hInstance;
    
    wc.hInstance = hMainInstance;
    wc.lpszClassName = WinClassName;
    wc.lpfnWndProc = WinProc;
    wc.style = CS_DBLCLKS;
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
    wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.lpszMenuName = NULL;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hbrBackground = hBackground;
    
    if(!RegisterClassEx(&wc))
        return 0;
    
    hWindow = CreateWindowEx(0,// création de la fenêtre
                             WinClassName,
                             "Post-it",
                             WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
                             280,
                             130,
                             430,
                             450,
                             HWND_DESKTOP,
                             NULL,
                             hMainInstance,
                             NULL);
                             
    hEdit_title = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,// création du cadre de texte du titre
                                 "EDIT",
                                 "Titre",
                                 WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL,
                                 10,
                                 40,
                                 400,
                                 25,
                                 hWindow,
                                 (HMENU)ID_EDIT_TITLE,
                                 hMainInstance,
                                 NULL);
    SendMessage(hEdit_title, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));// changement de la police
    
    hEdit_text = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,// création du cadre de texte du titre
                                 "EDIT",
                                 "Titre",
                                 WS_VISIBLE|WS_CHILD|ES_AUTOHSCROLL|ES_NOHIDESEL|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN|ES_LEFT|WS_VSCROLL|WS_HSCROLL,
                                 10,
                                 40,
                                 400,
                                 25,
                                 hWindow,
                                 (HMENU)ID_EDIT_TEXT,
                                 hMainInstance,
                                 NULL);
    SendMessage(hEdit_text, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0));// changement de la police
    
    ShowWindow(hWindow,SW_SHOW);
    
    while (GetMessage(&message,NULL,0,0))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return message.wParam;
}
//------------------------------------------------------------------------------

LRESULT CALLBACK WinProc (HWND Window_handle,UINT msg,WPARAM wParam,LPARAM lParam)
{
    switch (msg)
    {
        case WM_DESTROY :
            PostQuitMessage (0);
            break;
            
        case WM_COMMAND :
            break;
            
        default :
            return DefWindowProc (Window_handle,msg,wParam,lParam);
    }
}

normalement, la fenetre devrait s'afficher avec 2 Edit mais les 2 Edit ne saffichent pas...

merci d'avance!
A voir également:

1 réponse

cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
18 déc. 2004 à 16:18
Bonjour,

Les coordonnées de tes deux edits sont identiques donc ils s'affichent l'un sur l'autre...
Dans le second edit tu mets des scrollbars verticales et horizontales mais les dimensions de ton edit sont petites donc on ne voit que les scrollbars...
Sinon, chez moi, je compile bien et les edits s'affichent (bien en faisant quelques modifs sur la taille et la position des edits).
Il me semble que la création des contrôles se fait dans le WM_CREATE de la WindowProc.

Bonne journée,

Matt...
0
Rejoignez-nous