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. 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. Dieser Tipp wurde bereits 11.835 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! |
||||||||||||||||
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. |