Red de conocimiento informático - Material del sitio web - Cómo escribir programas GUI utilizando el SDK de Win32 puro

Cómo escribir programas GUI utilizando el SDK de Win32 puro

Así que no explicaré demasiado sobre algunos conocimientos básicos. Si lo necesitas, te explicaré algunos detalles más. Al escribir programas GUI en Windows, los más influyentes son la serie Visual Studio de MS y la serie BCB de Borland. BCB necesita incorporar más bibliotecas proporcionadas por borland al lanzar el programa, lo cual es bastante problemático. Así que rara vez lo uso. Si usa la serie VS para escribir programas GUI, hay dos formas principales: la primera es usar el MFC proporcionado por Microsoft y la segunda es usar el SDK de Win32 puro para escribir programas GUI. Por razones bien conocidas, el empaquetado del SDK de Win32 de MFC falla. No es tan fluido como BCB. A veces le resulta difícil usar sus propias ideas en el programa. Por lo tanto, generalmente uso el SDK de Win32 puro para escribir programas GUI. MFC oscuro, porque para usar MFC, no solo necesita conocer el SDK de Win32, sino que también necesita buscar algunas habilidades de MFC, lo que realmente no vale la pena. La dificultad al escribir una GUI con el SDK de Win32 es que a veces es necesario consultar mucha información y documentación del SDK para algo simple. Pero lo que obtiene es una comprensión profunda del sistema Windows y una operación del programa eficiente y liviana. Porque las bibliotecas necesarias para utilizar el SDK de Win32 están incluidas en todos los sistemas Windows. En teoría, siempre que sea un sistema Windows, su programa puede ejecutarse correctamente. A continuación se detallan algunos de los problemas que encontré recientemente al escribir programas GUI de Windows. Primero, echemos un vistazo al efecto de ejecución final del programa (mi compilador es VC6): 1. Después de configurar el marco con el programa VC6 Win32, agregué mi propio cuadro de diálogo modal. El primer problema que encontré fue cómo. Configure el control de radio (algunos libros chinos se traducen como botones de opción) el estado inicial y el resultado final de la consulta. Después de algunos esfuerzos para consultar el SDK de Win32, la respuesta estándar es la siguiente: Establezca el estado inicial de Radio: BOOL CheckDlgButton(HWNDhDlg, int nlDButton, UINT uCheck Obtenga el estado final del control de Radio: UINT IsDlgButtonChecked(HWND hDlg, Int nlDBUtton); 2 Cómo manejar eventos relacionados del control deslizante (llamado control deslizante en chino). El control deslizante es en realidad fundamentalmente diferente del simple control por radio anterior. El control por radio está incluido en la biblioteca general de Windows. No es necesario un soporte de biblioteca especial, pero el control deslizante (también llamado barra de seguimiento en inglés) requiere el soporte de COMCTL32.lib. Para utilizar este control deslizante, debe realizar tres acciones. a Agregue una referencia a COMCTL32.lib en el archivo fuente. b Agregue la declaración a commctl.h en el archivo de encabezado, generalmente a stdafx.h. #include // Agregar por liuzhi.

c En el programa, debe agregar una macro que use control común: InitCommonControls(); de lo contrario, el programa parpadeará y se cerrará. Porque el programa no solicitó los recursos que debía tener. Después de agregar la declaración de control deslizante. Necesita manejar algunos eventos de control deslizante. Lo que necesita especial atención es que el control deslizante no se puede procesar directamente utilizando la API del SDK como el control por radio. Se requiere un mecanismo de mensaje especial, como sigue: 2.1 Obtener el identificador de ventana del control.

El control deslizante también es una ventana, una subventana del cuadro de diálogo. Por lo tanto, se implementa usando GetDlgItem: backlight_wnd = GetDlgItem(hDlg, IDC_SLIDER_BACKLIGHT); El mensaje al control deslizante. Por ejemplo, configuro de 0 a 100 es: SendMessage(backlight_wnd,TBM_SETRANGE, (WPARAM)1,(LPARAM)MAKELONG(0,100));2.3 La configuración de la posición inicial del control deslizante se logra enviando un TBM_SETPOS. mensaje: SendMessage(backlight_wnd,TBM_SETPOS, (WPARAM)1,( LPARAM)BacklightPercentage);

2.4 La interacción entre el control deslizante y el usuario se logra a través del mensaje WM_HSCROLL. Debe enviar el mensaje TBM_GETPOS. en la función de respuesta WM_HSCROLL para obtener la posición actual del control deslizante: BacklightPercentage = (unsigned char)SendMessage(backlight_wnd,TBM_GETPOS,0,0);2.5 Para explicar el número al lado de la escala actual, necesita configurar un control de texto estático primero y luego envíe dinámicamente un mensaje WM_SETTEXT al control para actualizar dinámicamente el número: SendMessage (GetDlgItem(hDlg, IDC_STATIC_BACKLIGHT_VALUE), WM_SETTEXT, 0, LPARAM(szBacklightPercentage)); 3. Cómo mostrar iconos o imágenes en el cuadro de diálogo: si el programa no tiene imágenes, siempre aparecerá muy rígido. Por lo tanto, mostrar imágenes e iconos en el programa es una forma necesaria de embellecerlo. También hay muchas instrucciones en Internet sobre cómo el programa muestra imágenes. Pero todos son relativamente complicados. Si solo muestra íconos estáticos, no tiene por qué ser tan complicado. 3.1 Necesita buenos materiales de iconos. El hermoso material de íconos es como la cara del programa. Es necesario para conseguir buenos materiales de iconos, el primer paso es acceder a "Taobao" en línea. Vea si puede encontrar uno que le guste. También existen herramientas para buscar hermosos íconos en tu computadora. Porque el propio Windows también proporciona muchos recursos de iconos. Aquí recomiendo un pequeño software llamado IconExtract. Puede descargarlo en línea y puede encontrar fácilmente íconos locales. En circunstancias normales, nos basta. Después de encontrar el ícono que le gusta, recuerde citarlo debajo del ícono en los recursos. 3.2 Icono de visualización: si no se muestra dinámicamente, simplemente agregue el control de imagen al cuadro de diálogo y luego especifique la fuente del ícono en las propiedades. 4. Cómo responder a eventos de conexión y desconexión de alimentación: En las computadoras portátiles, cuando se conecta y desconecta la fuente de alimentación de CA, el brillo de la luz de fondo cambiará. Por lo tanto, es necesario recuperar la luz de fondo actual cuando se sabe que la luz de fondo está encendida. La fuente de alimentación ha cambiado. Después de la consulta, el programa necesita responder al mensaje WM_POWERBROADCAST.

Si wParam es PBT_APMPOWERSTATUSCHANGE, por supuesto necesita recuperar la luz de fondo: case WM_POWERBROADCAST:

if (wParam == PBT_APMPOWERSTATUSCHANGE) // La fuente de alimentación puede haber cambiado, verifique la luz de fondo nuevamente.

wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_ICON_CONFIG2); // Después de modificar IDI_SMALL de esta manera, encontrará que el icono que se muestra cuando se ejecuta el programa ha cambiado. Sin embargo, el icono del programa exe no ha cambiado. Esto se debe a que tanto el exe como el dll muestran el icono con la identificación más baja de forma predeterminada. Por lo tanto, simplemente cambie el ID del icono que desea mostrar y el ID del icono del programa existente en Resource.h. #define IDI_ICON_CONFIG2 107 // asegúrate de que el ID del icono sea el más bajo.

Está bien.