Windows Embedded Compact 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 #). Я не могу понять, как установить фокус на приложение, когда оно запускается без использования мыши. Какие-либо предложения?


person d_w_    schedule 09.01.2015    source источник


Ответы (1)


Мне не удалось сделать это без щелчка мыши, но я использовал 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;
}
person d_w_    schedule 21.01.2015