在mfc中基于对话框的static控件范围内绘制直线,为什么没反应呢,我是在OnTimer()函数中激活OnPaint() 的

急!!请求帮助.代码如下:(x1[],y1[]存放的是直线各点的坐标voidCMyDlg::OnPaint(){if(IsIconic()){CPaintDCdc(thi... 急!!请求帮助.代码如下:(x1[],y1[]存放的是直线各点的坐标
void CMyDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
//CDialog::OnPaint();
CRect rect;
GetDlgItem(IDC_STATIC)->GetClientRect(rect); //获取控件相对于对话框的位置
CPaintDC dc(GetDlgItem(IDC_STATIC));
dc.MoveTo(rect.right/2,rect.bottom/2);
for(int i=0;i<count;i++)
dc.LineTo(rect.right/2+x1[count],rect.bottom/2-y1[count]);
}
}
展开
 我来答
weiyinwu
2012-02-10 · TA获得超过1540个赞
知道小有建树答主
回答量:1057
采纳率:50%
帮助的人:1136万
展开全部
在Static中绘图还是使用自绘的Static类比较好,在自绘的类中可以响应OnPaint消息进行绘图。
另外IDC_STATIC是个通用ID。所有的static控件默认都是这个ID,你要使用不同的ID来以示区别。
另:在父窗口下直接在子窗口中作图,不知道能不能绘得起来,没有测试过,你试着改一下ID看看。
更多追问追答
追问
ID确实有问题,可改了之后还是不行,网上说在对话框下面的控件里画图应该是可以的吧,请问你说的自绘的Static类指的是什么
追答
自己添加一个类,它的基类是CStatic。
如 calss CMyStatic : public CStatic
{
}
然后更改IDC_STATIC的ID,并在它的属性中钩选NOTIFY,再关联一个类型为你改了的类名的变量。那么这个Static就可以自绘了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式