"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
윈도우 컨트롤러에서 SetWindowPos 를 호출 했는데, 컨트롤러의 위치가 이동하지 않는 경우에는 어떻게 처리해야 하는지 간략히 알아보았습니다.

질문 >
윈도우 컨트롤러에서 SetWindowPos 를 호출 했는데, 컨트롤러의 위치가 이동하지 않는 경우에는 어떻게 처리해야 하나요?
답변 >
SetWindowPos를 호출했는데도 윈도우 컨트롤러의 위치가 이동하지 않는다면, 다음 사항들을 점검해보세요.
1. SWP_NOMOVE 플래그 확인
SetWindowPos를 호출할 때 SWP_NOMOVE 플래그가 포함되어 있으면 위치가 변경되지 않습니다.
👉 SWP_NOMOVE 플래그를 제거하세요.
SetWindowPos(hWnd, HWND_TOP, x, y, width, height, SWP_NOZORDER | SWP_NOACTIVATE);
2. 좌표 값 확인
윈도우 좌표가 예상과 다를 수 있으므로, GetWindowRect 또는 GetClientRect를 사용하여 현재 좌표를 확인하세요.
RECT rect;
GetWindowRect(hWnd, &rect);
printf("Current Position: (%d, %d)\\n", rect.left, rect.top);
혹시 같은 좌표를 다시 설정하고 있는지 확인하세요.
3. 부모 윈도우 여부 확인
컨트롤러가 자식 윈도우(WS_CHILD 스타일)라면, SetWindowPos의 좌표는 부모 윈도우의 클라이언트 영역 기준입니다.
👉 ScreenToClient를 사용하여 좌표를 변환하세요.
POINT pt = { x, y };
ScreenToClient(GetParent(hWnd), &pt);
SetWindowPos(hWnd, HWND_TOP, pt.x, pt.y, width, height, SWP_NOZORDER | SWP_NOACTIVATE);
4. WM_WINDOWPOSCHANGING 또는 WM_WINDOWPOSCHANGED 처리 확인
윈도우 프로시저에서 WM_WINDOWPOSCHANGING 또는 WM_WINDOWPOSCHANGED를 처리할 때 좌표를 다시 설정하는 코드가 있는지 확인하세요.
case WM_WINDOWPOSCHANGING: {
WINDOWPOS* pWP = (WINDOWPOS*)lParam;
printf("WM_WINDOWPOSCHANGING: (%d, %d)\\n", pWP->x, pWP->y);
} break;
위 이벤트에서 pWP->x 또는 pWP->y가 변경되고 있다면, 특정 코드가 위치 변경을 방해하는 것일 수 있습니다.
5. SetWindowPos 호출 후 UpdateWindow 또는 RedrawWindow 호출
위치가 변경되었지만 화면에 즉시 반영되지 않을 수 있습니다.
👉 UpdateWindow 또는 RedrawWindow를 호출해 보세요.
SetWindowPos(hWnd, HWND_TOP, x, y, width, height, SWP_NOZORDER | SWP_NOACTIVATE);
UpdateWindow(hWnd);
6. MoveWindow 사용 시도
SetWindowPos가 작동하지 않으면 MoveWindow를 대신 사용해 보세요.
MoveWindow(hWnd, x, y, width, height, TRUE);
위 방법들을 하나씩 시도해 보고, 어떤 부분에서 문제가 발생하는지 확인해 보세요! 😊
🎬 유튜브 채널 🎬
위로그@WiLog
📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌
www.youtube.com
🎬 치지직 채널 🎬
위로그 채널 - CHZZK
지금, 스트리밍이 시작됩니다. 치지직-
chzzk.naver.com
'프로그래밍' 카테고리의 다른 글
👨💻 [CEF] CEF 의 객체를 여러개 생성해서, SetZoomLevel 을 호출하면, 모두 동시에 적용되는데, 각각 적용하는 방법은 어떻게 되나요? (0) | 2025.03.05 |
---|---|
👨💻 [Unreal] 언리얼 엔진에서 블렌드 스페이스 (Blend Space) 란 무엇이며, 어떻게 활용할 수 있나요? (0) | 2025.02.19 |
👨💻 [Unreal] 언리얼 엔진으로 모바일 게임을 개발할 수 있나요? (0) | 2025.02.12 |
👨💻 [Unreal] 언리얼 엔진으로 2D 게임을 개발할 수 있나요? (0) | 2025.02.12 |
👨💻 [CEF] CEF 에서 Ctrl + Mouse Wheal 이벤트를 받으려면 어떻게 해야 하나요? (0) | 2025.02.10 |