Estoy creando una aplicación en MFC usando Visual Studio 2008 en Windows 7. Mi aplicación inicia y detiene un servicio que requiere acceso administrativo. Cuando se inicia la aplicación, no tiene acceso administrativo. Pero cuando hago clic en el botón iniciar servicio obtengo el acceso administrativo y realizo la acción. Me pregunto cómo configurar el ícono administrativo en los botones cuyas acciones necesitan acceso administrativo. ¿Debo configurar algún tipo de Flags? GraciasCómo configurar el icono de la derecha administrativa en el botón de diálogo MFC?
Respuesta
A partir de Windows Vista, puede agregar el icono del escudo a un botón utilizando uno de los nuevos indicadores. Hay una macro para que pueda, que se puede utilizar de esta manera:
Button_SetElevationRequiredState(hwnd, TRUE);
Documentación para la macro está en http://msdn.microsoft.com/en-us/library/bb761865%28VS.85%29.aspx
Ver http://msdn.microsoft.com/en-us/library/bb756990.aspx#BKMK_ShieldButton para una visión general de cómo hacer muchas tareas relacionadas con la UAC.
También hay CButton :: SetElevationRequired() que presumiblemente hace lo mismo pero se ajusta más a la línea de su proyecto MFC. Se podía utilizar de esta manera:
ctl->SetElevationRequired(TRUE);
Ver http://msdn.microsoft.com/en-us/library/bb386824%28v=VS.90%29.aspx
También es necesario permitir el uso de los controles comunes v6 DLL, que se puede hacer ya sea usando un archivo de manifiesto (con o witout una entrada en su archivo de recursos para incrustarlo) o usando una directiva #pragma en su código para MSVC2005 o posterior. Lo más probable es que con una aplicación MFC ya tenga un manifiesto que puede modificar, pero no puedo ayudarlo porque no tengo acceso a MFC.
Si va por la ruta del manifiesto, debe tener el siguiente aspecto y tener el mismo nombre que su aplicación, pero con ".manifest" después del .exe, p. Ej. MyApp.exe.manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Para #pragma, consulte el código siguiente.
Para obtener más información sobre el uso v6 controles comunes ver este enlace (que es donde me dieron la información anterior desde): http://msdn.microsoft.com/en-us/library/bb773175%28v=vs.85%29.aspx
Un pequeño ejemplo Win32 que utiliza la directiva pragma para permitir controles comunes v6 y muestra la elevación icono:
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE instance,
HINSTANCE previnst,
LPSTR args,
int wndState)
{
int i;
MSG messages;
WNDCLASSEX wincl;
ZeroMemory(&wincl, sizeof(wincl));
wincl.hInstance = instance;
wincl.lpszClassName = L"WindowsApp";
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof wincl;
wincl.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
InitCommonControls();
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
if (!RegisterClassEx (&wincl))
return 0;
HWND hwnd = CreateWindow(L"WindowsApp", L"Windows App", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, instance, NULL);
HWND hButton = CreateWindow(L"BUTTON", L"Do something", WS_TABSTOP | WS_VISIBLE | WS_CHILD, 10, 10, 200, 23, hwnd, NULL, (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
SendMessage(hButton, WM_SETFONT, (LPARAM) GetStockObject(DEFAULT_GUI_FONT), FALSE);
Button_SetElevationRequiredState(hButton, TRUE);
ShowWindow(hwnd, wndState);
while (GetMessage(&messages, NULL, 0, 0) > 0)
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
- 1. Cómo mostrar el icono apropiado en el cuadro de diálogo
- 2. Cómo establecer el icono de diálogo en Android
- 3. cómo puedo configurar el icono de la aplicación programáticamente android
- 4. Cómo utilizar el temporizador en la aplicación basada en el cuadro de diálogo MFC?
- 5. Reabra el cuadro de diálogo modal en MFC
- 6. Cómo eliminar el botón Ayuda predeterminado en CPropertySheet en MFC?
- 7. Cómo configurar el icono de la barra de pestañas del iPhone en el código?
- 8. MFC grupos de botones de radio múltiples en el cuadro de diálogo
- 9. Jquery diálogo: Ocultar el botón
- 10. Cómo colocar un icono en el título de un cuadro de diálogo personalizado
- 11. Cómo mostrar un cuadro de diálogo MFC sin robar el foco en la otra ventana
- 12. Cómo cambiar el icono de un botón mediante programación?
- 13. Reemplazar el icono Cerrar por un cuadro de diálogo JQueryUI
- 14. ¿Cómo establecer el foco en el botón negativo del diálogo de alerta de Android?
- 15. Botón para voltear el iPhone a la derecha (como iTunes)
- 16. OpenGL suprime excepciones en MFC aplicación basada en diálogo
- 17. ¿Cómo configurar el botón SWT de color de primer plano?
- 18. ¿Cómo asocia Visual Studio clases de diálogo de mfc con recursos de diálogo?
- 19. ¿Cómo cambiar el icono ejecutable desde el código C#? (no es mi icono de la aplicación)
- 20. jQuery UI Posición del botón de diálogo
- 21. ¿Icono dentro del botón?
- 22. Diálogo Dojo cerrar evento en X (arriba-derecha)
- 23. jQuery UI: Estilo de botón de diálogo
- 24. cómo configurar un oyente onclick para un botón de imagen en un diálogo de alerta
- 25. botón en jQuery diálogo
- 26. Cómo configurar el texto del botón de imagen (Android)?
- 27. ¿Cómo termina el wWinMain de MFC en el ejecutable?
- 28. ¿Cómo configurar manualmente el tipo de entrada de botón en ASP.NET?
- 29. Diálogo de Android, mantenga el cuadro de diálogo abierto cuando se presiona el botón
- 30. ¿Cómo cambiar el tamaño del botón en el cuadro de diálogo de confirmación de Jquery Ui?
Intenté esto pero no mostró el icono del escudo en el botón. ¿Puedes por favor proporcionarme una plantilla de código de muestra? Gracias –
@ Ali Ahmed: He agregado un ejemplo y más explicación. – tinman