zoukankan      html  css  js  c++  java
  • 【积累】窗口最大或最小化时动态更改应用程序图标

    窗口最大或最小化时动态更改应用程序图标

    判断窗口是最小化,最大化还是正常态利用窗口的WM_SIZE消息来获取窗口状态的消息,WM_SIZE消息有五种值其中最常用的三种分别是:

    SIZE_RESTORED:窗口被还原时产生的消息。

    SIZE_MINIMIZED:窗口最小化时产生的消息。

    SIZE_MAXIMIZED:窗口最大化时产生的消息。

    更改应用程序图标则用到了CWnd::SetIcon()函数。可以先用CWinApp::LoadIcon()从应用程序资源中载入图标。具体实现代码:

     

    1 AfxGetMainWnd()->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1),TRUE);

    动态更改应用程序图标实例:

    1.新建SDI文档,把要更改的图标加入到资源,然后通过向导添加一个WM_SIZE消息的处理函数。
    2.具体做法是点击菜单栏中的"查看"->"建立类向导..."
    3.在Message Maps页中的"Class name"项选择CMainFrame,然后Message中选择WM_SIZE,然后单击"Add Function"按钮.
    4.这样就把处理WM_SIZE消息的函数建立起来了,我们不要急着关闭向导,单击按钮"Edit Code"来进行具体的功能实现。
    5.进入到代码页面,我们可以看到处理WM_SIZE消息的函数框架,如下:
       void CMainFrame::OnSize(UINT nType, int cx, int cy)
      {
        CFrameWnd::OnSize(nType, cx, cy);
     
        // TODO: Add your message handler code here
      }
    6.现在我们来实现,当窗口最小化时弹出提示信息。我们可以在OnSize函数中加入如下代码:

    void CMainFrame::OnSize(UINT nType, int cx, int cy) 
    {
    	CFrameWnd::OnSize(nType, cx, cy);
    	static nCount=0;
    	// 在窗口第一次创建时此函数也被调用,此时应用程序图标还未被创建,所以要
    	//用nCount>0来防止窗口第一次创建时,即窗口处于正常态是更改图标出错。
    	if(nType==SIZE_MINIMIZED)
    	{
             
    		AfxGetMainWnd()->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON2),TRUE);
    		// 窗口最小时,图标被更改为ID号为IDI_ICON2的图标
    	}
    	else if (nType==SIZE_MAXIMIZED)
    	{
             AfxGetMainWnd()->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1),TRUE);
    		 // 窗口最大化时,图标被更改为ID号为IDI_ICON1的图标
    	}
    	else if (nType==SIZE_RESTORED)
    	{
    		if (nCount>0)
    		{
    			AfxGetMainWnd()->SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME),TRUE);
    		// 窗口被还原时,图标还原为ID号为IDR_MAINFRAME的原程序图标
    		}
    		nCount++;
    	}
    

    作者:Ljhero
    出处:http://ljhero.cnblogs.com/
    本作品采用署名-非商业性使用 3.0协议进行许可。欢迎转载,演绎,但是必须保留本文的署名Ljhero,且不能用于商业目的。

  • 相关阅读:
    使用反射获取对象的步骤
    金融IT的算法要求
    Java编译与反编译命令记录
    常用搜索博客/网站
    Java核心-03 谈谈final、finally、 finalize有什么不同?
    Java核心-02 Exception和Error有什么区别?
    PHP函数技巧篇
    IO
    Markdown 简单使用教程
    FZu Problem 2233 ~APTX4869 (并查集 + sort)
  • 原文地址:https://www.cnblogs.com/ljhero/p/1964716.html
Copyright © 2011-2022 走看看