
рдПрдХ рдЯреИрдмрд▓реЗрдЯ рдФрд░ рдПрдХ рдЕрд▓реНрдЯреНрд░рд╛рдмреБрдХ рдкрд░ рдЯрдЪ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓реАред рдЬрдм рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рд╕рд┐рд╕реНрдЯрдо рдЯреНрд░реЗ рдореЗрдВ рдЖрдЗрдХрди рдХреЛ рдЫреВрдХрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмрдВрдж рд╡рд┐рдВрдбреЛ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд┐рдВрдбреЛрдЬ рдпреВрдЖрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдХреАрдмреЛрд░реНрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣реА рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдлреЛрдХрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдг рдиреЗ рдЗрдирдкреБрдЯ рдлрд╝реЛрдХрд╕ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рд▓реЛрд╣рд╛" рдХреАрдмреЛрд░реНрдб рд╕реЗ рдкрд╛рда рджрд░реНрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдореИрдВ рди рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реВрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рднреА рд╣реВрдВ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реВрдВ? рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ, рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЖрдЧрд╛рдореА рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд░рдЪрд┐рдЯрд┐рдХреА рдХреЛ рдмрдзрд╛рдИ! рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП - рдЙрдкрд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдХреЛрдб! :)рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 1 рдХреАрдмреЛрд░реНрдб рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред
рдЯреИрдмрд▓реЗрдЯ рдкреАрд╕реА рдЗрдирдкреБрдЯ рдкреИрдирд▓ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЗ рдорд╛рдирдХ рдкреИрдХреЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдХреАрдмреЛрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреАрдмреЛрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЙрдиреНрдЪ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
TCHAR kbdPath[MAX_PATH] = {0}; ExpandEnvironmentStrings(_T("%CommonProgramW6432%"), kbdPath, _countof(kbdPath)); wcscat_s(kbdPath, _countof(kbdPath), _T("\\microsoft shared\\ink\\tabtip.exe")); ShellExecute(NULL, _T("open"), kbdPath, NULL, NULL, SW_SHOWNORMAL);
рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЬреЛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред
рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 2 - рдХреАрдмреЛрд░реНрдб рдХреЛ рдЫрд┐рдкрд╛рдПрдВ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛
рдПрдВрдЯрд░ рджрдмрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╛ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдиреЗ рдлрд╝реЛрдХрд╕ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ, рдХреАрдмреЛрд░реНрдб рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдЙрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдРрд╕рд╛ рди рдХрд░рдирд╛ рдкрдбрд╝реЗред рдЗрд╕реЗ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪреВрдВрдХрд┐ рдХреАрдмреЛрд░реНрдб рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдпрд╛ рдХрдо рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХреАрдмреЛрд░реНрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓
рд╕реНрдкрд╛рдИ ++ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рдВрдбреЛ рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рд░реБрдЪрд┐ рд╣реИ, рдЕрд░реНрдерд╛рддреН
IPTip_Main_Window рд╡рд┐рдВрдбреЛ
рдХреНрд▓рд╛рд╕ ред рдмрд╛рдХреА рддрдХрдиреАрдХ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЦрд┐рдбрд╝рдХреА рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреБрдХреНрдд рд╕рдВрджреЗрд╢ рднреЗрдЬрдХрд░ рдЗрд╕реЗ рдХрдо рдХрд░рддреЗ рд╣реИрдВред
HWND kbd = ::FindWindow(_T("IPTip_Main_Window"), NULL); if(kbd != NULL) { ::PostMessage(kbd, WM_SYSCOMMAND, SC_CLOSE, 0); }
рдЯрд╛рд╕реНрдХ рдирдВрдмрд░ 3 - рд╕реНрдХреНрд░реАрди рдХреА рдкреВрд░реА рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рдХреАрдмреЛрд░реНрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░реЗрдВ
рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рдХрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдорд╛рдирдХ рдЖрдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдХреА рдкреВрд░реА рдЪреМрдбрд╝рд╛рдИ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреАрдмреЛрд░реНрдб рдХреА рдЪреМрдбрд╝рд╛рдИ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╣ рддрдм рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред
DWORD msgSwitchTo = ::RegisterWindowMessage(_T("IPTipDockButtonPressed")); HWND kbd = ::FindWindow(_T("IPTip_Main_Window"), NULL); if(kbd != NULL) { ::PostMessage(kbd, msgSwitchTo, 0x891, 0); }
рдпрд╣ рд╕рдордЭрдирд╛ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреАрдмреЛрд░реНрдб рдХрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рд╕рд░рд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ, рдлрд┐рд░ рдХреАрдмреЛрд░реНрдб рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдЗрди рджреЛ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
HWND kbd = ::FindWindow(_T("IPTip_Main_Window"), NULL); int screenWidth = GetSystemMetrics(SM_CXSCREEN); RECT touchWindow = {0}; if(GetWindowRect(kbd, &touchWindow) == false) { return false; } int touchWidth = touchWindow.right - touchWindow.left; return (screenWidth <= touchWidth);
рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
CTouchKeyboard рд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА рдкреНрд░рд╛рдкреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯрд╛
class CTouchKeyboard { public: static bool IsVisible(); static bool Show(); static bool Hide(); static bool Dock(); static bool IsDocked(); private: static HWND FindKeyboardWindow(); static bool PostMessageToKeyboard(DWORD msg, WPARAM wParam, LPARAM lParam); };
рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдкрд╛рда рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдлрд╝реАрд▓реНрдб рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдЬрдм рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдХреЗ рдлрд╝реЛрдХрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдХреНрд░рдорд╢рдГ
EN_SETFOCUS рд╕реВрдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИ, рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рд╕реВрдЪрдирд╛ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВ
CTouchKeyboard::Show();
рдпрджрд┐ рдЗрдирдкреБрдЯ рдлрд╝реЛрдХрд╕ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ
EN_KILLFOCUS рдХреА рд╕реВрдЪрдирд╛
рдорд┐рд▓рддреА рд╣реИ , рддрджрдиреБрд╕рд╛рд░, рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
CTouchKeyboard::Hide();
рд╣рдо рдЗрдХрдЯреНрдард╛ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ - рдпрджрд┐ рдЖрдк рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреАрдмреЛрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЯреИрдм рдХреБрдВрдЬреА рджрдмрд╛рдПрдВ - рдХреАрдмреЛрд░реНрдб рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред