• VC单文档 窗口设置


    想修改单文档框架的外观 需要在框架创建前修改 所以我们就要在Frame类中找到  BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

    1、修改框架窗体的大小 只要在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中添加如下代码

    cs.cx=300; //框架窗体的宽
    cs.cy=200; //


    2、修改窗体标题

      注意:默认情况下框架标题是下面文档的标题

    cs.style=WS_OVERLAPPEDWINDOW;  //
    cs.lpszName=http://www.sunxin.org;

     3、去掉窗口的最大化框  这是可以在窗口创建完后操作所以我们就可以 在 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 函数周添加

     

    SetWindowLong(m_hWnd,/*窗口句柄  MFC默认保存一个窗口句柄所以我们就直接引用就可以了*/
                  GWL_STYLE, /*设计窗口风格*/
                  GetWindowLong(m_hWnd,GWL_STYLE) & ~WS_MAXIMIZEBOX
                  /*获取当前窗口风格 然后与最大化取反相与就可以了*/
    );

    4、在窗口创建前修改窗口背景,图标光标 需要在Frame类中PreCreateWindow 和 view类中PreCreateWindow(窗口创建前)修改

        有两种方法 建议第二种 

         注意:即使我们在Frame中更改了光标和背景也没有用 因为我们首先看到的是view类所以还要在view类中修改

           方法一:

      1、在Frame类中PreCreateWindow 中添加下面代码

        WNDCLASS wndcls;
        wndcls.cbClsExtra=0;
        wndcls.cbWndExtra=0;
        wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH); //窗口背景 用强制画刷设置为黑色
        wndcls.hCursor=LoadCursor(NULL,IDC_HELP);//设置光标 因为是系统自己的光标 所以第一个参数为NULL 
        wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);  //设置图标  用标准图标 所以第一个参数为NULL
        wndcls.hInstance=AfxGetInstanceHandle(); //获取当前应用程序的句柄
        wndcls.lpfnWndProc=::DefWindowProc;  //调用全局的PAI函数  
        wndcls.lpszClassName="sunxin.org";  //类的名字 
        wndcls.lpszMenuName=NULL;           //菜单的名字
        wndcls.style=CS_HREDRAW | CS_VREDRAW;  //窗口类的类型 并不是窗口的类型
    
        RegisterClass(&wndcls);  //注册 这个类
    
        cs.lpszClass="sunxin.org"; // 让窗口创建的时候 用我们刚刚创建的类创建

     

      2、view类中PreCreateWindow添加如下代码

     

    cs.lpszClass="sunxin.org";  //因为我们已经注册了这个类 所以我们直接引用

     

       方法二:直接修改原有类的属性 这样就不用新建了

    1、在Frame类中PreCreateWindow 中添加下面代码

        cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, //累的类型窗口 水平和垂直
                                           0,  //光标  修改也没有用 所以就不修改了
                                           0,  //背景  修改也没有用 所以就不修改了
                                           LoadIcon(NULL,IDI_WARNING)// 图标
                                           );

     2、view类中PreCreateWindow添加如下代码

    cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
                                     LoadCursor(NULL,IDC_CROSS), //光标
    (HBRUSH)GetStockObject(BLACK_BRUSH), //背景
    0 // 图标 view类没有图标 所以就不用更改了
    );

    5、在窗口创建后修改窗口背景,图标光标

     1、在Frame的Creat中(这时窗口已经创建完成)添加如下代码

    SetClassLong(m_hWnd,//句柄
                 GCL_HICON, //索引值 设置为图标
                 (LONG)LoadIcon(NULL,IDI_ERROR) //强制类型转换 
                 );

    2、在view的Creat中添加如下代码 修改背景和图标

    //更改背景  
    SetClassLong(m_hWnd,
    GCL_HBRBACKGROUND,//索引值 背景
    (LONG)GetStockObject(BLACK_BRUSH) //改为黑色
    );
    //更改光标 SetClassLong(m_hWnd,
    GCL_HCURSOR, //索引值 光标
    (LONG)LoadCursor(NULL,IDC_HELP)
    );

    6、创建动态图标 用定时器循环载入

    1、点击 insert ->resource 导入3个 ico 图标

    2、在Frame类中添加 HICON 类的数值存储 3个图标 名为m_hicons

    3、加载图标 在Frame的 Creat中添加下面代码

        m_hIcons[0]=LoadIcon(AfxGetInstanceHandle(),//获取句柄的方法一 有下面的两种方法也行
    MAKEINTRESOURCE(IDI_ICON1) //把ID好转换为字符串型的
    ); m_hIcons[
    1]=LoadIcon(theApp.m_hInstance, //用这种方法 是用其他文件里面的变量 所以要 申明一个外部变量 extern CStyleApp theApp;
    MAKEINTRESOURCE(IDI_ICON2)); m_hIcons[
    2]=LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON3));

    4、添加定时器  然后在Frame的 Creat中添加下面代码

    SetTimer(1, //定时器的标示
    1000, //流逝时间 1000ms
    NULL
    );

    5、在Frame里面添加一个Timer消息  并在Timer的消息响应函数里面添加如下代码

        static int index=1; //只载入一次
        SetClassLong(m_hWnd,
                    GCL_HICON, 
                    (LONG)m_hIcons[index] //或的的图标句柄 转换为LONG型
                    );
        index=++index%3; //让数据在0-2之间变化 如果想让数据在1-10 间变化就用 %11

     

  • 相关阅读:
    TCP三次握手与四次挥手
    centos7快捷键
    关于学习简单讲解的个人观点
    继承与派生
    python封装
    python之面向对象编程
    python之re模块
    python之hashlib、suprocess模块
    python之shelve、xml、configparser模块
    python之json、pickle模块
  • 原文地址:https://www.cnblogs.com/LJWJL/p/2711656.html
Copyright © 2020-2023  润新知