基于MFC 做页面 (遍历文件名、STL(map、vector))

实现的功能页面如下图:


实现的过程:

基于MFC完成页面的设置;首先在OnInitDialog()函数中完成对话框的初始化,初始化包括快捷方案组合窗口初始化(LoadAllSchemes( FileName))、列表控件初始化InitListCtrl()、插件组合窗口初始化LoadAllPlugin();其中快捷方案组合窗口中的信息是通过SsnGetPath获取相应地址信息,查询该地址下对应的文件节名就是相应的快捷方案;在查找快捷方案是,遍历相应文件夹中的文件信息,即得到列表空间中的“命令描述”和“快捷键信息”,查找到的相应快捷键信息通过vector存储到vSave中,用于查询时调用;同时通过map把相应的插件ID和插件名对应存储到mapPlugin,用于插件查询时使用;
快捷方案查找,首先获取组合框中的快捷方案名,快捷方案名既是相应的文件名,通过遍历文件名下的相应信息,完成查找功能;
插件查找,因为mapPlugin中存储了插件ID和插件名的对应信息,所以通过获得组合框中选中的插件名,则可以查找到对应的插件ID,通过插件ID,在列表框中填充相应的信息;
查询功能,获取列表框中每行每列的相应信息和Edit中的信息进行比较,如果相同,则标注该行;

实现代码:

HotkeyScheme.h

#pragma once
#include "SSNAPI.h"
#include "Resource.h"
#include <vector>
#include <map>


class CHotkeyScheme: public CDialogEx
{
 DECLARE_DYNAMIC(CHotkeyScheme)
public:
 CHotkeyScheme(CWnd* pParent = NULL);   // standard constructor
 virtual ~CHotkeyScheme();
 enum { IDD = IDD_HOTKEY_DIALOG };

protected:
 virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
 virtual BOOL OnInitDialog();
 DECLARE_MESSAGE_MAP()
public:
 void LoadAllSchemes(CString FileName);       //加载所有的快捷键方案
 void LoadAllPlugin();                      //加载所有的插件
 void InitListCtrl();                         //初始化快捷键列表属性 
 void FindFileName(const TCHAR* pat,CString FileName);
 void OnClose();
 afx_msg void OnBnClickedOk();
 afx_msg void OnBnClickedFind();              //查询                
 CComboBox m_Scheme;
 CListCtrl m_list;
 std::vector<PSSN_COMMAND> m_vSave;
 void CHotkeyScheme::OnBnClickedCancel();
 CComboBox m_Module;
 afx_msg void OnSelchangeScheme();
 afx_msg void OnCbnSelchangeModule();
 int m_Location;
    CString m_Text;
 std::map <INT, PSSN_PLUGIN_ENTRY> m_mapPlugin;
 afx_msg void OnChangeText();
};

 

HotkeyScheme.cpp

 

#include "StdAfx.h"
#include "HotkeyScheme.h"
#include "CoreUI.h"
#include "afxdialogex.h"
#include "Windowsx.h"

using namespace std;

CHotkeyScheme *g_pHotkeyScheme = NULL;

IMPLEMENT_DYNAMIC(CHotkeyScheme, CDialogEx)

 CHotkeyScheme::CHotkeyScheme(CWnd* pParent /*=NULL*/)
 : CDialogEx(CHotkeyScheme::IDD, pParent)
{
#ifndef _WIN32_WCE
 EnableActiveAccessibility();
#endif
 m_Location=0;
}

CHotkeyScheme::~CHotkeyScheme()
{
 for(int k=0;k<m_vSave.size();k++)
 { 
  delete m_vSave[k];
 }
 m_vSave.clear();
}

void CHotkeyScheme::DoDataExchange(CDataExchange* pDX)
{
 CDialogEx::DoDataExchange(pDX);
 DDX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值