2 iyxiajun iyxiajun 于 2014.01.16 16:25 提问

一个在MFC对话框程序的PICTRUE控件中绘图的问题

本人目前正在做一个小程序,用于在数据库中读取某个字段,然后根据读取的结果在Pictrue控件中进行绘图(由一个按钮按下的事件驱动)。
原理为这般:
bool型变量m_bIsDraw (默认为false) 用于判断是否为首次程序,如果是第一次打开则执行在OnPaint()函数中drawCircle(void)函数(用于生成直角坐标系和圆形的底图),然后将m_bIsDraw置为true,按键按下的函数中调用void CfindHistoryDlg::drawHistroy(void)(用于读取字段,并生成图形)代码如下:
void CfindHistoryDlg::drawHistroy(void)
{
_variant_t time,varWD;

double dWD;

CPoint cpTemp;
CRect rect;
CWnd* pWnd = GetDlgItem(IDC_STATIC_PICTURE);
pWnd->GetClientRect(&rect);
CDC* pDC = pWnd->GetDC();

this->m_pRecordset.CreateInstance(_uuidof(Recordset));
try{
m_pRecordset->Open("SELECT * FROM aa",
this->m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockReadOnly,adCmdText); //读取数据库
if(!(m_pRecordset->BOF && m_pRecordset->adoEOF)){ //是否为空表
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF){
time = m_pRecordset->GetCollect("时间");
if( this->varToString(time) != "0"){ //时间字段不为0
if((m_pRecordset->GetCollect("温度")).vt != VT_NULL){
dWD = (double)m_pRecordset->GetCollect("温度");
//以下的两步用于计算数值在坐标中的位置
dWD = this->calcDistance (dWD,220);

cpTemp = this->drawPosition(dZnw);
pDC->SetPixelV(cpTemp,RGB(255,0,0)); //描点
}
}
m_pRecordset->MoveNext();
}

    else{
        AfxMessageBox(L"数据表为空!");
    }
}
catch(_com_error *e){
    AfxMessageBox(e->ErrorMessage());
}
m_pRecordset->Close();
m_pRecordset = NULL;
this->ReleaseDC(pDC);

}
将其放在OnPaint()的 m_bIsDraw == true 分支
在按钮事件中将 m_bIsDraw 置为true 并调用OnPaint() 函数,但没有任何反应,不知道怎么回事,还请各位大大指正!!!!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC基于对话框的用Picture Control显示OpenGL
一、总体思路 在MFC对话框上搭建OpenGL渲染环境的流程图 2.图形操作描述在Windows下窗口程序必须首先处理设备描述表(Device Contexts,DC),DC包括许多如何在窗口上显示图形的信息,既指定画笔和刷子的颜色,设置绘图模式、调色板、映射模式以及其它图形属性。同样,OpenGL for Windows95的程序也必须使用DC,这与其它Windows 95程序类似。但是,Open
MFC中,怎样在一个特定的控件里画图
新建了一个基于对话框或基于CFormView的应用程序, 拖入了一个长方形的Picture类型控件,控件的ID为IDC_PIC1,type为Frame,(Type还有Rectange、BitMap等类型) Sunken、Border为选中状态, 现在想在该控件中画图, 实现方法为,在OnDraw函数中加入以下代码: CRect rect; CWnd *pWin = GetDlgIt
MFC对话框的picture控件中显示IplImage*格式图像
1、在MFC对话框界面添加一个picture控件,设置好ID; 2、在C**Dlg类上右键选择添加函数,ShowImage(IplImage *img, UINT ID); 3、添加好函数后C**Dlg.cpp文件里会生成ShowImage(IplImage *img, UINT ID)函数,在里面编写实现代码; ShowImage(IplImage *img, UINT ID) { CDC
MFC 学习之 模态对话框图片控件上作图
首先说明一点,onpaint 是更新面板用的,作图的话应在控件上进行。 新建 MFC 对话框工程,面板上添加按钮 IDC_START , IDC_SHOW , IDC_STOP 添加两个对话框,ID 分别设为(简写)ld 和 cd。 ld 上添加三个图片控件,并且每一个均关联一个 CSTATIC 型变量。 cd 上添加一个图片控件,操作如上。 分别为两个对话框添加类,名称自己设,我的是
MFC对话框画图
实现功能: 1、在对话框上的一块区域绘制彩色线条。 2、窗口被覆盖后恢复时,图像自动重绘。 3、改变按钮颜色。 操作: 根据向导建立一个对话框程序。在资源中添加一个静态文本框,其ID为IDC_STATIC。 在DialogXXXDlg.h 中加入如下内容       CBrush m_brush;//用于自定义颜色     CDC m_memDC;//屏
在VS2010里MFC对话框中使用OpenGL绘图,添加的控件不显示的一种解决方法
当我想在MFC对话框里一部分显示OpenGL图形,一部分显示滚动条和一些按钮等控件的时候,图形可以显示,但是控件不显示,网上很多人说是修改对话框的ClipChildren属性,我没搞明白,试了一下没有成功。         控件不可见的原因,可能是OpenGL与MFC的GDI绘图不兼容。解决方法是创建一个新的对话框窗口,这个新窗口专门用于处理OpenGL的绘图,而原来的窗口用于显示控件。 将新
MFC基于对话框GDI+简单绘图
资源里面是一个工程。简单的使用GDI进行绘图(图片)。使用C++语言,基于mfc的对话框实现。
VC中在对话框上的static控件中绘图
在MFC对话框上的static控件中绘制图形,发现的一些问题与解决方法
MFC pictureControl 绘制直角坐标点
MFC图片控件绘制坐标
MFC图片控件PictrueControl用法
图片控件PictrueControl的调用主要分为两种:静态调用和动态调用。下面将详细讲述这两种调用方法。 一、静态调用方法 先期准备,创建一个HKTest2工程,一幅bmp位图(放在工程的res文件夹里面) 1.1在资源视图导入Bitmap图片, 如下图所示:   1.2修改pictrue控件属性对话框的【Type】改为Bitmap,【Image】改为IDB_BITMA