一.在窗口创建之前改变窗口的大小和标题

要改变应用程序窗口的大小可以通过在PreCreatWindowl函数中修改CREATSTRUCT结构体变量成员的值

BOOL CMainFrame::PreCreatWindow(CREATSTRUCT cs)

{

if(!CFrameWnd::PreCreatWindow(cs))

return FALSE;

(在这个函数的地方改变CREATSTRUCT结构体变量的值)

cs.cx=300;//把cx的值改为300

cs.cy=200;//把cy的值改为200

return TRUE;

}

2.改变应用程序窗口的标题

要改变应用窗口的标题可以通过改变CREATSTRUCT结构体成员变量的 lpszName参数的值来实现。

BOOL CMainFrame::PreCreatWindow(CREATSTRUCT cs)

{

if(!CFrameWnd::PreCreatWindow(cs))

return FALSE;

(在这个函数的地方改变CREATSTRUCT结构体变量的值)

cs.cx=300;//把cx的值改为300

cs.cy=200;//把cy的值改为200

cs.style&=~FWS_ADDTOTITLE;//其中FWS_ADDTOTITLE是指示将文档的标题加到窗口上,这是MFC默认的                               //式,所以需要将这个默认的方式去掉以后才可以加自己的标题。

cs.lpszName="李现会";

return TRUE;

}

二 在窗口创建之后改变窗口的大小和标题

1.首先介绍一下 SetWindowLong();函数;

SetWindowLong(HWND hWnd,int index, LONG dwNewLong );SetWindowLong()实现了改变窗口的属性的功能。

第一个参数是指向了 需要改变的窗口的句柄。

第二个参数是要改变窗口的具体的方面。

第三个参数是要把该窗口改变成什么样子;

通常SetWindowLong();函数可以在窗口创建之后改变窗口的外观。

在单文档文件中,通常是在PreCreatWindow函数中实现“预创建”窗口。而在OnCreat()函数中,当执行到return 0;语句的时候已经创建完成了窗口。所以在OnCreat()函数中调用SetWindowLong();函数来实现窗口创建完成之后的改变窗口的外观。

所以在OnCreat()函数中调用SetWindowLong()函数具体用法如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CFrameWnd::OnCreate(lpCreateStruct) ==
-1)
  return -1;
 
 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT,
WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_GRIPPER | CBRS_TOOLTIPS
| CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{
  TRACE0("Failed to create
toolbar\n");
  return
-1;     
// fail to create
 }

if (!m_wndStatusBar.Create(this) ||
  !m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status
bar\n");
  return
-1;     
// fail to create
 }

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

SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);//在MFC中如果想在窗口创建之后改变窗口的外观,可以通过调用SetWindowLong();函数

return 0;
}

其中 WS_OVERLAPPEDWINDOW定义如下:

#define WS_OVERLAPPEDWINDOW(WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX
| WS_MAXIMIZE | WS_THICKFRAME);

其中 WS_SYSMENU是系统菜单,不包括按钮。

使得窗口可以最大化和最小化。

2.用SetWindowLong()和GetWindowLong()两个函数结合来改变窗口的某些属性;

如法如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CFrameWnd::OnCreate(lpCreateStruct) ==
-1)
  return -1;
 
 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT,
WS_CHILD | WS_VISIBLE | CBRS_TOP
  | CBRS_GRIPPER | CBRS_TOOLTIPS
| CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{
  TRACE0("Failed to create
toolbar\n");
  return
-1;     
// fail to create
 }

if (!m_wndStatusBar.Create(this) ||
  !m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))
 {
  TRACE0("Failed to create status
bar\n");
  return
-1;     
// fail to create
 }

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

SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)&~WS_MAXIMIZEBOX);//
在MFC中如果想在窗口创建之后改变窗口的外观,可以通过调用SetWindowLong();函数

return 0;
}可以看到在SetWindowLong();函数的第三个参数处实用了GetWindowLong();函数,该函数返回的是函数的类型,该类型和
WS_MAXIMIZEBOX的去反相与,成为SetWindowLong()函数的第三个参数,所以新设置的窗口不再有最大化这个选项了。

VC++ 定制应用程序的外观的更多相关文章

  1. 通过用 .NET 生成自定义窗体设计器来定制应用程序

    通过用 .NET 生成自定义窗体设计器来定制应用程序 https://www.microsoft.com/china/MSDN/library/netFramework/netframework/Cu ...

  2. 用VC制作应用程序启动画面

    摘 要:本文提供了四种启动画面制作方法. 使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是 可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢 ...

  3. iOS 9应用开发教程之定制应用程序图标以及真机测试

    iOS 9应用开发教程之定制应用程序图标以及真机测试 定制ios9应用程序图标 在图1.12中可以看到应用程序的图标是网状白色图像,它是iOS模拟器上的应用程序默认的图标.这个图标是可以进行改变的.以 ...

  4. [Windows][VC]开机自动启动程序的几种方法

    原文:[Windows][VC]开机自动启动程序的几种方法 很多监控软件要求软件能够在系统重新启动后不用用户去点击图标启动项目,而是直接能够启动运行,方法是写注册表Software\\Microsof ...

  5. VC++DLL动态链接库程序

    VC++DLL动态链接库程序 VC++DLL动态链接库程序 C++ DLL 导出函数 使用VS2017等IDE生成dll程序,示例如下: C++ DLL 导出类 1.导出类中第一种方法:简单导出类(不 ...

  6. 【vc】1_Windows程序内部运行机制

    创建一个Win32应用程序步骤: 1.编写WinMain函数; 2.创建窗口(步骤如下): a.设计(一个)窗口类(WNDCLASS) b.注册(该)窗口类. c.创建窗口. d.显示并更新窗口. 3 ...

  7. Windows 开发之VC++垃圾清理程序软件

    概述 本程序软件的主要实现垃圾文件清理的功能,即对指定的文件格式的临时文件或垃圾文件进行遍历.扫描.显示.删除清理等功能.在程序界面设计方面,对默认对话框重新自定义绘制,主要包括标题栏的重绘.对话框边 ...

  8. 深入浅出话VC++(1)——Windows程序内部运行机制

    一.引言 要想熟练掌握Windows应用程序的开发,首先需要理解Windows平台下程序运行的内部机制,然而在.NET平台下,创建一个Windows桌面程序,只需要简单地选择Windows窗体应用程序 ...

  9. VC++如何在程序中用代码注册和卸载ocx控件(代码)

    方法一:在dos或Windows命令行下运行:regsvr32 ocxname.ocx 注册 示例:regsvr32 netshare.ocx     //注册netshare.ocx控件regsvr ...

随机推荐

  1. null id in entry (don't flush the Session after an exception occurs)

    null id in entry (don't flush the Session after an exception occurs) 遇到这个异常实属不小心所致,最初看到异出的错误信息时我误认为是 ...

  2. springboot 使用的配置

    1,控制台打印sql logging: level: com.sdyy.test.mapper: debug 2,开启驼峰命名 mybatis.configuration.map-underscore ...

  3. 吴裕雄 python神经网络 水果图片识别(2)

    import osimport numpy as npimport matplotlib.pyplot as pltfrom skimage import color,data,transform,i ...

  4. RNA-seq 安装 fastaqc,tophat,cuffilnks,hisat2

    ------------------------------------------ 安装fastqc------------------------------------------------- ...

  5. 破解版ps

    http://www.sdifen.com/adobe-photoshop-cc.html

  6. ubuntu下 openvpn客户端的配置

    1.安装openvpn sudo apt-get install openvpn 2.配置openvpn 作为客户端,OpenVPN并没有特定的配置文件,而是由服务器提供方给出一个配置文件.对于认证, ...

  7. Java获取资源文件

    比如我们有以下目录 |--project |--src |--javaapplication |--Test.java |--file1.txt |--file2.txt |--build |--ja ...

  8. handler------post传送方式

    package com.qianfeng.gp08_day26_hanlder2; import android.os.Bundle; import android.os.Handler; impor ...

  9. tp中url地址大小写问题

    在tp配置文件中有一个URL_CASE_INSENSITIVE选项,设置为true,表示大小写不敏感. 'URL_CASE_INSENSITIVE' => true

  10. Spring框架整合WEB解决配置文件加载多次的问题

    1. 创建JavaWEB项目,引入Spring的开发包.编写具体的类和方法. * 环境搭建好后,启动服务器来测试项目,发送每访问一次都会加载一次配置文件,这样效率会非常非常慢!! 2. 解决上面的问题 ...