我创建了一个CFormView类上面覆盖了一个TabCtrl控件,然后在TabCtrl的第一页里面覆盖了CGridCtrl控件,后面三个都是View视图,其中第二页的视图和第三页的视图里面画了曲线图,在这两个页面里面有左键点击功能,功能是实现:通过计算点击的坐标来获得点击了哪条曲线。可是不明白的是:为什么有时候的点击会造成错误!错误的表现:四个窗口都不能显示了,是一片灰色
解决方案 »
- 系统主题改变为window经典时,某些子对话框的背景色和控件背景色不同
- png图片显示半透明效果,要和背景图片做运算才行呀?//要是换个渐变颜色咋办呢?
- 关于mfc的一点小问题、新手、特别新的新手...
- 一个小型VC项目的开发总结,敬请大家指正。
- 图片旋转的函数,但我调用出错,函数如下:
- 如何给一个弹出对话框创建一个CFrameWnd呀?这个对话框是sdi程序中的一个弹出对话框.
- 文件系统的困惑!100分。
- 光盘的Autorun怎么制作?---请教高手
- 我用的VC编辑器是中文创天的,但是不论是在做MDI或但文档程序时通过向导做的,生成EXE文件时都有错,错误如下:
- 服务的困扰
- 内存不足
- 如何在对话框类中控制对话框的显示?向高手请教
void CWaveView::InitalMemDc()
{
CBrush brushBack, *oldBrush;
brushBack.CreateSolidBrush( m_crBackColor) ;
CRect rectClient;
GetClientRect(rectClient);
CClientDC dc(this);
//创建设备环境以及创建相应缓冲区
if ( m_MemDC.GetSafeHdc() != NULL )
{
if ( m_pOldBmp != NULL )
{
m_MemDC.SelectObject(m_pOldBmp);
}
m_MemDC.Detach();
m_MemDC.DeleteDC();
m_Bitmap.DeleteObject();
} if (m_MemDC.GetSafeHdc() == NULL)
{
m_MemDC.CreateCompatibleDC(&dc);
if(m_Bitmap.CreateCompatibleBitmap(&dc,rectClient.Width(), m_BitmapHeight) == NULL )
{
CString strTmp;
strTmp.Format("Error: %d, Wave:n=%d;", n_nnn);
AfxMessageBox(strTmp);
}
m_pOldBmp = m_MemDC.SelectObject(&m_Bitmap);
} //设置背景颜色
m_MemDC.SetBkColor( m_crBackColor);
rectClient.bottom = m_BitmapHeight; //填充背景色时背景的高度
m_MemDC.FillRect(rectClient,&brushBack);
brushBack.DeleteObject();}
void CWaveView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate(); InitalMemDc(); CRect rectClient;
GetClientRect(rectClient) ;
SetScrollSizes(MM_TEXT, CSize(rectClient.right,rectClient.bottom));
}
void CWaveView::OnPaint()
{
CPaintDC dc(this); // device context for painting
OnPrepareDC(&dc);
OnDraw(&dc);
CRect rectClient;
GetClientRect(rectClient) ;
if (m_MemDC.GetSafeHdc() != NULL)
{ dc.BitBlt(0, 0, rectClient.Width(), m_BitmapHeight,
&m_MemDC, 0, 0, SRCCOPY) ;
}
}在每次画图之前调用InitalMemDc();造成了位图资源泄漏,可是不知道怎么解决?我在InitalMemDc();里面已经删除过了可是还是不行。急求各路大侠啊,在线等