示例#1
0
////////////////////////////////////////////////////////////////////////
// Function:	ToggleSIP
// Description:	Toggles the SIP state between ON and OFF.  Reads the current
//				one to decide on what to do.  Also, if ManualSIP is set it
//				reduces the SIP window size to 0,0 when hiding the SIP
// Author:		Dave Sheppard
// Date:		2/3/2005
////////////////////////////////////////////////////////////////////////
void CSIP::ToggleSIP()
{
	//first try the system sip (ie windows mobile)
	if(ToggleSystemSIP())
	{
		return;
	}

	//failing that we'll use the api

	SIPINFO sipinfo;
	HRESULT hr = 0;
	memset(&sipinfo, 0, sizeof(SIPINFO));
	sipinfo.cbSize = sizeof(SIPINFO);
	sipinfo.dwImDataSize = 0;

	SipGetInfo(&sipinfo);

	if(sipinfo.fdwFlags & SIPF_ON){
		SipShowIM(SIPF_OFF);				
	}
	else{
		SipShowIM(SIPF_ON);
	}
}
示例#2
0
// Use SIP information, if available
// SipGetInfo is not supported by SSDK (no definition!).
static inline void qt_get_sip_info(QRect &rect)
{
    SIPINFO sip;
    memset(&sip, 0, sizeof(SIPINFO));
    sip.cbSize = sizeof(SIPINFO);
    if (SipGetInfo(&sip))
        rect = QRect(QPoint(sip.rcVisibleDesktop.left, sip.rcVisibleDesktop.top),
                     QPoint(sip.rcVisibleDesktop.right - 1, sip.rcVisibleDesktop.bottom - 1));
}
示例#3
0
BOOL IsSIPOn()
{
    SIPINFO  sSipInfo;
    sSipInfo.cbSize = sizeof(SIPINFO);
    sSipInfo.dwImDataSize = 0;
    sSipInfo.pvImData = NULL;
    if (SipGetInfo(&sSipInfo) && (sSipInfo.fdwFlags & SIPF_ON))
        return TRUE;
    return FALSE;
}
示例#4
0
BOOL CUIDialog::IsSipRaise()
{
	SIPINFO tSipInfo;
	memset( &tSipInfo, 0, sizeof( tSipInfo ) );
	tSipInfo.cbSize = sizeof( tSipInfo );
	BOOL bGetSipResult = SipGetInfo( &tSipInfo );
	if ( !bGetSipResult )
	{
		Log() << _T( "BOOL bGetSipResult = SipGetInfo( &tSipInfo ); fail!!!" ) << endl;
	}

	return ( SIPF_ON & tSipInfo.fdwFlags );
}
/***********************************************************
 *  Name        : roadmap_keyboard_hide
 *  Purpose     : Returns true if the native keyboard is currently visible
 *
 */
BOOL roadmap_native_keyboard_visible( void )
{
#ifndef EMBEDDED_CE
  SIPINFO si;

  memset (&si, 0, sizeof (si));
  si.cbSize = sizeof (si);
  if (SipGetInfo(&si))
  {
    return (si.fdwFlags && SIPF_ON);
  }
  else
	return FALSE;
#else
	return FALSE;
#endif
}
示例#6
0
/**
*  \author Dave Sheppard (DS)
*  \author Darryn Campbell (DCC, JRQ768)
*  \date March 2005 (First Created, DS)
*  \date November 2009 (Converted from static to non-static.  Made Compatible
*                       with PocketBrowser 3.0)
*/
bool CSIP::MoveSip(int x, int y)
{
	int iTemp;
	SIPINFO sipinfo;
	memset(&sipinfo, 0, sizeof(SIPINFO));
	sipinfo.cbSize = sizeof(SIPINFO);
	sipinfo.dwImDataSize = 0;

	SipGetInfo(&sipinfo);
	
	if (!hSipWnd)
		return false;

	GetWindowRect(hSipWnd, &m_rcPosition);

	// Only alter the x value if not -9999
	if (x != -9999) {
		iTemp = m_rcPosition.right - m_rcPosition.left;
		m_rcPosition.left = x;
		m_rcPosition.right = m_rcPosition.left + iTemp;
	}
	
	// Only alter the y value if not -9999
	if (y != -9999) {
		iTemp = m_rcPosition.bottom - m_rcPosition.top;
		m_rcPosition.top = y;
		m_rcPosition.bottom = m_rcPosition.top + iTemp;
	}

	if (hSipWnd) 
		MoveWindow(hSipWnd, m_rcPosition.left, m_rcPosition.top, m_rcPosition.right-m_rcPosition.left, m_rcPosition.bottom-m_rcPosition.top, TRUE);
	

	else 
		return false;

	sipinfo.rcSipRect = m_rcPosition;

	SipSetInfo(&sipinfo);

	return true;
}
示例#7
0
/* Raise the software input panel.  */
static void
raise_sip (HWND dlg)
{
#ifdef HAVE_W32CE_SYSTEM
    SIPINFO si;

    SetForegroundWindow (dlg);

    memset (&si, 0, sizeof si);
    si.cbSize = sizeof si;

    if (SipGetInfo (&si))
    {
        si.fdwFlags |= SIPF_ON;
        SipSetInfo (&si);
    }
#else
    (void)dlg;
#endif
}
void GetWorkArea(LPRECT lprcWorkArea)
{
    SIPINFO  sSipInfo;

    memset(&sSipInfo, 0, sizeof(SIPINFO));
    sSipInfo.cbSize = sizeof(SIPINFO);
    sSipInfo.dwImDataSize = 0;
    sSipInfo.pvImData = NULL;

    if (!GetWorkAreaFromPPCShell(lprcWorkArea, &sSipInfo)) {
        if (SipGetInfo(&sSipInfo)) {
            *lprcWorkArea = sSipInfo.rcVisibleDesktop;
        } else {
            SystemParametersInfo(SPI_GETWORKAREA, 0, lprcWorkArea, 0);
        }
    }
		murmur("rcWorkArea.top=%d; psi->rcWorkArea.bottom=%d\n",lprcWorkArea->top, lprcWorkArea->bottom);
		murmur("rcWorkArea.right=%d; psi->rcWorkArea.left=%d\n",lprcWorkArea->right, lprcWorkArea->left);

}
示例#9
0
BOOL CheckRectForSIP(CONST RECT * lprcRect, int& SipTop)
{
    SIPINFO  sSipInfo;
    RECT     rcScr;
    RECT     rcTmp1, rcTmp2;

    PFNSHSipInfo   pfnSHSipInfo;
    HMODULE        hMod;
    
    memset(&sSipInfo, 0, sizeof(SIPINFO));
    sSipInfo.cbSize = sizeof(SIPINFO);
    sSipInfo.dwImDataSize = 0;
    sSipInfo.pvImData = NULL;

//    if (IsAPIReady(SH_SHELL,0))//WAIT_OBJECT_0 != WaitForAPIReady(SH_SHELL, 0))
 //       goto GeneralSipCheck;

    hMod = GetModuleHandle(TEXT("aygshell.dll"));
    if (!hMod) 
        goto GeneralSipCheck;
    pfnSHSipInfo = (PFNSHSipInfo) GetProcAddress(hMod, TEXT("SHSipInfo"));
    if (!pfnSHSipInfo)
        goto GeneralSipCheck;
        
    if ((*pfnSHSipInfo)(SPI_GETSIPINFO, 0, (PVOID) &sSipInfo, 0)) {
        if (!SystemParametersInfo(SPI_GETWORKAREA, 0, &rcScr, 0))
            return FALSE;
        SipTop = sSipInfo.fdwFlags & SIPF_ON ? sSipInfo.rcSipRect.top : rcScr.bottom;
        if ((sSipInfo.fdwFlags & SIPF_ON) == 0)
            return false;

        // SIP can have minus coordinate. so let's get real display position
        if (!IntersectRect(&rcTmp1, &sSipInfo.rcSipRect, &rcScr)) 
            return FALSE;
        // now check the given RECT is overlapped with SIP
        if (!IntersectRect(&rcTmp2, lprcRect, &rcTmp1))
            return FALSE;
        // now they are overlapped.
        // but need to check that SIP is higher than the given rect. 
        // if it is, there is no meaning to change candidate list position.
        if (rcTmp2.top > sSipInfo.rcSipRect.top)
            return FALSE;
        return TRUE;
    }
    
GeneralSipCheck:    
    if (SipGetInfo(&sSipInfo)) {
        if (!SystemParametersInfo(SPI_GETWORKAREA, 0, &rcScr, 0))
            return FALSE;
        SipTop = sSipInfo.fdwFlags & SIPF_ON ? sSipInfo.rcSipRect.top : rcScr.bottom;

        if ((sSipInfo.fdwFlags & SIPF_ON) == 0)
            return false;
        // SIP can have minus coordinate. so let's get real display position
        if (!IntersectRect(&rcTmp1, &sSipInfo.rcSipRect, &rcScr))
            return FALSE;
        // now check the given RECT is overlapped with SIP
        if (!IntersectRect(&rcTmp2, lprcRect, &rcTmp1))
            return FALSE;
        // now they are overlapped.
        // but need to check that SIP is higher than the given rect. 
        // if it is, there is no meaning to change candidate list position.
        if (rcTmp2.top > sSipInfo.rcSipRect.top)
            return FALSE;
        return TRUE;
    }
    SipTop = g_sImeUIG.rcWorkArea.bottom;
    return FALSE;
}
示例#10
0
void CLoginPage::OnSize(UINT nType, int cx, int cy)
{

	//AfxMessageBox(L"CLoginPage::OnSize");
	//CXPropertyPage::OnSize(nType, cx, cy);

	OutputDebugString(L"CLoginPage::OnSize \n");
		
	
    SIPINFO sipInfo={0};
	sipInfo.cbSize=sizeof(SIPINFO);
	if (!bInitCtrlsPos) return;

	if (SipGetInfo(&sipInfo)){

		if ((sipInfo.fdwFlags&SIPF_ON)==SIPF_ON){

			OutputDebugString(L"Keyboard SIPF_ON \n");
		

			GetDlgItem(IDC_STATIC_LOGO)->ShowWindow(SW_HIDE);


		GetDlgItem(IDC_STATIC_VERSION)->ShowWindow(SW_HIDE);

			GetDlgItem(IDC_USERNAME)->SetWindowPos(&wndTop,rcUsername.left,rcUsername.top-nResizeTop,0,0,
				SWP_NOSIZE |SWP_SHOWWINDOW);

		    GetDlgItem(IDC_PASSWORD)->SetWindowPos(&wndTop,rcPassword.left,rcPassword.top-nResizeTop,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

			GetDlgItem(IDC_STATIC_PASSWORD)->SetWindowPos(&wndTop,rcStaticPassword.left,rcStaticPassword.top-nResizeTop,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

			GetDlgItem(IDC_STATIC_USERNAME)->SetWindowPos(&wndTop,rcStaticUsername.left,rcStaticUsername.top-nResizeTop,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

			 GetDlgItem(IDC_CONNECT_STATUS)->SetWindowPos(&wndTop,rcConnectStatus.left,rcConnectStatus.top-nResizeTop,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);


             GetDlgItem(IDC_SIGNIN_BUTTON)->SetWindowPos(&wndTop,rcSigninButton.left,rcSigninButton.top-nResizeTop,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);


		}else
			if ((sipInfo.fdwFlags&SIPF_OFF)==SIPF_OFF){

				OutputDebugString(L"Keyboard SIPF_OFF \n");
		
			     GetDlgItem(IDC_STATIC_LOGO)->ShowWindow(SW_SHOW);
        

				GetDlgItem(IDC_STATIC_VERSION)->ShowWindow(SW_SHOW);


				GetDlgItem(IDC_USERNAME)->SetWindowPos(&wndTop,rcUsername.left,rcUsername.top,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

			
				GetDlgItem(IDC_PASSWORD)->SetWindowPos(&wndTop,rcPassword.left,rcPassword.top,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

				GetDlgItem(IDC_STATIC_PASSWORD)->SetWindowPos(&wndTop,rcStaticPassword.left,rcStaticPassword.top,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

				GetDlgItem(IDC_STATIC_USERNAME)->SetWindowPos(&wndTop,rcStaticUsername.left,rcStaticUsername.top,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

			    GetDlgItem(IDC_CONNECT_STATUS)->SetWindowPos(&wndTop,rcConnectStatus.left,rcConnectStatus.top,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);


			    GetDlgItem(IDC_SIGNIN_BUTTON)->SetWindowPos(&wndTop,rcSigninButton.left,rcSigninButton.top,0,0,
					SWP_NOSIZE |SWP_SHOWWINDOW);

				

					

			}


	}else{

		OutputDebugString(L"SipGetInfo Failed \n");
		
	}

	
}