0

我有一個登錄屏幕時,我的應用程序啓動並希望光標在用戶名文本框中等待鍵入(不點擊)。我能夠專注光標電網負荷後:Windows嵌入式緊湊型2013 - 初始應用重點

HRESULT MainPage::OnLoaded(__in IXRDependencyObject* pRoot) 
{ 
    UNREFERENCED_PARAMETER(pRoot); 

    HRESULT hr = InitializeComponent(); 

    if (FAILED(hr)) 
    { 
     goto Error; 
    } 

    if (m_pLogin) 
    { 
     m_pLogin->AddLoadedEventHandler(CreateDelegate(this, &MainPage::Login_Loaded)); 
    } 
Error: 
    return hr; 
} // OnLoaded 

HRESULT MainPage::Login_Loaded (IXRDependencyObject* pSender, XRRoutedEventArgs* pArgs) 
{ 
    HRESULT hr = S_OK; 

    m_pUserName->Focus(&pBool); 

    return hr; 
} 

這讓我鍵入但光標實際上並不可見。

我看到其他線程解釋說,瀏覽器插件必須首先有焦點,但是這是一個嵌入式Silverlight應用程序(C++),而不是一個Silverlight網頁(C#)。我無法弄清楚如何在沒有使用鼠標的情況下啓動應用程序時將焦點設置到應用程序中。有什麼建議麼?

回答

0

我沒能做到這一點不用鼠標點擊 - 但我用SendInput合成鼠標點擊,使用戶不必。

HRESULT MainPage::OnLoaded(__in IXRDependencyObject* pRoot) 
{ 
    UNREFERENCED_PARAMETER(pRoot); 

    HRESULT hr = InitializeComponent(); 

    if (FAILED(hr)) 
    { 
     goto Error; 
    } 

    if (m_pLogin) 
    { 
     m_pLogin->AddLoadedEventHandler(CreateDelegate(this, &MainPage::Login_Loaded)); 
     m_pLogin->AddMouseLeftButtonUpEventHandler(CreateDelegate(this, &MainPage::Login_MouseLeftButtonUp)); 
    } 
Error: 
    return hr; 
} // OnLoaded 

HRESULT MainPage::Login_Loaded (IXRDependencyObject* pSender, XRRoutedEventArgs* pArgs) 
{ 
    HRESULT hr = S_OK; 

    // execute mouse click 
    INPUT ip; 
    ip.type = INPUT_MOUSE; 

    ip.mi.dwFlags = MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE; 
    SendInput(1,&ip,sizeof(INPUT)); 

    ip.mi.dwFlags = MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE; 
    SendInput(1,&ip,sizeof(INPUT)); 

    return hr; 
} 

HRESULT MainPage::Login_MouseLeftButtonUp (IXRDependencyObject* pSender, XRMouseButtonEventArgs* pArgs) 
{ 
    HRESULT hr = S_OK; 

    m_pUserName->Focus(&pBool); 

    return hr; 
}