Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » TabControl erstellen in Visual C ohne MFC

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.08.2004, 12:22 Uhr
~hardixy
Gast


Hi, habe nach ewigem Suchen ein kleines Hilfsskript gefunden, welches die Implementierung von TabControls ohne MFC unter Visual C erklärt.
Habe dieses versucht nachzubauen, jedoch bekomme ich keine Karteikarten auf meinem Screen angezeigt. Bitte um schnelle Hilfe, ist sicher nur ein kleiner dummer Fehler meinerseits. Der Inhalt der Karteikarten ist mir im Augenblick egal, hauptsache ich kann überhaupt erstmal was sehen im Fenster.

So nun ran ans Werk ihr großen Helferlein.
Bitte beeilt euch!!!!
Schöne Grüße. hardixy

Hier mein Programm:

C++:
#include <windows.h>
#include <commctrl.h>

#define ID_TAB 5001
#define ID_ABSREL 5002
#define ID_LINE 5003

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK GoToProc(HWND, UINT, WPARAM, LPARAM);
void MySizeDialog(HWND, HWND);

const char szChildName[] = "Farbtabelle";
const UINT PM_COLORCHANGED = WM_APP + 1;
int iLine;             // receives line number  
BOOL fRelative;        // receives check box status
HWND          htab;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{
   MSG        msg;
   HWND       hWnd;
   WNDCLASS   wc;
  
   char       szAppName[] = "Das Child Window";
  
   wc.cbClsExtra          = 0;
   wc.cbWndExtra          = 0;
   wc.hbrBackground       = (HBRUSH) GetStockObject(WHITE_BRUSH);
   wc.hCursor             = LoadCursor(NULL, IDC_ARROW);
   wc.hIcon               = LoadIcon(NULL, IDI_APPLICATION);
   wc.hInstance           = hInstance;
   wc.lpfnWndProc         = WndProc;
   wc.lpszClassName       = szAppName;
   wc.lpszMenuName        = NULL;
   wc.style               = CS_HREDRAW | CS_VREDRAW;
  
   RegisterClass(&wc);
  
   hWnd = CreateWindow(   szAppName,
                          szAppName,
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          NULL,
                          NULL,
                          hInstance,
                          NULL);

   ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);

   while (GetMessage(&msg, NULL, 0, 0))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   static RECT    rect;
   HWND          hdlg;
  
   switch (message)
   {
   case WM_CREATE:
      {
         GetClientRect(hWnd, &rect);
         htab = CreateWindow(WC_TABCONTROL,"", WS_CHILD| WS_VISIBLE|WS_BORDER|  
                   ES_LEFT, 0, 0, rect.right, rect.bottom, hWnd,(HMENU) ID_TAB,
                   ((LPCREATESTRUCT) lParam)->hInstance, NULL);

    TC_ITEM item;
    // to use an image set this to TCIF_IMAGE  
    item.mask= TCIF_TEXT;
    // index into tabs image list, set to -1 when not in use
    item.iImage = -1;
    item.pszText ="Tab 1";
    TabCtrl_InsertItem(htab, 0,&item);
    item.pszText ="Tab 2";
    TabCtrl_InsertItem(htab, 1, &item);

         return 0;
      }
   case WM_SIZE:
      {
           MySizeDialog(hWnd, hdlg);        
           return 0;
      }

   case WM_DESTROY:
      {
         PostQuitMessage(0);
         return 0;
      }

   case WM_NOTIFY:
      {
        NMHDR FAR *tem=(NMHDR FAR *)lParam;
        if (tem->code== TCN_SELCHANGE)
        {
            int num=TabCtrl_GetCurSel(tem->hwndFrom);
            switch(num)
            {
            case 0:
              hdlg = CreateDialog(((LPCREATESTRUCT) lParam)
                                                  ->hInstance, "Dialog1", htab, GoToProc);
              MySizeDialog(hWnd, hdlg);
              break;
            case 1:
              hdlg = CreateDialog(((LPCREATESTRUCT) lParam)
                                                 ->hInstance, "Dialog2", htab, GoToProc);
              MySizeDialog(hWnd, hdlg);
              break;
            }
        }
      }
   }
  
   return DefWindowProc(hWnd, message, wParam, lParam);
}

void MySizeDialog(HWND hwnd, HWND hdlg)
{
    static RECT    rect;    
    GetClientRect(hwnd, &rect);
    TabCtrl_AdjustRect(htab, FALSE, &rect);
    MoveWindow(hdlg, rect.left, rect.top, rect.right-rect. left,
                               rect.bottom- rect.top, TRUE);
    ShowWindow(htab, true);
    ShowWindow(hwnd, true);
}

BOOL CALLBACK GoToProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    BOOL fError;

    switch (message) {
        case WM_INITDIALOG:
            CheckDlgButton(hwndDlg, ID_ABSREL, fRelative);
            return TRUE;

        case WM_COMMAND:
            switch (LOWORD(wParam)) {

                case IDOK:
                    fRelative = IsDlgButtonChecked(hwndDlg, ID_ABSREL);
                    iLine = GetDlgItemInt(hwndDlg, ID_LINE, &fError, fRelative);
                    if (fError) {
                        //MessageBox(hwndDlg, SZINVALIDNUMBER, SZGOTOERR, MB_OK);
                        SendDlgItemMessage(hwndDlg, ID_LINE, EM_SETSEL, 0, -1L);

                    } else
  
                    return TRUE;

                case IDCANCEL:
                    DestroyWindow(hwndDlg);
                    //hwndGoto = NULL;
                    return TRUE;
            }
    }
    return FALSE;
}




Bearbeitung:
cpp Tags gesetzt

Dieser Post wurde am 25.08.2004 um 12:30 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.08.2004, 12:28 Uhr
~hardixy
Gast


Hier noch der Link für die Anleitung, die ich versucht habe, nachzubauen.

www.xploiter.com/programming/c/borland/2972.html

im oberen Drittel unter Überschrift Tab Control
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.08.2004, 12:28 Uhr
mike
Pinguinhüpfer
(Operator)



--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: