服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - VC小技巧汇总之窗口技巧

VC小技巧汇总之窗口技巧

2021-01-23 15:08C语言程序设计 C/C++

这篇文章主要介绍了VC小技巧汇总之窗口技巧,功能非常实用,对于VC开发有一定借鉴价值,需要的朋友可以参考下

本文搜集汇总了VC技巧窗口技巧,对于VC程序开发的窗口设计而言有一定的借鉴价值,详情如下:

1.让窗口一启动就最大化

把应用程序类(CxxxApp)的 InitInstance() 函数中的

?
1
m_pMainWnd->ShowWindow(SW_SHOW);

改为

?
1
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);

则窗口一启动就最大化显示。

2.如何设置窗口的初始尺寸

在将应用程序类(CxxAPP)的 InitInstance() 函数中加入:

?
1
m_pMainWnd->SetWindowPos(NULL,x,y,Width,Height,SWP_NOMOVE);

Width为窗口宽度,Height为窗口高度
SWP_NOMOVE表示忽略位置(x,y)。
如:

?
1
2
3
4
5
6
7
8
9
10
BOOL CDzyApp::InitInstance()
{
  AfxEnableControlContainer();
  ……
  // The one and only window has been initialized, so show and update it.
  m_pMainWnd->SetWindowPos(NULL,0,0,750,555,SWP_NOMOVE);//设置窗口的初始大小为750*555
  m_pMainWnd->ShowWindow(SW_SHOW);
  m_pMainWnd->UpdateWindow();
  return TRUE;
}

3.让窗口居中显示

以下两种方法可任选其一:

①在应用程序类(CxxxApp)的 InitInstance() 函数中加入:

?
1
m_pMainWnd->CenterWindow( GetDesktopWindow() );

②在主框架类(MainFrm.cpp)的OnCreate()函数中加入:

?
1
CenterWindow( GetDesktopWindow() );

如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  return -1;
  ……
 
  // TODO: Delete these three lines if you don't want the toolbar to
  // be dockable
  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  EnableDocking(CBRS_ALIGN_ANY);
  DockControlBar(&m_wndToolBar);
 
  CenterWindow( GetDesktopWindow() ); //使窗口打开时处于屏幕正中
 
  return 0;
}

4.如何修改窗口标题

窗口标题一般形式为:文档标题 - 程序标题

(1)设置文档标题:

在文档类(CxxxDoc)的OnNewDocument()函数中加入语句:SetTitle("文档名");
如:TextEditorDoc.cpp:

?
1
2
3
4
5
6
7
8
9
BOOL CTextEditorDoc::OnNewDocument()
{
  if (!CDocument::OnNewDocument())
    return FALSE;
  // TODO: add reinitialization code here
  // (SDI documents will reuse this document)
  SetTitle("未命名.txt");  //设置文档标题
  return TRUE;
}

(2)设置程序标题:

在框架类(CMainFrame)的PreCreateWindow()函数中加入语句:m_strTitle = _T("程序标题");
如:MainFrm.cpp:

?
1
2
3
4
5
6
7
8
9
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
  if( !CFrameWnd::PreCreateWindow(cs) )
    return FALSE;
  // TODO: Modify the Window class or styles here by modifying
  // the CREATESTRUCT cs
  m_strTitle = _T("文本整理器");  //设置程序标题
  return TRUE;
}

以上两点比较适用于视图-文档结构的程序,在新建文档时,系统会自动运行OnNewDocument()函数,在其中可以设置合适的标题。对于未采用文档的程序可以用下面的方法修改标题:

(3)修改窗口标题:

修改窗口标题一般在打开文件函数OnFileOpen()和另存为函数OnFileSaveAs()中进行,可以使用下面的函数:

?
1
AfxGetMainWnd()->SetWindowText("文档标题"+" - "+"程序标题");

其中文档标题和程序标题可使用定义过的串变量。

延伸 · 阅读

精彩推荐