Windows API一日一練(38)SetWindowPos函數

來源:互聯網
上載者:User
 Windows API一日一練(38)SetWindowPos函數    
有一天,使用者突然對我說,你這個視窗能不能放到最頂端,這樣操作和開啟檔案就很不方便了。這個功能就需要改變視窗的屬性了。比如大家使用QQ時,就有一個功能,設定QQ的視窗在最頂端,不管你選擇了什麼視窗,QQ的介面永遠都在最前面。又像FlashGet的狀態查看視窗,一直保持在視窗的最前端,讓你看到當前下載的流配量況。現在股票那麼火爆,很多人一邊工作,一邊查看股票,如果錯失了機會,又少了很多錢的啊!面對這樣的需求,就需要把一些視窗永遠擺在最前面,這樣起到提示使用者的作用。因此,學會使用SetWindowPos函數,就成為能否讓軟體滿足客戶需求的關鍵了。與MoveWindow函數相比,SetWindowPos函數的功能比較強大一點。
 
函數SetWindowPos聲明如下:
WINUSERAPI
BOOL
WINAPI
SetWindowPos(
    __in HWND hWnd,
    __in_opt HWND hWndInsertAfter,
    __in int X,
    __in int Y,
    __in int cx,
    __in int cy,
    __in UINT uFlags);
hWnd是視窗的控制代碼。
hWndInsertAfter是視窗Z順序屬性。
X是視窗在X軸的位置。
Y是視窗在Y輛的位置。
cx是視窗的寬度。
cy是視窗的高度。
uFlags是選擇設定的標誌。
 
調用這個函數的例子如下:
#001 //
#002 // 響應命令.
#003 // 蔡軍生 2007/09/16 QQ:9073204
#004 //
#005 LRESULT CCaiWinMsg::OnCommand(int nID,int nEvent)
#006 {
#007  // 菜單選項命令響應:
#008  switch (nID)
#009  {
#010  case IDC_CREATEBTN:
#011         //顯示一個按鈕。
#012         if (!m_hBtn)
#013         {
#014                m_hBtn = CreateWindow(_T("BUTTON"),_T("按鈕"),
#015                    WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
#016                    50,50,100,32,
#017                     m_hWnd,(HMENU)IDC_BTN,m_hInstance,NULL);
#018         }                                          
#019         break;
#020  case IDC_BTN:
#021         OutputDebugString(_T("按鈕按下/r/n"));
#022         {
#023               static bool bChangeText = true;
#024               if (bChangeText)
#025               {
#026                    //設定按鈕的文字。
#027                    SetWindowText(m_hBtn,_T("改變它"));
#028
#029                    //改變按鈕視窗的位置和大小。
#030                    MoveWindow(m_hBtn,10,10,100,32,TRUE);
#031
#032                   //改變主視窗為最頂端視窗。
#033               SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
#034               }
#035               else
#036               {
#037                    //設定按鈕的文字。
#038                    SetWindowText(m_hBtn,_T("按鈕"));
#039
#040                    //改變按鈕視窗的位置和大小。
#041                    MoveWindow(m_hBtn,50,50,100,32,TRUE);
#042
#043                   //改變主視窗為普通視窗。
#044               SetWindowPos(m_hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
#045               }
#046
#047               //每一次都改變。
#048               bChangeText = !bChangeText;
#049         }
#050         break;
#051  default:
#052         return CCaiWin::OnCommand(nID,nEvent);
#053  }
#054
#055  return 1;
#056 }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.