WEB开发网
开发学院软件开发VC MFC程序员WTL指南(8)分隔窗口 阅读

MFC程序员WTL指南(8)分隔窗口

 2008-01-19 20:26:47 来源:WEB开发网   
核心提示:调用SetSinglePaneMode()函数可以改变分隔窗口的模式使单窗格模式还是双窗格模式,在单窗格模式下,MFC程序员WTL指南(8)分隔窗口(2),只有一个窗格使可见的并且隐藏了分隔条,这和MFC的动态分隔窗口相似(只是没有那个小钳子形状的手柄,如果分隔窗口自身得到的焦点,可以通过调用SetFocus()将焦点

调用SetSinglePaneMode()函数可以改变分隔窗口的模式使单窗格模式还是双窗格模式,在单窗格模式下,只有一个窗格使可见的并且隐藏了分隔条,这和MFC的动态分隔窗口相似(只是没有那个小钳子形状的手柄,它用于重新分隔分隔窗口)。对于nPane参数可用的值是SPLIT_PANE_LEFT,SPLIT_PANE_RIGHT,SPLIT_PANE_TOP,SPLIT_PANE_BOTTOM,和SPLIT_PANE_NONE,前四个指示显示那个窗格(例如,使用SPLIT_PANE_LEFT参数将显示左边的窗格,隐藏右边的窗格),使用SPLIT_PANE_NONE表示两个窗格都显示。GetSinglePaneMode()返回五个SPLIT_PANE_*值中的一个表示当前的模式。

DWORD SetSplitterExtendedStyle(DWORD dwExtendedStyle, DWORD dwMask = 0)
DWORD GetSplitterExtendedStyle()

分隔窗口有自己的样式用于控制当整个分隔窗口改变大小时如何移动分隔条。有以下几种样式:

  • SPLIT_PROPORTIONAL: 两个窗格一起改变大小
  • SPLIT_RIGHTALIGNED: 右边的窗格保持大小不变,只改变左边的窗格大小
  • SPLIT_BOTTOMALIGNED: 下部的窗格保持大小不变,只改变上边的窗格大小

如果既没有指定SPLIT_PROPORTIONAL,也没有指定SPLIT_RIGHTALIGNED/SPLIT_BOTTOMALIGNED,则分隔窗口会变成左对齐或上对齐。如果将SPLIT_PROPORTIONAL和SPLIT_RIGHTALIGNED/SPLIT_BOTTOMALIGNED一起使用,则优先选用SPLIT_PROPORTIONAL样式。

还有一个附加的样式用来控制分隔条是否可以被用户移动:

  • SPLIT_NONINTERACTIVE:分隔条不能被移动并且不相应鼠标

扩展样式的默认值是 SPLIT_PROPORTIONAL。

bool SetSplitterPane(int nPane, HWND hWnd, bool bUpdate = true)
void SetSplitterPanes(HWND hWndLeftTop, HWND hWndRightBottom, bool bUpdate = true)
HWND GetSplitterPane(int nPane)

可以调用SetSplitterPane()为分隔窗口的窗格指派子窗口,nPane是一个SPLIT_PANE_*类型的值,表示设置拿一个窗格。hWnd是子窗口的窗口句柄。你可以使用SetSplitterPane()将一个子窗口同时指定给两个窗格,对于bUpdate参数通常使用默认值,也就是告诉分隔窗口立即调整子窗口的大小以适应窗格的大小。可以调用GetSplitterPane()得到某个窗格的子窗口句柄,如果窗格没有指派子窗口则GetSplitterPane()返回NULL。

bool SetActivePane(int nPane)
int GetActivePane()

SetActivePane()函数将分隔窗口中的某个子窗口设置为当前焦点窗口,nPane是SPLIT_PANE_*类型的值,表示需要激活哪个窗格,这个函数还可以设置默认的活动窗格(后面介绍)。GetActivePane()函数查看所有拥有焦点的窗口,如果拥有焦点的窗口是窗格或窗格的子窗口就返回一个SPLIT_PANE_*类型的值,表示是哪个窗格。如果当前拥有焦点的窗口不是窗格的子窗口,那么GetActivePane()返回SPLIT_PANE_NONE。

bool ActivateNextPane(bool bNext = true)

如果分隔窗口是单窗格模式,焦点被设到可见的窗格上,否则的话,ActivateNextPane()函数将调用GetActivePane()查看拥有焦点的窗口。如果一个窗格(或窗格内的子窗口)拥有检点,分隔窗口就将焦点设给另一个窗格,否则ActivateNextPane()将判断bNext的值,如果是true就激活left/top窗格,如果是false则激活right/bottom窗格。

bool SetDefaultActivePane(int nPane)
bool SetDefaultActivePane(HWND hWnd)
int GetDefaultActivePane()

调用SetDefaultActivePane()函数可以设置默认的活动窗格,它的参数可以是SPLIT_PANE_*类型的值,也可以是窗口的句柄。如果分隔窗口自身得到的焦点,可以通过调用SetFocus()将焦点转移给默认窗格。GetDefaultActivePane()函数返回SPLIT_PANE_*类型的值表示哪个窗格是当前默认的活动窗格。

void GetSystemSettings(bool bUpdate)

上一页  1 2 3 4 5 6 7  下一页

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接