#pragma once /** Tools for Windows ライブラリ */ #include "BasicLib.h" #include #include #include // namespace jbxwl { /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Uicode // // locale が正しくないと,日本語の変換は失敗する? // Buffer tc2Buffer(TCHAR* tchar, int size=0); Buffer ts2Buffer(LPCTSTR str, int size=0); CString mbs2ts(char* str); char* ts2mbs(LPCTSTR str); // 要 free. NULL は絶対に返ってこない int copy_ts2Buffer(LPCTSTR str, Buffer* buf); int cat_ts2Buffer (LPCTSTR str, Buffer* buf); unsigned long int file_size_t(LPCTSTR fn); BOOL file_exist_t (LPCTSTR fn); CString get_file_name_t (LPCTSTR str); CString numbering_name_t(LPCTSTR fmt, int n); tList* get_dir_files_t(LPCTSTR dirn); void setAutoLocale(void); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Parameter CString get_tstr_param_tList(tList* lt, char* key, CString dflt); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // User CString GetCurrentUserHomeFolder(void); CString GetDefaultUserHomeFolder(void); CString MakeWorkingFolderPath(CString fnm, CString dir=_T("\\"), BOOL make=FALSE); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Mouse TCHAR* GetMouseCursorType(void); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Time // 1分計 0-59999ms を返す. unsigned short GetMsecondsTimer(void); unsigned short GetMsecondsLapTimer(unsigned short pm, unsigned short* nt=NULL); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // CMenu CMenu* GetMenu_byID(CMenu* pMenu, UINT id); CMenu* GetMenu_byStringID(CMenu* pMenu, UINT id); CMenu* GetMenu_byName(CMenu* pMenu, CString name); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Resource inline CString LoadString_byID(UINT id) { CString mesg; mesg.LoadString(id); return mesg; } /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Message void SendWinMessage(UINT mesg); // プログラムの再起動 void RebootProgram(void); BOOL WaitPidTerm(int tm); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // Event Handler クラス class EventHandler { public: EventHandler(void); ~EventHandler(void) { free();} HANDLE m_handle; DWORD m_wait_err; public: HANDLE create(BOOL manual=TRUE, BOOL initial=FALSE, LPCTSTR hname=NULL, LPSECURITY_ATTRIBUTES sec=NULL); void free(void); BOOL wait(DWORD msec=INFINITE); }; ///////////////////////////////////////////////////////////////////////////////////////////////////////////// // ディスパッチャー /** void DisPatcher(int sno=0, unsigned int signal1, unsigned int signal2, ...); 機能:シグナル(メッセージ)キューに溜まったシグナル(メッセージ)をディスパッチする. 引数に,無視する(ディスパッチしない)シグナル(メッセージ)を複数(可変)個指定可能. プログラム自体を終了させるシグナル(メッセージ)がキューにあった場合は,プログラムを 強制終了させる.Windowsの場合は WM_QUIT (0x0111) Windows 用のみ実装.Linux の処理の仕方は知らない.......(不勉強です) 引数:無視するシグナル(メッセージ)の数,無視するシグナル1,無視するシグナル2,......... シグナル(メッセージ)自体は unsigned int で指定する. 無視するシグナル(メッセージ)を指定しない場合は,引数無しで呼び出し可能 例 :DisPatcher(1, WM_NCLBUTTONDOWN); DisPatcher(); DisPatcher(0) と同じ */ void DisPatcher(int sno=0, ...); } // namespace