MFC_SetWindowPos

1.此函數使用的座標參數用的是Client座標,對於子窗口用的是其父窗口的座標系。然而對於用DoModal()彈出的窗口,如果在資源屬性裏沒有選擇Child屬性的話,它的父窗口是DeskTop,而不是調用DoModal()的窗口;

2.SetWindowPos 詳解

函數名:

 

  SetWindowPos 

頭文件: 

  winuser.h 

函數原型:

  BOOL SetWindowPos
  (
  HWND hWnd, //窗口句柄
  HWND hWndInsertAfter, //排列順序的句柄
  int X, //水平座標
  int Y, //垂直座標
  int cx, //寬
  int cy, //高
  UINT uFlags //窗口定位標識
  ); 

說明:

  這個函數能改變窗口的大小、位置和設置子窗口、彈出窗口或頂層窗口的排列順序。 
  返回值:

  BOOL,如果返回值非零表示成功,返回零表示失敗。錯誤信息請參看GetLastError函數。

參數表:

  參數 類型及說明 
  hwnd HWND,欲定位的窗口句柄 
  hWndInsertAfter HWND,置於hwnd前面的窗口句柄。這個參數必須是窗口的句柄或是下面的值之一:    HWND_BOTTOM 將窗口置於其它所有窗口的底部 
  HWND_NOTOPMOST 將窗口置於其它所有窗口的頂部,並位於任何最頂部窗口的後面。如果這個窗口非頂部窗口,這個標記對該窗口並不產生影響 
  HWND_TOP 將窗口置於它所有窗口的頂部 
  HWND_TOPMOST 將窗口置於其它所有窗口的頂部,並位於任何最頂部窗口的前面。即使這個窗口不是活動窗口,也維持最頂部狀態 

x: 
 
  int,指定窗口新的X座標

Y:  

  int,指定窗口新的Y座標 

cx:  

  int,指定窗口新的寬度 

cy:  

  int,指定窗口新的高度 

wFlags: 

  UINT,指定窗口狀態和位置的標記。這個參數使用下面值的組合: SWP_DRAWFRAME 圍繞窗口畫一個框 
  SWP_FRAMECHANGED 發送一條WM_NCCALCSIZE消息進入窗口,即使窗口的大小沒有發生改變。如果不指定這個參數,消息WM_NCCALCSIZE只有在窗口大小發生改變時才發送 
  SWP_HIDEWINDOW 隱藏窗口 
  SWP_NOACTIVATE 不激活窗口 
  SWP_NOCOPYBITS 屏蔽客戶區域 
  SWP_NOMOVE 保持當前位置(X和Y參數將被忽略) 
  SWP_NOOWNERZORDER 不改變所有窗口的位置和排列順序 
  SWP_NOREDRAW 窗口不自動重畫 
  SWP_NOREPOSITION 與SWP_NOOWNERZORDER標記相同 
  SWP_NOSENDCHANGING 防止這個窗口接受WM_WINDOWPOSCHANGING消息 
  SWP_NOSIZE 保持當前大小(cx和cy會被忽略) 
  SWP_NOZORDER 保持窗口在列表的當前位置(hWndInsertAfter將被忽略) 
  SWP_SHOWWINDOW 顯示窗口 


備註:

  如果設置了SWP_SHOWWINDOW或SWP_HIDEWINDOW標記,這個窗口不發生移動或改變大小。窗口成爲最頂級窗口後,它的所有子窗口也會進入最頂級。一旦將其設爲非最頂級,則它的所有子窗口也會轉爲非最頂級。

相關函數:

  MoveWindow,SetActiveWindow,SetForegroundWindow 

例子:

  //設置頂層窗口
  SetWindowPos( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE); 

  //取消頂層窗口
  SetWindowPos( Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE||SWP_NOSIZE);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章