2012-05-16 19 views
14

Teniendo en cuenta la formaCómo obtener un HWND manejar fuera de un System.Windows.Forms.Form

System.Windows.Forms::Form Form1; 

y la ventana de manejar

HWND hWnd; 

¿Cómo se establecen CVent a la propiedad Handle Form1 que realmente existe como propiedad pública que "Obtiene el identificador de ventana al que está vinculado el control. (Heredado de Control)" según el Microsoft documentation of System.Windows.Forms::Form? En el constructor de mi formulario Form1, lo he intentado

hWnd = this.Handle; 

pero el compilador se queja:

error C2228: a la izquierda de '.Handle' debe tener el tipo de clase/estructura/UNION es 'MyNamespace :: Form1^const '¿tenía la intención de usar' -> 'en su lugar?

así que trato

hWnd = this->Handle; 

y justo

hWnd = Handle; // Since I'm in the Form 

y luego el compilador dice:

error C2440: '=': no ​​se puede convertir de 'System :: IntPtr' a 'HWND' No hay un operador de conversión definido por el usuario disponible que pueda realizar esta conversión, o no se puede llamar al operador

Respuesta

20

Encontré una solución y no me importa si se trata de un problema.

hWnd = static_cast<HWND>(Handle.ToPointer()); 

Trabajos.

+2

Por lo que puedo ver, esa es la forma correcta de hacerlo. – Justin

Cuestiones relacionadas