55_子类化和DDX

作业讲解

按键重写虚函数PreTranslateMessage

DDX

  • SDK的控件使用方式还是能在MFC上使用
    • MFC获取窗口的窗口句柄:GetSafeHwnd,设置文本SDK,SetDlgItemText

    • 设置文本WM_SETTEX与SendMessage

    • SetWindowText

  • MFC控件API设置文本
    • SetDlgItemText(控件ID,字符串)

    • GetDlgItem(控件ID),返回值为CWnd*

    • FromHandle(SetDlgItemText(控件ID,字符串)),转换m_hWnd为CWnd*

  • 作用:简化MFC控件和SDK控件的使用方式
  • 原理:把文本框的内容绑定一个成员变量上

  • 使用
    • 设置

类向导成员变量选择文本框添加变量或者双击在控件变量类别选择Value选择变量类型为Cstring双击使用类对象等于字符串->添加完之后

UpdateData(FALSE):将程序中改变的变量的值更新至控件中去

UpdateData(TRUE):将控件中输入的值更新到变量中

    • 获取

UpdateDate(TRUE)//检索数据CString csFmtcsFmt.format

    • UpdateDate核心是封装了API

MFC CString类

  • Left取左边的字符串
  • Mid取中间的字符串
  • Right取右边的字符串
  • ReverseFind反向查找
  • Format格式化字符串
  • GetBufferSetLength 申请内存。通过LPTSTR接受,再memcpy拷贝字符串过去
  • ReleaseBuffer 添加’\0’

子类化

  • 原因

MFC封装的控件不能满足需求,例如文本框只能输入组合数字和大写组合

  • 想法
    • SDK

替换指定窗口的窗口过程函数:SetWindowsLong

参数一:想要替换的窗口句柄,参数二:想要替换的窗口东西,参数三:替换后的东西

返回值:替换前窗口的东西

  • MFC

对话框里新建类CMyEdit继承CEdit。绑定变量,类别控件,类型CEDIT。文本类实现WM_CHAR

动态创建控件

  • CEdit::Create(风格,位置,父窗口,ID)
    • 使用堆
  • CWnd::ShowWindow(SW_SHOW)

CFile类

  • Open
  • Read
  • Close

作业

登录窗口,MFC版

https://github.com/xkkhh/Cracking/tree/master/02MFCLogin

0 条评论
发表一条评论