2015-05-14 08:43:25 -05:00
|
|
|
// 6 january 2015
|
2015-05-31 10:12:29 -05:00
|
|
|
#include "winapi.h"
|
2015-05-14 08:43:25 -05:00
|
|
|
#include "../out/ui.h"
|
|
|
|
#include "../ui_windows.h"
|
|
|
|
#include "../uipriv.h"
|
2015-05-30 13:33:23 -05:00
|
|
|
#include "resources.h"
|
2015-05-14 08:43:25 -05:00
|
|
|
|
2015-06-01 15:28:26 -05:00
|
|
|
#ifndef __MINGW64_VERSION_MAJOR
|
|
|
|
#error At present, only MinGW-w64 (>= 4.0.0) is supported. Other toolchains will be supported in the future (but other variants of MinGW will not).
|
|
|
|
#endif
|
|
|
|
#if __MINGW64_VERSION_MAJOR < 4
|
|
|
|
#error MinGW-w64 version 4.0.0 or newer is required.
|
|
|
|
#endif
|
|
|
|
|
2015-05-14 08:43:25 -05:00
|
|
|
// ui internal window messages
|
|
|
|
enum {
|
|
|
|
// redirected WM_COMMAND and WM_NOTIFY
|
|
|
|
msgCOMMAND = WM_APP + 0x40, // start offset just to be safe
|
|
|
|
msgNOTIFY,
|
2015-05-19 22:16:46 -05:00
|
|
|
msgHSCROLL,
|
2015-05-14 08:43:25 -05:00
|
|
|
msgHasTabStops,
|
|
|
|
msgConsoleEndSession,
|
|
|
|
};
|
|
|
|
|
|
|
|
// init.c
|
|
|
|
extern HINSTANCE hInstance;
|
|
|
|
extern int nCmdShow;
|
|
|
|
extern HFONT hMessageFont;
|
|
|
|
extern HBRUSH hollowBrush;
|
|
|
|
|
|
|
|
// util.c
|
|
|
|
extern int windowClassOf(HWND, ...);
|
|
|
|
extern void mapWindowRect(HWND, HWND, RECT *);
|
|
|
|
extern DWORD getStyle(HWND);
|
|
|
|
extern void setStyle(HWND, DWORD);
|
|
|
|
extern DWORD getExStyle(HWND);
|
|
|
|
extern void setExStyle(HWND, DWORD);
|
|
|
|
|
|
|
|
// text.c
|
|
|
|
extern WCHAR *toUTF16(const char *);
|
|
|
|
extern char *toUTF8(const WCHAR *);
|
|
|
|
extern WCHAR *windowText(HWND);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-05-14 09:28:50 -05:00
|
|
|
|
|
|
|
/////////////////////////////////
|
|
|
|
|
|
|
|
// resize.c
|
|
|
|
extern void initResizes(void);
|
|
|
|
extern void uninitResizes(void);
|
|
|
|
extern void doResizes(void);
|
2015-05-18 11:04:52 -05:00
|
|
|
extern void moveWindow(HWND, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *);
|
2015-05-30 02:40:14 -05:00
|
|
|
extern void setWindowInsertAfter(HWND, HWND);
|
2015-05-14 10:19:52 -05:00
|
|
|
|
|
|
|
// utilwindow.c
|
2015-05-15 15:19:21 -05:00
|
|
|
extern HWND utilWindow;
|
2015-05-14 10:19:52 -05:00
|
|
|
extern const char *initUtilWindow(HICON, HCURSOR);
|
|
|
|
extern void uninitUtilWindow(void);
|
2015-05-14 11:49:02 -05:00
|
|
|
|
|
|
|
// parent.c
|
2015-05-24 13:50:25 -05:00
|
|
|
extern void paintContainerBackground(HWND, HDC, RECT *);
|
2015-05-14 11:49:02 -05:00
|
|
|
extern BOOL handleParentMessages(HWND, UINT, WPARAM, LPARAM, LRESULT *);
|
2015-05-15 15:19:21 -05:00
|
|
|
|
|
|
|
// debug.c
|
|
|
|
extern HRESULT logLastError(const char *);
|
|
|
|
extern HRESULT logHRESULT(const char *, HRESULT);
|
|
|
|
extern HRESULT logMemoryExhausted(const char *);
|
|
|
|
|
|
|
|
// window.c
|
|
|
|
extern ATOM registerWindowClass(HICON, HCURSOR);
|
|
|
|
extern void unregisterWindowClass(void);
|
|
|
|
|
|
|
|
// container.c
|
2015-05-16 00:55:34 -05:00
|
|
|
#define containerClass L"libui_uiContainerClass"
|
2015-05-16 00:45:20 -05:00
|
|
|
extern ATOM initContainer(HICON, HCURSOR);
|
2015-05-15 15:19:21 -05:00
|
|
|
extern void uninitContainer(void);
|
|
|
|
|
|
|
|
// menu.c
|
|
|
|
extern HMENU makeMenubar(void);
|
|
|
|
extern const uiMenuItem *menuIDToItem(UINT_PTR);
|
|
|
|
extern void runMenuEvent(WORD, uiWindow *);
|
|
|
|
extern void freeMenubar(HMENU);
|
|
|
|
extern void uninitMenus(void);
|
|
|
|
|
|
|
|
// alloc.c
|
|
|
|
extern int initAlloc(void);
|
|
|
|
extern void uninitAlloc(void);
|
2015-05-15 17:54:13 -05:00
|
|
|
|
|
|
|
// tab.c
|
|
|
|
extern void tabEnterTabNavigation(HWND);
|
|
|
|
extern void tabLeaveTabNavigation(HWND);
|
2015-05-20 21:46:50 -05:00
|
|
|
|
|
|
|
// events.c
|
|
|
|
// TODO split the uiWindows ones to ui_windows.h
|
2015-05-21 13:52:21 -05:00
|
|
|
extern void uiWindowsRegisterWM_COMMANDHandler(HWND, BOOL (*)(uiControl *, HWND, WORD, LRESULT *), uiControl *);
|
|
|
|
extern void uiWindowsRegisterWM_NOTIFYHandler(HWND, BOOL (*)(uiControl *, HWND, NMHDR *, LRESULT *), uiControl *);
|
|
|
|
extern void uiWindowsRegisterWM_HSCROLLHandler(HWND, BOOL (*)(uiControl *, HWND, WORD, LRESULT *), uiControl *);
|
2015-05-20 21:46:50 -05:00
|
|
|
extern void uiWindowsUnregisterWM_COMMANDHandler(HWND);
|
2015-05-21 10:29:25 -05:00
|
|
|
extern void uiWindowsUnregisterWM_NOTIFYHandler(HWND);
|
|
|
|
extern void uiWindowsUnregisterWM_HSCROLLHandler(HWND);
|
2015-05-20 21:46:50 -05:00
|
|
|
extern BOOL runWM_COMMAND(WPARAM, LPARAM, LRESULT *);
|
2015-05-21 10:29:25 -05:00
|
|
|
extern BOOL runWM_NOTIFY(WPARAM, LPARAM, LRESULT *);
|
|
|
|
extern BOOL runWM_HSCROLL(WPARAM, LPARAM, LRESULT *);
|
2015-05-22 16:41:36 -05:00
|
|
|
|
|
|
|
// dialoghelper.c
|
|
|
|
extern void dialogHelperRegisterWindow(HWND);
|
|
|
|
extern void dialogHelperUnregisterWindow(HWND);
|
|
|
|
extern ATOM initDialogHelper(HICON, HCURSOR);
|
2015-06-02 13:12:12 -05:00
|
|
|
extern void uninitDialogHelper(void);
|
2015-05-22 18:14:25 -05:00
|
|
|
extern HWND beginDialogHelper(void);
|
|
|
|
extern void endDialogHelper(HWND);
|
2015-05-29 19:40:54 -05:00
|
|
|
|
|
|
|
// control.c
|
|
|
|
extern void setSingleHWNDFuncs(uiControl *);
|
2015-05-30 11:28:52 -05:00
|
|
|
|
|
|
|
// tabpage.c
|
2015-06-01 19:12:55 -05:00
|
|
|
extern uiControl *newTabPage(void);
|
2015-05-31 09:53:20 -05:00
|
|
|
extern int tabPageMargined(uiControl *);
|
|
|
|
extern void tabPageSetMargined(uiControl *, int);
|
2015-06-01 16:37:43 -05:00
|
|
|
extern void tabPageDestroyChild(uiControl *);
|
2015-06-01 20:14:30 -05:00
|
|
|
extern void tabPagePreserveChild(uiControl *);
|
2015-06-01 19:12:55 -05:00
|
|
|
extern void tabPageSetChild(uiControl *, uiControl *);
|