tcpmp界面的问题

hansding4g 2007-12-11 09:59:44
在TCPMP的static LRESULT CALLBACK Proc(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)函数下面画的位图始终被别的窗口给盖住,哪位知道是什么原因吗?谢谢!
case WM_PAINT:
hdc=BeginPaint(p->Win.Wnd,&Paint);
p->Module = ((CREATESTRUCT*)lParam)->hInstance;
GetClientRect(p->Wnd,&rect); hdc=GetDC(p->Wnd);
hdcmem=CreateCompatibleDC(hdc);
hbitmap=LoadBitmap(p->Module ,MAKEINTRESOURCE(IDB_BACKGROUND));
hbitmapOld=(HBITMAP)SelectObject(hdcmem,hbitmap);
GetObject(MAKEINTRESOURCE(IDB_BACKGROUND),sizeof(HBITMAP),hbitmap);
BitBlt (hdc,0,0,rect.right,rect.bottom,hdcmem,0,0,SRCCOPY);
DeleteObject(hbitmap);
DeleteDC(hdcmem);
ReleaseDC(p->Wnd,hdc);
DeleteDC(hdc);
EndPaint(p->Wnd,&Paint);
break;
...全文
461 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hansding4g 2007-12-12
  • 打赏
  • 举报
回复
我的原意是先把一副位图作为背景放在主窗口上,然后在主窗口上面再放一个子窗口作为播放的区域来进行视频文件的播放,我在static LRESULT CALLBACK Proc(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)里面添加了一个消息处理case WM_PAINT:
hdc=BeginPaint(p-> Win.Wnd,&Paint);
p-> Module = ((CREATESTRUCT*)lParam)-> hInstance;
GetClientRect(p-> Wnd,&rect); hdc=GetDC(p-> Wnd);
hdcmem=CreateCompatibleDC(hdc);
hbitmap=LoadBitmap(p-> Module ,MAKEINTRESOURCE(IDB_BACKGROUND));
hbitmapOld=(HBITMAP)SelectObject(hdcmem,hbitmap);
GetObject(MAKEINTRESOURCE(IDB_BACKGROUND),sizeof(HBITMAP),hbitmap);
BitBlt (hdc,0,0,rect.right,rect.bottom,hdcmem,0,0,SRCCOPY);
DeleteObject(hbitmap);
DeleteDC(hdcmem);
ReleaseDC(p-> Wnd,hdc);
DeleteDC(hdc);
EndPaint(p-> Wnd,&Paint);
break;
然后在static bool_t Proc(intface* p, int Msg, uint32_t wParam, uint32_t lParam, int* Result)里面去画case WM_PAINT:
BeginPaint(p->Win.Wnd,&Paint);
if (p->Skin[p->SkinNo].Valid)
SkinDraw(&p->Skin[p->SkinNo],Paint.hdc,&p->SkinArea);
p->Player->Paint(p->Player,Paint.hdc,p->Offset.x,p->Offset.y);
EndPaint(p->Win.Wnd,&Paint);
break;导致播放的窗口被盖住,看不到此窗口,我想应该是sealightyin 说的那样应该设置窗口显示的优先级别,我试一下!
hansding4g 2007-12-12
  • 打赏
  • 举报
回复
我是想修改TCPMP的界面,可放的背景老是被窗口给盖住,谢谢以上各位,我会考虑以上各位的建议再试一下!
bobor8 2007-12-12
  • 打赏
  • 举报
回复
TCPMP源代码:
http://www.wincehome.com/forum/viewthread.php?tid=149&extra=page%3D1
载舟之水 2007-12-11
  • 打赏
  • 举报
回复
那个代码不复杂,你要仔细看懂再改。
dthxman 2007-12-11
  • 打赏
  • 举报
回复
当然被盖住了,PAINT只是初始化的时候调用一次,以后基本就不会调用了,除非程序中专门调用,你要去该INTERFACE那个关于界面的动态库,TCPMP是高手写的,对组件的调用出神入化,好好研究吧。
sealightyin 2007-12-11
  • 打赏
  • 举报
回复
其实tcpmp绘电影的视图最基本的是getdc(NULL),往这个上面画。当然要看你的机器配置他会优化看什么样的绘图方式适合你的平台,编译出来的就不一样咯,呵呵,你可以对common进行改动,达到自己的目的
dthxman 2007-12-11
  • 打赏
  • 举报
回复
方法不错,可惜是表面的,你会看到界面一闪一闪的,这就是反复刷屏的结果。
sealightyin 2007-12-11
  • 打赏
  • 举报
回复
来给你回答一个实际的,你的这段代码是在interface下的吧?
首先里面没有实际进行影片绘图的地方,不用找了。
噢,你说的是界面问题哈
如果你问为什么都被别的窗口覆盖了,有一个方法就是使用setwindowpos把它的Z-order调高,然后setfocus(hwnd),就好了。
有什么知识我们可以交流 sealightyin@126.com

19,498

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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