Bonjour
Voila mon problème: J'ai créé une fenêtre et dans cette fenêtre j'ai une boite de dialogue avec le style WS_CHILD. Tous mes contrôles de cette boite de dialogue marchent très bien (bouton, combo box...) sauf les Editbox qui ne sont plus éditable...
Avec le style WS_OVERLAPPED, tous va très bien, je peux écrire dans mes édits box mais pas avec le style child.!
Je dois avoir le style child, comment dois-je procéder?

Voila le bout de code que j'utilise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <windows.h>
HINSTANCE hInst;
BOOL APIENTRY DlgProcDialog(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_COMMAND:
        switch(LOWORD(wParam))
        {
        case IDOK:    EndDialog(hDlg,1);break;
        case IDCANCEL:EndDialog(hDlg,0);break;
        }
    }
    return 0;
}

LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_CREATE:
        CreateDialog(hInst, "IDD_DIALOG" ,hwnd, (DLGPROC)DlgProcDialog);
        break;
    case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
    HWND hwnd;
    MSG msg;
    WNDCLASS wc;
    hInst = hinstance;
    wc.style = 0;
    wc.lpfnWndProc = MainWndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hinstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
    wc.lpszMenuName =  NULL;
    wc.lpszClassName = "MyWinClass";

    if(!RegisterClass(&wc)) return FALSE;

    hwnd = CreateWindow("MyWinClass", "Test", WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT, CW_USEDEFAULT, 400, 400,NULL, NULL, hinstance, NULL);
    if (!hwnd) return FALSE;

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}

//RESSOURCE
IDD_DIALOG DIALOGEX 20, 20, 186, 94
STYLE WS_CHILD|WS_VISIBLE|WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14
    PUSHBUTTON      "Annuler",IDCANCEL,129,24,50,14
    EDITTEXT        ID_EDIT1,10,10,50,14
END
J'ai fait le même test en créant une fenêtre (WS_CHILD" et "WS_CAPTION") et non une boite de dialogue. J'obtiens le même résultat.

Merci