vc的初学者,但是遇到了挫折,那些高手可不能袖手旁观阿!

tsinghua 2001-12-07 06:33:46
我是一个初学者!
我的问题是,我现在在编一个五子棋的游戏!
我现在遇到的问题是,
1:我的主对话框里绘制的图形!(也就是棋子阿),在被其他的窗口遮住以后,不能重绘
请问怎么办?
谢谢阿!
既然我是新手,请你说的详细一点阿!
好了,谢谢阿!
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zf925 2001-12-07
  • 打赏
  • 举报
回复
它能实现点击画点东西,希望对你有帮助
jxpjb 2001-12-07
  • 打赏
  • 举报
回复
不能把绘图代码写在鼠标单击的事件中,因为当其它的窗口遮隹以后,系统就会发出一条WM_PAINT 的消息,在MFC中,对应的处理函数是OnPaint(),你可以用一个数据记住此处有一个棋子,然后在OnPaint中根据数据决定是否画出棋子,当然,你必须在鼠标单击的事件处理中调用InvalidateRect()以便立即看到效果。 
zf925 2001-12-07
  • 打赏
  • 举报
回复
这是我的一个程序片段,自己参考吧
void CLedView::OnLButtonDown(UINT nFlags, CPoint point)
{
if(SelectFlag == false)
{
CClientDC *pDc = new CClientDC(this);
if(PastePoint == 0)
{
for(int k=0;k<3;k++)
{
for(int o=0;o<3;o++)
pDc->SetPixel(StartX+3+1+4*ObjectPoint.x+k,
StartY+3+1+4*ObjectPoint.y+o,
RGB(255,255,255));
}
}
}
ObjectPoint.x = (point.x-StartX-4)/4;
ObjectPoint.y = (point.y-StartY-4)/4;
PastePoint = screen[-CurrentlyX][ObjectPoint.x][ObjectPoint.y];
for(int k=0;k<3;k++)
{
for(int o=0;o<3;o++)
pDc->SetPixel(StartX+3+1+4*ObjectPoint.x+k,
StartY+3+1+4*ObjectPoint.y+o,
RGB(196,0,255));
}
OpritionScreen = -CurrentlyX;
}

CView::OnLButtonDown(nFlags, point);
}
tsinghua 2001-12-07
  • 打赏
  • 举报
回复
我是想在鼠标单击的时候画一个棋子,那该怎么处理阿?
cwanter 2001-12-07
  • 打赏
  • 举报
回复
如果用SDK的话就应该在窗口函数里写绘制代码,如果是用MFC+DRIECTDRAW的话就在BLT里写。
wyongyong 2001-12-07
  • 打赏
  • 举报
回复
你用的是:CCilentDC 吧,应该在重载ONPAINT消息,
wglacier 2001-12-07
  • 打赏
  • 举报
回复
估计你的绘图函数不是在OnPaint里,改一下吧

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧