我原来在主对话框的OnPaint函数里,调用了DisplayMyData();该函数具体代码如下:
void CmymfcDlg::DisplayMyData(void)
{
CPaintDC dc(this);
CDC* pDC = &dc; int res=StretchDIBits(pDC->GetSafeHdc(),0,0,int(IMAGE_WIDTH),int(IMAGE_HEIGHT),0,0,
IMAGE_WIDTH,IMAGE_HEIGHT,TheImage->imageData,(BITMAPINFO *)bmi,DIB_RGB_COLORS,SRCCOPY);
//更新窗口,重新绘制
RedrawWindow(NULL,NULL,RDW_INVALIDATE);
}
但是后来,到了自己新创建的对话框里,没有OnPaint函数,于是我就添加了一个OnPaint函数,把代码粘进去了。可是,到了子对话框,根本没有执行OnPaint函数,是怎么回事呀?
急请前辈指点呀,O(∩_∩)O谢谢~~
void CmymfcDlg::DisplayMyData(void)
{
CPaintDC dc(this);
CDC* pDC = &dc; int res=StretchDIBits(pDC->GetSafeHdc(),0,0,int(IMAGE_WIDTH),int(IMAGE_HEIGHT),0,0,
IMAGE_WIDTH,IMAGE_HEIGHT,TheImage->imageData,(BITMAPINFO *)bmi,DIB_RGB_COLORS,SRCCOPY);
//更新窗口,重新绘制
RedrawWindow(NULL,NULL,RDW_INVALIDATE);
}
但是后来,到了自己新创建的对话框里,没有OnPaint函数,于是我就添加了一个OnPaint函数,把代码粘进去了。可是,到了子对话框,根本没有执行OnPaint函数,是怎么回事呀?
急请前辈指点呀,O(∩_∩)O谢谢~~
...
ON_WM_PAINT()
...
END_MESSAGE_MAP()
afx_msg void OnPaint(...).cpp文件
BEGIN_MSG_MAP(..)
WM_PAINT()
END_MSG_MAP()void OnPaint()
{
}
对于消息处理函数必须自己做相应的消息映射,当然如果OnPaint正好是个虚函数的话那你的编写就没有问题,比如添加OnToolHitTest
{
CPaintDC dc(this);//除了OnPaint里不要用这个,或者从OnPaint传过来(改void)
CDC* pDC = &dc;//要使用GetDC
//进一步理解CPaintDC和GetDC来的dc有什么不同
BEGIN_MSG_MAP();
WM_PAINT();
END_MSG_MAP();void OnPaint()
{
}