• WM_IDLEUPDATECMDUI与CView


    CFrameWnd貌似会向其CView子窗口(从CWnd继承的子窗口也适用)发生此消息, 子窗口可以响应该消息来更新一些按钮控件的状态. ex:

    #pragma once
    // CWelcomeView

    class CWelcomeWnd : public CWnd
    {
    public:
        CWelcomeWnd();
        virtual ~CWelcomeWnd();

    protected:
        DECLARE_MESSAGE_MAP()

        afx_msg  void OnIdleUpdateCmdUI();  

    };

    // WelcomeView.cpp : 实现文件
    //

    #include "stdafx.h"
    #include "WelcomeView.h"
    #include "afxpriv.h"

    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif

    // CWelcomeView

    CWelcomeView::CWelcomeView()
    {

    }

    CWelcomeView::~CWelcomeView()
    {
    }

    BEGIN_MESSAGE_MAP(CWelcomeView, CWnd)
        ON_MESSAGE_VOID(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI)
    END_MESSAGE_MAP()

    // CWelcomeView 消息处理程序

    afx_msg void CWelcomeView::OnIdleUpdateCmdUI()
    {
        BOOL bEnabled = FALSE;

        // 树形控件弹出菜单

        // 导入导出
        bEnabled = (m_nCurrTag == TAG_SIM1 ||
                    m_nCurrTag == TAG_SIM2 ||
                    m_nCurrTag == TAG_ME);
        m_wndDropBtnImpExp.EnableCommand(IDC_IMPEXP,    bEnabled);
        m_wndDropBtnImpExp.EnableCommand(IDC_IMPCSV,    bEnabled);
        m_wndDropBtnImpExp.EnableCommand(IDC_IMPVCARD,    bEnabled);
        m_wndDropBtnImpExp.EnableCommand(IDC_EXPCSV,    bEnabled);
        m_wndDropBtnImpExp.EnableCommand(IDC_EXPVCARD,    bEnabled);

        // 复制粘贴
        bEnabled = (m_nCurrTag == TAG_SIM1 ||
                    m_nCurrTag == TAG_SIM2 ||
                    m_nCurrTag == TAG_ME   ||
                    m_nCurrTag == TAG_LOCAL);
        bEnabled &= (m_wndPbList.GetSelectedCount() > 0);
        m_wndDropBtnCopySave.EnableCommand(IDC_COPY1, bEnabled);
        m_wndDropBtnCopySave.EnableCommand(IDC_CUT1, bEnabled);

        bEnabled = (m_nCurrTag == TAG_SIM1 ||
            m_nCurrTag == TAG_SIM2 ||
            m_nCurrTag == TAG_ME   ||
            m_nCurrTag == TAG_LOCAL);
        bEnabled &= (m_clipboard.size() > 0);
        m_wndDropBtnCopySave.EnableCommand(IDC_PASTE1, bEnabled);

        // 删除
        bEnabled = (m_wndPbList.GetSelectedCount() > 0);
        m_wndBtnDelete.EnableWindow(bEnabled);

        // 同步
        bEnabled = (m_nCurrTag == TAG_SIM1 ||
            m_nCurrTag == TAG_SIM2 ||
            m_nCurrTag == TAG_ME);
        m_wndBtnSync.EnableWindow(bEnabled);

        // 刷新
        //bEnabled = (m_nCurrTag == TAG_SIM1 ||
        //    m_nCurrTag == TAG_SIM2 ||
        //    m_nCurrTag == TAG_ME);

        // 添加
        bEnabled = (m_nCurrTag == TAG_SIM1 ||
            m_nCurrTag == TAG_SIM2 ||
            m_nCurrTag == TAG_ME);
        m_wndPbList.EnableTopButton(TOP_COMMAND_ADD, bEnabled);

    }

  • 相关阅读:
    linux挂载数据盘
    Linux删除文件空间不释放问题解决
    有关智能指针(shared_ptr)的讨论
    C++函数参数传递方式(Effective C++之20, 21)
    禁用编译器自动生成的函数(Effective C++之06)
    C++编译器自动生成的函数(Effective C++之05)
    20192409潘则宇汇编语言程序设计前四章学习总结
    20192409潘则宇 实验一 逆向破解与BOF实验总结
    测试常见问题
    学习嵌入式的点滴(三)
  • 原文地址:https://www.cnblogs.com/hcfalan/p/1886721.html
Copyright © 2020-2023  润新知