WinCE圓圈訊息

來源:互聯網
上載者:User
 

WinCE下的ListView Control和WIN32相較,有個明顯的不同就是長按觸控螢幕或長按滑鼠左鍵,會繪製一個小圓圈.這個小圓圈比較有意思,微軟的explorer在實現時,圓圈消失即相當於win32的按下滑鼠右鍵.這個方法很好的彌補了觸控螢幕無法表示右鍵的缺陷.
      
       雖然這個方式不錯,但如果我們需要用到這個小圓圈,卻不能不費點腦子,因為在微軟的文檔上,隻字不提這個小圓圈(或是我沒找到?).不過有了spy++,一切都不是難事

以下是在spy++協助下完成的截取小圓圈消失後發送的訊息代碼:
WinProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam)
...{
       switch(wMsg)
       ...{
         case WM_NOTIFY:
         ...{
            switch( ( (LPNMLISTVIEW) lParam)->hdr.code)
            ...{
                   case 1000:
                     //在這裡處理小圓圈消失後的事件
                     break;
            }
         }
       }
}

       如果需要判斷這個小圓圈訊息是哪個ListView控制項發出的,則代碼只需小小更改:
          WinProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam)
...{
       switch(wMsg)
       ...{
         case WM_NOTIFY:
         ...{
            switch (wParam)
            ...{
                   case IDC_LIST: //IDC_LIST為某個ListView控制項的ID號
                   ...{
                     switch( ( (LPNMLISTVIEW) lParam)->hdr.code)
                     ...{
                        case 1000:
                               //在這裡處理小圓圈消失後的事件
                               break;
                     }
                     break;
                   }
            }
         }
       }
}

WinCE中顯示隱藏軟鍵盤2008-07-15 09:08

在彈出的強制回應對話方塊中,如果有編輯框,需要自動顯示軟鍵盤進行輸入,並且自動調節軟鍵盤位置。如果不是編輯框,則應該關閉軟鍵盤,並設定到原始位置。

繼承了CEdit類,處理其獲得焦點和失去焦點的訊息:

ON_CONTROL_REFLECT(EN_SETFOCUS, OnSetfocus)

ON_CONTROL_REFLECT(EN_KILLFOCUS, OnKillfocus)

void CMyEdit::OnSetfocus()

{

    RECT rect;

    GetRect( &rect );

    ClientToScreen(&rect);

    SIPINFO    si;

    si.dwImDataSize = 0;

    si.cbSize = sizeof(si);

    BOOL bSip = SipGetInfo(&si);

   

    if(rect.top >= 150)

    {

        si.rcSipRect.top = 0;

           

    }

    else

    {

        si.rcSipRect.top = 195;//half of the screen

    }

   

    SipSetInfo(&si);

    SipShowIM(SIPF_ON);

}

void CMyEdit::OnKillfocus()

{

    SipShowIM(SIPF_OFF);

   

    SIPINFO    si;

    si.dwImDataSize = 0;

   

    si.cbSize = sizeof(si);

    BOOL bSip = SipGetInfo(&si);

    si.rcSipRect.top = 195;

    SipSetInfo(&si);

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.