> メンテナンスや今後の機能強化がしんどくなるので、やる気ないけど(苦笑)。 そのための抽象化じゃございませんか。 単にこんな風にしてやれば、GetPhysicalCursorPosを全部GetMuseCursorPosに置換するだけでよいはず。
// global typedef BOOL (WINAPI * MUSE_GET_CURSOR_POS_FUNC)(LPPOINT); MUSE_GET_CURSOR_POS_FUNC pGetMuseCursorPos = NULL; #define GetMuseCursorPos (*pGetMuseCursorPos)
// Muse起動時 HMODULE hUser32 = LoadLibrary("user32"); pGetMuseCursorPos = (MUSE_GET_CURSOR_POS_FUNC)GetProcAddress(hUser32, "GetPhysicalCursorPos"); if (NULL == pGetMuseCursorPos) { pGetMuseCursorPos = &GetCursorPos; } FreeLibrary(hUser32);
キモは、「読み込めなかったら代用関数を呼び出すようにする」部分。 これにより、使用側ではダイナミックリンクの成否を一切気にする必要がなくなるので、保守性には一切影響を与えないのではないでしょうか。 (GetProcAddressをNULLに置き換えれば、対応外OSをエミュレートしてのデバッグも簡単) |