Visual C++里Win7、Win8 触摸书写板的调用

Visual C++里Win7、Win8 触摸书写板的调用
        

检测是不是Win7系统
bool  IsWindows7()
{
    OSVERSIONINFOEX osvi;
//    bool bOsVersionInfoEx=false;
    DWORD dwType=0UL;
    
bool bWin7=false;
    ZeroMemory(
&osvi, sizeof(SYSTEM_INFO));
    ZeroMemory(
&osvi, sizeof(OSVERSIONINFOEX));
    osvi.dwOSVersionInfoSize 
= sizeof(OSVERSIONINFOEX);
    BOOL bOsVersionInfoEx 
= GetVersionEx ((LPOSVERSIONINFOA) &osvi);
    
if!(bOsVersionInfoEx) )
        
return false;
    
if(osvi.dwMajorVersion==6)
    
{
        
if(osvi.dwMinorVersion==1)
        
{
            
if(osvi.wProductType==VER_NT_WORKSTATION)
            
{
                bWin7
=true;
            }

        }

    }

    
return bWin7;
}



Win8系统马上要上市了,开发需要 想实现iPad或Android系统里触摸书写板的动态弹出和动态消失效果。
单位工作系统是Win7,测试平板是Win8的, 的在这里只做了一下Win7手写板的截图。
          

关于书写板的弹出:
Win7、Win8弹出书写板并没有什么差别。都是外部调用TabTip.exe而已。

void  ExecuteTabTip()
{
    TCHAR tcProgramFile[MAX_PATH];
    SHGetSpecialFolderPath(NULL,tcProgramFile,CSIDL_PROGRAM_FILES,0);
    
char *token;
    
char seps[]   = "\\";
    token = strtok( tcProgramFile, seps );
    std::string strPath = token;
    strPath = strPath + "\\Program Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe";
    ShellExecute(NULL, "open", strPath.c_str(), NULL, NULL, SW_SHOWNA);
}



关于书写板的消失:
Win7中的方法。
void  TerminateTabTip4Win7()
{
    DWORD WM_DESKBAND_CLICKED = ::RegisterWindowMessage(_TEXT("TabletInputPanelDeskBandClicked"));

    HWND wKB = ::FindWindow(_TEXT("IPTip_Main_Window"), NULL);
    
if(wKB != NULL && ::IsWindowVisible(wKB))
    
{
        ::PostMessage(wKB, WM_DESKBAND_CLICKED, 00);
    }

}

Win8中的方法。
void TerminateTabTip4Win8()
{
   HWND wKB = ::FindWindow(_TEXT("IPTip_Main_Window"), NULL);
   
if(wKB != NULL && ::IsWindowVisible(wKB))
   
{
       ::PostMessage(wKB, WM_SYSCOMMAND, SC_CLOSE, 0);
   }

}

Win8下书写板停靠代码
       HWND wKB = ::FindWindow(_TEXT( " IPTip_Main_Window " ), NULL);
       DWORD WM_DOCK_BUTTON_PRESSED = ::RegisterWindowMessage(_TEXT( " IPTipDockButtonPressed " )); 
      
PostMessage(wKB, WM_DOCK_BUTTON_PRESSED, 0 , 0 );



你可能感兴趣的:(Visual C++里Win7、Win8 触摸书写板的调用)