vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: Oberfläche · MessageBox   |   VB-Versionen: VB619.11.10
Vista TaskDialogIndirect

TaskDialogIndirect von Windows Vista ist eine erweiterte Form der MessageBox.

Autor:   Julis LászlóBewertung:     [ Jetzt bewerten ]Views:  8.237 
munka.regio.co.huSystem:  Vista, Win7, Win8, Win10 Beispielprojekt 

TaskDialogIndirect von Windows Vista ist eine erweiterte Form der MessageBox. Da das Betriebssystem für den Dialog eine API bereitstellt, kann man in VB6 mit relativ geringer Aufwand moderne MessageBoxe mit voller Funktionalität unter Vista erstellen.

TaskDialogIndirect

Quellcode-Auszug:

' APIs für den Task-Dialog:
 
Private Declare Sub CopyMemory Lib "kernel32" _
  Alias "RtlMoveMemory" ( _
  Destination As Any, _
  Source As Any, ByVal Length As Long)
 
Private Const WM_USER = &H400&
 
Public Enum TASKDIALOG_FLAGS
  TDF_ENABLE_HYPERLINKS = &H1&
  TDF_USE_HICON_MAIN = &H2&
  TDF_USE_HICON_FOOTER = &H4&
  TDF_ALLOW_DIALOG_CANCELLATION = &H8&
  TDF_USE_COMMAND_LINKS = &H10&
  TDF_USE_COMMAND_LINKS_NO_ICON = &H20&
  TDF_EXPAND_FOOTER_AREA = &H40&
  TDF_EXPANDED_BY_DEFAULT = &H80&
  TDF_VERIFICATION_FLAG_CHECKED = &H100&
  TDF_SHOW_PROGRESS_BAR = &H200&
  TDF_SHOW_MARQUEE_PROGRESS_BAR = &H400&
  TDF_CALLBACK_TIMER = &H800&
  TDF_POSITION_RELATIVE_TO_WINDOW = &H1000&
  TDF_RTL_LAYOUT = &H2000&
  TDF_NO_DEFAULT_RADIO_BUTTON = &H4000&
  TDF_CAN_BE_MINIMIZED = &H8000&
End Enum
 
' typedef DWORD TASKDIALOG_FLAGS;  // Note: _TASKDIALOG_FLAGS is an int
Public Enum TASKDIALOG_MESSAGES
  TDM_NAVIGATE_PAGE = WM_USER + 101&
  TDM_CLICK_BUTTON = WM_USER + 102&
  TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER + 103&
  TDM_SET_PROGRESS_BAR_STATE = WM_USER + 104&
  TDM_SET_PROGRESS_BAR_RANGE = WM_USER + 105&
  TDM_SET_PROGRESS_BAR_POS = WM_USER + 106&
  TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER + 107&
  TDM_SET_ELEMENT_TEXT = WM_USER + 108&
  TDM_CLICK_RADIO_BUTTON = WM_USER + 110&
  TDM_ENABLE_BUTTON = WM_USER + 111&
  TDM_ENABLE_RADIO_BUTTON = WM_USER + 112&
  TDM_CLICK_VERIFICATION = WM_USER + 113&
  TDM_UPDATE_ELEMENT_TEXT = WM_USER + 114&
  TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER + 115&
  TDM_UPDATE_ICON = WM_USER + 116&
End Enum ' TASKDIALOG_MESSAGES;
 
Public Enum TASKDIALOG_NOTIFICATIONS
  TDN_CREATED = 0
  TDN_NAVIGATED = 1
  TDN_BUTTON_CLICKED = 2
  TDN_HYPERLINK_CLICKED = 3
  TDN_TIMER = 4
  TDN_DESTROYED = 5
  TDN_RADIO_BUTTON_CLICKED = 6
  TDN_DIALOG_CONSTRUCTED = 7
  TDN_VERIFICATION_CLICKED = 8
  TDN_HELP = 9
  TDN_EXPANDO_BUTTON_CLICKED = 10
End Enum ' TASKDIALOG_NOTIFICATIONS;
 
Public Type TASKDIALOG_BUTTON
  nButtonID As Long 'int
  pszButtonText As Long 'PCWSTR
End Type ' TASKDIALOG_BUTTON;
 
Public Enum TASKDIALOG_ELEMENTS
  TDE_CONTENT = 0
  TDE_EXPANDED_INFORMATION = 1
  TDE_FOOTER = 2
  TDE_MAIN_INSTRUCTION = 3
End Enum ' TASKDIALOG_ELEMENTS;
 
Public Enum TASKDIALOG_ICON_ELEMENTS
  TDIE_ICON_MAIN = 0
  TDIE_ICON_FOOTER = 1
End Enum ' TASKDIALOG_ICON_ELEMENTS;
 
Public Const TD_WARNING_ICON As Integer = -1       ' MAKEINTRESOURCEW(-1)
Public Const TD_ERROR_ICON As Integer = -2         ' MAKEINTRESOURCEW(-2)
Public Const TD_INFORMATION_ICON As Integer = -3   ' MAKEINTRESOURCEW(-3)
Public Const TD_SHIELD_ICON As Integer = -4        ' MAKEINTRESOURCEW(-4)
Public Const TD_SECURITY_ICON_BLUE As Integer = -5
Public Const TD_SECURITY_ICON_WARNING As Integer = -6
Public Const TD_SECURITY_ICON_ERROR As Integer = -7
Public Const TD_SECURITY_ICON_OK As Integer = -8
Public Const TD_SECURITY_ICON_GREY As Integer = -9
Public Const TD_QUESTION_ICON As Integer = 32514
 
Public Enum TASKDIALOG_COMMON_BUTTON_FLAGS
  TDCBF_OK_BUTTON = &H1&          ' // selected control return value IDOK
  TDCBF_YES_BUTTON = &H2&         ' // selected control return value IDYES
  TDCBF_NO_BUTTON = &H4&          ' // selected control return value IDNO
  TDCBF_CANCEL_BUTTON = &H8&      ' // selected control return value IDCANCEL
  TDCBF_RETRY_BUTTON = &H10&      ' // selected control return value IDRETRY
  TDCBF_CLOSE_BUTTON = &H20&      ' // selected control return value IDCLOSE
End Enum
' typedef DWORD TASKDIALOG_COMMON_BUTTON_FLAGS; // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int
 
Public Type TASKDIALOGCONFIG
  cbSize As Long ' UINT
  hwndParent As Long ' HWND
  hInstance As Long ' HINSTANCE                       // used for MAKEINTRESOURCE() strings
  dwFlags As TASKDIALOG_FLAGS ' TASKDIALOG_FLAGS      // TASKDIALOG_FLAGS (TDF_XXX) flags
  dwCommonButtons As TASKDIALOG_COMMON_BUTTON_FLAGS ' // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags
  pszWindowTitle As Long 'PCWSTR                      // string or MAKEINTRESOURCE()
'    Union
'    {
        hMainIcon As Long
'        HICON   hMainIcon;
'        PCWSTR  pszMainIcon;
'    };
  pszMainInstruction As Long ' PCWSTR
  pszContent As Long ' PCWSTR
  cButtons As Long ' UINT
  pButtons As Long ' const TASKDIALOG_BUTTON  *pButtons;
  nDefaultButton As Long ' int
  cRadioButtons As Long ' UINT
  pRadioButtons As Long ' const TASKDIALOG_BUTTON  *pRadioButtons;
  nDefaultRadioButton As Long ' int
  pszVerificationText As Long ' PCWSTR
  pszExpandedInformation As Long ' PCWSTR
  pszExpandedControlText As Long ' PCWSTR
  pszCollapsedControlText As Long ' PCWSTR
'    Union
'    {
        hFooterIcon As Long
'    HICON   hFooterIcon;
'    PCWSTR  pszFooterIcon;
'    };
  pszFooter As Long ' PCWSTR
  pfCallback As Long ' PFTASKDIALOGCALLBACK
  lpCallbackData As Long ' LONG_PTR
  cxWidth As Long ' UINT
End Type
 
' WINCOMMCTRLAPI HRESULT WINAPI TaskDialogIndirect(const TASKDIALOGCONFIG *pTaskConfig, 
' __out_opt int *pnButton, __out_opt int *pnRadioButton, 
' __out_opt BOOL *pfVerificationFlagChecked);
Public Declare Function TaskDialogIndirect Lib "comctl32.dll" ( _
  pTaskConfig As TASKDIALOGCONFIG, _
  pnButton As Long, _
  pnRadioButton As Long, _
  pfVerificationFlagChecked As Long) As Long
 
' WINCOMMCTRLAPI HRESULT WINAPI TaskDialog(__in_opt HWND hwndParent, 
' __in_opt HINSTANCE hInstance, __in_opt PCWSTR pszWindowTitle, 
' __in_opt PCWSTR pszMainInstruction, 
' __in_opt PCWSTR pszContent, TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons, 
' __in_opt PCWSTR pszIcon, __out_opt int *pnButton);
' Public Declare Function TaskDialog Lib "Comctl32.dll" ( _
     ByVal hwndParent As Long, _
     ByVal hInstance As Long, _
     ByVal pszWindowTitle As Long, _
     ByVal pszMainInstruction As Long, _
     ByVal pszContent As Long, _
     ByVal dwCommonButtons As TASKDIALOG_COMMON_BUTTON_FLAGS, _
     ByVal pszIcon As Long, _
     pnButton As Long) As Long
 
Private Const IDOK = 1
Private Const IDCANCEL = 2
Private Const IDABORT = 3
Private Const IDRETRY = 4
Private Const IDIGNORE = 5
Private Const IDYES = 6
Private Const IDNO = 7

Auf den Abdruck des vollständigen Quellcodes haben wir hier verzichtet.
Über den Download-Link können Sie sich das kleine Demoprojekt einschl. Quellcode herunterladen.

Dieser Tipp wurde bereits 8.237 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel