27 #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32
34 #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32
40 DWORD dwProcessID = 0;
41 GetWindowThreadProcessId(hWnd, &dwProcessID);
43 if (dwProcessID != (DWORD)lParam)
46 if (GetParent(hWnd) == NULL)
58 DWORD dwProcessID = 0;
59 GetWindowThreadProcessId(hWnd, &dwProcessID);
61 if (dwProcessID != GetCurrentProcessId())
64 if (GetWindowLongPtr(hWnd, GWLP_HINSTANCE) == lParam)
76 template <> ClipboardManager* Singleton<ClipboardManager>::msInstance =
nullptr;
89 #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32
92 GetModuleFileName(0, (LPCH)&buf, MAX_PATH);
94 HINSTANCE instance = GetModuleHandle(buf);
96 EnumChildWindows(GetDesktopWindow(), (WNDENUMPROC)
EnumWindowProc, (LPARAM)instance);
102 mIsInitialise =
true;
111 mIsInitialise =
false;
116 mClipboardData[_type] = _data;
118 #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32
122 size_t size = (mPutTextInClipboard.size() + 1) * 2;
124 if (OpenClipboard((HWND)mHwnd))
127 HGLOBAL hgBuffer = GlobalAlloc(GMEM_DDESHARE, size);
128 wchar_t* chBuffer = hgBuffer ? (
wchar_t*)GlobalLock(hgBuffer) : NULL;
131 memcpy(chBuffer, mPutTextInClipboard.asWStr_c_str(), size);
132 GlobalUnlock(hgBuffer);
133 SetClipboardData(CF_UNICODETEXT, hgBuffer);
143 MapString::iterator iter = mClipboardData.find(_type);
144 if (iter != mClipboardData.end()) mClipboardData.erase(iter);
149 #if MYGUI_PLATFORM == MYGUI_PLATFORM_WIN32
154 if (OpenClipboard((HWND)mHwnd))
156 HANDLE hData = GetClipboardData(CF_UNICODETEXT);
157 wchar_t* chBuffer = hData ? (
wchar_t*)GlobalLock(hData) : NULL;
166 if (mPutTextInClipboard != buff)
173 MapString::iterator iter = mClipboardData.find(_type);
174 if (iter != mClipboardData.end())
return (*iter).second;
179 MapString::iterator iter = mClipboardData.find(_type);
180 if (iter != mClipboardData.end())
return (*iter).second;