2017-05-19 6 views
-2

win32 책이나 google에서이 문제를 많이 찾을 수 없었습니다. 대화 상자 창에서 만든 푸시 버튼의 x 위치를 이동하려고합니다. 요컨대, 6 개의 버튼이 있고 4, 5 또는 6 개의 버튼을 표시해야하는 경우이를 기반으로 위치를 바꾸고 싶습니다.C를 사용하여 win32에서 런타임 중에 버튼의 x 위치를 이동

목표는 런타임 중에 버튼에 메시지를 보내고 x 위치로 이동하는 것입니다. 런타임 중에 버튼 텍스트 필드와 색상을 업데이트하는 간단한 방법을 찾을 수 있지만 위치는 알 수 없습니다. 내 버튼이

...

#define IDC_PB_BUTTON_A 

과 대화 창에서이로 만들어 ...

PUSHBUTTON "A", IDC_PB_BUTTON_A, 4, 4, 30, 30, BS_MULTILINE 
나는 런타임 중에 첫 번째 4 값을 잡아 그것을 통해 이동하고자하는

10 단위로 x 위치 값이 4에서 14로 변경되었습니다.

PUSHBUTTON "A", IDC_PB_BUTTON_A, 14, 4, 30, 30, BS_MULTILINE 

나는 이걸 할 수 있었으면 좋겠다. 일종의 SendDlgItemMessage(),하지만 주제에 아무것도 찾을 수 없습니다. 어떤 제안?

+1

질문에 대한 답변을 수정하지 마십시오. 그것이 현재 답변과 충분히 다르다면, 답변으로 직접 게시하십시오. – ChrisF

답변

2

창을 이동하기위한 API 호출은 SetWindowPos 입니다. 컨트롤이 초기 크기를 유지하도록 SWP_NOSIZE을 전달해야합니다.


1 당신은뿐만 아니라 MoveWindow를 사용할 수 있지만 그건 당신이 위치뿐만 아니라 새로운 창 크기에 전달해야합니다. 창 크기를 유지하려면 먼저 GetWindowRect으로 전화해야합니다.

+0

SetWindowPos가 실제로 대화 상자를 이동합니까? 대화 상자 안의 특정 푸시 버튼 만 이동하려고하고 전체 창은 이동하지 않으려 고합니다. – Yawn

+1

@Yawn : 필자는 [documentation] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633545.aspx)에 대한 링크를 게시 했으므로 반복하지 않아도됩니다. 다시. 나는 틀렸어. 다시 여기있다. * "[...] 창 [...] 창을 바꾼다. * – IInspectable

+0

예. 나는이 문서를 읽었지만, 나는 그렇지 않다. 그 버튼을 잡는 곳을 보아라. 그것은 버튼이 아니라 두 개의 HWND 값을 취하는 것 같습니다. – Yawn