SW中相对视图,空白视图,预定义视图什么意思
时间: 2024-06-18 22:04:08 浏览: 14
在软件工程中,相对视图、空白视图和预定义视图是软件架构设计中常用的三种视图类型。
相对视图是指将系统的组件或模块按照其相互关系和交互方式划分为多个视图,并对这些视图进行描述和说明。相对视图主要用于帮助开发人员和架构师更好地理解系统的结构和组成部分之间的关系,以便更好地完成系统的设计和开发。
空白视图是指描述系统的整体结构和组成部分之间的关系,同时忽略具体实现细节。它通常用于展示系统整体结构的组成部分以及它们之间的交互关系,而不需要关注实现细节。
预定义视图是指一组标准化的视图模板,可以根据具体的需求和场景来选择相应的模板进行使用。预定义视图包括了诸如数据流图、层次结构图、状态转换图等多种类型,可以帮助开发人员快速地建立系统的不同视角,方便系统架构设计和开发。
相关问题
vc 多文档视图添加标尺
在 VC 多文档视图中添加标尺是为了提供方便的尺度参考和测量功能。标尺在用户界面上通常位于视图的顶部和左侧,用于展示水平和垂直尺度。
为了实现在 VC 多文档视图中添加标尺,可以按照如下步骤进行操作:
1. 打开多文档视图的对应代码文件,一般为 CDocument 类的派生类文件。
2. 在文件的头文件中添加用于标尺的成员变量声明,例如:
```
CScrollBar m_hRuler; // 水平标尺
CScrollBar m_vRuler; // 垂直标尺
```
3. 在类的构造函数中完成标尺的创建和初始化,例如:
```
m_hRuler.Create(WS_CHILD | WS_VISIBLE | SBS_HORZ, CRect(0, 0, 0, 0), this, 1);
m_vRuler.Create(WS_CHILD | WS_VISIBLE | SBS_VERT, CRect(0, 0, 0, 0), this, 2);
```
这样就创建了一个水平标尺和一个垂直标尺,并将它们绑定到当前视图上。
4. 在类的 OnSize 方法中,设置标尺的位置和大小,使其适应当前视图大小的变化:
```
CRect rect;
GetClientRect(&rect);
m_hRuler.SetWindowPos(NULL, 0, rect.top, rect.Width(), 20, SWP_SHOWWINDOW);
m_vRuler.SetWindowPos(NULL, rect.left, 0, 20, rect.Height(), SWP_SHOWWINDOW);
```
这样标尺就会根据视图的大小自动调整位置和大小。
5. 接下来,可以通过相应的函数控制标尺的显示和隐藏,例如:
```
void ShowRuler(BOOL bShow)
{
m_hRuler.ShowWindow(bShow ? SW_SHOW : SW_HIDE);
m_vRuler.ShowWindow(bShow ? SW_SHOW : SW_HIDE);
}
```
6. 最后,可以根据具体需求,通过标尺实现一些功能,如测量、定位等。
通过以上步骤,就可以在 VC 多文档视图中成功添加标尺,为用户提供方便的尺度参考和测量功能。
mfc多文档实现文件视图导航
要在MFC多文档应用程序中实现文件视图导航,可以按照以下步骤进行操作:
1. 在应用程序类中添加成员变量,用于存储当前活动的视图指针:
```c++
class CMyApp : public CWinApp
{
public:
// ...
CView* m_pActiveView;
};
```
2. 在每个视图类的OnInitialUpdate函数中,将应用程序类中的m_pActiveView成员变量设置为当前视图指针:
```c++
void CMyView::OnInitialUpdate()
{
CView::OnInitialUpdate();
GetDocument()->SetTitle(_T("My View"));
((CMyApp*)AfxGetApp())->m_pActiveView = this;
}
```
3. 在应用程序类中添加两个成员函数,用于处理前进和后退命令:
```c++
class CMyApp : public CWinApp
{
public:
// ...
void GoBack();
void GoForward();
};
```
4. 在这些函数中,使用CView::GetParentFrame函数获取当前视图的框架窗口,并使用CMDIFrameWnd::MDIGetActive函数获取当前激活的多文档窗口。然后,使用CMDIChildWnd::MDIGetActive函数获取当前激活的子窗口,并使用CWnd::SendMessage函数发送WM_COMMAND消息以模拟前进或后退命令:
```c++
void CMyApp::GoBack()
{
CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pChild = pFrame->MDIGetActive();
if (pChild != NULL)
{
CWnd* pView = pChild->GetActiveView();
if (pView != NULL && pView != m_pActiveView)
{
m_pActiveView = (CView*)pView;
}
pChild->SendMessage(WM_COMMAND, ID_NAVIGATE_BACK);
}
}
void CMyApp::GoForward()
{
CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pChild = pFrame->MDIGetActive();
if (pChild != NULL)
{
CWnd* pView = pChild->GetActiveView();
if (pView != NULL && pView != m_pActiveView)
{
m_pActiveView = (CView*)pView;
}
pChild->SendMessage(WM_COMMAND, ID_NAVIGATE_FORWARD);
}
}
```
5. 最后,在菜单资源中添加两个菜单项,并将它们的命令ID分别设置为ID_NAVIGATE_BACK和ID_NAVIGATE_FORWARD。然后,在应用程序类的InitInstance函数中,使用CFrameWnd::LoadFrame函数加载主框架窗口,并使用CFrameWnd::LoadAccelTable函数加载加速键表。最后,使用CWnd::SetMenu函数将菜单资源关联到主框架窗口:
```c++
BOOL CMyApp::InitInstance()
{
// ...
CFrameWnd* pFrame = new CMDIFrameWnd;
if (!pFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pFrame;
pFrame->ShowWindow(SW_SHOW);
pFrame->UpdateWindow();
LoadAccelTable(MAKEINTRESOURCE(IDR_MAINFRAME));
SetMenu(IDR_MAINFRAME);
return TRUE;
}
```
现在,当用户在多文档应用程序中打开多个视图时,他们可以使用前进和后退菜单项来浏览视图历史记录。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)