그냥 다 올리는게 편할려나.


#include <Windows.h>

#include "resource.h"


// 전역변수

HINSTANCE hInst;

HWND hDigMain;


BOOL CALLBACK MainDigProc(HWND, UINT, WPARAM, LPARAM);

BOOL CALLBACK testProc(HWND, UINT, WPARAM, LPARAM);


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,

_In_opt_ HINSTANCE hPrevInstance,

_In_ LPWSTR    lpCmdLine,

_In_ int       nCmdShow)

{

hInst = hInstance;

DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), HWND_DESKTOP, MainDigProc);

return 0;

}


BOOL CALLBACK MainDigProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

//파일 찾기, IDLOAD 활성화.

switch (iMessage) {

case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:

switch (LOWORD(wParam)) {

case IDSTART:

if (!IsWindow(hDigMain)) {

hDigMain = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG2), HWND_DESKTOP, testProc);

ShowWindow(hDigMain, SW_SHOW);

}

//EndDialog(hWnd, IDSTART);

return TRUE;

case IDLOAD:

EndDialog(hWnd, IDLOAD);

return TRUE;

case ID_OPTION:

EndDialog(hWnd, ID_OPTION);

return TRUE;

case IDCANCEL:

EndDialog(hWnd, IDLOAD);

return TRUE;

}

break;

}

return FALSE;

}


BOOL CALLBACK testProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)

{

switch (iMessage) {

case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:

switch (LOWORD(wParam)) {

case IDOK:

case IDCANCEL:

EndDialog(hWnd, IDLOAD);

return TRUE;

}

break;

}

return FALSE;

}


대화상자 기반으로 만들려고 해봤음. 처음에 IDSTART를 호출하면 첫번째 창은 닫고, 이어서 창이 뜨게 만들려고 했는데. 이 상황에선 IsWindow를 안쓰는걸까. 잘 모르겠다;

호출해서 창을 만들고, 닫고, 다시 만들려고 버튼을 누르면 창이 안나와.

WM_COMMAND case IDSTART:에서 //지우면 창이 뜨고 바로 프로그램이 종료됨.