long __stdcall FastIStorage::CreateStorage(const WCHAR *wzName,unsigned long,unsigned long,unsigned long,struct IStorage **ppstg) { FastIStorage * const pfs = new FastIStorage(); pfs->AddRef(); // AddRef once for us, and once for the caller pfs->AddRef(); pfs->m_wzName = new WCHAR[lstrlenW(wzName)+1]; WideStrCopy((WCHAR *)wzName, pfs->m_wzName); *ppstg = pfs; m_vstg.AddElement(pfs); return S_OK; }
void NativePlayerWnd::SetStringToClipboard( const U16* text ) { if ( text && *text && OpenClipboard( 0 ) ) { HGLOBAL globalMem = GlobalAlloc( GMEM_MOVEABLE | GMEM_DDESHARE, ( WideStrLen( text ) + 1 ) * 2 ); U16* globalText = (U16*) GlobalLock( globalMem ); if ( globalText ) { WideStrCopy( globalText, text ); GlobalUnlock( globalMem ); EmptyClipboard(); SetClipboardData( CF_UNICODETEXT, globalText ); } CloseClipboard(); } }
void CompleteAutoSave(HANDLE hEvent, LPARAM lParam) { AutoSavePackage *pasp = (AutoSavePackage *)lParam; FastIStorage *pstgroot = pasp->pstg; IStorage *pstgDisk; WCHAR *wzSaveName = L"AutoSave"; WCHAR *wzSaveExtension = L".vpx"; WCHAR wzSuffix[32]; _itow_s(pasp->tableindex, wzSuffix, sizeof(wzSuffix)/sizeof(WCHAR), 10); WCHAR * const wzT = new WCHAR[MAX_PATH + 32 + lstrlenW(wzSaveName) + lstrlenW(wzSaveExtension)+ 1]; WideStrCopy(g_pvp->m_wzMyPath, wzT); WideStrCat(wzSaveName, wzT); WideStrCat(wzSuffix, wzT); WideStrCat(wzSaveExtension, wzT); //MAKE_WIDEPTR_FROMANSI(wszCodeFile, m_szFileName); STGOPTIONS stg; stg.usVersion = 1; stg.reserved = 0; stg.ulSectorSize = 4096; HRESULT hr; if(SUCCEEDED(hr = StgCreateStorageEx(wzT, STGM_TRANSACTED | STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, STGFMT_DOCFILE, 0, &stg, 0, IID_IStorage, (void**)&pstgDisk))) { pstgroot->CopyTo(0, NULL, NULL, pstgDisk); hr = pstgDisk->Commit(STGC_DEFAULT); pstgDisk->Release(); } pstgroot->Release(); SetEvent(hEvent); PostMessage(pasp->HwndTable, DONE_AUTOSAVE, (WPARAM)hEvent, hr); delete [] wzT; delete pasp; }