Esto sucede con todos los controles ActiveX. Si reposiciono un control ActiveX con DeferWindowPosComportamiento raro de DeferWindowPos
HDWP hdwp = BeginDeferWindowPos(1);
DeferWindowPos(hdwp, m_pActiveX->GetSafeHwnd(), NULL, left, top, width, height, SWP_NOZORDER);
EndDeferWindowPos(hdwp);
que va allí pero luego se mueve/cambia de tamaño para su edad rectángulo vez que haga clic en cualquier lugar dentro del control. Si uso MoveWindow lugar
m_pActiveX->MoveWindow(left, top, width, height);
esto no sucede.
No ocurre con ningún otro tipo de control, solo con controles ActiveX, pero sucede con todos ellos. Hice una prueba para confirmar esto, creé un nuevo proyecto de control ActiveX y no realicé ningún cambio, y el problema todavía estaba allí.
Hola, gracias por responder. Estoy actualizando varias ventanas, el código que puse fue simplificado y solo fue para ilustrar el problema, no el código fuente exacto. El control ActiveX es un control de vista previa en PDF hecho por Amyuni. DeferWindowPos no falla, sino que vuelve a colocar la ventana, pero después de hacer clic en ella, la ventana 'salta' a su antiguo tamaño y posición.Eso es lo extraño, que se reposiciona, pero luego parece cambiar su posición por sí mismo (una vez que haces clic en él). – sashoalm
Ah, en ese caso, parece que el control en sí mismo está restableciendo su posición cuando se enfoca. Es posible que necesite enviar un correo electrónico a Amyuni para obtener una respuesta definitiva ... – AJG85
Hm, parece que el problema no está con Amyuni, lo mismo sucedió cuando hice un nuevo control ActiveX desde el nuevo asistente de proyecto en VS. Tenía exactamente el mismo problema. Esto podría ser un problema con todos los controles ActiveX. Me pregunto cuál es la diferencia entre mi llamada DeferWindowPos y MoveWindow, podría ser que debería verificar lo que está sucediendo con Spy ++ – sashoalm