Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//
// APITHK.C
//
// This file has API thunks that allow shdocvw to load and run on
// multiple versions of NT or Win95. Since this component needs
// to load on the base-level NT 4.0 and Win95, any calls to system
// APIs introduced in later OS versions must be done via GetProcAddress.
//
// Also, any code that may need to access data structures that are
// post-4.0 specific can be added here.
//
// NOTE: this file does *not* use the standard precompiled header,
// so it can set _WIN32_WINNT to a later version.
//
#define UNICODE 1
#include <shlwapi.h>
#include <shlwapip.h>
#include <resource.h>
#include <shfusion.h>
BOOL NT5_GetSaveFileNameW(LPOPENFILENAMEW pofn) { BOOL fRC = FALSE; if (GetUIVersion() >= 5) { // we're on Win2k or Millennium
ULONG_PTR uCookie = 0; OPENFILENAMEW ofn_nt5;
memset(&ofn_nt5, 0, sizeof(OPENFILENAMEW));
CopyMemory(&ofn_nt5, pofn, pofn->lStructSize); ofn_nt5.lStructSize = sizeof(OPENFILENAMEW); // New OPENFILENAME struct size
// If we start adding more of these, make a table.
if(pofn->lpTemplateName == MAKEINTRESOURCE(IDD_ADDTOSAVE_DIALOG)) ofn_nt5.lpTemplateName = MAKEINTRESOURCE(IDD_ADDTOSAVE_NT5_DIALOG);
if (SHActivateContext(&uCookie)) { fRC = GetSaveFileNameWrapW(&ofn_nt5); if (uCookie) { SHDeactivateContext(uCookie); } } if(fRC) { ofn_nt5.lStructSize = pofn->lStructSize; // restore old values
ofn_nt5.lpTemplateName = pofn->lpTemplateName; CopyMemory(pofn, &ofn_nt5, pofn->lStructSize); // copy to passed in struct
} } else { fRC = GetSaveFileNameWrapW(pofn); }
return fRC; }
PROPSHEETPAGE* Whistler_AllocatePropertySheetPage(int numPages, DWORD* pc) { PROPSHEETPAGE* pspArray = (PROPSHEETPAGE*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PROPSHEETPAGE)*numPages); if (pspArray) { int i; for (i=0; i<numPages; i++) { pspArray[i].dwSize = sizeof(PROPSHEETPAGE); pspArray[i].dwFlags = PSP_USEFUSIONCONTEXT; pspArray[i].hActCtx = g_hActCtx; } *pc = sizeof(PROPSHEETPAGE); } return pspArray; }
HPROPSHEETPAGE Whistler_CreatePropertySheetPageW(LPCPROPSHEETPAGEW a) { LPCPROPSHEETPAGEW ppsp = (LPCPROPSHEETPAGEW)a; PROPSHEETPAGEW psp;
if (g_hActCtx && (a->dwSize<=PROPSHEETPAGE_V2_SIZE)) { memset(&psp, 0, sizeof(psp)); CopyMemory(&psp, a, a->dwSize); psp.dwSize = sizeof(psp); ppsp = &psp; } return CreatePropertySheetPageW(ppsp); }
|