写了这样几句程序:
BOOL Cceshi::OnInitDialog()
{
CDialog::OnInitDialog();
pWnd = GetDlgItem(IDC_MYSTATIC);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Cceshi::OnButton1()
{
OnPaint();
}void Cceshi::OnPaint()
{
CDC *pDC = pWnd->GetDC();
pDC->Rectangle(0, 0, 380, 390);
pDC ->MoveTo(20, 20);
pDC ->LineTo(20, 360);
}
其他的只在对话框头文件里定义了个CWnd *pWnd;
IDC_MYSTATIC是个Stativ Text,我想按下OnButton1画图,可是一点OnButton1程序就崩溃;
求解,谢谢
BOOL Cceshi::OnInitDialog()
{
CDialog::OnInitDialog();
pWnd = GetDlgItem(IDC_MYSTATIC);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Cceshi::OnButton1()
{
OnPaint();
}void Cceshi::OnPaint()
{
CDC *pDC = pWnd->GetDC();
pDC->Rectangle(0, 0, 380, 390);
pDC ->MoveTo(20, 20);
pDC ->LineTo(20, 360);
}
其他的只在对话框头文件里定义了个CWnd *pWnd;
IDC_MYSTATIC是个Stativ Text,我想按下OnButton1画图,可是一点OnButton1程序就崩溃;
求解,谢谢
还有就是你的static text要足够的大,已够画图用.实现代码如下:
void Cceshi::OnPaint()
{
CDC *pDC = pWnd->GetDC();
pDC->Rectangle(0,0,380,390);
pDC->MoveTo(20,20);
pDC->LineTo(20,360);
CDialog::OnPaint();
}
呵呵,如果成功了,记得给分哦....
试试如下代码:
BOOL logic = FALSE;//声明一个全局变量
//画图
void CTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中
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; // 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
if (logic == TRUE)
{
CStatic* pstatic = (CStatic*)GetDlgItem(IDC_STATIC1);
CDC* pdc = pstatic->GetDC();
pdc->Rectangle(0, 0, 380, 390);
pdc ->MoveTo(0, 0);
pdc ->LineTo(320, 360);
}
//CDialog::OnPaint();//把它注释掉
}
}
//按钮响应
void CTestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
logic = TRUE;
Invalidate();
}
有自动生成的代码, 不应该删除.