setwindowpos函数:Windows API一日一练(38)SetWindowPos函数

  有用户突然对我说你这个窗口能不能放到最顶端这样操作和打开文件就很不方便了这个功能就需要改变窗口属性了比如大家使用QQ时就有个功能设置QQ窗口在最顶端不管你选择了什么窗口QQ界面永远都在最前面又像FlashGet状态查看窗口直保持在窗口最前端让你看到当前下载流量程况现在股票那么火爆很多人边工作边查看股票如果错失了机会又少了很多钱啊!面对这样需求就需要把些窗口永远摆在最前面这样起到提示用户作用因此学会使用SetWindowPos就成为能否让软件Software满足客户需求关键了和MoveWindow相比SetWindowPos功能比较强大

  SetWindowPos声明如下:

WINUSERAPI
BOOL
WINAPI
SetWindowPos(
    __in HWND hWnd,
    __in_opt HWND hWndInsertAfter,
    __in  X,
    __in  Y,
    __in  cx,
    __in  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( nID, nEvent)
#006 { 
#007  // 菜单选项命令响应:
#008  switch (nID)
#009  {
#010   IDC_CREATEBTN:
#011         //显示个按钮
#012          (!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         ;
#020   IDC_BTN: 
#021         OutputDebugString(_T("按钮按下\r\n"));
#022         {
#023                bool bChangeText = true;
#024                (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               
#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         ;
#051  default:
#052          CCaiWin::OnCommand(nID,nEvent);
#053  }
#054 
#055   1;
#056 }


Tags:  setwindowpos windowsapi函数库 windowsapi函数 setwindowpos函数

延伸阅读

最新评论

发表评论