Probleem Met CreateDialog()

Status
Niet open voor verdere reacties.

NLScotty

Gebruiker
Lid geworden
17 aug 2009
Berichten
200
Dit is de source

Code:
#include <windows.h>
#include <windows.h>
#include "Resource.h"
#include <WinBase.h>
#include "mspackets.h"
#include <commctrl.h>
#include "Hacks.h"

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

HMODULE GlobalhMod = NULL;
HWND hWnd;

BOOL CALLBACK DlgProc2 (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK DlgProc3 (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);


//Main Callback procedure
BOOL CALLBACK DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	switch(uMsg) 
	{

	case WM_INITDIALOG:			
		break;
	
	case WM_HOTKEY:
		break;

	case WM_COMMAND:
								
				if(wParam == IDC_CCBUTTON)  // new window
			{
				
				
				CreateDialog(GlobalhMod, MAKEINTRESOURCE(IDD_DIALOG2), hWnd, (DLGPROC)DlgProc2);
				
				
			}
				
				if(wParam == IDC_CSBUTTON)  // new window
			{
				
				
				CreateDialog(GlobalhMod, MAKEINTRESOURCE(IDD_DIALOG3), hWnd, (DLGPROC)DlgProc3);
				

			}

		
				

					

		break;
							
	case WM_CLOSE:
		FinishedExit = TRUE;
		EndDialog(hWnd, 0);
		break;

	case WM_DESTROY:
		PostQuitMessage(0);
		break;

	default:
		break;
	}
	return 0;
}

//Show Dialogue
DWORD WINAPI MainWin(HMODULE hModule){
	Sleep(500);
	GlobalhMod = hModule;
	DialogBox(hModule, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc);
	ExitThread(0);
	return 0;
}

//Entry Point into program.
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					   
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
			DisableThreadLibraryCalls(hModule);
			CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MainWin, hModule, 0, NULL);
			
			break;
	case DLL_THREAD_ATTACH:
		
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
			FinishedExit = TRUE;
			break;
	}
	return TRUE;
}

BOOL CALLBACK DlgProc2 (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	switch(uMsg) 
	{

	case WM_INITDIALOG:			
		break;
	
	case WM_HOTKEY:
		break;

	case WM_COMMAND:
               	break;
	

	case WM_CLOSE:		
		ShowWindow(hWnd, SW_HIDE);		  
		break;

	case WM_DESTROY:		
		ShowWindow(hWnd, SW_HIDE);		
		break;

	default:
		break;
	}
	return 0;
}

BOOL CALLBACK DlgProc3 (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	UNREFERENCED_PARAMETER(lParam);
	switch(uMsg) 
	{

	case WM_INITDIALOG:			
		break;
	
	case WM_HOTKEY:
		break;

	case WM_COMMAND:
		break;
		

	case WM_CLOSE:
		//EndDialog(hWnd, 0);
		ShowWindow(hWnd, SW_HIDE);
		break;

	case WM_DESTROY:
		//EndDialog(hWnd, 0);
		ShowWindow(hWnd, SW_HIDE);
		break;

	default:
		break;
	}
	return 0;
}

1. Het probleem is dat elke dat je de IDC_CCBUTTON klikt er een nieuw Dialog word geopend, ik wil gewoon dat hij amximaal 1 keer geopent kan worden.

2. Als het window geopend is en je kan er wat dinge invullen en veranderen, dinge aantikken of wegklikken, en je wil em daarna weer openen, moeten deze dingen bewaard blijven, bijv. als je 10 invult in een Edit Box zou ik graag willen dat e daar bleef, dus ShowWindow(hWnd, SW_HIDE); dacht ik aan, maar ik weet niet hoe ik dat met IDC_BUTTON goed kan krijgen:)

alvast bedankt

naz
 
Je mede forumgangers met eenzelfde probleem zouden het wellicht op prijs stellen als je het antwoord hier ook even post...
 
Je mede forumgangers met eenzelfde probleem zouden het wellicht op prijs stellen als je het antwoord hier ook even post...

oke, sorry

Code:
case WM_COMMAND:
								
				if(wParam == IDC_CCBUTTON)  // new window
			{
				if (hDlg2 != NULL)
					{
						if (IsWindowVisible(hDlg2) == false)
							ShowWindow(hDlg2, SW_SHOW);
					}
					else
					{
						CreateDialog(GlobalhMod,
							MAKEINTRESOURCE(IDD_DIALOG2), NULL, (DLGPROC)DlgProc2);
					}	
				
												
			}
				
				if(wParam == IDC_CSBUTTON)  // new window
			{
				{					
					if (hDlg1 != NULL)
					{
						if (IsWindowVisible(hDlg1) == false)
							ShowWindow(hDlg1, SW_SHOW);
					}
					else
					{
						CreateDialog(GlobalhMod,
							MAKEINTRESOURCE(IDD_DIALOG3), NULL, (DLGPROC)DlgProc3);
					}	
				}

hij check of de window al gebruikt is. en dan in het windo zelf bij WM_DESTORY,

ShowWindow(hDlg1, SW_HIDE); gebruiken, elk window een eigen HWND, hierdoor wordt het de 1e keer dat je het window opstart wel langzamer, maar ach
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan