이것은 모든 ActiveX 컨트롤에서 발생합니다. 내가 DeferWindowPos와 ActiveX 컨트롤의 위치를 변경하는 경우DeferWindowPos 이상한 동작
HDWP hdwp = BeginDeferWindowPos(1);
DeferWindowPos(hdwp, m_pActiveX->GetSafeHwnd(), NULL, left, top, width, height, SWP_NOZORDER);
EndDeferWindowPos(hdwp);
당신이 제어의 아무 곳이나 클릭하면 /가 된 사각형의 크기를 조정 이동 후 가 간다지만. MoveWindow를 대신 사용하면
m_pActiveX->MoveWindow(left, top, width, height);
이 발생하지 않습니다.
다른 유형의 컨트롤에서는 ActiveX 컨트롤 만 사용하지만 모든 컨트롤에서 발생합니다. 나는 이것을 확인하기위한 테스트를하고 새 ActiveX 컨트롤 프로젝트를 만들었으며 변경하지 않았으며 문제는 여전히있었습니다.
안녕하세요. 답변 해 주셔서 감사합니다. 여러 창을 업데이트하는 중, 코드를 단순화하여 정확한 소스 코드가 아닌 문제를 설명하기위한 것입니다. ActiveX 컨트롤은 Amyuni에서 만든 PDF 미리보기 컨트롤입니다. DeferWindowPos는 실패하지 않고 창 위치를 변경하지만 클릭 한 후에 창은 이전 크기와 위치로 '이동합니다'.이상한 점이있어서 위치가 바뀌었지만, 일단 자신의 위치를 바꾼 것처럼 보입니다. – sashoalm
아, 그 경우에는 아마도 컨트롤 자체가 포커스를 얻을 때 위치를 재설정하는 것처럼 들립니다. 확실한 대답을 얻으려면 Amyuni에서 전자 메일을 보내야 할 수도 있습니다 ... – AJG85
흠, 문제는 Amyuni와 같지 않습니다. VS에서 새 프로젝트 마법사로 새 ActiveX 컨트롤을 만들었을 때와 같은 문제가 발생했습니다. 그것은 똑같은 문제를 안고있었습니다. 이것은 모든 ActiveX 컨트롤에 문제가 될 수 있습니다. 내 DeferWindowPos 호출과 MoveWindow의 차이점이 무엇인지 궁금합니다. Spy ++에서 무슨 일이 일어나는지 확인해야합니다. – sashoalm