여기가 질문하면 받아주는 곳이에영?
초보인데 윈API로 대화상자 기반으로 만들고 있는데
HWND hDigMain;
if (!IsWindow(hDigMain)) {
hDigMain = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG2), HWND_DESKTOP, testProc);
ShowWindow(hDigMain, SW_SHOW);
}
이게 한번 호출하면 화면이 나옴. 근데, IDD_DIALOG2를 창 종료하고 다시 누르면 안뜸.
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;
}
왜죠 선생님. hDigMain가 아직 그대로인건가?
디버그해보세요
ㄴ해봤졍;
다시했을때 조건문안으로 가나요 ? 생성시 에러가 나나요?
에러는 안나요. 아마 제 생각에는 조건문 안으로 가는거 같은데. 원문 보여드리면 되려나 짧음.
IDD_DIALOG2 창을 종료한다고 윈도우 핸들이 사라지는게 아닐수 있음. 단지 다이얼로그의 WS_VISIBLE이 FALSE가 될 가능성이 높다. 이런 경우 hDlgMain 핸들이 유효하고 GetWindowLong에서 윈도우 속성이 WS_VISIBLE==FALSE인 경우 ShowWindow(true)를 해주는 루틴이 필요할듯 하네
아니면 창을 닫을때 확실히 EndDialog 처리 되도록 하던가
ㅇㅋ
http://lgstar.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다. - DCW