MFC对话框OnInitDialog跟OnPaint函数之间还执行了什么函数

MFC对话框OnInitDialog和OnPaint函数之间还执行了什么函数?
在debug下总是出现assert failed, wingdi.cpp line336,是下面的代码
C/C++ code
int CDC::SetBkMode(int nBkMode)
{
    ASSERT(m_hDC != NULL);
    int nRetVal = 0;

    if (m_hDC != m_hAttribDC)
        nRetVal = ::SetBkMode(m_hDC, nBkMode);
    if (m_hAttribDC != NULL)
        nRetVal = ::SetBkMode(m_hAttribDC, nBkMode);
    return nRetVal;
}

就是ASSERT(m_hDC != NULL);
程序只在OnPaint中调用了SetBkMode,但是还没有执行到OnPaint就出现了assert failed的问题,
断点跑OnInitDialog没有问题,一出OnInitDialog,还没进入OnPaint出现assert failed,
OnInitDialog和OnPaint函数之间还执行了什么函数啊?

------解决方案--------------------
int CDC::SetBkMode(int nBkMode)
{
if(m_hDC==NULL || !m_hDC)//加这两句
return;//加这两句
ASSERT(m_hDC != NULL);
int nRetVal = 0;

if (m_hDC != m_hAttribDC)
nRetVal = ::SetBkMode(m_hDC, nBkMode);
if (m_hAttribDC != NULL)
nRetVal = ::SetBkMode(m_hAttribDC, nBkMode);
return nRetVal;
}

应该是对话框还没建立就调用这个函数了,MFC复杂,调用一个函数前可能会执行很多内部函数
------解决方案--------------------
OnPaint中调用了SetBkMode
有没有BeginPaint();
或CPaintDC dc;
------解决方案--------------------
这之间还有好多要处理啊,比如OnSize等等,但是感觉还是你OnPaint中的问题,你是不是调用错了,或者用的全局DC?

应该用

dc.SetBkMode(...);