MFC对话框置顶 SetWindowPos()的用法(三)

当你建立了一个基本对话框应用程序时,设置对话框置顶,可以在初始化对话框函数或者在消息响应函数里添加以下语句
设置置顶:
SetWindowPos(&wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
取消置顶:
SetWindowPos(&wndNoTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
不需做任何修改即可完成。
当建立的是单文档应用程序时,要在前面多一个窗口句柄函数。
下面是更详细的说明:
函数名:  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 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的前面。即使这个窗口不是活动窗口,也维持最顶部状态 

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 显示窗口 


相关函数:

  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);

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MFC 中,对话框(Dialog)和视图(View)都是窗口(Window)对象,但它们的作用和用法不同。对话框用于显示窗口中的用户界面元素,如按钮、文本框等,而视图则用于显示和操作应用程序所处理的数据。通常情况下,对话框和视图都需要与文档(Document)类关联,以便在用户界面和数据之间建立联系。 要将对话框与视图关联起来,可以在对话框类中添加一个成员变量,类型为视图类的指针,用于存储指向该视图对象的指针。在对话框类的 OnInitDialog 函数中,可以通过 GetDlgItem 函数获取视图控件的句柄,并通过该句柄创建视图对象,并将该对象的指针存储到对话框类的成员变量中。 例如,假设有一个名为 CMyDialog 的对话框类,和一个名为 CMyView 的视图类,可以在 CMyDialog 类中添加如下成员变量: ``` class CMyDialog : public CDialog { public: CMyView* m_pView; }; ``` 然后在 OnInitDialog 函数中,可以添加如下代码: ``` BOOL CMyDialog::OnInitDialog() { // ... // 获取视图控件的句柄 CWnd* pWnd = GetDlgItem(IDC_VIEW); // 创建视图对象并将其指针存储到成员变量中 m_pView = new CMyView(); m_pView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this, IDC_VIEW, NULL); m_pView->SetWindowPos(pWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); // ... return TRUE; } ``` 其中 IDC_VIEW 是视图控件的 ID,可以在对话框资源中设置。这样就可以在对话框中显示视图,并且可以通过对话框类的成员变量访问该视图对象。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值