1 // =================================
  2 // Copyright (c) 2021 Seppo Laakko
  3 // Distributed under the MIT license
  4 // =================================
  5 
  6 #ifndef CMAJOR_RT_WINDOWS_API_INCLUDED
  7 #define CMAJOR_RT_WINDOWS_API_INCLUDED
  8 #include <cmajor/rt/RtApi.hpp>
  9 #include <stdint.h>
 10 
 11 extern "C" void WinSetInstance();
 12 extern "C" uint64_t WinGetLastError();
 13 extern "C" void WinFormatMessage(uint64_t errorCode, char16_t* buffer);
 14 extern "C" void* WinCreateEvent();
 15 extern "C" bool WinSetEvent(void* eventHandle);
 16 extern "C" bool WinResetEvent(void* eventHandle);
 17 extern "C" bool WinWaitEvent(void* eventHandle);
 18 extern "C" bool WinCloseHandle(void* handle);
 19 extern "C" int32_t WinWaitForMultipleObjects(uint32_t count, void** handles);
 20 extern "C" void* WinFindFirstChangeNotification(const char* directoryPath);
 21 extern "C" bool WinFindNextChangeNotification(void* handle);
 22 extern "C" bool WinFindCloseChangeNotification(void* handle);
 23 extern "C" bool WinShellExecute(const char* filePath, int64_t& errorCode);
 24 extern "C" int WinInit(void* messageProcessorFunctionAddress, void* keyPreviewFunctionAddress);
 25 extern "C" int WinRun();
 26 extern "C" void WinDone();
 27 extern "C" int WinApplicationMessageLoop();
 28 extern "C" void WinRunModal();
 29 extern "C" void* WinSubClassCommandWndProc(void* windowHandle);
 30 extern "C" void WinRestoreOriginalWndProc(void* windowHandle, void* originalWndProc);
 31 extern "C" void* WinGetForegroundWindow();
 32 extern "C" bool WinEnableWindow(void* windowHandle, bool enable);
 33 extern "C" int WinDialogWindowMessageLoop(void* windowHandle, void* parentWindowHandle, void* getDialogResultFunc, void* keyPreviewFunc, void* dialogWindowPtr);
 34 extern "C" uint16_t WinRegisterWindowClass(const char* windowClassName, uint32_t style, int backgroundColor);
 35 extern "C" void* WinCreateWindowByClassAtom(uint16_t windowClass, const char* windowName, int64_t style, int64_t exStyle, int x, int y, int w, int h, void* parentHandle);
 36 extern "C" void* WinCreateWindowByClassName(const char* windowClass, const char* windowName, int64_t style, int64_t exStyle, int x, int y, int w, int h, void* parentHandle);
 37 extern "C" int WinShowMessageBox(const char* text, const char* caption);
 38 extern "C" int WinShowMessageBoxWithType(const char* text, const char* caption, void* ownerWindowHandle, uint32_t type);
 39 extern "C" bool WinMessageBeep(uint32_t messageBeepType);
 40 extern "C" void WinPostQuitMessage(int exitCode);
 41 extern "C" bool WinPostMessage(void* windowHandle, uint32_t msg, uint32_t wparam, int64_t lparam);
 42 extern "C" int64_t WinSendMessage(void* windowHandle, uint32_t msg, uint32_t wparam, int64_t lparam);
 43 extern "C" bool WinShowWindow(void* windowHandle, int commandShow);
 44 extern "C" bool WinUpdateWindow(void* windowHandle);
 45 extern "C" bool WinMoveWindow(void* windowHandle, int x, int y, int w, int h, bool repaint);
 46 extern "C" bool WinGetClientRect(void* windowHandle, void* rect);
 47 extern "C" bool WinGetWindowRect(void* windowHandle, void* rect);
 48 extern "C" bool WinClientToScreen(void* windowHandle, void* point);
 49 extern "C" bool WinScreenToClient(void* windowHandle, void* point);
 50 extern "C" bool WinPtInRect(void* rect, void* point);
 51 extern "C" bool WinSetWindowText(void* windowHandle, const char* text);
 52 extern "C" int WinGetWindowTextLength(void* windowHandle);
 53 extern "C" int WinGetWindowText(void* windowHandle, char16_t* textBuffer, int maxCount);
 54 extern "C" void* WinGetDC(void* windowHandle);
 55 extern "C" int WinReleaseHDC(void* windowHandle, void* hdc);
 56 extern "C" bool WinTrackMouseEvent(void* windowHandle, uint32_t flags, uint32_t hoverTimeMs);
 57 extern "C" void* WinSetParent(void* childWindowHandle, void* parentWindowHandle);
 58 extern "C" bool WinInvalidateRect(void* windowHandle, void* rect, bool eraseBackground);
 59 extern "C" void* WinBeginPaint(void* windowHandle, void*& paintStruct);
 60 extern "C" void WinEndPaint(void* windowHandle, void* paintStruct);
 61 extern "C" void WinGetClipRect(void* paintStruct, int& x, int& y, int& w, int& h);
 62 extern "C" void* WinCreateGraphics(void* hdc);
 63 extern "C" void WinDeleteGraphics(void* nativeGraphics);
 64 extern "C" void* WinCreateGraphicsFromWindowHandle(void* hwnd);
 65 extern "C" void* WinCreateGraphicsFromImage(void* image);
 66 extern "C" int WinGraphicsGetLastStatus(void* grapchis);
 67 extern "C" void* WinGraphicsGetHDC(void* nativeGraphics);
 68 extern "C" void* WinGraphicsCreatePen(uint8_t alpha, uint8_t red, uint8_t green, uint8_t blue, float width);
 69 extern "C" void* WinGraphicsClonePen(void* pen);
 70 extern "C" void WinGraphicsDeletePen(void* pen);
 71 extern "C" int WinGraphicsPenGetLastStatus(void* pen);
 72 extern "C" int WinGraphicsPenGetAlignment(void* pen);
 73 extern "C" int WinGraphicsPenSetAlignment(void* pen, int alignment);
 74 extern "C" void* WinGraphicsPenGetBrush(void* pen);
 75 extern "C" int WinGraphicsPenSetBrush(void* pen, void* brush);
 76 extern "C" int WinGraphicsPenGetColor(void* pen, uint8_t& alpha, uint8_t& red, uint8_t& green, uint8_t& blue);
 77 extern "C" int WinGraphicsPenSetColor(void* pen, uint8_t alpha, uint8_t red, uint8_t green, uint8_t blue);
 78 extern "C" int WinGraphicsPenGetStartCap(void* pen);
 79 extern "C" int WinGraphicsPenSetStartCap(void* pen, int startCap);
 80 extern "C" int WinGraphicsPenGetEndCap(void* pen);
 81 extern "C" int WinGraphicsPenSetEndCap(void* pen, int endCap);
 82 extern "C" int WinGraphicsPenGetDashCap(void* pen);
 83 extern "C" int WinGraphicsPenSetDashCap(void* pen, int dashCap);
 84 extern "C" float WinGraphicsPenGetDashOffset(void* pen);
 85 extern "C" int WinGraphicsPenSetDashOffset(void* pen, float dashOffset);
 86 extern "C" int WinGraphicsPenGetDashStyle(void* pen);
 87 extern "C" int WinGraphicsPenSetDashStyle(void* pen, int dashStyle);
 88 extern "C" int WinGraphicsPenGetLineJoin(void* pen);
 89 extern "C" int WinGraphicsPenSetLineJoin(void* pen, int lineJoin);
 90 extern "C" void* WinGraphicsCreateSolidBrush(uint8_t alpha, uint8_t red, uint8_t green, uint8_t blue);
 91 extern "C" void* WinGraphicsCloneSolidBrush(void* solidBrush);
 92 extern "C" void WinGraphicsDeleteSolidBrush(void* solidBrush);
 93 extern "C" int WinGraphicsBrushGetLastStatus(void* brush);
 94 extern "C" void* WinGraphicsCreateEmptyFontFamily();
 95 extern "C" void* WinGraphicsCreateFontFamily(const char* familyName);
 96 extern "C" void* WinGraphicsCloneFontFamily(void* fontFamily);
 97 extern "C" void WinGraphicsDeleteFontFamily(void* fontFamily);
 98 extern "C" int WinGraphicsGetFontFamilyName(void* fontFamily, void*& str);
 99 extern "C" const void* WinGraphicsGetGenericMonospaceFontFamily();
100 extern "C" const void* WinGraphicsGetGenericSansSerifFontFamily();
101 extern "C" const void* WinGraphicsGetGenericSerifFontFamily();
102 extern "C" int WinGraphicsFontFamilyGetLastStatus(void* fontFamily);
103 extern "C" void* WinGraphicsCreateFont(const void* fontFamily, float emSize, int style, int unit);
104 extern "C" void* WinGraphicsCreateFontFromHFont(void* hdc, void* hfont);
105 extern "C" void* WinGraphicsCloneFont(void* font);
106 extern "C" void WinGraphicsDeleteFont(void* font);
107 extern "C" int WinGraphicsFontGetLastStatus(void* font);
108 extern "C" int WinGraphicsGetFontFamily(void* font, void* fontFamily);
109 extern "C" float WinGraphicsGetFontSize(void* font);
110 extern "C" float WinGraphicsGetFontHeight(void* font, const void* graphics);
111 extern "C" int WinGraphicsGetFontStyle(void* font);
112 extern "C" int WinGraphicsFontToHFont(void* font, void* graphics, void*& hfont);
113 extern "C" void* WinGraphicsCreateDefaultStringFormat();
114 extern "C" const void* WinGraphicsGetGenericDefaultStringFormat();
115 extern "C" const void* WinGraphicsGetGenericTypographicStringFormat();
116 extern "C" void* WinGraphicsCreateStringFormat(int formatFlags, uint16_t languageId);
117 extern "C" void* WinGraphicsCloneStringFormat(void* stringFormat);
118 extern "C" void WinGraphicsDeleteStringFormat(void* stringFormat);
119 extern "C" int WinGraphicsStringFormatGetLastStatus(void* stringFormat);
120 extern "C" int WinGraphicsStringFormatSetAlignment(void* stringFormat, int alignment);
121 extern "C" int WinGraphicsStringFormatSetLineAlignment(void* stringFormat, int alignment);
122 extern "C" int WinGraphicsStringFormatSetHotKeyPrefix(void* stringFormat, int hotKeyPrefix);
123 extern "C" int WinGraphicsDrawLine(void* graphics, void* pen, int startX, int startY, int endX, int endY);
124 extern "C" int WinGraphicsDrawLineF(void* graphics, void* pen, float startX, float startY, float endX, float endY);
125 extern "C" int WinGraphicsDrawLines(void* graphics, void* pen, int count, void* points);
126 extern "C" int WinGraphicsDrawLinesF(void* graphics, void* pen, int count, void* points);
127 extern "C" int WinGraphicsDrawString(void* graphics, const char* str, void* font, float x, float y, void* brush);
128 extern "C" int WinGraphicsDrawStringFormatPoint(void* graphics, const char* str, void* font, float x, float y, void* format, void* brush);
129 extern "C" int WinGraphicsDrawStringFormatRect(void* graphics, const char* str, void* font, float x, float y, float w, float h, void* format, void* brush);
130 extern "C" int WinGraphicsMeasureStringFormatSize(void* graphics, const char* str, void* font, float w, float h, void* format,
131     float& outSizeW, float& outSizeH, int* codePointsFitted, int* linesFilled);
132 extern "C" int WinGraphicsMeasureStringFormatRect(void* graphics, const char* str, void* font, float x, float y, float w, float h, void* format,
133     float& outX, float& outY, float& outW, float& outH, int* codePointsFitted, int* linesFilled);
134 extern "C" int WinGraphicsMeasureStringFormatPoint(void* graphics, const char* str, void* font, float x, float y, void* format,
135     float& outX, float& outY, float& outW, float& outH);
136 extern "C" int WinGraphicsGetTextRenderingHint(void* graphics);
137 extern "C" int WinGraphicsSetTextRenderingHint(void* graphics, int textRenderingHint);
138 extern "C" int WinGraphicsClear(void* graphics, uint8_t alpha, uint8_t red, uint8_t green, uint8_t blue);
139 extern "C" int WinGraphicsDrawRectangle(void* graphics, void* pen, int x, int y, int w, int h);
140 extern "C" int WinGraphicsDrawRectangleF(void* graphics, void* pen, float x, float y, float w, float h);
141 extern "C" int WinGraphicsFillRectangle(void* graphics, void* brush, int x, int y, int w, int h);
142 extern "C" int WinGraphicsFillRectangleF(void* graphics, void* brush, float x, float y, float w, float h);
143 extern "C" int WinGraphicsFillPolygon(void* graphics, void* brush, int count, void* points);
144 extern "C" int WinGraphicsFillPolygonF(void* graphics, void* brush, int count, void* points);
145 extern "C" int WinGraphicsDrawArc(void* graphics, void* pen, float x, float y, float w, float h, float startAngle, float sweepAngle);
146 extern "C" int WinGraphicsDrawEllipse(void* graphics, void* pen, float x, float y, float w, float h);
147 extern "C" int WinGraphicsFillEllipse(void* graphics, void* brush, float x, float y, float w, float h);
148 extern "C" void* WinGraphicsCreateRegion();
149 extern "C" void* WinGraphicsCloneRegion(void* region);
150 extern "C" void WinGraphicsDeleteRegion(void* region);
151 extern "C" int WinGraphicsRegionGetLastStatus(void* region);
152 extern "C" int WinGraphicsGetClip(void* graphics, void* region);
153 extern "C" int WinGraphicsSetClipRect(void* graphics, int x, int y, int w, int h, int combineMode);
154 extern "C" int WinGraphicsSetClipRegion(void* graphics, void* region);
155 extern "C" void* WinGraphicsCreateImage(const char* fileName, bool useEmbeddedColorManagement);
156 extern "C" int WinGraphicsImageGetLastStatus(void* image);
157 extern "C" void* WinGraphicsCloneImage(void* image);
158 extern "C" void WinGraphicsDeleteImage(void* image);
159 extern "C" uint32_t WinGraphicsImageGetHeight(void* image);
160 extern "C" uint32_t WinGraphicsImageGetWidth(void* image);
161 extern "C" void* WinGraphicsCreateBitmap(const char* fileName, bool useEmbeddedColorManagement);
162 extern "C" void* WinGraphicsCreateBitmapWidthHeight(int w, int h, void* graphics);
163 extern "C" void* WinGraphicsCreateBitmapWinBitmap(void* winBitmap, void* palette);
164 extern "C" void* WinGraphicsCreateBitmapIcon(void* icon);
165 extern "C" void* WinGraphicsCreateBitmapResource(const char* resourceName);
166 extern "C" void* WinGraphicsCloneBitmap(void* nativeBitmap, int x, int y, int w, int h, int pixelFormat);
167 extern "C" int WinGraphicsBitmapGetPixel(void* nativeBitmap, int x, int y, uint8_t & alpha, uint8_t & red, uint8_t & green, uint8_t & blue);
168 extern "C" int WinGraphicsBitmapSetPixel(void* nativeBitmap, int x, int y, uint8_t alpha, uint8_t red, uint8_t green, uint8_t blue);
169 extern "C" uint32_t WinGraphicsSave(void* graphics);
170 extern "C" int WinGraphicsRestore(void* graphics, uint32_t graphicsState);
171 extern "C" void* WinGraphicsCreateDefaultImageAttributes();
172 extern "C" int WinGraphicsImageAttributesGetLastStatus(void* imageAttributes);
173 extern "C" void* WinGraphicsCloneImageAttributes(void* imageAttributes);
174 extern "C" void WinGraphicsDeleteImageAttributes(void* imageAttributes);
175 extern "C" int WinGraphicsImageAttributesSetColorKey(void* imageAttributes, uint8_t colorLowAlpha, uint8_t colorLowRed, uint8_t colorLowGreen, uint8_t colorLowBlue,
176     uint8_t colorHighAlpha, uint8_t colorHighRed, uint8_t colorHighGreen, uint8_t colorHighBlue, int colorAdjustType);
177 extern "C" int WinGraphicsDrawImagePoint(void* graphics, void* image, float x, float y);
178 extern "C" int WinGraphicsDrawImageRect(void* graphics, void* image, float x, float y, float w, float h);
179 extern "C" int WinGraphicsDrawImageWithAttributes(void* graphics, void* image, int destRectX, int destRectY, int destRectW, int destRectH, int srcX, int srcY, int srcW, int srcH,
180     int srcUnit, void* imageAttributes);
181 extern "C" int WinGraphicsDrawImageWithAttributesF(void* graphics, void* image, float destRectX, float destRectY, float destRectW, float destRectH, float srcX, float srcY, float srcW, float srcH,
182     int srcUnit, void* imageAttributes);
183 extern "C" int WinGraphicsGetTransform(void* graphics, void* matrix);
184 extern "C" int WinGraphicsSetTransform(void* graphics, void* matrix);
185 extern "C" int WinGraphicsMultiplyTransform(void* graphics, void* matrix, int order);
186 extern "C" int WinGraphicsResetTransform(void* graphics);
187 extern "C" int WinGraphicsRotateTransform(void* graphics, float angle, int order);
188 extern "C" int WinGraphicsScaleTransform(void* graphics, float scaleX, float scaleY, int order);
189 extern "C" int WinGraphicsTranslateTransform(void* graphics, float offsetX, float offsetY, int order);
190 extern "C" void* WinGraphicsCreateMatrix();
191 extern "C" void* WinGraphicsCreateMatrixFromElements(float m11, float m12, float m21, float m22, float dx, float dy);
192 extern "C" void* WinGraphicsCreateMatrixRectFPointF(float rectX, float rectY, float rectW, float rectH, float ptX, float ptY);
193 extern "C" void* WinGraphicsCreateMatrixRectPoint(int rectX, int rectY, int rectW, int rectH, int ptX, int ptY);
194 extern "C" int WinGraphicsMatrixGetLastStatus(void* matrix);
195 extern "C" void* WinGraphicsCloneMatrix(void* matrix);
196 extern "C" void WinGraphicsDeleteMatrix(void* matrix);
197 extern "C" int WinGraphicsMultiplyMatrix(void* matrix, void* factorMatrix, int order);
198 extern "C" int WinGraphicsResetMatrix(void* matrix);
199 extern "C" int WinGraphicsInvertMatrix(void* matrix);
200 extern "C" float WinGraphicsMatrixOffsetX(void* matrix);
201 extern "C" float WinGraphicsMatrixOffsetY(void* matrix);
202 extern "C" int WinGraphicsMatrixRotate(void* matrix, float angle, int order);
203 extern "C" int WinGraphicsMatrixRotateAt(void* matrix, float angle, float centerX, float centerY, int order);
204 extern "C" int WinGraphicsMatrixScale(void* matrix, float scaleX, float scaleY, int order);
205 extern "C" int WinGraphicsMatrixSetElements(void* matrix, float m11, float m12, float m21, float m22, float dx, float dy);
206 extern "C" int WinGraphicsMatrixShear(void* matrix, float shearX, float shearY, int order);
207 extern "C" int WinGraphicsMatrixTranslate(void* matrix, float offsetX, float offsetY, int order);
208 extern "C" int WinGraphicsMatrixTransformPoints(void* matrix, void* points, int numPoints);
209 extern "C" int WinGraphicsMatrixTransformPointsF(void* matrix, void* points, int numPoints);
210 extern "C" int WinGraphicsGetPageUnit(void* graphics);
211 extern "C" int WinGraphicsSetPageUnit(void* graphics, int unit);
212 extern "C" float WinGraphicsGetPageScale(void* graphics);
213 extern "C" int WinGraphicsSetPageScale(void* graphics, float scale);
214 extern "C" float WinGraphicsGetDpiX(void* graphics);
215 extern "C" float WinGraphicsGetDpiY(void* graphics);
216 extern "C" int WinGraphicsGetSmoothingMode(void* graphics);
217 extern "C" int WinGraphicsSetSmoothingMode(void* graphics, int smoothingMode);
218 extern "C" int WinGraphicsGetEncoderClsId(const char* imageFormat, void* clsid);
219 extern "C" int WinGraphicsImageSave(void* image, const char* fileName, const void* encoderClsId);
220 extern "C" void WinGetSysColor(int index, uint8_t& red, uint8_t& green, uint8_t& blue);
221 extern "C" bool WinSetBkColor(void* hdc, uint8_t red, uint8_t green, uint8_t blue);
222 extern "C" void WinGetMessagePos(int32_t& x, int32_t& y);
223 extern "C" void* WinGetFocus();
224 extern "C" void* WinSetFocus(void* windowHandle);
225 extern "C" void* WinGetTopWindow(void* windowHandle);
226 extern "C" bool WinBringWindowToTop(void* windowHandle);
227 extern "C" bool WinSetWindowPos(void* windowHandle, void* insertAfterWindowHandle, int x, int y, int cx, int cy, uint32_t flags);
228 extern "C" bool WinGetOpenFileName(void* windowHandle, const char16_t* filter, const char16_t* initialDirectory, char16_t* fileNameBuffer, uint32_t fileNameBufferSize, uint32_t flags, const char16_t* defaultExtension);
229 extern "C" bool WinGetSaveFileName(void* windowHandle, const char16_t* filter, const char16_t* initialDirectory, char16_t* fileNameBuffer, uint32_t fileNameBufferSize, uint32_t flags, const char16_t* defaultExtension);
230 extern "C" uint32_t WinCommDlgExtendedError();
231 extern "C" void* WinLoadImage(const char* name, uint32_t type, int32_t cx, int32_t cy);
232 extern "C" void* WinLoadStandardCursor(int cursorId);
233 extern "C" void* WinLoadCursor(const char* cursorName);
234 extern "C" void* WinGetCursor();
235 extern "C" void* WinSetCursor(void* cursorHandle);
236 extern "C" bool WinDestroyCursor(void* cursorHandle);
237 extern "C" void* WinLoadStandardIcon(int iconId);
238 extern "C" void* WinLoadIcon(const char* iconName);
239 extern "C" bool WinDestroyIcon(void* iconHandle);
240 extern "C" void* WinLoadStandardBitmap(int bitmapId);
241 extern "C" void* WinLoadBitmap(const char* bitmapName);
242 extern "C" bool WinDestroyBitmap(void* bitmapHandle);
243 extern "C" bool WinDeleteObject(void* handle);
244 extern "C" int WinGetSystemMetrics(int index);
245 extern "C" void* WinSetCapture(void* windowHandle);
246 extern "C" bool WinReleaseCapture();
247 extern "C" int64_t WinGetClassLong(void* windowHandle, int index);
248 extern "C" int64_t WinSetClassLong(void* windowHandle, int index, int64_t value);
249 extern "C" int64_t WinGetWindowLong(void* windowHandle, int index);
250 extern "C" bool WinSetWindowLong(void* windowHandle, int index, int64_t newValue);
251 extern "C" bool WinScrollWindow(void* windowHandle, int xAmount, int yAmount,
252     int clientLocX, int clientLocY, int clientSizeW, int clientSizeH, int clipLocX, int clipLocY, int clipSizeW, int clipSizeH);
253 extern "C" bool WinScrollWindowEx(void* windowHandle, int dx, int dy, int clientLocX, int clientLocY, int clientSizeW, int clientSizeH, int clipLocX, int clipLocY, int clipSizeW, int clipSizeH,
254     int x1, int y1, int x2, int y2);
255 extern "C" bool WinGetScrollInfo(void* windowHandle, int nBar, uint32_t& nPage, int32_t& nPos, int32_t& nMin, int32_t& nMax, int32_t& nTrackPos);
256 extern "C" int WinSetScrollInfo(void* windowHandle, int nBar, uint32_t fMask, bool redraw, uint32_t nPage, int32_t nPos, int32_t nMin, int32_t nMax);
257 extern "C" bool WinShowScrollBar(void* windowHandle, int nBar, bool show);
258 extern "C" bool WinCreateCaret(void* windowHandle, void* bitmapHandle, int width, int height);
259 extern "C" bool WinDestroyCaret();
260 extern "C" bool WinShowCaret(void* windowHandle);
261 extern "C" bool WinHideCaret(void* windowHandle);
262 extern "C" bool WinGetCaretPos(int& x, int& y);
263 extern "C" bool WinSetCaretPos(int x, int y);
264 extern "C" bool WinSetTimer(void* windowHandle, uint32_t timerId, uint32_t elapse);
265 extern "C" bool WinKillTimer(void* windowHandle, uint32_t timerId);
266 extern "C" bool WinRegOpenCurrentUser(void** result);
267 extern "C" bool WinRegCloseKey(void* key);
268 extern "C" bool WinRegGetDWordValue(void* key, const char* subKey, const char* valueName, uint32_t& value);
269 extern "C" uint32_t WinRegisterClipboardFormat(const char* formatName);
270 extern "C" bool WinOpenClipboard(void* windowHandle);
271 extern "C" bool WinCloseClipboard();
272 extern "C" bool WinEmptyClipboard();
273 extern "C" void* WinSetClipboardData(uint32_t format, void* mem);
274 extern "C" void* WinGetClipboardData(uint32_t format);
275 extern "C" bool WinIsClipboardFormatAvailable(uint32_t format);
276 extern "C" bool WinAddClipboardFormatListener(void* windowHandle);
277 extern "C" bool WinRemoveClipboardFormatListener(void* windowHandle);
278 extern "C" void* WinGlobalAlloc(uint32_t flags, uint64_t size);
279 extern "C" void* WinGlobalLock(void* memHandle);
280 extern "C" bool WinGlobalUnlock(void* memHandle);
281 extern "C" void* WinGlobalFree(void* memHandle);
282 extern "C" uint64_t WinGlobalSize(void* memHandle);
283 extern "C" bool WinGetCursorPos(int& x, int& y);
284 extern "C" bool WinGetFolder(void* windowHandle, const char16_t* defaultDirectory, char16_t* folderNameBuffer, uint32_t folderNameBufferSize);
285 extern "C" bool WinKeyPressed(int keyCode);
286 extern "C" int WinGetCurrentProcessId();
287 extern "C" void WinBeginTest();
288 extern "C" void WinEndTest();
289 
290 #endif // CMAJOR_RT_WINDOWS_API_INCLUDED