Red de conocimiento informático - Problemas con los teléfonos móviles - Modifique el menú contextual de Flash en VC para personalizar el menú

Modifique el menú contextual de Flash en VC para personalizar el menú

Instalé Visual Studio 2008 y probé VC. Aunque todavía no entiendo muchas cosas, ya no me resisto tanto al VC, pero me siento muy cerca de él.

Antes usé Delphi para escribir un reproductor Flash, y ahora quiero usar VC para probar y escribir un reproductor Flash simple. Realmente se siente un poco así. Después de una tarde de investigación, aprendí sobre algunas clases de MFC de uso común y comencé a escribir código. Sin embargo, pronto encontré un problema: si bloqueo el menú contextual de Flash o incluso lo modifico en mi propio menú emergente, este problema es fácil de resolver en Delphi, pero en VC, realmente me dio dolor de cabeza. mucho tiempo. Busqué en Internet durante mucho tiempo y no pude entender de qué estaban hablando los demás, así que tuve que descubrirlo yo mismo. Se siente bastante bien. El principio fundamental también es sobrecargar la función BOOL CFlashPlayerApp::PreTranslateMessage(MSG* pMsg).

Paso 1: haga clic derecho en la clase CxxApp y agregue una función virtual

Paso 2: seleccione PreTranslateMessage en la lista "Nueva función virtual" y luego sobrecargue la función de la derecha Agregue Mango a la lista.

Paso 3: Escribir código:

(Paso 4: Procesar variables globales)

Debido a que el identificador de la variable Flash h_SWFHandle debe estar en OnInitDialog() de CFlashPlayerDlg El valor se obtiene durante el proceso, por lo que debe definirse como una variable global para que su valor pueda usarse en el proceso de mensajes PreTranslateMessage.

El método para definir variables miembro como variables globales es el siguiente:

1. Para las variables globales, existen los mismos problemas que las funciones. Para acceder a estas variables en otros archivos CPP, debe agregar una declaración externa en el archivo H del archivo principal en el siguiente formato:

extern varibletype var (declaración)

>En el archivo principal Definido en el archivo CPP

variabletype var (Definición)

Ejemplo:

AppWizard crea un proyecto de prueba

y luego en Declare extern CString cs en el archivo Test.H;

Luego declare extern CString cs en el archivo Test.H;

Luego declare extern CString cs en el Archivo Test.H;

p>

Luego declare CString cs externo en el archivo Test.H. app define CString cs;

Si desea definir una variable global para todo el proyecto, defina la variable en cualquier archivo CPP y luego declare la variable en los archivos que necesitan hacer referencia a ella. Si hay muchas variables globales, puede optar por utilizar un archivo h que defina variables globales e incluir directamente el archivo de encabezado cuando sea necesario sin escribir tantas variables externas.

============ Ejemplo de operación nativa==========

1. Agregue variables globales al archivo de encabezado .h. :

2. Inicializar en el archivo .cpp.

3. Asignar valor en OnInitDialog().

OK

==================== Suplemento====================== = ===

Gracias al internauta hongh2009 por el consejo, se puede implementar de una manera más directa y sencilla, citando los comentarios

Agregue una función virtual directamente a la clase de diálogo para procesar el mensaje

El código es el siguiente:

BOOL CY766u7Dlg::PreTranslateMessage(MSG* pMsg)

{

// TODO: LoadMenu(IDR_MENU1) ;

CMenu *psubMenu = menu.GetSubMenu(0);

CPoint pt = pMsg-pt;

psubMenu- TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt. x, pt.y, AfxGetApp()-GetMainWnd());

Devuelve TRUE;

}

Devuelve CDialog ::PreTranslateMessage(pMsg);

}