ZBLOG

帮我用中文注释一下这段代码,详细的 BEGIN_MESSAGE_MAP(CDESDlg, CDialog) //{{AFX_MSG_MAP(CDESDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_ERASEBKGND() ON_BN_CLICKED(IDC_ENCRYPT, OnEncrypt) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1...

以下是对这段代码的详细注释:

BEGIN_MESSAGE_MAP(CDESDlg, CDialog)
//{{AFX_MSG_MAP(CDESDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_ERASEBKGND()
ON_BN_CLICKED(IDC_ENCRYPT, OnEncrypt)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)
	ON_BN_CLICKED(IDC_DECRYPT, OnDecrypt)
	ON_BN_CLICKED(IDS_ABOUTBOX, OnAboutbox)
	ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
	ON_EN_CHANGE(IDC_EDIT2, OnChangeEdit2)
	ON_BN_CLICKED(IDC_HELPDES, OnHelpdes)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDESDlg message handlers

BOOL CDESDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	m_old="learning";
	m_key="computer";
	GetDlgItem(IDC_DECRYPT)->EnableWindow(false);
	UpdateData(false);
	// Add "About..." menu item to system menu.
	
	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
	
	// Set the icon for this dialog. The framework does this automatically
    // when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE); // Set big icon
	SetIcon(m_hIcon, FALSE); // Set small icon
	
	// TODO: Add extra initialization here
	CenterWindow(GetDesktopWindow());
	::SendMessage(m_listdata.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
		LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES,
		LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_listdata.InsertColumn(0,"NO.",LVCFMT_LEFT,30);
	m_listdata.InsertColumn(1,"L0",LVCFMT_LEFT,40);
	m_listdata.InsertColumn(2,"R0",LVCFMT_LEFT,40);
	m_listdata.InsertColumn(3,"F函数值",LVCFMT_LEFT,60);
	m_listdata.InsertColumn(4,"密钥Ki",LVCFMT_LEFT,50);
	m_listdata.InsertColumn(5,"S盒",LVCFMT_LEFT,45);
	return TRUE; // return TRUE unless you set the focus to a control
}

void CDESDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CDESDlg::OnPaint() 
{
	if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting

        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
        CClientDC dc(this);
        SetBkMode(dc.m_hDC, TRANSPARENT);
    }
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CDESDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

这段代码是一个对话框类 CDESDlg 的消息处理函数。BEGIN_MESSAGE_MAP 定义了消息映射表,用于将窗口消息与具体的处理函数关联起来。接下来是一系列宏定义,每个宏定义表示一个消息处理函数。例如 ON_WM_PAINT() 表示当窗口需要重新绘制时调用 OnPaint() 函数。

CDESDlg::OnInitDialog() 函数中进行初始化操作,包括设置初始数值、禁用按钮、添加菜单项等。

其他函数如 OnSysCommand(UINT nID, LPARAM lParam) 处理系统命令、OnPaint() 绘制界面、OnQueryDragIcon() 获取拖动图标的光标等。

整体而言,这段代码是一个MFC框架下的对话框类,用于实现一些界面交互和功能逻辑。具体的功能实现需要查看其他函数定义和该对话框类的上下文。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10500

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?