问题描述
- 一个在MFC对话框程序的PICTRUE控件中绘图的问题
- 本人目前正在做一个小程序,用于在数据库中读取某个字段,然后根据读取的结果在Pictrue控件中进行绘图(由一个按钮按下的事件驱动)。
原理为这般:
bool型变量m_bIsDraw (默认为false) 用于判断是否为首次程序,如果是第一次打开则执行在OnPaint()函数中drawCircle(void)函数(用于生成直角坐标系和圆形的底图),然后将m_bIsDraw置为true,按键按下的函数中调用void CfindHistoryDlg::drawHistroy(void)(用于读取字段,并生成图形)代码如下:
void CfindHistoryDlg::drawHistroy(void)
{
_variant_t timevarWD;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()
adOpenDynamicadLockReadOnlyadCmdText); //读取数据库
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 (dWD220);cpTemp = this->drawPosition(dZnw);
pDC->SetPixelV(cpTempRGB(25500)); //描点
}
}
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() 函数,但没有任何反应,不知道怎么回事,还请各位大大指正!!!!