Dialog bei Programmstart

soeni1987

Mitglied
Ich habe folgendes etwas komplexes Problem:

folgende Dateien gehören zu meinem Projekt:

main.cpp // beinhaltet die Winmain und die Nachrichtenschleife
resource.h // für die definitionen der Konstanden im Dialog
dialog.rc // für die dialoge
init.cpp // enthält methoden der klasse init
headerd.h //definition der klasse init sowie headerdateien.

nun möchte ich vor dem anzeigen des fensters die methode login der klasse init aufrufen, welches auch wunderbar funktioniert. nur kann diese nichts ausgeben hab ich den eindruck. ich hab die methode vor ShowWindow() aufgerufen und diese sollte true oder false zurückliefern, bei true soll alles weiter laufen, bei false soll das programm beendet werden. das funktioniert auch soweit.

nun wollte ich einen dialog starten (in der methode login()) der ein passwort abfragt usw. leider ist dieser dialog nicht zu sehen. ich dachte ich hätte einen fehler in meinem dialog und hab es erstmal nur ums zu testen mit MessageBox() versucht aber auch die war nicht zu sehen, was mach ich falsch? wie bekomme ich mein logindialog hin?

hier erstmal die datei main.cpp, init.cpp und headers.h

Code:
//´main.cpp

#include "headers.h"

/*  Declare Windows procedure  */
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

HINSTANCE hInstance_loc;

/*  Make the class name into a global variable  */
char szAppName[ ] = "Vereinsmanager 2.0.0";

int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    PSTR szCmdLine,
                    int iCmdShow)

   {         
          hInstance_loc = hInstance;                    
       HWND hwnd;                                                               /* Fensterhandel */
       MSG msg;                                                                 /* Die MSG */
       WNDCLASS wndclass;                                                       /* Windowclass */

       /* Die Windowsstruktur */
       wndclass.style = CS_HREDRAW | CS_VREDRAW;                                /* Bei größenänderung neuzeichenen */
       wndclass.lpfnWndProc = WndProc;       			                        /* Windowsprozedur initialisieren */
       wndclass.cbClsExtra = 0;                      		
       wndclass.cbWndExtra = 0;                      		
       wndclass.hInstance = hInstance;
       wndclass.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_ICON));// statusleisten und andere Programmicons laden 
       wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);				            // Cursor laden
       wndclass.hbrBackground = (HBRUSH)CreateSolidBrush(RGB( 236, 233,  216));			            // Hintergrund laden
       wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);               	    // Menü laden                  
       wndclass.lpszClassName = szAppName;
    


          if (!RegisterClass (&wndclass)){
              MessageBox(NULL, TEXT("Programm arbeitet mit UNICODE UND LÄUFT ERST AB WINDOWS NT/2000"),szAppName,MB_ICONERROR); // Fehler ausgeben
              return 0;
          }
          

        
        
          /* Das Fenster definieren*/

          hwnd = CreateWindow (szAppName,         	                            /* Classname */
                              szAppName,       		                            /* Title Text */
                              WS_OVERLAPPEDWINDOW, 	                            /* Zusatzeinstellungen */
                              0,       			                                /* Position bei Start x */
                              0,      			                                /* Position bei Start y */
                              1000,//1250,                 	                    /* Breite */
                              730,//765,                 	                    /* höhe */
                              NULL,        		                                /* child vom Desktop */
                              NULL,                	                            /* No menu */
           		      hInstance,       		                                    /* Program Instance handler */
           		      NULL                 	                                    /* No Window Creation data */
           		      );

     	  /* Fenster anzeigen */
          ShowWindow (hwnd, iCmdShow);
          UpdateWindow (hwnd);

          /* Nachrichtenschleife */
          while (GetMessage (&msg, NULL, 0, 0))
                {
                 /* Nachrichten übersetzen */
                 TranslateMessage(&msg);
                 /* Nachricht and Prozedur senden */
        	 DispatchMessage(&msg);
                }

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


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

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_CREATE:
            
          MessageBox(hwnd, "","",0);  
          init log;
          
          if(!log.login(hInstance_loc)){
              return 0;                   
          }
            
            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;
}


Code:
//init.cpp
#include "headers.h"


   
      bool init::login(HINSTANCE hInstance)
           {
           MessageBox(GetDesktopWindow(), "test", "test",0);
           return true;
           };

Code:
//headers.h

#include <windows.h>

#include <errno.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <commctrl.h>
#include <algorithm>
#include <time.h>
#include <math.h>
#include <shlobj.h>

#include "resource.h"

class init {
      public:
      bool login(HINSTANCE hInstance);
      };
 
Zurück