summaryrefslogtreecommitdiffstats
path: root/private/nw/svcdlls/nwwks/client/nwshmisc.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'private/nw/svcdlls/nwwks/client/nwshmisc.cxx')
-rw-r--r--private/nw/svcdlls/nwwks/client/nwshmisc.cxx261
1 files changed, 261 insertions, 0 deletions
diff --git a/private/nw/svcdlls/nwwks/client/nwshmisc.cxx b/private/nw/svcdlls/nwwks/client/nwshmisc.cxx
new file mode 100644
index 000000000..f375d8559
--- /dev/null
+++ b/private/nw/svcdlls/nwwks/client/nwshmisc.cxx
@@ -0,0 +1,261 @@
+/*++
+
+Copyright (c) 1995 Microsoft Corporation
+
+Module Name:
+
+ nwshmisc.cxx
+
+Abstract:
+
+ This module implements misc methods used in the shell extension classes.
+
+Author:
+
+ Yi-Hsin Sung (yihsins) 25-Oct-1995
+
+--*/
+
+extern "C"
+{
+#include <windows.h>
+#include <shellapi.h>
+#include <shlobj.h>
+#define DONT_WANT_SHELLDEBUG
+#include <shsemip.h>
+}
+
+#include "nwshcmn.h"
+
+#define MAX_RESOURCE_STRING_LENGTH 256
+
+VOID HideControl( HWND hwndDlg, WORD wID )
+{
+ HWND hwndTmp = ::GetDlgItem( hwndDlg, wID );
+ ::EnableWindow( hwndTmp, FALSE );
+ ::ShowWindow( hwndTmp, FALSE );
+}
+
+VOID UnHideControl( HWND hwndDlg, WORD wID )
+{
+ HWND hwndTmp = ::GetDlgItem( hwndDlg, wID );
+ ::EnableWindow( hwndTmp, TRUE );
+ ::ShowWindow( hwndTmp, TRUE );
+}
+
+VOID EnableDlgItem( HWND hwndDlg, WORD wID, BOOL fEnable)
+{
+ HWND hwndTmp = ::GetDlgItem( hwndDlg, wID );
+
+ ::EnableWindow( hwndTmp, fEnable);
+}
+
+/*
+ * LoadErrorPrintf
+ * -------------
+ *
+ * Uses normal printf style format string
+ */
+DWORD
+LoadMsgErrorPrintf(
+ LPWSTR *ppszMessage,
+ UINT uiMsg,
+ DWORD errNum
+)
+{
+ DWORD nLen = 0;
+ DWORD err = NO_ERROR;
+ LPWSTR pszError = NULL;
+ WCHAR szError[20];
+
+ *ppszMessage = NULL;
+
+ //
+ // Try to get the error string associated with the given number
+ // from the system. If we cannot find the string, then
+ // just show the number.
+ //
+
+ nLen = ::FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM
+ | FORMAT_MESSAGE_IGNORE_INSERTS
+ | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+ NULL, // ignored
+ errNum, // Message resource id
+ 0, // Language id
+ (LPWSTR) &pszError,
+ // Return pointer to formatted text
+ 256, // Min.length
+ NULL );
+
+ if ( nLen == 0 || pszError == NULL )
+ {
+ wsprintf( szError, L"%d", errNum );
+ }
+
+ err = LoadMsgPrintf( ppszMessage, uiMsg, pszError? pszError : szError );
+
+ if ( pszError )
+ ::LocalFree( pszError );
+
+ return err;
+}
+
+/*
+ * LoadMsgPrintf
+ * -------------
+ *
+ * Uses normal printf style format string
+ */
+DWORD
+LoadMsgPrintf(
+ LPWSTR *ppszMessage,
+ UINT uiMsg,
+ ...
+ )
+{
+ WCHAR szMessage[512];
+ DWORD err = NO_ERROR;
+ DWORD nLen = 0;
+ va_list start;
+
+ va_start( start, uiMsg );
+
+ *ppszMessage = NULL;
+
+ if ( ::LoadString( ::hmodNW, uiMsg, szMessage,
+ sizeof(szMessage)/sizeof(szMessage[0])))
+ {
+ nLen = ::FormatMessage( FORMAT_MESSAGE_FROM_STRING
+ | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+ szMessage,
+ 0, // Message resource id, ignored
+ 0, // Language id
+ (LPWSTR) ppszMessage,
+ // Return pointer to formatted text
+ 256, // Min.length
+ &start );
+
+ if ( nLen == 0 || *ppszMessage == NULL )
+ err = GetLastError();
+
+ }
+
+ va_end(start);
+
+ return err;
+}
+
+/*
+ * MsgBoxErrorPrintf
+ * ------------
+ *
+ * Message box routine
+ *
+ */
+DWORD
+MsgBoxErrorPrintf(
+ HWND hwnd,
+ UINT uiMsg,
+ UINT uiTitle,
+ UINT uiFlags,
+ DWORD errNum,
+ LPWSTR pszInsertStr
+ )
+{
+ DWORD nLen = 0;
+ DWORD err = NO_ERROR;
+ LPWSTR pszError = NULL;
+ WCHAR szError[20];
+
+ nLen = ::FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM
+ | FORMAT_MESSAGE_IGNORE_INSERTS
+ | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+ NULL, // ignored
+ errNum, // Message resource id
+ 0, // Language id
+ (LPWSTR) &pszError,
+ // Return pointer to formatted text
+ 256, // Min.length
+ NULL );
+
+ if ( nLen == 0 || pszError == NULL )
+ wsprintf( szError, L"%d", errNum );
+
+ if ( pszInsertStr )
+ {
+ err = MsgBoxPrintf( hwnd, uiMsg, uiTitle, uiFlags,
+ pszError? pszError : szError, pszInsertStr );
+ }
+ else
+ {
+ err = MsgBoxPrintf( hwnd, uiMsg, uiTitle, uiFlags,
+ pszError? pszError : szError );
+ }
+
+ if ( pszError )
+ ::LocalFree( pszError );
+
+ return err;
+
+}
+
+
+/*
+ * MsgBoxPrintf
+ * ------------
+ *
+ * Message box routine
+ *
+ */
+DWORD
+MsgBoxPrintf(
+ HWND hwnd,
+ UINT uiMsg,
+ UINT uiTitle,
+ UINT uiFlags,
+ ...
+ )
+{
+ WCHAR szTitle[MAX_RESOURCE_STRING_LENGTH];
+ WCHAR szMessage[MAX_RESOURCE_STRING_LENGTH];
+ LPWSTR lpFormattedMessage = NULL;
+ DWORD err = NO_ERROR;
+ va_list start;
+
+ va_start(start,uiFlags);
+
+ if ( ::LoadString( ::hmodNW, uiMsg, szMessage, sizeof(szMessage)/sizeof(szMessage[0]))
+ && ::LoadString( ::hmodNW, uiTitle, szTitle, sizeof(szTitle)/sizeof(szTitle[0]))
+ )
+ {
+ DWORD nLen = ::FormatMessage( FORMAT_MESSAGE_FROM_STRING
+ | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+ szMessage,
+ 0, // Resource Id, ignored
+ NULL, // Language Id, ignored
+ (LPWSTR) &lpFormattedMessage,
+ // Return pointer to formatted text
+ 256, // Min.length
+ &start );
+
+ if ( nLen == 0 || lpFormattedMessage == NULL )
+ {
+ err = GetLastError();
+ goto CleanExit;
+ }
+
+ err = ::MessageBox( hwnd,
+ lpFormattedMessage,
+ szTitle,
+ uiFlags );
+
+ ::LocalFree( lpFormattedMessage );
+ }
+
+CleanExit:
+
+ va_end(start);
+
+ return err;
+
+}