可以得知近好修改漏洞后进入的case是:
case 3:
处理的第一条是 m_viewVulfix.ShowWindow(SW_SHOW);
m_viewVulfix是CBeikeSafeMainDlg中的成员:
// 修复漏洞页面里的view
CEmbeddedViewm_viewVulfix;
CEmbeddedView也CBeikeSafeMainDlg一样都是继承自CBkDialogViewImpl。
每个CBkDialogViewImpl的实例中都有三个成员,分别是m_bkHeader、m_bkBody和m_bkFooter,它们分别代表窗口的头部、中间和底部,
它们各自界面元素的加载是在 CBkDialogViewImpl::Load 。
它的类定义很简单:
class CEmbeddedView
: public CBkDialogViewImpl<CEmbeddedView>
, public CIconAnimate<CEmbeddedView>
{
public:
// 做漏洞扫描动作的类
CBeikeVulfixHandler m_viewSoftVul;
那么m_viewVulfix是在哪里创建的呢?
BOOL CBeikeSafeMainDlg::OnInitDialog(CWindow /*wndFocus*/, LPARAM /*lInitParam*/)
{
SetIcon(::LoadIcon((HMODULE)&__ImageBase, MAKEINTRESOURCE(IDI_BEIKESAFE)));
SetIcon(::LoadIcon((HMODULE)&__ImageBase, MAKEINTRESOURCE(IDI_SMALL)), FALSE);
_Module.SetActiveWindow(m_hWnd);
// 创建修复漏洞页面的view
InitVulFix();
它主要是加载界面元素,并创建list控件.
void CBeikeSafeMainDlg::InitVulFix()
{
// 创建 m_viewVulfix 窗口
m_viewVulfix.Create(GetViewHWND(), NULL, WS_CHILD|WS_CLIPCHILDREN, 0, 3000);
// 从 dlg_vul_main.xml 文件中加载控件
ATLVERIFY( m_viewVulfix.Load( IDR_BK_VULDLG_MAIN ) );
// 设置修复漏洞处理逻辑类m_viewSoftVul的父窗口
m_viewVulfix.m_viewSoftVul.SetMainDlg( this );
// 创建列名为:严重程序、补丁名称、补丁描述、发面日期、状态的列表控件
m_viewVulfix.Init(m_hWnd);
}
(2) dlg_vul_main.xml文件分析
主要分为两大部分:
扫描或修复状态、扫描结果.
从XML文件中可以看到 扫描中与repairing是同一块,暂时把repairing隐藏起来。

repairing有五个部分:

扫描结果显示的效果图是:

在 case 3:的处理中显示完界面后主要就是调用扫描漏洞的工作:
if(toRescan)
m_viewVulfix.m_viewSoftVul.InitEnv();
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-38143-2.html
并且会继续支持
我做天猫两年亏了几十万