LPDEVMODEW AFXAPI AfxDevModeA2W(LPDEVMODEW lpDevModeW, LPDEVMODEA lpDevModeA) { if (lpDevModeA == NULL) return NULL; ASSERT(lpDevModeW != NULL); AfxA2WHelper(lpDevModeW->dmDeviceName, (LPCSTR)lpDevModeA->dmDeviceName, 32*sizeof(WCHAR)); memcpy(&lpDevModeW->dmSpecVersion, &lpDevModeA->dmSpecVersion, offsetof(DEVMODEW, dmFormName) - offsetof(DEVMODEW, dmSpecVersion)); AfxA2WHelper(lpDevModeW->dmFormName, (LPCSTR)lpDevModeA->dmFormName, 32*sizeof(WCHAR)); memcpy(&lpDevModeW->dmLogPixels, &lpDevModeA->dmLogPixels, sizeof(DEVMODEW) - offsetof(DEVMODEW, dmLogPixels)); if (lpDevModeA->dmDriverExtra != 0) memcpy(lpDevModeW+1, lpDevModeA+1, lpDevModeA->dmDriverExtra); lpDevModeW->dmSize = sizeof(DEVMODEW); return lpDevModeW; }
LPDEVMODEW AFXAPI AfxDevModeA2W(LPDEVMODEW lpDevModeW, LPDEVMODEA lpDevModeA) { if (lpDevModeA == NULL) return NULL; ASSERT(lpDevModeW != NULL); AfxA2WHelper(lpDevModeW->dmDeviceName, (LPCSTR)lpDevModeA->dmDeviceName, CCHDEVICENAME); Checked::memcpy_s(&lpDevModeW->dmSpecVersion, offsetof(DEVMODEW, dmFormName) - offsetof(DEVMODEW, dmSpecVersion), &lpDevModeA->dmSpecVersion, offsetof(DEVMODEW, dmFormName) - offsetof(DEVMODEW, dmSpecVersion)); AfxA2WHelper(lpDevModeW->dmFormName, (LPCSTR)lpDevModeA->dmFormName, CCHFORMNAME); Checked::memcpy_s(&lpDevModeW->dmLogPixels, sizeof(DEVMODEW) - offsetof(DEVMODEW, dmLogPixels), &lpDevModeA->dmLogPixels, sizeof(DEVMODEW) - offsetof(DEVMODEW, dmLogPixels)); if (lpDevModeA->dmDriverExtra != 0) { Checked::memcpy_s(lpDevModeW+1, lpDevModeA->dmDriverExtra, lpDevModeA+1, lpDevModeA->dmDriverExtra); } lpDevModeW->dmSize = sizeof(DEVMODEW); return lpDevModeW; }
//******************************************************************************* BOOL CBCGPTagManager::LoadFromResource (LPCTSTR lpszResID, LPCTSTR lpszResType) { if (lpszResID == NULL) { ASSERT (FALSE); return FALSE; } if (lpszResType == NULL) { ASSERT (FALSE); return FALSE; } BOOL bRes = FALSE; HINSTANCE hInst = AfxFindResourceHandle(lpszResID, lpszResType); HRSRC hRsrc = ::FindResource(hInst, lpszResID, lpszResType); if (hRsrc == NULL) { return FALSE; } HGLOBAL hGlobal = LoadResource(hInst, hRsrc); if (hGlobal == NULL) { return FALSE; } #ifdef _UNICODE LPWSTR lpChars = NULL; LPSTR lpa = (LPSTR) LockResource (hGlobal); VERIFY(lpa != NULL); const size_t nChars = strlen (lpa) + 1; lpChars = (LPWSTR) new WCHAR[nChars]; LPCTSTR lpszXML = AfxA2WHelper (lpChars, lpa, (int)nChars); #else LPCTSTR lpszXML = (LPCTSTR) LockResource (hGlobal); #endif if (lpszXML != NULL) { SetBuffer (lpszXML); bRes = TRUE; } UnlockResource (hGlobal); FreeResource (hGlobal); #ifdef _UNICODE if (lpChars != NULL) { delete [] lpChars; lpChars = NULL; } #endif return bRes; }