我的一个界面,由一个formview和一个scrollview组成,formview中含有static text控件
当在scrollview中onlbuttondown是改变了doc中的一个标志位,并改变doc中的记录point坐标的变量,于是按理说应该在formview的静态文字中显示相关数值,
于是乎,我在formview的onupdate中加入
if(pDoc->mbmoused)
{
csPointx.Format("pDoc->pt.x");
csPointy.Format("pDoc->pt.y");
}但是程序运行起来后并没有达到我的效果,可是我的cview的onlbuttondown中看,确实mbmouse已经变成true了啊我知道,系统肯定没问题,肯定是我更新的地方不对,那么我应该在哪里更新显示呢?
不要说updatedata(0),试过了,不行
请大家来找找茬,高手给详细讲讲
当在scrollview中onlbuttondown是改变了doc中的一个标志位,并改变doc中的记录point坐标的变量,于是按理说应该在formview的静态文字中显示相关数值,
于是乎,我在formview的onupdate中加入
if(pDoc->mbmoused)
{
csPointx.Format("pDoc->pt.x");
csPointy.Format("pDoc->pt.y");
}但是程序运行起来后并没有达到我的效果,可是我的cview的onlbuttondown中看,确实mbmouse已经变成true了啊我知道,系统肯定没问题,肯定是我更新的地方不对,那么我应该在哪里更新显示呢?
不要说updatedata(0),试过了,不行
请大家来找找茬,高手给详细讲讲
m_TextX.Format("pDoc->pt.x=%d",pDoc->pt.x);
UpateData(FALSE);
{
csPointx.Format("pDoc->pt.x");
csPointy.Format("pDoc->pt.y");
updatedata(0);
} 如果还不行的话, 直接修改static text控件的值
GetDlgItem(staticID)->SetWindowText(csPointx + csPointy)
这是什么?如果你想显示pDoc->pt.x,这可不是C++支持的格式化方式,你应该用csPointx.Format(_T("%d"), pDoc->pt.x);
应该放在什么函数里面呢?
这个formview和普通view还是很不同,没有什么ondraw等等
问题很诡异哦
呵呵,多谢指点
void CCV_ExplorerView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CvPoint cp1 = cvPoint(0,0);
if (iSelRect == 1)
{
GetDocument()->m_bLMouse = TRUE;
//********************************************************注释掉
return;
}
CScrollView::OnLButtonDown(nFlags, point);
}
以上在另外一个普通view中button设置doc的标志位在formview中
void CPlatformView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/)
{
// TODO: 在此添加专用代码和/或调用基类
CCV_ExplorerDoc* pDoc = (CCV_ExplorerDoc*)GetDocument();
if (pDoc->GetImageStatus())
{
csWidth.Format("%d",pDoc->GetImageSize().cx);
csHeight.Format("%d", pDoc->GetImageSize().cy);
csMPTX.Format("%d",pDoc->m_ptMouse.x);
if (pDoc->m_bLMouse)
{
csMPTY.Format("%d",pDoc->m_ptMouse.y);
}
UpdateData(0);
错在哪里呢
你调用UpdateData(FALSE)的话会重新走一遍DDX,在DoDataExchange那里设断点单步调试看看。