CDateTimeUI

 

1、该控件继承了CLabelUI控件,该空间并无重写SetAttribute的函数。全部属性跟CLabelUI控件一样。

2、该控件又有CDateTimeWnd类的一个指针用来显示具体让你选择的时间,该类就是创建的是SysDateTimePick32的控件。

也许会疑惑,为什么Init函数里面的Create没有关于DateTimePick32的相关说明,但是却能创建出这样一个控件。主要要看CWindowWnd::Create函数,该函数的第一个判断语句在GetSuperClassName()获取到了CDateTimeWnd函数的字符串,因为不为空则调用对应的RegisterSuperclass进行注册DateTimePicker控件。

这是RegisterSuperClass函数的获取对应DateTimerPicker控件的Wndclassex   ::GetClassInfoEx(NULL, GetSuperClassName(), &wc)

3、该控件在被选中的时候就New一个CDateTimeWnd的实例,并显示。(见DoEvent)

4、CDatetimeWnd在失去焦点之后会自动销毁自身,并把时间设置给CDateTimeUI

    LRESULT CDateTimeWnd::OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam);
        if (m_pOwner->m_nDTUpdateFlag == DT_NONE)
        {
            ::SendMessage(m_hWnd, DTM_GETSYSTEMTIME, 0, (LPARAM)&m_pOwner->m_sysTime);
            m_pOwner->m_nDTUpdateFlag = DT_UPDATE;
            m_pOwner->UpdateText();
        }
        PostMessage(WM_CLOSE);
        return lRes;
    }
View Code

相关文章:

  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-11
  • 2022-01-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-01
  • 2022-12-23
  • 2021-06-13
相关资源
相似解决方案