吵吵   2011-03-03  阅读:6,047

这个问题确实是一个恼人的问题,好不容易发现了animaitewindow这个函数,用这个api可以使我们的应用程序产生渐变的动画,挺漂亮的哦。可惜的是我的程序界面是自己用gdi画出来的,也就是处理了onpaint消息,在这个消息中绘画出我们的界面,这样子的话在我使用这个渐变动画的api的时候,发现画的图片什么都没有了,窗口变成了原来的灰色,足足花了我两个晚上搜索解决不了

这个问题,直到最后啊在一个英文网站上找到了解决方法。www.chaochaoblog.com

在原先搜索的结果中说要处理两个消息一个是WM_PRINT一个是WM_PRINTCLIENT。好吧那我就处理这两个消息,

在PreTranslateMessage(MSG* pMsg)中处理这个消息

if(pMsg->message==WM_PRINTCLIENT)
{
CDC *pDC=GetDC();

//然后用这个pDC进行绘图

}

结果就是发现还是灰色的窗口,累了半天白忙活。

在我把整个互联网快反过来的时候我在一个英文网站中终于找到了这个解决的问题。原来是处理这两个消息,关键的是不是post消息的时候你处理一下就好了,而是处理消息的参数wParam。汗!!!

添加类向导:

WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

加入代码

if(message == WM_PRINT || message == WM_PRINTCLIENT)
{

CDC dc;
dc.Attach((HDC)wParam);//这里dc实际上就变成了wParam这个指针指向的dc了

//用这个dc进行绘图就好了

} www.chaochaoblog.com

妈的,这个问题困扰了那么久,差点想自杀了,国内的环境真不行,这种问题都没有答案,以后学好英语上国外网站算了。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

一条回应:“vc窗口动画AnimateWindow函数导致背景图片不显示”

  1. 稻草刀刀说道:

    不行啊,一添加动画就不动了。。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注