Windows: avoid dependence on UNICODE define; prefer W functions

Change-Id: I95b90128e93f0d88ed73601bcc5a7ca9279d4cf1
Reviewed-on: https://gerrit.libreoffice.org/42560
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
Mike Kaganski
2017-09-20 20:20:44 +03:00
parent bb406680ce
commit eef4c133e9
37 changed files with 418 additions and 488 deletions

View File

@@ -755,16 +755,6 @@ def generate(includes, libname, filename, module):
"""
f.write(sal_define)
# svx needs this (sendreportw32.cxx)
if module == 'svx' and libname == 'svx':
svx_define = """
#ifdef _WIN32
# define UNICODE
# define _UNICODE
#endif
"""
f.write(svx_define)
# Dump the headers.
f.write('\n')
for i in includes:

View File

@@ -17,23 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
// Use UNICODE Windows and C API.
#define _UNICODE
#define UNICODE
#ifdef _MSC_VER
#pragma warning(push, 1)
#endif
#if !defined WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#include <tchar.h>
#include "native_share.h"
#include "rtl/bootstrap.hxx"

View File

@@ -18,10 +18,6 @@
*/
#define UNICODE
#define _UNICODE
#include <tchar.h>
#ifdef _MSC_VER
#pragma warning(push, 1)
#pragma warning(disable:4005)
@@ -31,7 +27,6 @@
# define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <shellapi.h>
#include <sqlext.h>
#ifdef _MSC_VER
@@ -50,19 +45,19 @@ int displayLastError()
DWORD dwError = GetLastError();
LPVOID lpMsgBuf;
FormatMessage(
FormatMessageW(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
nullptr,
dwError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
reinterpret_cast<LPTSTR>(&lpMsgBuf),
reinterpret_cast<LPWSTR>(&lpMsgBuf),
0,
nullptr
);
// Display the string.
MessageBox( nullptr, static_cast<LPCTSTR>(lpMsgBuf), nullptr, MB_OK | MB_ICONERROR );
MessageBoxW( nullptr, static_cast<LPCWSTR>(lpMsgBuf), nullptr, MB_OK | MB_ICONERROR );
// Free the buffer.
LocalFree( lpMsgBuf );
@@ -74,11 +69,11 @@ int displayLastError()
*/
BOOL registerWindowClass( HINSTANCE _hAppInstance )
{
WNDCLASSEX wcx;
WNDCLASSEXW wcx;
wcx.cbSize = sizeof(wcx); // size of structure
wcx.style = CS_HREDRAW | CS_VREDRAW; // redraw if size changes
wcx.lpfnWndProc = DefWindowProc; // points to window procedure
wcx.lpfnWndProc = DefWindowProcW; // points to window procedure
wcx.cbClsExtra = 0; // no extra class memory
wcx.cbWndExtra = 0; // no extra window memory
wcx.hInstance = _hAppInstance; // handle to instance
@@ -89,13 +84,13 @@ BOOL registerWindowClass( HINSTANCE _hAppInstance )
wcx.lpszClassName = L"ODBCConfigMainClass"; // name of window class
wcx.hIconSm = nullptr; // small class icon
return ( !!RegisterClassEx( &wcx ) );
return ( !!RegisterClassExW( &wcx ) );
}
/// initializes the application instances
HWND initInstance( HINSTANCE _hAppInstance )
{
HWND hWindow = CreateWindow(
HWND hWindow = CreateWindowW(
L"ODBCConfigMainClass", // name of window class
L"ODBC Config Wrapper", // title-bar string
WS_OVERLAPPEDWINDOW, // top-level window
@@ -114,7 +109,7 @@ HWND initInstance( HINSTANCE _hAppInstance )
}
// main window function
extern "C" int APIENTRY _tWinMain( HINSTANCE _hAppInstance, HINSTANCE, LPTSTR, int )
extern "C" int APIENTRY wWinMain( HINSTANCE _hAppInstance, HINSTANCE, LPWSTR, int )
{
if ( !registerWindowClass( _hAppInstance ) )
return FALSE;

View File

@@ -47,7 +47,6 @@
#include <salhelper/linkhelper.hxx>
#ifdef _WIN32
#define UNICODE
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif

View File

@@ -39,35 +39,39 @@
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
bool SofficeRuns()
{
// check for soffice by searching the communication window
return FindWindowEx( nullptr, nullptr, QUICKSTART_CLASSNAME, nullptr ) != nullptr;
return FindWindowExW( nullptr, nullptr, QUICKSTART_CLASSNAME, nullptr ) != nullptr;
}
bool launchSoffice( )
{
if ( !SofficeRuns() )
{
char filename[_MAX_PATH + 1];
wchar_t filename[_MAX_PATH + 1];
filename[_MAX_PATH] = 0;
GetModuleFileName( nullptr, filename, _MAX_PATH ); // soffice resides in the same dir
char *p = strrchr( filename, '\\' );
GetModuleFileNameW( nullptr, filename, _MAX_PATH ); // soffice resides in the same dir
wchar_t *p = wcsrchr( filename, L'\\' );
if ( !p )
return false;
strncpy( p+1, "soffice.exe", _MAX_PATH - (p+1 - filename) );
wcsncpy( p+1, L"soffice.exe", _MAX_PATH - (p+1 - filename) );
char imagename[_MAX_PATH + 1];
wchar_t imagename[_MAX_PATH + 1];
imagename[_MAX_PATH] = 0;
_snprintf(imagename, _MAX_PATH, "\"%s\" --quickstart", filename );
_snwprintf(imagename, _MAX_PATH, L"\"%s\" --quickstart", filename );
UINT ret = WinExec( imagename, SW_SHOW );
if ( ret < 32 )
STARTUPINFOW aStartupInfo;
ZeroMemory(&aStartupInfo, sizeof(aStartupInfo));
aStartupInfo.cb = sizeof(aStartupInfo);
aStartupInfo.wShowWindow = SW_SHOW;
PROCESS_INFORMATION aProcessInfo;
BOOL bSuccess = CreateProcessW(filename, imagename, nullptr, nullptr, TRUE, 0, nullptr, nullptr, &aStartupInfo, &aProcessInfo);
if ( !bSuccess )
return false;
return true;
@@ -76,10 +80,10 @@ bool launchSoffice( )
return true;
}
int APIENTRY WinMain(HINSTANCE /*hInstance*/,
HINSTANCE /*hPrevInstance*/,
LPSTR /*lpCmdLine*/,
int /*nCmdShow*/)
int APIENTRY wWinMain(HINSTANCE /*hInstance*/,
HINSTANCE /*hPrevInstance*/,
LPWSTR /*lpCmdLine*/,
int /*nCmdShow*/)
{
// Look for --killtray argument
@@ -87,12 +91,12 @@ int APIENTRY WinMain(HINSTANCE /*hInstance*/,
{
if ( 0 == strcmp( __argv[i], "--killtray" ) )
{
HWND hwndTray = FindWindow( QUICKSTART_CLASSNAME, nullptr );
HWND hwndTray = FindWindowW( QUICKSTART_CLASSNAME, nullptr );
if ( hwndTray )
{
UINT uMsgKillTray = RegisterWindowMessage( SHUTDOWN_QUICKSTART_MESSAGE );
SendMessage( hwndTray, uMsgKillTray, 0, 0 );
UINT uMsgKillTray = RegisterWindowMessageW( SHUTDOWN_QUICKSTART_MESSAGE );
SendMessageW( hwndTray, uMsgKillTray, 0, 0 );
}
return 0;

View File

@@ -17,7 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#define UNICODE
#define WIN32_LEAN_AND_MEAN
#ifdef _MSC_VER
#pragma warning(push,1) // disable warnings within system headers
@@ -27,9 +26,6 @@
#pragma warning(pop)
#endif
#define _UNICODE
#include <tchar.h>
#include <string.h>
#include <stdlib.h>
#include <systools/win32/uwinapi.h>
@@ -250,7 +246,7 @@ DWORD WINAPI WaitForUIThread( LPVOID pParam )
#ifndef UNOPKG
HANDLE hProcess = (HANDLE)pParam;
if ( !_tgetenv( TEXT("UNOPKG") ) )
if ( !wgetenv( L"UNOPKG" ) )
WaitForInputIdle( hProcess, INFINITE );
#else
(void) pParam;
@@ -274,10 +270,10 @@ BOOL WINAPI CtrlBreakHandler(
return TRUE;
}
int _tmain( int, _TCHAR ** )
int wmain( int, wchar_t** )
{
TCHAR szTargetFileName[MAX_PATH] = TEXT("");
STARTUPINFO aStartupInfo;
WCHAR szTargetFileName[MAX_PATH] = L"";
STARTUPINFOW aStartupInfo;
PROCESS_INFORMATION aProcessInfo;
ZeroMemory( &aStartupInfo, sizeof(aStartupInfo) );
@@ -331,23 +327,23 @@ int _tmain( int, _TCHAR ** )
// Get image path with same name but with .exe extension
TCHAR szModuleFileName[MAX_PATH];
WCHAR szModuleFileName[MAX_PATH];
GetModuleFileName( nullptr, szModuleFileName, MAX_PATH );
_TCHAR *lpLastDot = _tcsrchr( szModuleFileName, '.' );
if ( lpLastDot && 0 == _tcsicmp( lpLastDot, _T(".COM") ) )
GetModuleFileNameW( nullptr, szModuleFileName, MAX_PATH );
WCHAR *lpLastDot = wcsrchr( szModuleFileName, '.' );
if ( lpLastDot && 0 == wcsicmp( lpLastDot, L".COM" ) )
{
size_t len = lpLastDot - szModuleFileName;
_tcsncpy( szTargetFileName, szModuleFileName, len );
_tcsncpy( szTargetFileName + len, _T(".EXE"), SAL_N_ELEMENTS(szTargetFileName) - len );
wcsncpy( szTargetFileName, szModuleFileName, len );
wcsncpy( szTargetFileName + len, L".EXE", SAL_N_ELEMENTS(szTargetFileName) - len );
}
// Create process with same command line, environment and stdio handles which
// are directed to the created pipes
BOOL fSuccess = CreateProcess(
BOOL fSuccess = CreateProcessW(
szTargetFileName,
GetCommandLine(),
GetCommandLineW(),
nullptr,
nullptr,
TRUE,

View File

@@ -35,7 +35,10 @@
// characters in the debug information
#endif
//#define UNICODE
#if !defined WINVER
#define WINVER 0x0400
#endif
#include <osl/diagnose.h>
#include <sal/log.hxx>
@@ -54,8 +57,8 @@ using osl::ClearableMutexGuard;
namespace /* private */
{
char CLIPSRV_DLL_NAME[] = "sysdtrans.dll";
char g_szWndClsName[] = "MtaOleReqWnd###";
wchar_t CLIPSRV_DLL_NAME[] = L"sysdtrans.dll";
wchar_t g_szWndClsName[] = L"MtaOleReqWnd###";
// messages constants
@@ -86,7 +89,7 @@ namespace /* private */
// ctor
Win32Condition()
{
m_hEvent = CreateEvent(
m_hEvent = CreateEventW(
nullptr, /* no security */
true, /* manual reset */
false, /* initial state not signaled */
@@ -119,7 +122,7 @@ namespace /* private */
queue that's what we want, messages from the PostMessage
queue stay untouched */
MSG msg;
PeekMessage(&msg, nullptr, 0, 0, PM_NOREMOVE);
PeekMessageW(&msg, nullptr, 0, 0, PM_NOREMOVE);
break;
}
@@ -248,7 +251,7 @@ CMtaOleClipboard::CMtaOleClipboard( ) :
m_ClipboardChangedEventCount( 0 )
{
// signals that the thread was successfully setup
m_hEvtThrdReady = CreateEventA( nullptr, MANUAL_RESET, INIT_NONSIGNALED, nullptr );
m_hEvtThrdReady = CreateEventW( nullptr, MANUAL_RESET, INIT_NONSIGNALED, nullptr );
OSL_ASSERT( nullptr != m_hEvtThrdReady );
@@ -260,10 +263,10 @@ CMtaOleClipboard::CMtaOleClipboard( ) :
// setup the clipboard changed notifier thread
m_hClipboardChangedNotifierEvents[0] = CreateEventA( nullptr, MANUAL_RESET, INIT_NONSIGNALED, nullptr );
m_hClipboardChangedNotifierEvents[0] = CreateEventW( nullptr, MANUAL_RESET, INIT_NONSIGNALED, nullptr );
OSL_ASSERT( nullptr != m_hClipboardChangedNotifierEvents[0] );
m_hClipboardChangedNotifierEvents[1] = CreateEventA( nullptr, MANUAL_RESET, INIT_NONSIGNALED, nullptr );
m_hClipboardChangedNotifierEvents[1] = CreateEventW( nullptr, MANUAL_RESET, INIT_NONSIGNALED, nullptr );
OSL_ASSERT( nullptr != m_hClipboardChangedNotifierEvents[1] );
unsigned uThreadId;
@@ -315,7 +318,7 @@ CMtaOleClipboard::~CMtaOleClipboard( )
CloseHandle( m_hEvtThrdReady );
if ( m_MtaOleReqWndClassAtom )
UnregisterClassA( g_szWndClsName, nullptr );
UnregisterClassW( g_szWndClsName, nullptr );
OSL_ENSURE( ( nullptr == m_pfncClipViewerCallback ) &&
!IsWindow( m_hwndNextClipViewer ),
@@ -516,7 +519,7 @@ LRESULT CMtaOleClipboard::onChangeCBChain( HWND hWndRemove, HWND hWndNext )
{
// forward the message to the next one
DWORD_PTR dwpResult;
SendMessageTimeoutA(
SendMessageTimeoutW(
m_hwndNextClipViewer,
WM_CHANGECBCHAIN,
reinterpret_cast<WPARAM>(hWndRemove),
@@ -549,7 +552,7 @@ LRESULT CMtaOleClipboard::onDrawClipboard( )
if ( IsWindow( m_hwndNextClipViewer ) )
{
DWORD_PTR dwpResult;
SendMessageTimeoutA(
SendMessageTimeoutW(
m_hwndNextClipViewer,
WM_DRAWCLIPBOARD,
static_cast< WPARAM >( 0 ),
@@ -567,7 +570,7 @@ LRESULT CMtaOleClipboard::onDrawClipboard( )
LRESULT CMtaOleClipboard::sendMessage( UINT msg, WPARAM wParam, LPARAM lParam )
{
return ::SendMessageA( m_hwndMtaOleReqWnd, msg, wParam, lParam );
return ::SendMessageW( m_hwndMtaOleReqWnd, msg, wParam, lParam );
}
// PostMessage so we don't need to supply the HWND if we send
@@ -575,7 +578,7 @@ LRESULT CMtaOleClipboard::sendMessage( UINT msg, WPARAM wParam, LPARAM lParam )
bool CMtaOleClipboard::postMessage( UINT msg, WPARAM wParam, LPARAM lParam )
{
BOOL const ret = PostMessageA(m_hwndMtaOleReqWnd, msg, wParam, lParam);
BOOL const ret = PostMessageW(m_hwndMtaOleReqWnd, msg, wParam, lParam);
SAL_WARN_IF(0 == ret, "dtrans", "ERROR: PostMessage() failed!");
return ret;
}
@@ -658,7 +661,7 @@ LRESULT CALLBACK CMtaOleClipboard::mtaOleReqWndProc( HWND hWnd, UINT uMsg, WPARA
break;
default:
lResult = DefWindowProcA( hWnd, uMsg, wParam, lParam );
lResult = DefWindowProcW( hWnd, uMsg, wParam, lParam );
break;
}
@@ -667,14 +670,14 @@ LRESULT CALLBACK CMtaOleClipboard::mtaOleReqWndProc( HWND hWnd, UINT uMsg, WPARA
void CMtaOleClipboard::createMtaOleReqWnd( )
{
WNDCLASSEXA wcex;
WNDCLASSEXW wcex;
HINSTANCE hInst = GetModuleHandleA( CLIPSRV_DLL_NAME );
HINSTANCE hInst = GetModuleHandleW( CLIPSRV_DLL_NAME );
OSL_ENSURE( nullptr != hInst, "The name of the clipboard service dll must have changed" );
ZeroMemory( &wcex, sizeof( WNDCLASSEXA ) );
ZeroMemory( &wcex, sizeof(wcex) );
wcex.cbSize = sizeof(WNDCLASSEXA);
wcex.cbSize = sizeof(wcex);
wcex.style = 0;
wcex.lpfnWndProc = static_cast< WNDPROC >( CMtaOleClipboard::mtaOleReqWndProc );
wcex.cbClsExtra = 0;
@@ -687,10 +690,10 @@ void CMtaOleClipboard::createMtaOleReqWnd( )
wcex.lpszClassName = g_szWndClsName;
wcex.hIconSm = nullptr;
m_MtaOleReqWndClassAtom = RegisterClassExA( &wcex );
m_MtaOleReqWndClassAtom = RegisterClassExW( &wcex );
if ( 0 != m_MtaOleReqWndClassAtom )
m_hwndMtaOleReqWnd = CreateWindowA(
m_hwndMtaOleReqWnd = CreateWindowW(
g_szWndClsName, nullptr, 0, 0, 0, 0, 0, nullptr, nullptr, hInst, nullptr );
}
@@ -710,8 +713,8 @@ unsigned int CMtaOleClipboard::run( )
// pumping messages
MSG msg;
while( GetMessageA( &msg, nullptr, 0, 0 ) )
DispatchMessageA( &msg );
while( GetMessageW( &msg, nullptr, 0, 0 ) )
DispatchMessageW( &msg );
nRet = 0;
}

View File

@@ -32,7 +32,6 @@
#pragma warning(pop)
#endif
#include <memory>
#include <tchar.h>
using namespace ::std;

View File

@@ -22,7 +22,6 @@
#endif
#include <windows.h>
#include <comdef.h>
#include <tchar.h>
#include <atlbase.h>
CComModule _Module;
#include <atlcom.h>
@@ -59,11 +58,11 @@ int main( int argc, char *argv[ ], char *envp[ ] )
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL )))
{
_tprintf(_T("CoInitialize failed \n"));
printf("CoInitialize failed \n");
return -1;
}
_Module.Init( ObjectMap, GetModuleHandle( NULL));
_Module.Init( ObjectMap, GetModuleHandleA( NULL));
if( FAILED(hr=doTest()))
{
@@ -82,7 +81,7 @@ HRESULT doTest()
// create the MTA thread that is used to realize MTA calls to the services
// We create the thread and wait until the thread has created its message queue
HANDLE evt= CreateEvent(NULL, FALSE, FALSE, NULL);
HANDLE evt= CreateEventA(NULL, FALSE, FALSE, NULL);
DWORD threadIdMTA=0;
HANDLE hMTAThread= CreateThread( NULL, 0, MTAFunc, &evt, 0, &threadIdMTA);
WaitForSingleObject( evt, INFINITE);
@@ -90,27 +89,27 @@ HRESULT doTest()
HRESULT hr= S_OK;
RECT pos1={0,0,300,200};
AWindow win(_T("DnD starting in Ole STA"), threadIdMTA, pos1);
AWindow win("DnD starting in Ole STA", threadIdMTA, pos1);
RECT pos2={ 0, 205, 300, 405};
AWindow win2( _T("DnD starting in MTA"), threadIdMTA, pos2, true);
AWindow win2("DnD starting in MTA", threadIdMTA, pos2, true);
// win3 and win4 call initialize from an MTA but they are created in an STA
RECT pos3={300,0,600,200};
AWindow win3(_T("DnD starting in OLE STA"), threadIdMTA, pos3, false, true);
AWindow win3("DnD starting in OLE STA", threadIdMTA, pos3, false, true);
RECT pos4={ 300, 205, 600, 405};
AWindow win24( _T("DnD starting in Ole MTA"), threadIdMTA, pos4, true, true);
AWindow win24("DnD starting in Ole MTA", threadIdMTA, pos4, true, true);
MSG msg;
while( GetMessage(&msg, (HWND)NULL, 0, 0) )
while( GetMessageA(&msg, (HWND)NULL, 0, 0) )
{
TranslateMessage( &msg);
DispatchMessage( &msg);
DispatchMessageA( &msg);
}
// Shut down the MTA thread
PostThreadMessage( threadIdMTA, WM_QUIT, 0, 0);
PostThreadMessageA( threadIdMTA, WM_QUIT, 0, 0);
WaitForSingleObject(hMTAThread, INFINITE);
CloseHandle(hMTAThread);
@@ -124,13 +123,13 @@ DWORD WINAPI MTAFunc( void* threadData)
ATLASSERT( FAILED(hr) );
MSG msg;
// force the creation of a message queue
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
PeekMessageA(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
SetEvent( *(HANDLE*)threadData );
RECT pos={0, 406, 300, 605};
AWindow win(_T("DnD, full MTA"), GetCurrentThreadId(), pos, false, true);
AWindow win("DnD, full MTA", GetCurrentThreadId(), pos, false, true);
while( GetMessage(&msg, (HWND)NULL, 0, 0) )
while( GetMessageA(&msg, (HWND)NULL, 0, 0) )
{
switch( msg.message)
{
@@ -168,7 +167,7 @@ DWORD WINAPI MTAFunc( void* threadData)
} // end switch
TranslateMessage( &msg);
DispatchMessage( &msg);
DispatchMessageA( &msg);
}
CoUninitialize();

View File

@@ -64,8 +64,8 @@ END_OBJECT_MAP()
#pragma clang diagnostic pop
#endif
#define X64_LIB_NAME "so_activex_x64.dll"
#define X32_LIB_NAME "so_activex.dll"
#define X64_LIB_NAME L"so_activex_x64.dll"
#define X32_LIB_NAME L"so_activex.dll"
// to provide windows xp as build systems for mingw we need to define KEY_WOW64_64KEY
// in mingw 3.13 KEY_WOW64_64KEY isn't available < Win2003 systems.
@@ -196,7 +196,7 @@ const char* const aLocalPrefix = "Software\\Classes\\";
BOOL createKey( HKEY hkey,
const char* aKeyToCreate,
REGSAM nKeyAccess,
REGSAM nKeyAccess,
const char* aValue = nullptr,
const char* aChildName = nullptr,
const char* aChildValue = nullptr )
@@ -220,8 +220,34 @@ BOOL createKey( HKEY hkey,
}
BOOL createKey( HKEY hkey,
const wchar_t* aKeyToCreate,
REGSAM nKeyAccess,
const wchar_t* aValue = nullptr,
const wchar_t* aChildName = nullptr,
const wchar_t* aChildValue = nullptr )
{
HKEY hkey1;
return ( ERROR_SUCCESS == RegCreateKeyExW( hkey, aKeyToCreate, 0, nullptr, REG_OPTION_NON_VOLATILE, nKeyAccess, nullptr, &hkey1 , nullptr )
&& ( !aValue || ERROR_SUCCESS == RegSetValueExW( hkey1,
L"",
0,
REG_SZ,
reinterpret_cast<const BYTE*>(aValue),
sal::static_int_cast<DWORD>(wcslen(aValue)*sizeof(wchar_t))))
&& ( !aChildName || ERROR_SUCCESS == RegSetValueExW( hkey1,
aChildName,
0,
REG_SZ,
reinterpret_cast<const BYTE*>(aChildValue),
sal::static_int_cast<DWORD>(wcslen(aChildValue)*sizeof(wchar_t))))
&& ERROR_SUCCESS == RegCloseKey( hkey1 ) );
}
STDAPI DllUnregisterServerNative( int nMode, BOOL bForAllUsers, BOOL bFor64Bit );
STDAPI DllRegisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAccess, const char* pProgramPath, const char* pLibName )
HRESULT DllRegisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAccess, const wchar_t* pProgramPath, const wchar_t* pLibName )
{
BOOL aResult = FALSE;
@@ -230,7 +256,7 @@ STDAPI DllRegisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAc
HKEY hkey2 = nullptr;
HKEY hkey3 = nullptr;
HKEY hkey4 = nullptr;
char aSubKey[513];
char aSubKey[513];
int ind;
const char* aPrefix = aLocalPrefix; // bForAllUsers ? "" : aLocalPrefix;
@@ -241,13 +267,13 @@ STDAPI DllRegisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAc
if ( bForAllUsers )
DllUnregisterServerNative( nMode, false, false );
if ( pProgramPath && strlen( pProgramPath ) < 1024 )
if ( pProgramPath && wcslen( pProgramPath ) < 1024 )
{
char pActiveXPath[1124];
char pActiveXPath101[1124];
wchar_t pActiveXPath[1124];
wchar_t pActiveXPath101[1124];
sprintf( pActiveXPath, "%s\\%s", pProgramPath, pLibName );
sprintf( pActiveXPath101, "%s\\%s, 101", pProgramPath, pLibName );
swprintf( pActiveXPath, L"%s\\%s", pProgramPath, pLibName );
swprintf( pActiveXPath101, L"%s\\%s, 101", pProgramPath, pLibName );
{
wsprintfA( aSubKey, "%sCLSID\\%s", aPrefix, aClassID );
@@ -256,12 +282,12 @@ STDAPI DllRegisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAc
&& ERROR_SUCCESS == RegSetValueExA( hkey, "", 0, REG_SZ, reinterpret_cast<const BYTE*>("SOActiveX Class"), 17 )
&& createKey( hkey, "Control", nKeyAccess )
&& createKey( hkey, "EnableFullPage", nKeyAccess )
&& createKey( hkey, "InprocServer32", nKeyAccess, pActiveXPath, "ThreadingModel", "Apartment" )
&& createKey( hkey, L"InprocServer32", nKeyAccess, pActiveXPath, L"ThreadingModel", L"Apartment" )
&& createKey( hkey, "MiscStatus", nKeyAccess, "0" )
&& createKey( hkey, "MiscStatus\\1", nKeyAccess, "131473" )
&& createKey( hkey, "ProgID", nKeyAccess, "so_activex.SOActiveX.1" )
&& createKey( hkey, "Programmable", nKeyAccess )
&& createKey( hkey, "ToolboxBitmap32", nKeyAccess, pActiveXPath101 )
&& createKey( hkey, L"ToolboxBitmap32", nKeyAccess, pActiveXPath101 )
&& createKey( hkey, "TypeLib", nKeyAccess, aTypeLib )
&& createKey( hkey, "Version", nKeyAccess, "1.0" )
&& createKey( hkey, "VersionIndependentProgID", nKeyAccess, "so_activex.SOActiveX" )
@@ -281,10 +307,10 @@ STDAPI DllRegisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAc
&& createKey( hkey2, "1.0", nKeyAccess, "wrap_activex 1.0 Type Library" )
&& ERROR_SUCCESS == RegCreateKeyExA( hkey2, "1.0", 0, nullptr, REG_OPTION_NON_VOLATILE, nKeyAccess, nullptr, &hkey3 , nullptr )
&& ERROR_SUCCESS == RegCreateKeyExA( hkey3, "0", 0, nullptr, REG_OPTION_NON_VOLATILE, nKeyAccess, nullptr, &hkey4 , nullptr )
&& createKey( hkey4, "win32", nKeyAccess, pActiveXPath )
&& createKey( hkey4, L"win32", nKeyAccess, pActiveXPath )
&& ERROR_SUCCESS == RegCloseKey( hkey4 )
&& createKey( hkey3, "FLAGS", nKeyAccess, "0" )
&& createKey( hkey3, "HELPDIR", nKeyAccess, pProgramPath )
&& createKey( hkey3, L"HELPDIR", nKeyAccess, pProgramPath )
&& ERROR_SUCCESS == RegCloseKey( hkey3 )
&& ERROR_SUCCESS == RegCloseKey( hkey2 )
&& ERROR_SUCCESS == RegCloseKey( hkey1 )
@@ -363,7 +389,7 @@ STDAPI DllRegisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAc
return HRESULT(aResult);
}
STDAPI DllRegisterServerNative( int nMode, BOOL bForAllUsers, BOOL bFor64Bit, const char* pProgramPath )
STDAPI DllRegisterServerNative( int nMode, BOOL bForAllUsers, BOOL bFor64Bit, const wchar_t* pProgramPath )
{
HRESULT hr = S_OK;
if ( bFor64Bit )
@@ -418,10 +444,10 @@ STDAPI DllUnregisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKey
fErr = TRUE;
else
{
if ( ERROR_SUCCESS != RegDeleteValue( hkey, "CLSID" ) )
if ( ERROR_SUCCESS != RegDeleteValueA( hkey, "CLSID" ) )
fErr = TRUE;
if ( ERROR_SUCCESS != RegQueryInfoKey( hkey, nullptr, nullptr, nullptr,
if ( ERROR_SUCCESS != RegQueryInfoKeyA( hkey, nullptr, nullptr, nullptr,
&nSubKeys, nullptr, nullptr,
&nValues, nullptr, nullptr, nullptr, nullptr ) )
{
@@ -443,7 +469,7 @@ STDAPI DllUnregisterServerNative_Impl( int nMode, BOOL bForAllUsers, REGSAM nKey
fErr = TRUE;
else
{
if ( ERROR_SUCCESS != RegQueryInfoKey( hkey, nullptr, nullptr, nullptr,
if ( ERROR_SUCCESS != RegQueryInfoKeyA( hkey, nullptr, nullptr, nullptr,
&nSubKeys, nullptr, nullptr,
&nValues, nullptr, nullptr, nullptr, nullptr ) )
{
@@ -637,15 +663,15 @@ STDAPI DllUnregisterServerDoc_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAcc
fErr = TRUE;
else
{
if ( ERROR_SUCCESS != RegDeleteValue( hkey, "Extension" ) )
if ( ERROR_SUCCESS != RegDeleteValueA( hkey, "Extension" ) )
fErr = TRUE;
if ( ERROR_SUCCESS != RegDeleteValue( hkey, "CLSID" ) )
if ( ERROR_SUCCESS != RegDeleteValueA( hkey, "CLSID" ) )
fErr = TRUE;
if ( ERROR_SUCCESS != RegQueryInfoKey( hkey, nullptr, nullptr, nullptr,
&nSubKeys, nullptr, nullptr,
&nValues, nullptr, nullptr, nullptr, nullptr ) )
if ( ERROR_SUCCESS != RegQueryInfoKeyA( hkey, nullptr, nullptr, nullptr,
&nSubKeys, nullptr, nullptr,
&nValues, nullptr, nullptr, nullptr, nullptr ) )
{
RegCloseKey( hkey );
hkey = nullptr;
@@ -665,12 +691,12 @@ STDAPI DllUnregisterServerDoc_Impl( int nMode, BOOL bForAllUsers, REGSAM nKeyAcc
fErr = TRUE;
else
{
if ( ERROR_SUCCESS != RegDeleteValue( hkey, "Content Type" ) )
if ( ERROR_SUCCESS != RegDeleteValueA( hkey, "Content Type" ) )
fErr = TRUE;
if ( ERROR_SUCCESS != RegQueryInfoKey( hkey, nullptr, nullptr, nullptr,
&nSubKeys, nullptr, nullptr,
&nValues, nullptr, nullptr, nullptr, nullptr ) )
if ( ERROR_SUCCESS != RegQueryInfoKeyA( hkey, nullptr, nullptr, nullptr,
&nSubKeys, nullptr, nullptr,
&nValues, nullptr, nullptr, nullptr, nullptr ) )
{
RegCloseKey( hkey );
hkey = nullptr;
@@ -709,14 +735,14 @@ STDAPI DllRegisterServer()
{
HRESULT aResult = E_FAIL;
HMODULE aCurModule = GetModuleHandleA( bX64 ? X64_LIB_NAME : X32_LIB_NAME );
HMODULE aCurModule = GetModuleHandleW( bX64 ? X64_LIB_NAME : X32_LIB_NAME );
DWORD nLibNameLen = sal::static_int_cast<DWORD>(
strlen((bX64) ? X64_LIB_NAME : X32_LIB_NAME));
wcslen((bX64) ? X64_LIB_NAME : X32_LIB_NAME));
if( aCurModule )
{
char pProgramPath[1024];
DWORD nLen = GetModuleFileNameA( aCurModule, pProgramPath, 1024 );
wchar_t pProgramPath[1024];
DWORD nLen = GetModuleFileNameW( aCurModule, pProgramPath, 1024 );
if ( nLen && nLen > nLibNameLen + 1 )
{
pProgramPath[ nLen - nLibNameLen - 1 ] = 0;

View File

@@ -34,7 +34,6 @@
#pragma warning (disable:4005)
#pragma warning (disable:4548)
#include <tchar.h>
#include <dispex.h>
#include <prewin.h>

View File

@@ -30,19 +30,14 @@
#include <windows.h>
#include <wininet.h>
#ifdef UNICODE
#define _UNICODE
#endif
#include <tchar.h>
// #i71984
extern "C" bool SAL_CALL WNT_hasInternetConnection()
{
DWORD dwFlags;
TCHAR szConnectionName[1024];
WCHAR szConnectionName[1024];
__try {
BOOL fIsConnected = InternetGetConnectedStateEx(
BOOL fIsConnected = InternetGetConnectedStateExW(
&dwFlags,
szConnectionName,
SAL_N_ELEMENTS(szConnectionName),

View File

@@ -39,7 +39,6 @@
extern CComModule _Module;
#include <atlcom.h>
#include <stdio.h>
#include <tchar.h>
#include <string.h>
//{{AFX_INSERT_LOCATION}}

View File

@@ -24,7 +24,6 @@
#endif
#include <windows.h>
#include <comdef.h>
#include <tchar.h>
#include <atlbase.h>
extern CComModule _Module;
#include <atlcom.h>
@@ -63,23 +62,23 @@ void printResultVariantArray( VARIANT & var);
void printVariant( VARIANT & var);
int SAL_CALL _tmain( int argc, _TCHAR * argv[] )
int SAL_CALL main( int argc, char* argv[] )
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
{
_tprintf(_T("CoInitialize failed \n"));
printf("CoInitialize failed \n");
return -1;
}
_Module.Init( ObjectMap, GetModuleHandle( NULL));
_Module.Init( ObjectMap, GetModuleHandleA( NULL));
if( FAILED(hr=doTest()))
{
_com_error err( hr);
const TCHAR * errMsg= err.ErrorMessage();
MessageBox( NULL, errMsg, "Test failed", MB_ICONERROR);
const CHAR * errMsg= err.ErrorMessage();
MessageBoxA( NULL, errMsg, "Test failed", MB_ICONERROR);
}
@@ -292,8 +291,8 @@ HRESULT doTest()
V_DISPATCHREF(&varOutXInterface)= &dispOut.p;
// In Parameter ( all of type Sequence ###########################################################
OutputDebugString( _T("In parameter of type Sequence ###########################################\n"
"The functions return the Sequence parameter \n\n"));
OutputDebugStringA( "In parameter of type Sequence ###########################################\n"
"The functions return the Sequence parameter \n\n");
OutputDebugStringA("methodByte | Params: \n");
printVariant( varByteArray);
@@ -338,48 +337,48 @@ HRESULT doTest()
printVariant( varRet);
// Out Parameter ###########################################################################
OutputDebugString( _T("Out parameter ###########################################\n\n"));
OutputDebugStringA("Out parameter ###########################################\n\n");
OutputDebugString(_T("testout_methodByte \n"));
OutputDebugStringA("testout_methodByte \n");
hr= oletest.InvokeN(static_cast<LPCOLESTR>(L"testout_methodByte"), &varOutByte, 1, &varRet);
OutputDebugString(_T("testout_methodByte | out value: \n"));
OutputDebugStringA("testout_methodByte | out value: \n");
printVariant( varOutByte);
OutputDebugString(_T("testout_methodShort \n"));
OutputDebugStringA("testout_methodShort \n");
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodShort"), &varOutShort, &varRet);
OutputDebugString(_T("testout_methodShort | out value: \n"));
OutputDebugStringA("testout_methodShort | out value: \n");
printVariant( varOutShort);
OutputDebugString(_T("testout_methodLong \n"));
OutputDebugStringA("testout_methodLong \n");
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodLong"), &varOutLong, &varRet);
OutputDebugString(_T("testout_methodLong | out value: \n"));
OutputDebugStringA("testout_methodLong | out value: \n");
printVariant( varOutLong);
OutputDebugString(_T("testout_methodDouble \n"));
OutputDebugStringA("testout_methodDouble \n");
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodDouble"), &varOutDouble, &varRet);
OutputDebugString(_T("testout_methodDouble | out value: \n"));
OutputDebugStringA("testout_methodDouble | out value: \n");
printVariant( varOutDouble);
OutputDebugString(_T("testout_methodString \n"));
OutputDebugStringA("testout_methodString \n");
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodString"), &varOutString, &varRet);
OutputDebugString(_T("testout_methodString | out value: \n"));
OutputDebugStringA("testout_methodString | out value: \n");
printVariant( varOutString);
OutputDebugString(_T("testout_methodAny \n"));
OutputDebugStringA("testout_methodAny \n");
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodAny"), &varOutAny, &varRet);
OutputDebugString(_T("methodAny | out value: \n"));
OutputDebugStringA("methodAny | out value: \n");
printVariant( varOutAny);
OutputDebugString(_T("testout_methodXInterface \n"));
OutputDebugStringA("testout_methodXInterface \n");
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodXInterface"), &varOutXInterface, &varRet);
OutputDebugString(_T("methodAny | out value: \n"));
OutputDebugStringA("methodAny | out value: \n");
printVariant( varOutXInterface);
CComDispatchDriver outDisp( *varOutXInterface.ppdispVal);
CComVariant varAttr3;
outDisp.GetPropertyByName(L"AttrAny2", &varAttr3);
ATLTRACE("property OleTest.AttrAny2: %s", W2T(varAttr3.bstrVal));
ATLTRACE("property OleTest.AttrAny2: %s", W2A(varAttr3.bstrVal));
OutputDebugString(_T("testout_methodMulParams1 ( 2 out Parameter) \n"));
OutputDebugStringA("testout_methodMulParams1 ( 2 out Parameter) \n");
long longOut2=0;
CComVariant _params[2];
longOut=0;
@@ -387,72 +386,72 @@ HRESULT doTest()
_params[1].vt= VT_BYREF | VT_I4;
V_I4REF(& _params[1])= &longOut2;
hr= oletest.InvokeN( static_cast<LPCOLESTR>(L"testout_methodMulParams1"), (VARIANT*)&_params, 2);
OutputDebugString(_T("testout_methodMulParams1 | out values: \n"));
OutputDebugStringA("testout_methodMulParams1 | out values: \n");
printVariant( _params[1]);
printVariant( _params[0]);
OutputDebugString(_T("testout_methodMulParams2 ( 3 out Parameter) \n"));
OutputDebugStringA("testout_methodMulParams2 ( 3 out Parameter) \n");
CComVariant _params2[3];
_params2[2]= varOutLong;
_params2[1].vt= VT_BYREF | VT_I4;
V_I4REF(& _params2[1])= &longOut2;
_params2[0]= varOutString;
hr= oletest.InvokeN( static_cast<LPCOLESTR>( L"testout_methodMulParams2"), (VARIANT*)&_params2, 3);
OutputDebugString(_T("testout_methodMulParams2 | out values: \n"));
OutputDebugStringA("testout_methodMulParams2 | out values: \n");
printVariant( _params2[2]);
printVariant( _params2[1]);
printVariant( _params2[0]);
OutputDebugString(_T("testout_methodMulParams3 ( 1 in and 1 out Parameter) \n"));
OutputDebugStringA("testout_methodMulParams3 ( 1 in and 1 out Parameter) \n");
CComVariant _params3[2];
_params3[1]= CComBSTR(L" In string");
_params3[0]= varOutString;
hr= oletest.InvokeN( static_cast<LPCOLESTR>( L"testout_methodMulParams3"), (VARIANT*)&_params3, 2);
OutputDebugString(_T("testout_methodMulParams3 | out values: \n"));
OutputDebugStringA("testout_methodMulParams3 | out values: \n");
printVariant( _params3[1]);
printVariant( _params3[0]);
//In Out Parameter ###########################################################################
OutputDebugString( _T("In Out parameter ###########################################\n\n"));
OutputDebugStringA("In Out parameter ###########################################\n\n");
*V_I1REF(&varOutByte)= 5;
ATLTRACE(_T("testinout_methodByte | in value: %d \n"), *V_I1REF(&varOutByte));
ATLTRACE("testinout_methodByte | in value: %d \n", *V_I1REF(&varOutByte));
hr= oletest.InvokeN(static_cast<LPCOLESTR>(L"testinout_methodByte"), &varOutByte, 1, &varRet);
OutputDebugString(_T("testinout_methodByte | out value: \n"));
OutputDebugStringA("testinout_methodByte | out value: \n");
printVariant( varOutByte);
OutputDebugString(_T("testinout_methodShort | in value= 1000 \n"));
OutputDebugStringA("testinout_methodShort | in value= 1000 \n");
*V_UI2REF(&varOutShort)= 1000;
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodShort"), &varOutShort, &varRet);
OutputDebugString(_T("testinout_methodShort | out value: \n"));
OutputDebugStringA("testinout_methodShort | out value: \n");
printVariant( varOutShort);
OutputDebugString(_T("testinout_methodLong | in value= 10000 \n"));
OutputDebugStringA("testinout_methodLong | in value= 10000 \n");
*V_UI4REF(&varOutLong)= 10000;
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodLong"), &varOutLong, &varRet);
OutputDebugString(_T("testinout_methodLong | out value: \n"));
OutputDebugStringA("testinout_methodLong | out value: \n");
printVariant( varOutLong);
*V_R8REF(&varOutDouble)= 3.14;
ATLTRACE(_T("testinou_methodDouble in value: %f \n"),*V_R8REF(&varOutDouble));
ATLTRACE("testinou_methodDouble in value: %f \n",*V_R8REF(&varOutDouble));
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodDouble"), &varOutDouble, &varRet);
OutputDebugString(_T("testinout_methodDouble | out value: \n"));
OutputDebugStringA("testinout_methodDouble | out value: \n");
printVariant( varOutDouble);
SysFreeString( *V_BSTRREF(&varOutString));
*V_BSTRREF(&varOutString)= SysAllocString( L"this is a in string");
ATLTRACE(_T("testinout_methodString | value: %s \n"), W2T(*V_BSTRREF(&varOutString)));
ATLTRACE("testinout_methodString | value: %s \n", W2A(*V_BSTRREF(&varOutString)));
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodString"), &varOutString, &varRet);
OutputDebugString(_T("testinout_methodString | out value: \n"));
OutputDebugStringA("testinout_methodString | out value: \n");
printVariant( varOutString);
CComVariant var1(CComBSTR(L" this is a string in a VARIANT"));
CComVariant outVar1;
outVar1.vt= VT_BYREF | VT_VARIANT;
outVar1.pvarVal= &var1;
ATLTRACE(_T("testinout_methodAny | parameter: %s\n"), W2T(var1.bstrVal));
ATLTRACE("testinout_methodAny | parameter: %s\n", W2A(var1.bstrVal));
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodAny"), &varOutAny, &varRet);
OutputDebugString(_T("testinout_methodAny | out value: \n"));
OutputDebugStringA("testinout_methodAny | out value: \n");
printVariant( varOutAny);
CComPtr< IUnknown > objectIn = unk1;
@@ -460,22 +459,22 @@ HRESULT doTest()
varOutIFace.vt= VT_BYREF | VT_UNKNOWN;
varOutIFace.ppunkVal= &objectIn.p;
(*varOutIFace.ppunkVal)->AddRef();
OutputDebugString(_T("testinout_methodXInterface | in value: \n"));
OutputDebugStringA("testinout_methodXInterface | in value: \n");
printVariant(varOutIFace);
hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodXInterface"), &varOutIFace, &varRet);
OutputDebugString(_T("testinout_methodXInterface | out value: \n"));
OutputDebugStringA("testinout_methodXInterface | out value: \n");
printVariant( varOutIFace);
// Properties ######################################################################
OutputDebugString( _T(" Properties ###########################################\n\n"));
OutputDebugStringA(" Properties ###########################################\n\n");
OutputDebugString(_T("set property \"AttrByte\" | value"));
OutputDebugStringA("set property \"AttrByte\" | value");
//CComVariant propArByte;
//propArByte.vt= VT_ARRAY | VT_I1;
varParam1.parray= (SAFEARRAY*)arByte;
printVariant( varParam1);
hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"AttrByte"), &varParam1);
OutputDebugString(_T("get property \"AttrByte\" | value:"));
OutputDebugStringA("get property \"AttrByte\" | value:");
varRet.Clear();
hr= oletest.GetPropertyByName( static_cast<LPCOLESTR>(L"AttrByte"), &varRet);
printVariant( varRet);
@@ -509,13 +508,13 @@ void printVariant( VARIANT & _var)
double doubleValue;
IUnknown* unkValue;
BSTR bstrValue;
OutputDebugString( _T("# Array \n"));
OutputDebugStringA("# Array \n");
for( long i= 0; i < count; i++)
{
// CComVariant variantValue;
TCHAR *buf[256];
wsprintf( (TCHAR*)buf, _T("%d : "), i);
OutputDebugString( (TCHAR*)buf);
CHAR buf[256];
wsprintfA( buf, "%d : ", i);
OutputDebugStringA( buf);
VARIANT varTemp;
VariantInit( &varTemp);
VARIANT variantValue;
@@ -580,17 +579,17 @@ void printVariant( VARIANT & _var)
}
else
{
TCHAR buf[256];
CHAR buf[256];
switch (var.vt)
{
case VT_I1: wsprintf( (TCHAR*)buf, _T(" VT_I1: %d \n"), V_I1( &var) );
case VT_I1: wsprintfA( buf, " VT_I1: %d \n", V_I1( &var) );
break;
case VT_UI1: wsprintf( (TCHAR*)buf, _T(" VT_UI1: %d \n"), V_I1( &var) );
case VT_UI1: wsprintfA( buf, " VT_UI1: %d \n", V_I1( &var) );
break;
case VT_I2: wsprintf( (TCHAR*)buf, _T(" VT_I2: %d \n"), V_I2( &var) );
case VT_I2: wsprintfA( buf, " VT_I2: %d \n", V_I2( &var) );
break;
case VT_I4: wsprintf( (TCHAR*)buf, _T(" VT_I4: %d \n"), V_I4( &var) );
case VT_I4: wsprintfA( buf, " VT_I4: %d \n", V_I4( &var) );
break;
case VT_R8:
{
@@ -601,7 +600,7 @@ void printVariant( VARIANT & _var)
// double source = 3.1415926535;
// buffer = _ecvt( V_R8(&var), precision, &decimal, &sign );
sprintf( (TCHAR*)buf, _T(" VT_R8: %f \n"),V_R8( &var) );
sprintf( buf, " VT_R8: %f \n",V_R8( &var) );
break;
}
case VT_UNKNOWN:
@@ -610,7 +609,7 @@ void printVariant( VARIANT & _var)
CComDispatchDriver disp( var.punkVal);
CComVariant ret;
hr= disp.GetPropertyByName( static_cast<LPCOLESTR>(L"Name"), &ret);
wsprintf( (TCHAR*)buf, _T(" VT_UNKNOWN: property \"Name\": %s \n"), W2T(ret.bstrVal));
wsprintfA( buf, " VT_UNKNOWN: property \"Name\": %s \n", W2A(ret.bstrVal));
break;
}
case VT_DISPATCH:
@@ -619,9 +618,9 @@ void printVariant( VARIANT & _var)
CComDispatchDriver disp( var.punkVal);
CComVariant ret;
if( SUCCEEDED( hr= disp.GetPropertyByName( static_cast<LPCOLESTR>(L"Name"), &ret)))
wsprintf( (TCHAR*)buf, _T(" VT_DISPATCH: property \"Name\": %s \n"), W2T(ret.bstrVal));
wsprintfA( buf, " VT_DISPATCH: property \"Name\": %s \n", W2A(ret.bstrVal));
else
wsprintf( (TCHAR*)buf, _T(" VT_DISPATCH \n"));
wsprintfA( buf, " VT_DISPATCH \n");
break;
}
@@ -629,16 +628,16 @@ void printVariant( VARIANT & _var)
case VT_BSTR:
{
TCHAR* str= W2T( var.bstrVal);
wsprintf( (TCHAR*)buf, _T(" VT_BSTR: %s \n"), str);
CHAR* str= W2A( var.bstrVal);
wsprintfA( buf, " VT_BSTR: %s \n", str);
}
break;
default:
wsprintf( (TCHAR*)buf, _T("\n"));
wsprintfA( buf, "\n");
}
OutputDebugString( (TCHAR*) buf);
OutputDebugStringA( buf);
}
return;

View File

@@ -24,7 +24,6 @@
#endif
#include <windows.h>
#include <comdef.h>
#include <tchar.h>
#include <atlbase.h>
#include <atlcom.h>
#include <stdio.h>
@@ -49,12 +48,12 @@ bool incrementMultidimensionalIndex(
const sal_Int32 * parDimensionLengths,
sal_Int32 * parMultidimensionalIndex);
int SAL_CALL _tmain( int /*argc*/, _TCHAR * /*argv[]*/ )
int SAL_CALL main( int /*argc*/, char** /*argv*/ )
{
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
{
_tprintf(_T("CoInitialize failed \n"));
printf("CoInitialize failed \n");
return -1;
}
@@ -62,8 +61,8 @@ int SAL_CALL _tmain( int /*argc*/, _TCHAR * /*argv[]*/ )
if( FAILED(hr=doTest()))
{
_com_error err( hr);
const TCHAR * errMsg= err.ErrorMessage();
MessageBox( NULL, errMsg, "Test failed", MB_ICONERROR);
const CHAR * errMsg= err.ErrorMessage();
MessageBoxA( NULL, errMsg, "Test failed", MB_ICONERROR);
}
CoUninitialize();

View File

@@ -25,7 +25,6 @@
#endif
#pragma warning(disable: 4917)
#include <comdef.h>
#include <tchar.h>
#include <atlbase.h>
#include <atlcom.h>
@@ -36,15 +35,15 @@ int main(int /*argc*/, char** /*argv*/)
HRESULT hr;
if( FAILED( hr=CoInitialize(NULL)))
{
_tprintf(_T("CoInitialize failed \n"));
printf("CoInitialize failed \n");
return -1;
}
if( FAILED(hr=doTest()))
{
_com_error err( hr);
const TCHAR * errMsg= err.ErrorMessage();
MessageBox( NULL, errMsg, "Test failed", MB_ICONERROR);
const CHAR * errMsg= err.ErrorMessage();
MessageBoxA( NULL, errMsg, "Test failed", MB_ICONERROR);
}
CoUninitialize();

View File

@@ -33,7 +33,6 @@
#include <stdio.h>
#include <windows.h>
#include <comdef.h>
#include <tchar.h>
#include <atlbase.h>
extern CComModule _Module;
#include <atlcom.h>

View File

@@ -39,7 +39,6 @@
//something, but do not change the name of _Module
extern CComModule _Module;
#include <atlcom.h>
#include <tchar.h>
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

View File

@@ -20,29 +20,9 @@
#ifndef INCLUDED_SYSTOOLS_WIN32_QSWIN32_H
#define INCLUDED_SYSTOOLS_WIN32_QSWIN32_H
#define QUICKSTART_CLASSNAMEA "LO Listener Class"
#define QUICKSTART_WINDOWNAMEA "LO Listener Window"
#define SHUTDOWN_QUICKSTART_MESSAGEA "LO KillTray"
#define QUICKSTART_CLASSNAMEW L##QUICKSTART_CLASSNAMEA
#define QUICKSTART_WINDOWNAMEW L##QUICKSTART_WINDOWNAMEA
#define SHUTDOWN_QUICKSTART_MESSAGEW L##SHUTDOWN_QUICKSTART_MESSAGEA
#ifdef UNICODE
# define QUICKSTART_CLASSNAME QUICKSTART_CLASSNAMEW
# define QUICKSTART_WINDOWNAME QUICKSTART_WINDOWNAMEW
# define SHUTDOWN_QUICKSTART_MESSAGE SHUTDOWN_QUICKSTART_MESSAGEW
# ifndef FindWindow
# define FindWindow FindWindowW
# endif
#else
# define QUICKSTART_CLASSNAME QUICKSTART_CLASSNAMEA
# define QUICKSTART_WINDOWNAME QUICKSTART_WINDOWNAMEA
# define SHUTDOWN_QUICKSTART_MESSAGE SHUTDOWN_QUICKSTART_MESSAGEA
# ifndef FindWindow
# define FindWindow FindWindowA
# endif
#endif
#define QUICKSTART_CLASSNAME L"LO Listener Class"
#define QUICKSTART_WINDOWNAME L"LO Listener Window"
#define SHUTDOWN_QUICKSTART_MESSAGE L"LO KillTray"
#endif // INCLUDED_SYSTOOLS_WIN32_QSWIN32_H

View File

@@ -83,7 +83,6 @@ const sal_Char pBuffer_Blank[] = "";
#endif
#if defined(_WIN32) // Windows
# include <tchar.h>
# include <io.h>
# define PATH_MAX MAX_PATH
# define TEST_PLATFORM "c:/"

View File

@@ -43,13 +43,7 @@
#define RUNNING_ON_VALGRIND false
#endif
#if defined(_WIN32) // Windows
#if !defined WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
#endif
# include <windows.h>
# include <tchar.h>
#else
#if !defined(_WIN32) // Windows
#include <unistd.h>
#endif

View File

@@ -18,11 +18,8 @@
*/
#if defined(_WIN32) // Windows
# define UNICODE
# define _UNICODE
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# include <tchar.h>
#else
# include <unistd.h>
#endif
@@ -55,28 +52,26 @@ void wait_for_seconds(char* time)
#ifdef _WIN32
void w_to_a(LPCTSTR _strW, LPSTR strA, DWORD size)
void w_to_a(LPCWSTR strW, LPSTR strA, DWORD size)
{
LPCWSTR strW = reinterpret_cast<LPCWSTR>(_strW);
WideCharToMultiByte(CP_ACP, 0, strW, -1, strA, size, nullptr, nullptr);
}
void dump_env(char* file_path)
{
LPTSTR env = reinterpret_cast<LPTSTR>(
GetEnvironmentStrings());
LPTSTR p = env;
LPWSTR env = GetEnvironmentStringsW();
LPWSTR p = env;
std::ofstream file(file_path);
char buffer[32767];
while (size_t l = _tcslen(reinterpret_cast<wchar_t*>(p)))
while (size_t l = wcslen(p))
{
w_to_a(p, buffer, sizeof(buffer));
file << buffer << '\0';
p += l + 1;
}
FreeEnvironmentStrings(env);
FreeEnvironmentStringsW(env);
}
#else
void dump_env(char* file_path)

View File

@@ -24,11 +24,11 @@
static BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam )
{
MSIHANDLE hMSI = static_cast< MSIHANDLE >( lParam );
CHAR szClassName[sizeof(QUICKSTART_CLASSNAMEA) + 1];
WCHAR szClassName[sizeof(QUICKSTART_CLASSNAME)/sizeof(WCHAR) + 1];
int nCharsCopied = GetClassNameA( hWnd, szClassName, sizeof( szClassName ) );
int nCharsCopied = GetClassNameW( hWnd, szClassName, sizeof(szClassName)/sizeof(szClassName[0]) );
if ( nCharsCopied && !_stricmp( QUICKSTART_CLASSNAMEA, szClassName ) )
if ( nCharsCopied && !_wcsicmp( QUICKSTART_CLASSNAME, szClassName ) )
{
DWORD dwProcessId;
@@ -39,10 +39,10 @@ static BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam )
if ( !_wcsnicmp( sImagePath.c_str(), sOfficeImageDir.c_str(), sOfficeImageDir.length() ) )
{
UINT uMsgShutdownQuickstart = RegisterWindowMessageA( SHUTDOWN_QUICKSTART_MESSAGEA );
UINT uMsgShutdownQuickstart = RegisterWindowMessageW( SHUTDOWN_QUICKSTART_MESSAGE );
if ( uMsgShutdownQuickstart )
SendMessageA( hWnd, uMsgShutdownQuickstart, 0, 0 );
SendMessageW( hWnd, uMsgShutdownQuickstart, 0, 0 );
HANDLE hProcess = OpenProcess( SYNCHRONIZE, FALSE, dwProcessId );

View File

@@ -17,8 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#define UNICODE
#ifdef _MSC_VER
#pragma warning(push, 1) /* disable warnings within system headers */
#endif
@@ -41,7 +39,7 @@
#define WRITER_COMPONENT 16
#define MATH_COMPONENT 32
typedef int ( __stdcall * DllNativeRegProc ) ( int, BOOL, BOOL, const char* );
typedef int ( __stdcall * DllNativeRegProc ) ( int, BOOL, BOOL, const wchar_t* );
typedef int ( __stdcall * DllNativeUnregProc ) ( int, BOOL, BOOL );
BOOL UnicodeEquals( wchar_t const * pStr1, wchar_t const * pStr2 )
@@ -61,34 +59,20 @@ BOOL UnicodeEquals( wchar_t const * pStr1, wchar_t const * pStr2 )
}
char* UnicodeToAnsiString( wchar_t const * pUniString )
void RegisterActiveXNative( const wchar_t* pActiveXPath, int nMode, BOOL InstallForAllUser, BOOL InstallFor64Bit )
{
int len = WideCharToMultiByte(
CP_ACP, 0, pUniString, -1, nullptr, 0, nullptr, nullptr );
char* buff = static_cast<char*>( malloc( len ) );
WideCharToMultiByte(
CP_ACP, 0, pUniString, -1, buff, len, nullptr, nullptr );
return buff;
}
void RegisterActiveXNative( const char* pActiveXPath, int nMode, BOOL InstallForAllUser, BOOL InstallFor64Bit )
{
HINSTANCE hModule = LoadLibraryExA( pActiveXPath, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH );
HINSTANCE hModule = LoadLibraryExW( pActiveXPath, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH );
if( hModule )
{
DllNativeRegProc pNativeProc = reinterpret_cast<DllNativeRegProc>(GetProcAddress( hModule, "DllRegisterServerNative" ));
if( pNativeProc!=nullptr )
{
int nLen = strlen( pActiveXPath );
int nLen = wcslen( pActiveXPath );
int nRemoveLen = strlen( "\\so_activex.dll" );
if ( nLen > nRemoveLen )
{
char* pProgramPath = static_cast<char*>( malloc( nLen - nRemoveLen + 1 ) );
strncpy( pProgramPath, pActiveXPath, nLen - nRemoveLen );
wchar_t* pProgramPath = static_cast<wchar_t*>( malloc( (nLen - nRemoveLen + 1) * sizeof(wchar_t) ) );
wcsncpy( pProgramPath, pActiveXPath, nLen - nRemoveLen );
pProgramPath[ nLen - nRemoveLen ] = 0;
( *pNativeProc )( nMode, InstallForAllUser, InstallFor64Bit, pProgramPath );
@@ -102,9 +86,9 @@ void RegisterActiveXNative( const char* pActiveXPath, int nMode, BOOL InstallFor
}
void UnregisterActiveXNative( const char* pActiveXPath, int nMode, BOOL InstallForAllUser, BOOL InstallFor64Bit )
void UnregisterActiveXNative( const wchar_t* pActiveXPath, int nMode, BOOL InstallForAllUser, BOOL InstallFor64Bit )
{
HINSTANCE hModule = LoadLibraryExA( pActiveXPath, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH );
HINSTANCE hModule = LoadLibraryExW( pActiveXPath, nullptr, LOAD_WITH_ALTERED_SEARCH_PATH );
if( hModule )
{
DllNativeUnregProc pNativeProc = reinterpret_cast<DllNativeUnregProc>(GetProcAddress( hModule, "DllUnregisterServerNative" ));
@@ -135,27 +119,20 @@ BOOL GetMsiPropW( MSIHANDLE hMSI, const wchar_t* pPropName, wchar_t** ppValue )
}
BOOL GetActiveXControlPath( MSIHANDLE hMSI, char** ppActiveXPath )
BOOL GetActiveXControlPath( MSIHANDLE hMSI, wchar_t** ppActiveXPath )
{
wchar_t* pProgPath = nullptr;
if ( GetMsiPropW( hMSI, L"INSTALLLOCATION", &pProgPath ) && pProgPath )
{
char* pCharProgPath = UnicodeToAnsiString( pProgPath );
{
int nLen = wcslen( pProgPath );
*ppActiveXPath = static_cast<wchar_t*>( malloc( (nLen + 23) * sizeof(wchar_t) ) );
wcsncpy( *ppActiveXPath, pProgPath, nLen );
wcsncpy( (*ppActiveXPath) + nLen, L"program\\so_activex.dll", 22 );
(*ppActiveXPath)[nLen+22] = 0;
if ( pCharProgPath )
{
int nLen = strlen( pCharProgPath );
*ppActiveXPath = static_cast<char*>( malloc( nLen + 23 ) );
strncpy( *ppActiveXPath, pCharProgPath, nLen );
strncpy( (*ppActiveXPath) + nLen, "program\\so_activex.dll", 22 );
(*ppActiveXPath)[nLen+22] = 0;
free(pProgPath);
free( pCharProgPath );
return TRUE;
}
free( pProgPath );
return TRUE;
}
return FALSE;
@@ -172,7 +149,7 @@ BOOL GetDelta( MSIHANDLE hMSI, int& nOldInstallMode, int& nInstallMode, int& nDe
INSTALLSTATE current_state;
INSTALLSTATE future_state;
if ( ERROR_SUCCESS == MsiGetFeatureState( hMSI, L"gm_p_Wrt_Bin", &current_state, &future_state ) )
if ( ERROR_SUCCESS == MsiGetFeatureStateW( hMSI, L"gm_p_Wrt_Bin", &current_state, &future_state ) )
{
// analyze writer installation mode
if ( current_state == INSTALLSTATE_LOCAL )
@@ -189,7 +166,7 @@ BOOL GetDelta( MSIHANDLE hMSI, int& nOldInstallMode, int& nInstallMode, int& nDe
// assert( FALSE );
}
if ( ERROR_SUCCESS == MsiGetFeatureState( hMSI, L"gm_p_Calc_Bin", &current_state, &future_state ) )
if ( ERROR_SUCCESS == MsiGetFeatureStateW( hMSI, L"gm_p_Calc_Bin", &current_state, &future_state ) )
{
// analyze calc installation mode
if ( current_state == INSTALLSTATE_LOCAL )
@@ -206,7 +183,7 @@ BOOL GetDelta( MSIHANDLE hMSI, int& nOldInstallMode, int& nInstallMode, int& nDe
// assert( FALSE );
}
if ( ERROR_SUCCESS == MsiGetFeatureState( hMSI, L"gm_p_Draw_Bin", &current_state, &future_state ) )
if ( ERROR_SUCCESS == MsiGetFeatureStateW( hMSI, L"gm_p_Draw_Bin", &current_state, &future_state ) )
{
// analyze draw installation mode
if ( current_state == INSTALLSTATE_LOCAL )
@@ -223,7 +200,7 @@ BOOL GetDelta( MSIHANDLE hMSI, int& nOldInstallMode, int& nInstallMode, int& nDe
// assert( FALSE );
}
if ( ERROR_SUCCESS == MsiGetFeatureState( hMSI, L"gm_p_Impress_Bin", &current_state, &future_state ) )
if ( ERROR_SUCCESS == MsiGetFeatureStateW( hMSI, L"gm_p_Impress_Bin", &current_state, &future_state ) )
{
// analyze impress installation mode
if ( current_state == INSTALLSTATE_LOCAL )
@@ -240,7 +217,7 @@ BOOL GetDelta( MSIHANDLE hMSI, int& nOldInstallMode, int& nInstallMode, int& nDe
// assert( FALSE );
}
if ( ERROR_SUCCESS == MsiGetFeatureState( hMSI, L"gm_p_Math_Bin", &current_state, &future_state ) )
if ( ERROR_SUCCESS == MsiGetFeatureStateW( hMSI, L"gm_p_Math_Bin", &current_state, &future_state ) )
{
// analyze math installation mode
if ( current_state == INSTALLSTATE_LOCAL )
@@ -293,7 +270,7 @@ extern "C" UINT __stdcall InstallActiveXControl( MSIHANDLE hMSI )
INSTALLSTATE current_state;
INSTALLSTATE future_state;
if ( ERROR_SUCCESS == MsiGetFeatureState( hMSI, L"gm_o_Activexcontrol", &current_state, &future_state ) )
if ( ERROR_SUCCESS == MsiGetFeatureStateW( hMSI, L"gm_o_Activexcontrol", &current_state, &future_state ) )
{
int nOldInstallMode = 0;
int nInstallMode = 0;
@@ -301,7 +278,7 @@ extern "C" UINT __stdcall InstallActiveXControl( MSIHANDLE hMSI )
BOOL bInstallForAllUser = MakeInstallForAllUsers( hMSI );
BOOL bInstallFor64Bit = MakeInstallFor64Bit( hMSI );
char* pActiveXPath = nullptr;
wchar_t* pActiveXPath = nullptr;
if ( GetActiveXControlPath( hMSI, &pActiveXPath ) && pActiveXPath
&& GetDelta( hMSI, nOldInstallMode, nInstallMode, nDeinstallMode ) )
{
@@ -340,9 +317,9 @@ extern "C" UINT __stdcall DeinstallActiveXControl( MSIHANDLE hMSI )
INSTALLSTATE current_state;
INSTALLSTATE future_state;
if ( ERROR_SUCCESS == MsiGetFeatureState( hMSI, L"gm_o_Activexcontrol", &current_state, &future_state ) )
if ( ERROR_SUCCESS == MsiGetFeatureStateW( hMSI, L"gm_o_Activexcontrol", &current_state, &future_state ) )
{
char* pActiveXPath = nullptr;
wchar_t* pActiveXPath = nullptr;
if ( current_state == INSTALLSTATE_LOCAL && GetActiveXControlPath( hMSI, &pActiveXPath ) && pActiveXPath )
{
BOOL bInstallForAllUser = MakeInstallForAllUsers( hMSI );

View File

@@ -17,8 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#define UNICODE
#ifdef _MSC_VER
#pragma warning(push,1) // disable warnings within system headers
#endif

View File

@@ -17,8 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#define UNICODE
#ifdef _MSC_VER
#pragma warning(push,1) // disable warnings within system headers
#endif

View File

@@ -16,6 +16,10 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#if !defined WINVER
#define WINVER 0x0400
#endif
#include <sal/macros.h>
// necessary to include system headers without warnings
@@ -45,8 +49,8 @@ using ::com::sun::star::uno::Sequence;
using ::com::sun::star::beans::PropertyValue;
#define EXECUTER_WINDOWCLASS "SO Executer Class"
#define EXECUTER_WINDOWNAME "SO Executer Window"
#define EXECUTER_WINDOWCLASS L"SO Executer Class"
#define EXECUTER_WINDOWNAME L"SO Executer Window"
#define ID_QUICKSTART 1
@@ -121,7 +125,7 @@ static void addMenuItem( HMENU hMenu, UINT id, UINT iconId, const OUString& text
mi.fType=MFT_STRING;
mi.fState=MFS_ENABLED;
mi.wID = id;
mi.dwTypeData = reinterpret_cast<wchar_t *>(
mi.dwTypeData = SAL_W(
const_cast<sal_Unicode *>(text.getStr()));
mi.cch = text.getLength();
}
@@ -244,11 +248,11 @@ static void addTaskbarIcon( HWND hWnd )
// add taskbar icon
NOTIFYICONDATAW nid;
nid.hIcon = static_cast<HICON>(LoadImageA( GetModuleHandle( nullptr ), MAKEINTRESOURCE( ICON_LO_DEFAULT ),
nid.hIcon = static_cast<HICON>(LoadImageW( GetModuleHandleW( nullptr ), MAKEINTRESOURCEW( ICON_LO_DEFAULT ),
IMAGE_ICON, GetSystemMetrics( SM_CXSMICON ), GetSystemMetrics( SM_CYSMICON ),
LR_DEFAULTCOLOR | LR_SHARED ));
wcsncpy( nid.szTip, reinterpret_cast<LPCWSTR>(strTip.getStr()), 64 );
wcsncpy( nid.szTip, SAL_W(strTip.getStr()), 64 );
nid.cbSize = sizeof(nid);
nid.hWnd = hWnd;
@@ -273,8 +277,8 @@ LRESULT CALLBACK listenerWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
{
// request notification when taskbar is recreated
// we then have to add our icon again
s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
s_uMsgKillTray = RegisterWindowMessage( SHUTDOWN_QUICKSTART_MESSAGE );
s_uTaskbarRestart = RegisterWindowMessageW(L"TaskbarCreated");
s_uMsgKillTray = RegisterWindowMessageW( SHUTDOWN_QUICKSTART_MESSAGE );
// create the menu
if( !popupMenu )
@@ -303,7 +307,7 @@ LRESULT CALLBACK listenerWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
{
case WM_LBUTTONDBLCLK:
{
BOOL const ret = PostMessage(aExecuterWindow, WM_COMMAND, IDM_TEMPLATE, reinterpret_cast<LPARAM>(hWnd));
BOOL const ret = PostMessageW(aExecuterWindow, WM_COMMAND, IDM_TEMPLATE, reinterpret_cast<LPARAM>(hWnd));
SAL_WARN_IF(0 == ret, "sfx.appl", "ERROR: PostMessage() failed!");
break;
}
@@ -348,7 +352,7 @@ LRESULT CALLBACK listenerWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
break;
}
BOOL const ret2 = PostMessage(aExecuterWindow, WM_COMMAND, m, reinterpret_cast<LPARAM>(hWnd));
BOOL const ret2 = PostMessageW(aExecuterWindow, WM_COMMAND, m, reinterpret_cast<LPARAM>(hWnd));
SAL_WARN_IF(0 == ret2, "sfx.appl", "ERROR: PostMessage() failed!");
}
break;
@@ -358,7 +362,7 @@ LRESULT CALLBACK listenerWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
deleteSystrayMenu( popupMenu );
// We don't need the Systray Thread anymore
PostQuitMessage( 0 );
return DefWindowProc(hWnd, uMsg, wParam, lParam);
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
default:
if( uMsg == s_uTaskbarRestart )
{
@@ -374,11 +378,11 @@ LRESULT CALLBACK listenerWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
nid.uID = ID_QUICKSTART;
Shell_NotifyIconA(NIM_DELETE, &nid);
BOOL const ret = PostMessage(aExecuterWindow, WM_COMMAND, IDM_EXIT, reinterpret_cast<LPARAM>(hWnd));
BOOL const ret = PostMessageW(aExecuterWindow, WM_COMMAND, IDM_EXIT, reinterpret_cast<LPARAM>(hWnd));
SAL_WARN_IF(0 == ret, "sfx.appl", "ERROR: PostMessage() failed!");
}
else
return DefWindowProc(hWnd, uMsg, wParam, lParam);
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
}
return 0;
}
@@ -435,7 +439,7 @@ LRESULT CALLBACK executerWndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
break;
case WM_DESTROY:
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
}
return 0;
}
@@ -445,26 +449,26 @@ DWORD WINAPI SystrayThread( LPVOID /*lpParam*/ )
{
osl_setThreadName("SystrayThread");
aListenerWindow = CreateWindowExA(0,
QUICKSTART_CLASSNAME, // registered class name
QUICKSTART_WINDOWNAME, // window name
0, // window style
CW_USEDEFAULT, // horizontal position of window
CW_USEDEFAULT, // vertical position of window
CW_USEDEFAULT, // window width
CW_USEDEFAULT, // window height
nullptr, // handle to parent or owner window
nullptr, // menu handle or child identifier
GetModuleHandle( nullptr ), // handle to application instance
nullptr // window-creation data
aListenerWindow = CreateWindowExW(0,
QUICKSTART_CLASSNAME, // registered class name
QUICKSTART_WINDOWNAME, // window name
0, // window style
CW_USEDEFAULT, // horizontal position of window
CW_USEDEFAULT, // vertical position of window
CW_USEDEFAULT, // window width
CW_USEDEFAULT, // window height
nullptr, // handle to parent or owner window
nullptr, // menu handle or child identifier
GetModuleHandleW( nullptr ), // handle to application instance
nullptr // window-creation data
);
MSG msg;
while ( GetMessage( &msg, nullptr, 0, 0 ) )
while ( GetMessageW( &msg, nullptr, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
DispatchMessageW( &msg );
}
return msg.wParam; // Exit code of WM_QUIT
@@ -475,13 +479,13 @@ void win32_init_sys_tray()
{
if ( ShutdownIcon::IsQuickstarterInstalled() )
{
WNDCLASSEXA listenerClass;
listenerClass.cbSize = sizeof(WNDCLASSEX);
WNDCLASSEXW listenerClass;
listenerClass.cbSize = sizeof(listenerClass);
listenerClass.style = 0;
listenerClass.lpfnWndProc = listenerWndProc;
listenerClass.cbClsExtra = 0;
listenerClass.cbWndExtra = 0;
listenerClass.hInstance = GetModuleHandle( nullptr );
listenerClass.hInstance = GetModuleHandleW( nullptr );
listenerClass.hIcon = nullptr;
listenerClass.hCursor = nullptr;
listenerClass.hbrBackground = nullptr;
@@ -489,15 +493,15 @@ void win32_init_sys_tray()
listenerClass.lpszClassName = QUICKSTART_CLASSNAME;
listenerClass.hIconSm = nullptr;
RegisterClassExA(&listenerClass);
RegisterClassExW(&listenerClass);
WNDCLASSEXA executerClass;
executerClass.cbSize = sizeof(WNDCLASSEX);
WNDCLASSEXW executerClass;
executerClass.cbSize = sizeof(executerClass);
executerClass.style = 0;
executerClass.lpfnWndProc = executerWndProc;
executerClass.cbClsExtra = 0;
executerClass.cbWndExtra = 0;
executerClass.hInstance = GetModuleHandle( nullptr );
executerClass.hInstance = GetModuleHandleW( nullptr );
executerClass.hIcon = nullptr;
executerClass.hCursor = nullptr;
executerClass.hbrBackground = nullptr;
@@ -505,20 +509,20 @@ void win32_init_sys_tray()
executerClass.lpszClassName = EXECUTER_WINDOWCLASS;
executerClass.hIconSm = nullptr;
RegisterClassExA( &executerClass );
RegisterClassExW( &executerClass );
aExecuterWindow = CreateWindowExA(0,
EXECUTER_WINDOWCLASS, // registered class name
EXECUTER_WINDOWNAME, // window name
0, // window style
CW_USEDEFAULT, // horizontal position of window
CW_USEDEFAULT, // vertical position of window
CW_USEDEFAULT, // window width
CW_USEDEFAULT, // window height
nullptr, // handle to parent or owner window
nullptr, // menu handle or child identifier
GetModuleHandle( nullptr ), // handle to application instance
nullptr // window-creation data
aExecuterWindow = CreateWindowExW(0,
EXECUTER_WINDOWCLASS, // registered class name
EXECUTER_WINDOWNAME, // window name
0, // window style
CW_USEDEFAULT, // horizontal position of window
CW_USEDEFAULT, // vertical position of window
CW_USEDEFAULT, // window width
CW_USEDEFAULT, // window height
nullptr, // handle to parent or owner window
nullptr, // menu handle or child identifier
GetModuleHandleW( nullptr ), // handle to application instance
nullptr // window-creation data
);
DWORD dwThreadId;
@@ -538,8 +542,8 @@ void win32_shutdown_sys_tray()
DestroyWindow( aExecuterWindow );
aExecuterWindow = nullptr;
}
UnregisterClassA( QUICKSTART_CLASSNAME, GetModuleHandle( nullptr ) );
UnregisterClassA( EXECUTER_WINDOWCLASS, GetModuleHandle( nullptr ) );
UnregisterClassW( QUICKSTART_CLASSNAME, GetModuleHandleW( nullptr ) );
UnregisterClassW( EXECUTER_WINDOWCLASS, GetModuleHandleW( nullptr ) );
}
}
@@ -550,18 +554,18 @@ void OnMeasureItem(HWND hwnd, LPMEASUREITEMSTRUCT lpmis)
HDC hdc = GetDC(hwnd);
SIZE size;
NONCLIENTMETRICS ncm;
NONCLIENTMETRICSW ncm;
memset(&ncm, 0, sizeof(ncm));
ncm.cbSize = sizeof(ncm);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
// Assume every menu item can be default and printed bold
ncm.lfMenuFont.lfWeight = FW_BOLD;
HFONT hfntOld = static_cast<HFONT>(SelectObject(hdc, CreateFontIndirect( &ncm.lfMenuFont )));
HFONT hfntOld = static_cast<HFONT>(SelectObject(hdc, CreateFontIndirectW( &ncm.lfMenuFont )));
GetTextExtentPoint32W(hdc, reinterpret_cast<LPCWSTR>(pMyItem->text.getStr()),
GetTextExtentPoint32W(hdc, SAL_W(pMyItem->text.getStr()),
pMyItem->text.getLength(), &size);
lpmis->itemWidth = size.cx + 4 + GetSystemMetrics( SM_CXSMICON );
@@ -611,11 +615,11 @@ void OnDrawItem(HWND /*hwnd*/, LPDRAWITEMSTRUCT lpdis)
int cx = GetSystemMetrics( SM_CXSMICON );
int cy = GetSystemMetrics( SM_CYSMICON );
HICON hIcon( nullptr );
HMODULE hModule( GetModuleHandle( nullptr ) );
HMODULE hModule( GetModuleHandleW( nullptr ) );
if ( pMyItem->module.getLength() > 0 )
{
LPCWSTR pModuleName = reinterpret_cast<LPCWSTR>( pMyItem->module.getStr() );
LPCWSTR pModuleName = SAL_W( pMyItem->module.getStr() );
hModule = GetModuleHandleW( pModuleName );
if ( hModule == nullptr )
{
@@ -638,21 +642,21 @@ void OnDrawItem(HWND /*hwnd*/, LPDRAWITEMSTRUCT lpdis)
x += cx + 4; // space for icon
aRect.left = x;
NONCLIENTMETRICS ncm;
NONCLIENTMETRICSW ncm;
memset(&ncm, 0, sizeof(ncm));
ncm.cbSize = sizeof(ncm);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, 0, &ncm, 0);
// Print default menu entry with bold font
if ( lpdis->itemState & ODS_DEFAULT )
ncm.lfMenuFont.lfWeight = FW_BOLD;
hfntOld = static_cast<HFONT>(SelectObject(lpdis->hDC, CreateFontIndirect( &ncm.lfMenuFont )));
hfntOld = static_cast<HFONT>(SelectObject(lpdis->hDC, CreateFontIndirectW( &ncm.lfMenuFont )));
SIZE size;
GetTextExtentPointW( lpdis->hDC, reinterpret_cast<LPCWSTR>(pMyItem->text.getStr()), pMyItem->text.getLength(), &size );
GetTextExtentPointW( lpdis->hDC, SAL_W(pMyItem->text.getStr()), pMyItem->text.getLength(), &size );
DrawStateW( lpdis->hDC, nullptr, nullptr, reinterpret_cast<LPARAM>(pMyItem->text.getStr()), (WPARAM)0, aRect.left, aRect.top + (height - size.cy)/2, 0, 0, DST_TEXT | (fDisabled && !fSelected ? DSS_DISABLED : DSS_NORMAL) );
@@ -693,7 +697,7 @@ static OUString SHGetSpecialFolder( int nFolderID )
lpFolderA = ALLOC( WCHAR, 16000 );
SHGetPathFromIDListW( pidl, lpFolderA );
aFolder = OUString( reinterpret_cast<const sal_Unicode*>(lpFolderA) );
aFolder = SAL_U( lpFolderA );
FREE( lpFolderA );
SHFree_( pidl );
@@ -709,7 +713,7 @@ OUString ShutdownIcon::GetAutostartFolderNameW32()
static HRESULT WINAPI SHCoCreateInstance( LPVOID lpszReserved, REFCLSID clsid, LPUNKNOWN pUnkUnknown, REFIID iid, LPVOID *ppv )
{
HRESULT hResult = E_NOTIMPL;
HMODULE hModShell = GetModuleHandle( "SHELL32" );
HMODULE hModShell = GetModuleHandleW( L"SHELL32" );
if ( hModShell != nullptr )
{
@@ -727,9 +731,9 @@ BOOL CreateShortcut( const OUString& rAbsObject, const OUString& rAbsObjectPath,
const OUString& rAbsShortcut, const OUString& rDescription, const OUString& rParameter )
{
HRESULT hres;
IShellLink* psl;
IShellLinkW* psl;
CLSID clsid_ShellLink = CLSID_ShellLink;
CLSID clsid_IShellLink = IID_IShellLink;
CLSID clsid_IShellLink = IID_IShellLinkW;
hres = CoCreateInstance( clsid_ShellLink, nullptr, CLSCTX_INPROC_SERVER,
clsid_IShellLink, reinterpret_cast<void**>(&psl) );
@@ -739,11 +743,11 @@ BOOL CreateShortcut( const OUString& rAbsObject, const OUString& rAbsObjectPath,
if( SUCCEEDED(hres) )
{
IPersistFile* ppf;
psl->SetPath( OUStringToOString(rAbsObject, osl_getThreadTextEncoding()).getStr() );
psl->SetWorkingDirectory( OUStringToOString(rAbsObjectPath, osl_getThreadTextEncoding()).getStr() );
psl->SetDescription( OUStringToOString(rDescription, osl_getThreadTextEncoding()).getStr() );
psl->SetPath( SAL_W(rAbsObject.getStr()) );
psl->SetWorkingDirectory( SAL_W(rAbsObjectPath.getStr()) );
psl->SetDescription( SAL_W(rDescription.getStr()) );
if( rParameter.getLength() )
psl->SetArguments( OUStringToOString(rParameter, osl_getThreadTextEncoding()).getStr() );
psl->SetArguments( SAL_W(rParameter.getStr()) );
CLSID clsid_IPersistFile = IID_IPersistFile;
hres = psl->QueryInterface( clsid_IPersistFile, reinterpret_cast<void**>(&ppf) );
@@ -782,7 +786,7 @@ bool ShutdownIcon::IsQuickstarterInstalled()
wchar_t aPath[_MAX_PATH];
GetModuleFileNameW( nullptr, aPath, _MAX_PATH-1);
OUString aOfficepath( reinterpret_cast<const sal_Unicode*>(aPath) );
OUString aOfficepath( SAL_U(aPath) );
int i = aOfficepath.lastIndexOf('\\');
if( i != -1 )
aOfficepath = aOfficepath.copy(0, i);
@@ -790,7 +794,7 @@ bool ShutdownIcon::IsQuickstarterInstalled()
OUString quickstartExe(aOfficepath);
quickstartExe += "\\quickstart.exe";
return FileExistsW( reinterpret_cast<LPCWSTR>(quickstartExe.getStr()) );
return FileExistsW( SAL_W(quickstartExe.getStr()) );
}
void ShutdownIcon::EnableAutostartW32( const OUString &aShortcut )
@@ -798,7 +802,7 @@ void ShutdownIcon::EnableAutostartW32( const OUString &aShortcut )
wchar_t aPath[_MAX_PATH];
GetModuleFileNameW( nullptr, aPath, _MAX_PATH-1);
OUString aOfficepath( reinterpret_cast<const sal_Unicode*>(aPath) );
OUString aOfficepath( SAL_U(aPath) );
int i = aOfficepath.lastIndexOf('\\');
if( i != -1 )
aOfficepath = aOfficepath.copy(0, i);

View File

@@ -24,8 +24,6 @@
#pragma warning (disable : 4786 4503 4917)
#endif
#include <tchar.h>
#ifdef _AMD64_
#define MODULE_NAME L"shlxthdl_x64.dll"
#else

View File

@@ -28,9 +28,24 @@
#include "config.hxx"
#include <commctrl.h>
#include <tchar.h>
#include "resource.h"
// Unicode-only defines to break dependance on UNICODE define
#if !defined ListView_InsertColumnW
#define ListView_InsertColumnW(hwnd, iCol, pcol) \
(int)SNDMSG((hwnd), LVM_INSERTCOLUMNW, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMNW *)(pcol))
#endif
#if !defined ListView_InsertItemW
#define ListView_InsertItemW(hwnd, pitem) \
(int)SNDMSG((hwnd), LVM_INSERTITEMW, 0, (LPARAM)(const LV_ITEMW *)(pitem))
#endif
#if !defined ListView_SetItemW
#define ListView_SetItemW(hwnd, pitem) \
(BOOL)SNDMSG((hwnd), LVM_SETITEMW, 0, (LPARAM)(const LV_ITEMW *)(pitem))
#endif
list_view_builder_ptr create_list_view_builder(
HWND hwnd_lv, const std::wstring& col1, const std::wstring& col2)
@@ -83,17 +98,17 @@ void list_view_builder::build(statistic_group_list_t& gl)
void list_view_builder::setup_list_view()
{
HIMAGELIST h_ils = ImageList_Create(16,15,ILC_MASK, 7, 0);
HBITMAP h_bmp = LoadBitmap(GetModuleHandle(MODULE_NAME), MAKEINTRESOURCE(IDB_PROPERTY_IMAGES));
HBITMAP h_bmp = LoadBitmapW(GetModuleHandleW(MODULE_NAME), MAKEINTRESOURCEW(IDB_PROPERTY_IMAGES));
ImageList_AddMasked(h_ils, h_bmp, RGB(255, 0, 255));
(void) ListView_SetImageList(hwnd_list_view_, h_ils, LVSIL_SMALL);
std::wstring header = GetResString(IDS_PROPERTY);
LVCOLUMN lvc;
LVCOLUMNW lvc;
lvc.mask = LVCF_FMT |
LVCF_WIDTH |
LVCF_TEXT |
LVCF_TEXT |
LVCF_SUBITEM;
lvc.iSubItem = 0;
@@ -101,11 +116,11 @@ void list_view_builder::setup_list_view()
lvc.cx = 120;
lvc.fmt = LVCFMT_LEFT;
ListView_InsertColumn(hwnd_list_view_, 0, &lvc);
ListView_InsertColumnW(hwnd_list_view_, 0, &lvc);
lvc.iSubItem = 1;
header = GetResString(IDS_PROPERTY_VALUE);
lvc.pszText = const_cast<wchar_t*>(header.c_str());
ListView_InsertColumn(hwnd_list_view_, 1, &lvc);
ListView_InsertColumnW(hwnd_list_view_, 1, &lvc);
}
@@ -117,7 +132,7 @@ void list_view_builder::insert_group(const std::wstring& /*title*/)
void list_view_builder::insert_item(const std::wstring& title, const std::wstring& value, bool is_editable)
{
LVITEM lvi;
LVITEMW lvi;
lvi.iItem = ++row_index_;
lvi.iSubItem = 0;
@@ -137,13 +152,13 @@ void list_view_builder::insert_item(const std::wstring& title, const std::wstrin
lvi.iImage = 3;
}
ListView_InsertItem(hwnd_list_view_, &lvi);
ListView_InsertItemW(hwnd_list_view_, &lvi);
lvi.mask = LVIF_TEXT;
lvi.iSubItem = 1;
lvi.pszText = const_cast<wchar_t*>(value.c_str());
ListView_SetItem(hwnd_list_view_, &lvi);
ListView_SetItemW(hwnd_list_view_, &lvi);
}
@@ -193,7 +208,7 @@ void winxp_list_view_builder::insert_group(const std::wstring& name)
void winxp_list_view_builder::insert_item(
const std::wstring& title, const std::wstring& value, bool is_editable)
{
LVITEM lvi;
LVITEMW lvi;
lvi.iItem = ++row_index_;
lvi.iSubItem = 0;
@@ -213,13 +228,13 @@ void winxp_list_view_builder::insert_item(
lvi.iImage = 3;
}
ListView_InsertItem(get_list_view(), &lvi);
ListView_InsertItemW(get_list_view(), &lvi);
lvi.mask = LVIF_TEXT;
lvi.iSubItem = 1;
lvi.pszText = const_cast<wchar_t*>(value.c_str());
ListView_SetItem(get_list_view(), &lvi);
ListView_SetItemW(get_list_view(), &lvi);
row_count_++;
}

View File

@@ -25,7 +25,6 @@
#include "fileextensions.hxx"
#include "utilities.hxx"
#include <tchar.h>
#include <string>
#include <shlobj.h>

View File

@@ -26,8 +26,6 @@
#include "simplemapi.hxx"
#include <tchar.h>
#include <iostream>
#include <vector>
#include <sstream>
@@ -340,7 +338,7 @@ int main(int argc, char* argv[])
if (gMapiFlags & MAPI_LOGON_UI)
oss << "--mapi-logon-ui" << std::endl;
MessageBox(nullptr, oss.str().c_str(), "Arguments", MB_OK | MB_ICONINFORMATION);
MessageBoxA(nullptr, oss.str().c_str(), "Arguments", MB_OK | MB_ICONINFORMATION);
}
#endif

View File

@@ -18,7 +18,6 @@
*/
#define UNICODE
#include <string.h>
#include <algorithm>
#include "ddeimp.hxx"
@@ -157,12 +156,12 @@ DdeConnection::DdeConnection( const OUString& rService, const OUString& rTopic )
pInst->nInstanceCli++;
if ( !pInst->hDdeInstCli )
{
pImp->nStatus = DdeInitialize( &pInst->hDdeInstCli,
DdeInternal::CliCallback,
APPCLASS_STANDARD | APPCMD_CLIENTONLY |
CBF_FAIL_ALLSVRXACTIONS |
CBF_SKIP_REGISTRATIONS |
CBF_SKIP_UNREGISTRATIONS, 0L );
pImp->nStatus = DdeInitializeW( &pInst->hDdeInstCli,
DdeInternal::CliCallback,
APPCLASS_STANDARD | APPCMD_CLIENTONLY |
CBF_FAIL_ALLSVRXACTIONS |
CBF_SKIP_REGISTRATIONS |
CBF_SKIP_UNREGISTRATIONS, 0L );
}
pService = new DdeString( pInst->hDdeInstCli, rService );

View File

@@ -22,8 +22,6 @@
// Format numbers to be the same! If that's not the case, we need to
// adapt the code here. The implementation uses the conversions here.
#define UNICODE
#include <string.h>
#include "ddeimp.hxx"
#include <svl/svdde.hxx>
@@ -136,7 +134,7 @@ sal_uLong DdeData::GetExternalFormat(SotClipboardFormatId nFmt)
#if defined(_WIN32)
OUString aName( SotExchange::GetFormatName( nFmt ) );
if( !aName.isEmpty() )
return RegisterClipboardFormat( reinterpret_cast<LPCWSTR>(aName.getStr()) );
return RegisterClipboardFormatW( SAL_W(aName.getStr()) );
#endif
}
}
@@ -157,10 +155,10 @@ SotClipboardFormatId DdeData::GetInternalFormat(sal_uLong nFmt)
#if defined(_WIN32)
if( nFmt >= CF_MAX )
{
TCHAR szName[ 256 ];
WCHAR szName[ 256 ];
if(GetClipboardFormatName( nFmt, szName, sizeof(szName) ))
return SotExchange::RegisterFormatName( OUString(reinterpret_cast<const sal_Unicode*>(szName)) );
if(GetClipboardFormatNameW( nFmt, szName, SAL_N_ELEMENTS(szName) ))
return SotExchange::RegisterFormatName( SAL_U(szName) );
}
#endif
break;

View File

@@ -18,15 +18,13 @@
*/
#define UNICODE
#include "ddeimp.hxx"
#include <svl/svdde.hxx>
DdeString::DdeString( DWORD hDdeInst, const OUString& r)
: m_aString(r)
{
hString = DdeCreateStringHandle( hDdeInst, reinterpret_cast<wchar_t const *>(r.getStr()), CP_WINUNICODE );
hString = DdeCreateStringHandleW( hDdeInst, SAL_W(r.getStr()), CP_WINUNICODE );
hInst = hDdeInst;
}

View File

@@ -17,7 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#define UNICODE
#include "ddeimp.hxx"
#include <algorithm>
#include <memory>
@@ -79,10 +78,10 @@ HDDEDATA CALLBACK DdeInternal::SvrCallback(
{
int nTopics = 0;
TCHAR chTopicBuf[250];
WCHAR chTopicBuf[250];
if( hText1 )
DdeQueryString( pInst->hDdeInstSvr, hText1, chTopicBuf,
sizeof(chTopicBuf)/sizeof(TCHAR), CP_WINUNICODE );
DdeQueryStringW( pInst->hDdeInstSvr, hText1, chTopicBuf,
SAL_N_ELEMENTS(chTopicBuf), CP_WINUNICODE );
for (DdeServices::iterator aI = rAll.begin(); aI != rAll.end(); ++aI)
{
@@ -98,7 +97,7 @@ HDDEDATA CALLBACK DdeInternal::SvrCallback(
while( -1 != n )
{
OUString s( sTopics.getToken( 0, '\t', n ));
if( s == reinterpret_cast<const sal_Unicode*>(chTopicBuf) )
if( s == SAL_U(chTopicBuf) )
++nTopics;
}
}
@@ -125,7 +124,7 @@ HDDEDATA CALLBACK DdeInternal::SvrCallback(
{
OUString s( sTopics.getToken( 0, '\t', n ));
s = s.replaceAll("\n", "").replaceAll("\r", "");
if( !hText1 || s == reinterpret_cast<const sal_Unicode*>(chTopicBuf) )
if( !hText1 || s == SAL_U(chTopicBuf) )
{
DdeString aDStr( pInst->hDdeInstSvr, s );
pTopic = FindTopic( *pService, aDStr.getHSZ() );
@@ -233,15 +232,15 @@ found:
OUString aRes; // Must be free not until the end!
if ( pTopic->IsSystemTopic() )
{
if ( pTopic->aItem == reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_TOPICS) )
if ( pTopic->aItem == SZDDESYS_ITEM_TOPICS )
aRes = pService->Topics();
else if ( pTopic->aItem == reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_SYSITEMS) )
else if ( pTopic->aItem == SZDDESYS_ITEM_SYSITEMS )
aRes = pService->SysItems();
else if ( pTopic->aItem == reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_STATUS) )
else if ( pTopic->aItem == SZDDESYS_ITEM_STATUS )
aRes = pService->Status();
else if ( pTopic->aItem == reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_FORMATS) )
else if ( pTopic->aItem == SZDDESYS_ITEM_FORMATS )
aRes = pService->Formats();
else if ( pTopic->aItem == reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_HELP) )
else if ( pTopic->aItem == SZDDESYS_ITEM_HELP )
aRes = OUString();
else
aRes = OUString();
@@ -392,8 +391,8 @@ DdeTopic* DdeInternal::FindTopic( DdeService& rService, HSZ hTopic )
break;
// Let's query our subclass
TCHAR chBuf[250];
DdeQueryString(pInst->hDdeInstSvr,hTopic,chBuf,sizeof(chBuf)/sizeof(TCHAR),CP_WINUNICODE );
WCHAR chBuf[250];
DdeQueryStringW(pInst->hDdeInstSvr,hTopic,chBuf,SAL_N_ELEMENTS(chBuf),CP_WINUNICODE );
bContinue = false;
// We need to search again
}
@@ -422,9 +421,9 @@ DdeItem* DdeInternal::FindItem( DdeTopic& rTopic, HSZ hItem )
break;
// Let's query our subclass
TCHAR chBuf[250];
DdeQueryString(pInst->hDdeInstSvr,hItem,chBuf,sizeof(chBuf)/sizeof(TCHAR),CP_WINUNICODE );
bContinue = rTopic.MakeItem( reinterpret_cast<const sal_Unicode*>(chBuf) );
WCHAR chBuf[250];
DdeQueryStringW(pInst->hDdeInstSvr,hItem,chBuf,SAL_N_ELEMENTS(chBuf),CP_WINUNICODE );
bContinue = rTopic.MakeItem( SAL_U(chBuf) );
// We need to search again
}
while( bContinue );
@@ -443,11 +442,11 @@ DdeService::DdeService( const OUString& rService )
if ( !pInst->hDdeInstSvr )
{
nStatus = sal::static_int_cast< short >(
DdeInitialize( &pInst->hDdeInstSvr,
DdeInternal::SvrCallback,
APPCLASS_STANDARD |
CBF_SKIP_REGISTRATIONS |
CBF_SKIP_UNREGISTRATIONS, 0L ) );
DdeInitializeW( &pInst->hDdeInstSvr,
DdeInternal::SvrCallback,
APPCLASS_STANDARD |
CBF_SKIP_REGISTRATIONS |
CBF_SKIP_UNREGISTRATIONS, 0L ) );
pInst->pServicesSvr = new DdeServices;
}
else
@@ -468,12 +467,12 @@ DdeService::DdeService( const OUString& rService )
}
}
AddFormat( SotClipboardFormatId::STRING );
pSysTopic = new DdeTopic( reinterpret_cast<const sal_Unicode*>(SZDDESYS_TOPIC) );
pSysTopic->AddItem( DdeItem( reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_TOPICS) ) );
pSysTopic->AddItem( DdeItem( reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_SYSITEMS) ) );
pSysTopic->AddItem( DdeItem( reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_STATUS) ) );
pSysTopic->AddItem( DdeItem( reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_FORMATS) ) );
pSysTopic->AddItem( DdeItem( reinterpret_cast<const sal_Unicode*>(SZDDESYS_ITEM_HELP) ) );
pSysTopic = new DdeTopic( SZDDESYS_TOPIC );
pSysTopic->AddItem( DdeItem( SZDDESYS_ITEM_TOPICS ) );
pSysTopic->AddItem( DdeItem( SZDDESYS_ITEM_SYSITEMS ) );
pSysTopic->AddItem( DdeItem( SZDDESYS_ITEM_STATUS ) );
pSysTopic->AddItem( DdeItem( SZDDESYS_ITEM_FORMATS ) );
pSysTopic->AddItem( DdeItem( SZDDESYS_ITEM_HELP ) );
AddTopic( *pSysTopic );
}
@@ -608,7 +607,7 @@ const OUString DdeTopic::GetName() const
bool DdeTopic::IsSystemTopic()
{
return GetName() == reinterpret_cast<const sal_Unicode*>(SZDDESYS_TOPIC);
return GetName() == SZDDESYS_TOPIC;
}
DdeItem* DdeTopic::AddItem( const DdeItem& r )
@@ -859,7 +858,7 @@ OUString DdeService::SysItems()
std::vector<DdeItem*>::iterator iterItem;
for ( iter = aTopics.begin(); iter != aTopics.end(); ++iter )
{
if ( (*iter)->GetName() == reinterpret_cast<const sal_Unicode*>(SZDDESYS_TOPIC) )
if ( (*iter)->GetName() == SZDDESYS_TOPIC )
{
short n = 0;
for ( iterItem = (*iter)->aItems.begin(); iterItem != (*iter)->aItems.end(); ++iterItem, n++ )
@@ -913,9 +912,9 @@ OUString DdeService::Formats()
break;
default:
{
TCHAR buf[128];
GetClipboardFormatName( (UINT)f, buf, sizeof(buf) / sizeof(TCHAR) );
s += OUString(reinterpret_cast<sal_Unicode*>(buf));
WCHAR buf[128];
GetClipboardFormatNameW( (UINT)f, buf, SAL_N_ELEMENTS(buf) );
s += SAL_U(buf);
}
break;
}

View File

@@ -20,11 +20,6 @@
./bin/update_pch_bisect ./svx/inc/pch/precompiled_svx.hxx "/opt/lo/bin/make svx.build" --find-conflicts
*/
#ifdef _WIN32
#define UNICODE
#define _UNICODE
#endif
#include <algorithm>
#include <cassert>
#include <climits>

View File

@@ -29,6 +29,9 @@
#pragma warning (push, 1)
#pragma warning (disable: 4005)
#endif
#if !defined WINVER
# define WINVER 0x0400
#endif
#if !defined WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
#endif
@@ -36,7 +39,6 @@
#if defined _MSC_VER
#pragma warning (pop)
#endif
#include <tchar.h>
#endif
using namespace ::ooo::vba;
@@ -97,7 +99,7 @@ uno::Any PrivateProfileStringListener::getValueEvent()
}
else
{
// get key/value from windows register
// get key/value from Windows registry
#ifdef _WIN32
HKEY hBaseKey = nullptr;
OString sSubKey;
@@ -105,21 +107,23 @@ uno::Any PrivateProfileStringListener::getValueEvent()
if( hBaseKey != nullptr )
{
HKEY hKey = nullptr;
LONG lResult;
LPCTSTR lpSubKey = TEXT( sSubKey.getStr());
TCHAR szBuffer[1024];
DWORD cbData = sizeof( szBuffer );
lResult = RegOpenKeyEx( hBaseKey, lpSubKey, 0, KEY_QUERY_VALUE, &hKey );
LPCSTR lpSubKey = sSubKey.getStr();
// We use RegOpenKeyExA here for convenience, because we already have subkey name as 8-bit string
LONG lResult = RegOpenKeyExA( hBaseKey, lpSubKey, 0, KEY_QUERY_VALUE, &hKey );
if( ERROR_SUCCESS == lResult )
{
LPCTSTR lpValueName = TEXT(maKey.getStr());
lResult = RegQueryValueEx( hKey, lpValueName, nullptr, nullptr, reinterpret_cast<LPBYTE>(szBuffer), &cbData );
OUString sUValName = OStringToOUString(maKey, RTL_TEXTENCODING_DONTKNOW);
LPCWSTR lpValueName = SAL_W(sUValName.getStr());
WCHAR szBuffer[1024];
DWORD cbData = sizeof(szBuffer);
lResult = RegQueryValueExW( hKey, lpValueName, nullptr, nullptr, reinterpret_cast<LPBYTE>(szBuffer), &cbData );
RegCloseKey( hKey );
sValue = OUString::createFromAscii(szBuffer);
// https://msdn.microsoft.com/en-us/ms724911 mentions that
// "the string may not have been stored with the proper terminating null characters"
szBuffer[std::min(size_t(cbData / sizeof(szBuffer[0])), SAL_N_ELEMENTS(szBuffer)-1)] = 0;
sValue = SAL_U(szBuffer);
}
}
return uno::makeAny( sValue );
#else
throw uno::RuntimeException("Only support on Windows" );
#endif
@@ -142,7 +146,7 @@ void PrivateProfileStringListener::setValueEvent( const css::uno::Any& value )
}
else
{
//set value into windows register
//set value into Windows registry
#ifdef _WIN32
HKEY hBaseKey = nullptr;
OString sSubKey;
@@ -150,15 +154,15 @@ void PrivateProfileStringListener::setValueEvent( const css::uno::Any& value )
if( hBaseKey != nullptr )
{
HKEY hKey = nullptr;
LONG lResult;
LPCTSTR lpSubKey = TEXT( sSubKey.getStr());
lResult = RegCreateKeyEx( hBaseKey, lpSubKey, 0, nullptr, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nullptr, &hKey, nullptr );
LPCSTR lpSubKey = sSubKey.getStr();
// We use RegCreateKeyExA here for convenience, because we already have subkey name as 8-bit string
LONG lResult = RegCreateKeyExA( hBaseKey, lpSubKey, 0, nullptr, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nullptr, &hKey, nullptr );
if( ERROR_SUCCESS == lResult )
{
OString aUTF8Value = OUStringToOString( aValue, RTL_TEXTENCODING_UTF8 );
DWORD cbData = sizeof(TCHAR) * (_tcslen(aUTF8Value.getStr()) + 1);
LPCTSTR lpValueName = TEXT(maKey.getStr());
lResult = RegSetValueEx( hKey, lpValueName, 0 /* Reserved */, REG_SZ, reinterpret_cast<BYTE const *>(aUTF8Value.getStr()), cbData );
DWORD cbData = sizeof(WCHAR) * (aValue.getLength() + 1);
OUString sUValName = OStringToOUString(maKey, RTL_TEXTENCODING_DONTKNOW);
LPCWSTR lpValueName = SAL_W(sUValName.getStr());
lResult = RegSetValueExW( hKey, lpValueName, 0 /* Reserved */, REG_SZ, reinterpret_cast<BYTE const *>(aValue.getStr()), cbData );
RegCloseKey( hKey );
}
}