C++을 사용하여 "WNDCLASS"구조의 창을 만들었습니다. 그런 다음 "CreateWindow"를 시스템 클래스 "button"과 함께 다시 사용하고 이미 생성 된 창의 핸들에 부모 핸들을 설정합니다. 이 버튼을 창에서 어떻게 삭제할 수 있습니까? 나는 "DestroyWindow"함수를 호출하려고 시도했지만 아무 일도 일어나지 않습니다. 할 수 없다면 창을 완전히 지우고 버튼없이 모든 것을 다시 그릴 수있는 방법이 있습니까?창에서 버튼 제거
#include <Windows.h>
#include <wchar.h>
HWND clientwindow;
RECT wr;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
DestroyWindow(clientwindow);
UpdateWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
int WINAPI wWinMain(HINSTANCE hInst,HINSTANCE,LPWSTR,INT)
{
WNDCLASSEX wc = { sizeof(WNDCLASSEX),CS_CLASSDC,WndProc,0,0,
GetModuleHandle(NULL),NULL,NULL,NULL,NULL,
L"jjclass",NULL };
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
RegisterClassEx(&wc);
wr.left = 650;
wr.right = wr.left + 500;
wr.top = 150;
wr.bottom = wr.top + 500;
AdjustWindowRect(&wr,WS_OVERLAPPEDWINDOW,FALSE);
HWND hWnd = CreateWindowW(L"jjclass",L"my window",
WS_OVERLAPPEDWINDOW,wr.left,wr.top,wr.right- wr.left,wr.bottom-wr.top,
NULL,NULL,wc.hInstance,NULL);
ShowWindow(hWnd,SW_SHOWDEFAULT);
clientwindow = CreateWindow(TEXT("BUTTON"),TEXT("BUTTON"),WS_VISIBLE | WS_CHILD,100,100,100,100,hWnd,(HMENU)1,NULL,NULL);
UpdateWindow(hWnd);
MSG msg;
ZeroMemory(&msg,sizeof(msg));
while(msg.message != WM_QUIT)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
UnregisterClass(L"jjclass",wc.hInstance);
return 0;
}
예, DestroyWindow를 사용합니다. 코드 스 니펫을 게시하지 않으면 누구도 버그를 볼 수 없습니다. –
안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 그것을 게시했다. 그리고 destroywindow를 사용했는데 아무 일도 일어나지 않았다. – joelyboy94