123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #ifndef NULLSOFT_WINAMP_APPLICATION_H
- #define NULLSOFT_WINAMP_APPLICATION_H
- #include <api/application/api_application.h>
- #include <vector>
- #include <map>
- class Application : public api_application
- {
- public:
- static const char *getServiceName() { return "Application API"; }
- static const GUID getServiceGuid() { return applicationApiServiceGuid; }
- public:
- Application();
- ~Application();
- const wchar_t *main_getAppName();
- const wchar_t *main_getVersionString();
- const wchar_t *main_getVersionNumString();
- unsigned int main_getBuildNumber();
- GUID main_getGUID();
- HANDLE main_getMainThreadHandle();
- HINSTANCE main_gethInstance();
- const wchar_t *main_getCommandLine();
- void main_shutdown(int deferred = TRUE);
- void main_cancelShutdown();
- int main_isShuttingDown();
- const wchar_t *path_getAppPath();
- const wchar_t *path_getUserSettingsPath();
- // added for 5.58+ so gen_ff can fill @SKINSPATH@ in scripts correctly
- const wchar_t *path_getSkinSettingsPath();
- int app_getInitCount();
- intptr_t app_messageLoopStep();
- void app_addMessageProcessor(api_messageprocessor *processor);
- void app_removeMessageProcessor(api_messageprocessor *processor);
- void app_addModelessDialog(HWND hwnd);
- void app_removeModelessDialog(HWND hwnd);
- // added for 5.34
- const wchar_t *path_getWorkingPath();
- void path_setWorkingPath(const wchar_t *newPath);
- // added for 5.35
- /*
- int GetMachineID(GUID *id);
- */
- int GetUserID(GUID *id);
- int GetSessionID(GUID *id);
- WPARAM MessageLoop();
- // added for 5.53
- bool app_translateAccelerators(MSG *msg);
- void app_addAccelerators(HWND hwnd, HACCEL *phAccel, INT cAccel, UINT translateMode);
- void app_removeAccelerators(HWND hwnd);
- int app_getAccelerators(HWND hwnd, HACCEL *phAccel, INT cchAccelMax, BOOL bGlobal);
- // added for 5.54
- void app_registerGlobalWindow(HWND hwnd);
- void app_unregisterGlobalWindow(HWND hwnd);
- bool isGlobalWindow(HWND hwnd);
- /* 5.54 + */
- size_t AllocateThreadStorage(); // returns an index, -1 for error
- void *GetThreadStorage(size_t index);
- void SetThreadStorage(size_t index, void *value);
- /* 5.58 + */
- bool DirectMouseWheel_RegisterSkipClass(ATOM klass);
- bool DirectMouseWheel_UnregisterSkipClass(ATOM klass);
- bool DirectMouseWheel_EnableConvertToMouseWheel(HWND hwnd, BOOL enable);
- /* 5.64 + */
- BOOL DirectMouseWheel_ProcessDialogMessage(HWND hwnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam, const int controls[], int controlslen);
- /* 5.61 + */
- void ActiveDialog_Register(HWND hwnd);
- void ActiveDialog_Unregister(HWND hwnd);
- HWND ActiveDialog_Get();
- /* 5.64 + */
- const wchar_t *getATFString(); // returns the current ATF formatting string
- /* 5.66 + */
- // used for dpi scaling so we're consistent in usage throughout the UI, etc
- int getScaleX(int x);
- int getScaleY(int y);
- private:
- RECVS_DISPATCH;
- bool ProcessMessageLight(MSG *msg);
- bool ProcessMessage(MSG *msg);
- bool FilterMessage(MSG *msg);
- bool DirectMouseWheel_ProccessMessage(MSG *msg);
- void DirectMouseWheel_InitBlackList();
- friend static BOOL DirectMouseWheel_RegisterMessage();
- static LRESULT CALLBACK MessageHookProc(INT code, WPARAM wParam, LPARAM lParam);
- private:
- typedef struct __ACCELNODE
- {
- HACCEL hAccel;
- UINT translateMode;
- __ACCELNODE *pNext;
- } ACCELNODE;
- typedef std::map<HWND, ACCELNODE*> AccelMap;
- private:
- int shuttingdown;
- std::vector<api_messageprocessor*> messageProcessors;
- HWND activeDialog;
-
- AccelMap accelerators;
- std::vector<HWND> globalWindows;
- std::vector<ATOM> directMouseWheelBlackList;
- GUID machineID, userID, sessionID;
- DWORD tlsIndex;
- LONG threadStorageIndex;
- HHOOK messageHook;
- bool disableMessageHook;
- };
- extern Application *application;
- #endif
|