解决方案 »
- CStatusBarEx继承CStatusBar后,重载OnMouseMove等鼠标事件,目的是模拟右下角的Gripper改变窗口大小效果,但改变不了。贴代码。
- 寻找P2P高手
- 我用exe调用dll出现异常,请大家帮帮忙?
- 什么是句柄啊?为什么5/2=2呢?
- 如何在VC中用ADO调用SQL SERVER中的存储过程?
- 关于数据库的设计问题,数据库的高手请进!!!!
- 求教高手~请问哪位可以解释下glMultMatrix()
- CFileDialog另存为对话框不显示?
- 如何给SE_SHUTDOWN_NAME 设置privilege
- MFC 对话框添加背景以后编辑框受到影响
- 怎样用按要求遍历文件夹下的文件
- 滚动视图问题。
OnPaint()
CDC *pDC =GetDC();
CBrush brushColor(RGB(255,255,0));//填充的颜色
CPen penColor;
penColor.CreatePen(PS_SOLID,1,RGB(0,64,128));//边框颜色
pDC->SelectObject(penColor);
pDC->SelectObject(brushColor);
OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
CPoint p(b.x,b.y);
myEllipse(pDC,p,r);
brushColor.DeleteObject();
penColor.DeleteObject();
ReleaseDC(pDC);
myEllipse(pDC,p,r);void myEllipse(CDC *dc, POINT ptCenter, UINT uRadius)
{
POINT ptLeftTop, ptRightBottom;
ptLeftTop.x = ptCenter.x - uRadius;
ptLeftTop.y = ptCenter.y - uRadius;
ptRightBottom.x = ptCenter.x + uRadius;
ptRightBottom.y = ptCenter.y + uRadius;
Ellipse(*dc, ptLeftTop.x, ptLeftTop.y,
ptRightBottom.x, ptRightBottom.y);
}void CDRAWDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
switch(nChar)
{
case VK_LEFT://按下左键
b.x=b.x-10;
UpdateWindow();
break;
case VK_RIGHT://按下右键
b.x=b.x+10;
UpdateWindow();
break;
case VK_UP://按下上键
b.y=b.y+10;
UpdateWindow();
break;
case VK_DOWN:// 按下下键
b.y=b.y-10;
UpdateWindow();
break;
default:
break;
}
}
void CCMoveBallView::OnDraw(CDC* pDC)
{
CCMoveBallDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CBrush bush(RGB(255,0,0));
pDC->SelectObject(bush);
CPen pen(PS_SOLID,2,RGB(255,0,0));
pDC->SelectObject(pen);
pDC->Ellipse(CRect(nPosX,nPosY,nPosX+20,nPosY+20));
}void CCMoveBallView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch(nChar)
{
case VK_UP:
nPosY -=10;
break;
case VK_DOWN:
nPosY +=10;
break;
case VK_LEFT:
nPosX -=10;
break;
case VK_RIGHT:
nPosX +=10;
break;
}
this->Invalidate(); CView::OnKeyDown(nChar, nRepCnt, nFlags);
}这个是在当文档中实现的你可以参考!!