Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.09.2005, 18:19

Nachrichten mit Tab-Controls

Ich hab mir letzens ein Tutorial zu Tab-Controls durchgelesen und auch gleich ausprobiert. Alles hat gut geklappt aber wenn ich einen Button darauf erstelle, erhält mein Dialog keine Nachrichten.
Hier mal etwas Code:

C-/C++-Quelltext

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
#include "Resource.h"

const IDC_EDIT=2045;
const IDC_BUTTON=2046;
const IDC_TAB=2047;

HWND g_hEdit;
HWND g_hButton;
HWND hTab;

char g_acEditText[100]="Hallo";

BOOL CALLBACK DlgProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam)
{
    switch(msg)
    {
        case WM_INITDIALOG:
        {
            RECT r; GetClientRect(hDlg,&r);
            hTab = CreateWindowEx(WS_EX_CONTROLPARENT,WC_TABCONTROL,"", WS_CHILD| WS_VISIBLE|WS_BORDER|  
                   ES_LEFT, 0, 0, r.right, r.bottom, hDlg,(HMENU) IDC_TAB, 
                   GetModuleHandle(NULL), NULL);
            
            TCITEM tci1,tci2;
            tci1.mask = TCIF_TEXT;
            tci1.pszText = "Tab1";
            tci1.cchTextMax = strlen("Tab1") + 1;
            tci1.iImage = -1;
            tci1.lParam = 0;
            tci2.mask = TCIF_TEXT;
            tci2.pszText = "Tab2";
            tci2.cchTextMax = strlen("Tab2") + 1;
            tci2.iImage = -1;
            tci2.lParam = 0;
            TabCtrl_InsertItem(GetDlgItem(hDlg,IDC_TAB), 0, &tci1);
            TabCtrl_InsertItem(GetDlgItem(hDlg,IDC_TAB), 1, &tci2);
            g_hEdit=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT",g_acEditText,WS_CHILD | WS_VISIBLE,50,50,50,50,
                            GetDlgItem(hDlg,IDC_TAB),(HMENU)IDC_EDIT,GetModuleHandle(NULL),NULL);
            g_hButton=CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON",g_acEditText,WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,50,80,50,50,
                            GetDlgItem(hDlg,IDC_TAB),(HMENU)IDC_BUTTON,GetModuleHandle(NULL),NULL);
        } break;

        case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
                case IDC_BUTTON:
                    MessageBox(NULL,NULL,NULL,NULL);
                    break;
            }
        } break;    
        
        case WM_NOTIFY:
        {
            LPNMHDR hdr = (LPNMHDR)lParam;
            if (hdr->code==TCN_SELCHANGE)
            {
                char Text[5];
                if (SendDlgItemMessage(hDlg,IDC_TAB,TCM_GETCURSEL,0,0)==0)
                {
                    g_hEdit=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT",g_acEditText,WS_CHILD | WS_VISIBLE,50,50,50,50,
                            GetDlgItem(hDlg,IDC_TAB),(HMENU)IDC_EDIT,GetModuleHandle(NULL),NULL);
                }
                else
                {
                    (g_hEdit,g_acEditText,100);
                    GetDlgItemText(GetDlgItem(hDlg,IDC_TAB),IDC_EDIT,g_acEditText,100);
                    DestroyWindow(g_hEdit);
                }
            }
        } break;
        
        case WM_CLOSE:
            EndDialog(hDlg,0);
            break;

        default:
            return FALSE;
    }

    return TRUE;
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int)
{
    InitCommonControls();
    
    DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG),NULL,DlgProc);

    return 0;
}
Mein Projekt: Rise of the Sylvan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

12.09.2005, 19:03

INITCOMMONCONTROLSEX controlstruc;
controlstruc.dwSize=sizeof(INITCOMMONCONTROLSEX);
controlstruc.dwICC=ICC_INTERNET_CLASSES | ICC_TAB_CLASSES;
// Create the tab control.
InitCommonControlsEx(&controlstruc);
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

12.09.2005, 22:02

Das ändert aber nichts.
Mein Projekt: Rise of the Sylvan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

12.09.2005, 22:08

nutz mal den Spy++ und schau dir mal die WM_NOTIFY msgs an
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

5

12.09.2005, 22:23

Kann man mit WM_NOTIFY auch testen, ob man einen Button gedrückt hat? Ich dachte, damit kann man nur in Erfahrung bringen, ob die Tab-Seite gewechselt wurde.
Mein Projekt: Rise of the Sylvan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

12.09.2005, 22:41

die tabs sind nur buttons...

P.S: so geht es jedenfalls www.codevortex.de/test.cpp
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

7

12.09.2005, 22:47

Aber angenommen ich hab außer Edits noch einen Pushbutton drauf und drück den, dann muss ja etwas passieren.
Mein Projekt: Rise of the Sylvan

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

12.09.2005, 23:10

schau dir einfach die cpp an
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

9

13.09.2005, 16:14

thx, Nox.
Mein Projekt: Rise of the Sylvan

Werbeanzeige