Changeset 2752 for trunk/synergy/lib/platform/CPMUtil.cpp
- Timestamp:
- Jul 29, 2006, 6:43:07 AM (19 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/synergy/lib/platform/CPMUtil.cpp
r2751 r2752 2 2 * synergy -- mouse and keyboard sharing utility 3 3 * Copyright (C) 2004 Chris Schoeneman 4 * Copyright (C) 2006 Knut St. Osmundsen 4 5 * 5 6 * This package is free software; you can redistribute it and/or … … 13 14 */ 14 15 15 #include "C MSWindowsUtil.h"16 #include "CPMUtil.h" 16 17 #include "CStringUtil.h" 17 18 #include <stdio.h> 18 19 19 20 // 20 // C MSWindowsUtil21 // CPMUtil 21 22 // 22 23 23 24 CString 24 C MSWindowsUtil::getString(HINSTANCE instance, DWORDid)25 CPMUtil::getString(HMODULE hmod, ULONG id) 25 26 { 26 char buffer[1024]; 27 int size = static_cast<int>(sizeof(buffer) / sizeof(buffer[0])); 28 char* msg = buffer; 27 char szBuf[1024]; 29 28 30 29 // load string 31 int n = LoadString(instance, id, msg, size); 32 msg[n] = '\0'; 33 if (n < size) { 34 return msg; 30 LONG cch = WinLoadString(WinQueryAnchorBlock(HWND_DESKTOP), hmod, id, sizeof(szBuf), (PSZ)szBuf); 31 if(cch < 0) { 32 szBuf[cch] = '\0'; 33 char *psz = szBuf; 34 return psz; 35 35 } 36 37 // not enough buffer space. keep trying larger buffers until 38 // we get the whole string. 39 msg = NULL; 40 do { 41 size <<= 1; 42 delete[] msg; 43 char* msg = new char[size]; 44 n = LoadString(instance, id, msg, size); 45 } while (n == size); 46 msg[n] = '\0'; 47 48 CString result(msg); 49 delete[] msg; 50 return result; 36 return ""; 51 37 } 52 38 53 39 CString 54 C MSWindowsUtil::getErrorString(HINSTANCE hinstance, DWORD error, DWORDid)40 CPMUtil::getErrorString(HMODULE hmod, ULONG error, ULONG id) 55 41 { 42 #if 1 43 char szMsg[80]; 44 snprintf(szMsg, sizeof(szMsg), "sys error %#lx (%d)\n", error, error); 45 char *pszMsg = szMsg; 46 return CString(pszMsg); 47 48 #else 56 49 char* buffer; 57 50 if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | … … 73 66 return result; 74 67 } 68 #endif 75 69 } 70 71 HAB CPMUtil::getHAB(void) 72 { 73 return WinQueryAnchorBlock(HWND_DESKTOP); 74 } 75
Note:
See TracChangeset
for help on using the changeset viewer.