user32.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. #define WIN32_LEAN_AND_MEAN
  2. #include <windows.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. extern "C" {
  6. WNDCLASSW * bmx_win32_WNDCLASSW_new();
  7. void bmx_win32_WNDCLASSW_free(WNDCLASSW * clas);
  8. void bmx_win32_WNDCLASSW_SetlpfnWndProc(WNDCLASSW * clas, WNDPROC lpfnWndProc);
  9. void bmx_win32_WNDCLASSW_SethInstance(WNDCLASSW * clas, HINSTANCE hInstance);
  10. void bmx_win32_WNDCLASSW_SethCursor(WNDCLASSW * clas, HCURSOR hCursor);
  11. void bmx_win32_WNDCLASSW_SetlpszClassName(WNDCLASSW * clas, LPCWSTR lpszClassName);
  12. void bmx_win32_WNDCLASSW_Setstyle(WNDCLASSW * clas, int style);
  13. void bmx_win32_WNDCLASSW_SethIcon(WNDCLASSW * clas, HICON hIcon);
  14. void bmx_win32_WNDCLASSW_SethbrBackground(WNDCLASSW * clas, int hbrBackground);
  15. void bmx_win32_WNDCLASSW_SetcbWndExtra(WNDCLASSW * clas, int cbWndExtra);
  16. ICONINFO * bmx_win32_ICONINFO_new();
  17. void bmx_win32_ICONINFO_free(ICONINFO * info);
  18. void bmx_win32_ICONINFO_SetfIcon(ICONINFO * info, int fIcon);
  19. void bmx_win32_ICONINFO_SethbmMask(ICONINFO * info, HBITMAP hbmMask);
  20. void bmx_win32_ICONINFO_SethbmColor(ICONINFO * info, HBITMAP hbmColor);
  21. MENUINFO * bmx_win32_MENUINFO_new();
  22. void bmx_win32_MENUINFO_free(MENUINFO * info);
  23. void bmx_win32_MENUINFO_SetfMask(MENUINFO * info, int fMask);
  24. void bmx_win32_MENUINFO_SetdwStyle(MENUINFO * info, int dwStyle);
  25. void bmx_win32_MENUINFO_SetcyMax(MENUINFO * info, UINT cyMax);
  26. void bmx_win32_MENUINFO_SethbrBack(MENUINFO * info, HBRUSH hbrBack);
  27. void bmx_win32_MENUINFO_SetdwContextHelpID(MENUINFO * info, int dwContextHelpID);
  28. void bmx_win32_MENUINFO_SetdwMenuData(MENUINFO * info, ULONG_PTR dwMenuData);
  29. MENUITEMINFOW * bmx_win32_MENUITEMINFOW_new();
  30. void bmx_win32_MENUITEMINFOW_free(MENUITEMINFOW * info);
  31. void bmx_win32_MENUITEMINFOW_SetfMask(MENUITEMINFOW * info, UINT fMask);
  32. void bmx_win32_MENUITEMINFOW_SetfType(MENUITEMINFOW * info, UINT fType);
  33. void bmx_win32_MENUITEMINFOW_SetfState(MENUITEMINFOW * info, UINT fState);
  34. void bmx_win32_MENUITEMINFOW_SetwID(MENUITEMINFOW * info, UINT wID);
  35. void bmx_win32_MENUITEMINFOW_SethSubMenu(MENUITEMINFOW * info, HMENU hSubMenu);
  36. void bmx_win32_MENUITEMINFOW_SetdwItemData(MENUITEMINFOW * info, ULONG_PTR dwItemData);
  37. void bmx_win32_MENUITEMINFOW_SetdwTypeData(MENUITEMINFOW * info, LPWSTR dwTypeData);
  38. LPWSTR bmx_win32_MENUITEMINFOW_dwTypeData(MENUITEMINFOW * info);
  39. SCROLLINFO * bmx_win32_SCROLLINFO_new();
  40. void bmx_win32_SCROLLINFO_free(SCROLLINFO * info);
  41. void bmx_win32_SCROLLINFO_SetfMask(SCROLLINFO * info, UINT fMask);
  42. void bmx_win32_SCROLLINFO_SetnMin(SCROLLINFO * info, int nMin);
  43. void bmx_win32_SCROLLINFO_SetnMax(SCROLLINFO * info, int nMax);
  44. void bmx_win32_SCROLLINFO_SetnPage(SCROLLINFO * info, UINT nPage);
  45. void bmx_win32_SCROLLINFO_SetnPos(SCROLLINFO * info, int nPos);
  46. void bmx_win32_SCROLLINFO_SetnTrackPos(SCROLLINFO * info, int nTrackPos);
  47. UINT bmx_win32_SCROLLINFO_nPage(SCROLLINFO * info);
  48. int bmx_win32_SCROLLINFO_nPos(SCROLLINFO * info);
  49. int bmx_win32_SCROLLINFO_nTrackPos(SCROLLINFO * info);
  50. WINDOWINFO * bmx_win32_WINDOWINFO_new();
  51. void bmx_win32_WINDOWINFO_free(WINDOWINFO * info);
  52. int bmx_win32_WINDOWINFO_dwStyle(WINDOWINFO * info);
  53. TRACKMOUSEEVENT * bmx_win32_TRACKMOUSEEVENT_new();
  54. void bmx_win32_TRACKMOUSEEVENT_free(TRACKMOUSEEVENT * event);
  55. void bmx_win32_TRACKMOUSEEVENT_SetdwFlags(TRACKMOUSEEVENT * event, int dwFlags);
  56. void bmx_win32_TRACKMOUSEEVENT_SethwndTrack(TRACKMOUSEEVENT * event, HWND hwndTrack);
  57. MINMAXINFO * bmx_win32_MINMAXINFO_new();
  58. void bmx_win32_MINMAXINFO_free(MINMAXINFO * info);
  59. void bmx_win32_MINMAXINFO_SetminTrackSizeX(MINMAXINFO * info, int x);
  60. void bmx_win32_MINMAXINFO_SetminTrackSizeY(MINMAXINFO * info, int y);
  61. void bmx_win32_MINMAXINFO_SetmaxTrackSizeX(MINMAXINFO * info, int x);
  62. void bmx_win32_MINMAXINFO_SetmaxTrackSizeY(MINMAXINFO * info, int y);
  63. MSG * bmx_win32_MSG_new();
  64. void bmx_win32_MSG_free(MSG * msg);
  65. HWND bmx_win32_MSG_GetHwnd(MSG * msg);
  66. UINT bmx_win32_MSG_GetMessage(MSG * msg);
  67. WPARAM bmx_win32_MSG_GetWParam(MSG * msg);
  68. LPARAM bmx_win32_MSG_GetLParam(MSG * msg);
  69. int bmx_win32_MSG_GetTime(MSG * msg);
  70. void bmx_win32_MSG_GetPt(MSG * msg, int * x, int * y);
  71. }
  72. // ********************************************************
  73. WNDCLASSW * bmx_win32_WNDCLASSW_new() {
  74. return (WNDCLASSW *)calloc(1,sizeof(WNDCLASSW));
  75. }
  76. void bmx_win32_WNDCLASSW_free(WNDCLASSW * clas) {
  77. free(clas);
  78. }
  79. void bmx_win32_WNDCLASSW_SetlpfnWndProc(WNDCLASSW * clas, WNDPROC lpfnWndProc) {
  80. clas->lpfnWndProc = lpfnWndProc;
  81. }
  82. void bmx_win32_WNDCLASSW_SethInstance(WNDCLASSW * clas, HINSTANCE hInstance) {
  83. clas->hInstance = hInstance;
  84. }
  85. void bmx_win32_WNDCLASSW_SethCursor(WNDCLASSW * clas, HCURSOR hCursor) {
  86. clas->hCursor = hCursor;
  87. }
  88. void bmx_win32_WNDCLASSW_SetlpszClassName(WNDCLASSW * clas, LPCWSTR lpszClassName) {
  89. clas->lpszClassName = lpszClassName;
  90. }
  91. void bmx_win32_WNDCLASSW_Setstyle(WNDCLASSW * clas, int style) {
  92. clas->style = style;
  93. }
  94. void bmx_win32_WNDCLASSW_SethIcon(WNDCLASSW * clas, HICON hIcon) {
  95. clas->hIcon = hIcon;
  96. }
  97. void bmx_win32_WNDCLASSW_SethbrBackground(WNDCLASSW * clas, int hbrBackground) {
  98. clas->hbrBackground = (HBRUSH)hbrBackground;
  99. }
  100. void bmx_win32_WNDCLASSW_SetcbWndExtra(WNDCLASSW * clas, int cbWndExtra) {
  101. clas->cbWndExtra = cbWndExtra;
  102. }
  103. // ********************************************************
  104. ICONINFO * bmx_win32_ICONINFO_new() {
  105. return (ICONINFO *)calloc(1,sizeof(ICONINFO));
  106. }
  107. void bmx_win32_ICONINFO_free(ICONINFO * info) {
  108. free(info);
  109. }
  110. void bmx_win32_ICONINFO_SetfIcon(ICONINFO * info, int fIcon) {
  111. info->fIcon = fIcon;
  112. }
  113. void bmx_win32_ICONINFO_SethbmMask(ICONINFO * info, HBITMAP hbmMask) {
  114. info->hbmMask = hbmMask;
  115. }
  116. void bmx_win32_ICONINFO_SethbmColor(ICONINFO * info, HBITMAP hbmColor) {
  117. info->hbmColor = hbmColor;
  118. }
  119. // ********************************************************
  120. MENUINFO * bmx_win32_MENUINFO_new() {
  121. MENUINFO * info = (MENUINFO *)calloc(1,sizeof(MENUINFO));
  122. info->cbSize = sizeof(MENUINFO);
  123. return info;
  124. }
  125. void bmx_win32_MENUINFO_free(MENUINFO * info) {
  126. free(info);
  127. }
  128. void bmx_win32_MENUINFO_SetfMask(MENUINFO * info, int fMask) {
  129. info->fMask = fMask;
  130. }
  131. void bmx_win32_MENUINFO_SetdwStyle(MENUINFO * info, int dwStyle) {
  132. info->dwStyle = dwStyle;
  133. }
  134. void bmx_win32_MENUINFO_SetcyMax(MENUINFO * info, UINT cyMax) {
  135. info->cyMax = cyMax;
  136. }
  137. void bmx_win32_MENUINFO_SethbrBack(MENUINFO * info, HBRUSH hbrBack) {
  138. info->hbrBack = hbrBack;
  139. }
  140. void bmx_win32_MENUINFO_SetdwContextHelpID(MENUINFO * info, int dwContextHelpID) {
  141. info->dwContextHelpID = dwContextHelpID;
  142. }
  143. void bmx_win32_MENUINFO_SetdwMenuData(MENUINFO * info, ULONG_PTR dwMenuData) {
  144. info->dwMenuData = dwMenuData;
  145. }
  146. // ********************************************************
  147. MENUITEMINFOW * bmx_win32_MENUITEMINFOW_new() {
  148. MENUITEMINFOW * info = (MENUITEMINFOW *)calloc(1,sizeof(MENUITEMINFOW));
  149. info->cbSize = sizeof(MENUITEMINFOW);
  150. return info;
  151. }
  152. void bmx_win32_MENUITEMINFOW_free(MENUITEMINFOW * info) {
  153. free(info);
  154. }
  155. void bmx_win32_MENUITEMINFOW_SetfMask(MENUITEMINFOW * info, UINT fMask) {
  156. info->fMask = fMask;
  157. }
  158. void bmx_win32_MENUITEMINFOW_SetfType(MENUITEMINFOW * info, UINT fType) {
  159. info->fType = fType;
  160. }
  161. void bmx_win32_MENUITEMINFOW_SetfState(MENUITEMINFOW * info, UINT fState) {
  162. info->fState = fState;
  163. }
  164. void bmx_win32_MENUITEMINFOW_SetwID(MENUITEMINFOW * info, UINT wID) {
  165. info->wID = wID;
  166. }
  167. void bmx_win32_MENUITEMINFOW_SethSubMenu(MENUITEMINFOW * info, HMENU hSubMenu) {
  168. info->hSubMenu = hSubMenu;
  169. }
  170. void bmx_win32_MENUITEMINFOW_SetdwItemData(MENUITEMINFOW * info, ULONG_PTR dwItemData) {
  171. info->dwItemData = dwItemData;
  172. }
  173. void bmx_win32_MENUITEMINFOW_SetdwTypeData(MENUITEMINFOW * info, LPWSTR dwTypeData) {
  174. info->dwTypeData = dwTypeData;
  175. }
  176. LPWSTR bmx_win32_MENUITEMINFOW_dwTypeData(MENUITEMINFOW * info) {
  177. return info->dwTypeData;
  178. }
  179. // ********************************************************
  180. SCROLLINFO * bmx_win32_SCROLLINFO_new() {
  181. SCROLLINFO * info = (SCROLLINFO *)calloc(1,sizeof(SCROLLINFO));
  182. info->cbSize = sizeof(SCROLLINFO);
  183. return info;
  184. }
  185. void bmx_win32_SCROLLINFO_free(SCROLLINFO * info) {
  186. free(info);
  187. }
  188. void bmx_win32_SCROLLINFO_SetfMask(SCROLLINFO * info, UINT fMask) {
  189. info->fMask = fMask;
  190. }
  191. void bmx_win32_SCROLLINFO_SetnMin(SCROLLINFO * info, int nMin) {
  192. info->nMin = nMin;
  193. }
  194. void bmx_win32_SCROLLINFO_SetnMax(SCROLLINFO * info, int nMax) {
  195. info->nMax = nMax;
  196. }
  197. void bmx_win32_SCROLLINFO_SetnPage(SCROLLINFO * info, UINT nPage) {
  198. info->nPage = nPage;
  199. }
  200. void bmx_win32_SCROLLINFO_SetnPos(SCROLLINFO * info, int nPos) {
  201. info->nPos = nPos;
  202. }
  203. void bmx_win32_SCROLLINFO_SetnTrackPos(SCROLLINFO * info, int nTrackPos) {
  204. info->nTrackPos = nTrackPos;
  205. }
  206. UINT bmx_win32_SCROLLINFO_nPage(SCROLLINFO * info) {
  207. return info->nPage;
  208. }
  209. int bmx_win32_SCROLLINFO_nPos(SCROLLINFO * info) {
  210. return info->nPos;
  211. }
  212. int bmx_win32_SCROLLINFO_nTrackPos(SCROLLINFO * info) {
  213. return info->nTrackPos;
  214. }
  215. // ********************************************************
  216. WINDOWINFO * bmx_win32_WINDOWINFO_new() {
  217. return (WINDOWINFO *)calloc(1, sizeof(WINDOWINFO));
  218. }
  219. void bmx_win32_WINDOWINFO_free(WINDOWINFO * info) {
  220. free(info);
  221. }
  222. int bmx_win32_WINDOWINFO_dwStyle(WINDOWINFO * info) {
  223. return info->dwStyle;
  224. }
  225. // ********************************************************
  226. TRACKMOUSEEVENT * bmx_win32_TRACKMOUSEEVENT_new() {
  227. TRACKMOUSEEVENT * event = (TRACKMOUSEEVENT *)calloc(1, sizeof(TRACKMOUSEEVENT));
  228. event->cbSize = sizeof(TRACKMOUSEEVENT);
  229. return event;
  230. }
  231. void bmx_win32_TRACKMOUSEEVENT_free(TRACKMOUSEEVENT * event) {
  232. free(event);
  233. }
  234. void bmx_win32_TRACKMOUSEEVENT_SetdwFlags(TRACKMOUSEEVENT * event, int dwFlags) {
  235. event->dwFlags = dwFlags;
  236. }
  237. void bmx_win32_TRACKMOUSEEVENT_SethwndTrack(TRACKMOUSEEVENT * event, HWND hwndTrack) {
  238. event->hwndTrack = hwndTrack;
  239. }
  240. // ********************************************************
  241. MINMAXINFO * bmx_win32_MINMAXINFO_new() {
  242. return (MINMAXINFO *)calloc(1, sizeof(MINMAXINFO));
  243. }
  244. void bmx_win32_MINMAXINFO_free(MINMAXINFO * info) {
  245. free(info);
  246. }
  247. void bmx_win32_MINMAXINFO_SetminTrackSizeX(MINMAXINFO * info, int x) {
  248. info->ptMinTrackSize.x = x;
  249. }
  250. void bmx_win32_MINMAXINFO_SetminTrackSizeY(MINMAXINFO * info, int y) {
  251. info->ptMinTrackSize.y = y;
  252. }
  253. void bmx_win32_MINMAXINFO_SetmaxTrackSizeX(MINMAXINFO * info, int x) {
  254. info->ptMaxTrackSize.x = x;
  255. }
  256. void bmx_win32_MINMAXINFO_SetmaxTrackSizeY(MINMAXINFO * info, int y) {
  257. info->ptMaxTrackSize.y = y;
  258. }
  259. // ********************************************************
  260. MSG * bmx_win32_MSG_new() {
  261. return (MSG *)calloc(1, sizeof(MSG));
  262. }
  263. void bmx_win32_MSG_free(MSG * msg) {
  264. free(msg);
  265. }
  266. HWND bmx_win32_MSG_GetHwnd(MSG * msg) {
  267. return msg->hwnd;
  268. }
  269. UINT bmx_win32_MSG_GetMessage(MSG * msg) {
  270. return msg->message;
  271. }
  272. WPARAM bmx_win32_MSG_GetWParam(MSG * msg) {
  273. return msg->wParam;
  274. }
  275. LPARAM bmx_win32_MSG_GetLParam(MSG * msg) {
  276. return msg->lParam;
  277. }
  278. int bmx_win32_MSG_GetTime(MSG * msg) {
  279. return msg->time;
  280. }
  281. void bmx_win32_MSG_GetPt(MSG * msg, int * x, int * y) {
  282. *x = msg->pt.x;
  283. *y = msg->pt.y;
  284. }