2tes Fenster???
-
WINAPI nooooobie schrieb:
Hmmm...Danke aber da steht nichts von neuem Fenster aufrufen??
Weist du wie es funkt??Es wäre sehr Hilfreich wenn du mir den Befehl sagen würdest...Wenn Du eine Fensterklasse neu erstellst (mit Ressourcen-Editor oder als Standard-Fenster), brauchst Du immer eine Callback-Funktion dazu. Die Befehle dazu sind CreateWindow, CreateWindowEx, CreateDialog oder DialogBox. Die letzten bei den nutzen intern auch die CreateWindowEx-Funktion.
Borland-Hilfe schrieb:
The CreateDialog macro creates a modeless dialog box from a dialog box
template resource. The CreateDialog macro uses the CreateDialogParam function.HWND CreateDialog(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpTemplate, // identifies dialog box template name
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc // pointer to dialog box procedure
);Parameters
hInstance
Identifies an instance of the module whose executable file contains the dialog box template.lpTemplate
Identifies the dialog box template. This parameter is either the pointer to a
null-terminated character string that specifies the name of the dialog box
template or an integer value that specifies the resource identifier of the
dialog box template. If the parameter specifies a resource identifier, its
high-order word must be zero and its low-order word must contain the identifier.
You can use the MAKEINTRESOURCE macro to create this value.hWndParent
Identifies the window that owns the dialog box.lpDialogFunc
Points to the dialog box procedure. For more information about the dialog box procedure, see DialogProc.Jeder Dialog und jeder Button ist nichts anderes als ein Fenster und wird auch so aufgerufen. Schau Dir die Window-Styles an.
-
Habe das jetzt so gemacht aber es funktioniert nicht!
Callback vom Neuen Fenster:
BOOL CALLBACK Test(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_INITDIALOG: { return TRUE; } } }case Testbutton: CreateDialog(hInstance,MAKEINTRESOURCE(IDD_TesDialog),hwnd,Test);Wieso das?
-
"funktioniert nicht" gibts hier nicht.
ohne präzisierung des fehlers gehts nicht.da fehlt zudem ein
return FALSE;
-
Naja ich klicke zwar auf den Button aber es erscheint kein neues Fenster...
-
Hoi,
1. Bist Du Dir sicher, dass Dein Button auch mit der symbolischen ID 'Testbutton' versehen ist?
2. Welchen Wert bzw. wie initialisierst/definierst Du 'hInstance'?
3. Deine Dialog-Funktion 'Test' ist falsch, siehe MSDN bzw. Hinweis von Xantus.
-
ZU:
- Ja bin mir sicher habe es nochmals kontrolliert!
- HINSTANCE hInstance;
3)hwndGoto = CreateDialog(hinst,
MAKEINTRESOURCE(DLG_GOTO),
hwnd, (DLGPROC) GoToProc);
ShowWindow(hwndGoto, SW_SHOW); ==>Habe es auch so probiert!Kommt aber trotzdem kein Fenster!
-
lol, also hat hInstance keinen definierten Anfangswert
- gute Arbeit^^, bzw. wieso definierst Du 'hInstance' und verwendest 'hinst'
...vllt. mal die etwas 'gründlicher' posten.
Lass den Cast "(DLGPROC)" weg. Wenn Du die Funktion richtig definiert hast, ist der Cast auch nicht nötig. Das verdeckt nur Fehler.Hast Du die Definition Deiner 'Test'-Funktion (oder mittlerweile wohl 'GoToProc'-Funktion) überarbeitet?
-
Doch hat es eh HINSTANCE hInstance=NULL;
Inwiefern überarbeitet?
-
WINAPI nooooobie schrieb:
Doch hat es eh HINSTANCE hInstance=NULL;
Na *das* hast Du in Deinem vorherigen Post aber nicht geschrieben. Außerdem brauchst Du ja den Handle des Moduls in dem die Resource liegt, meistens das aktuelle Modul (dann verwende zur Initialisierung einfach
GetModuleHandle(NULL)).WINAPI nooooobie schrieb:
Inwiefern überarbeitet?
Überarbeitet in so fern, dass das:
WINAPI nooooobie schrieb:
Callback vom Neuen Fenster:
BOOL CALLBACK Test(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_INITDIALOG: { return TRUE; } } }falsch ist.
-
Falls du das return FALSE meinst..
Habe ich bereits ausgebessert...
-
Aber er kommt noch immer kein Fenster..
-
Man check den Rückgabewert, check GETLASTERROR, GETLASTERROR
-
@T2.0
Sorry keiner wurde als Meister geboren...wenn du schon dann kannst es ja sicher auch zambringen das es läuft und hier posten...
-
Ich hab schon lange kein VC mehr installiert. Was sagt GETLASTERROR??????
-
Was ich nicht anz verstehe ist, dass die Callback Funktion Test funktioniert da ich versucht habe in dem WM_INITDIALOG: eine MessageBox auszugeben!Diese wird auch ausgegeben nur erscheint das Fenster nicht...MFG
-
WS_VISIBLE, ShowWindow, GetLastError, http://msdn2.microsoft.com/en-us/library/ms644996(VS.85).aspx
MfG,
T2.0
-
@T2.0
Ich hatte ja meinen Befehl schon gepostet...der Unterscheidet sich nciht von dem was in der MSDN steht...
-
Aber klaro, sonst würde es ja gehen, oder? Befolge meinen Rat und es wird gehen.
-
na ich will mal nicht so sein.
void ErrorMessage( PTCHAR lpErrorMsg ) { TCHAR szSysMsg[256], szMsg[1024]; DWORD dwEnum; dwEnum = GetLastError(); FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, dwEnum, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), szSysMsg, 256, 0 ); _sntprintf( szMsg, 1024, _T("%s(%d)"), szSysMsg, dwEnum ); MessageBox( NULL, szMsg, lpErrorMsg, MB_ICONERROR ); } ... ... if(!CreateDialog(blabla)) ErrorMessage("CreateDialog");
-
Tue ich ja gerne..
Was räts du mir??
Mit WS_Visible passiert iach nichts...