画在桌面的问题

puhuofeie 2004-07-22 02:32:31
用Windows API(不用MFC)从硬盘上加载一个位图文件,然后把它画到桌面上,并且覆盖桌面,包括任务栏,该怎么实现?最好有代码。
...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
酒红绿叶 2004-07-23
  • 打赏
  • 举报
回复
怎样恢复成原来得墙纸那!!
zhucde 2004-07-22
  • 打赏
  • 举报
回复
不和创建一个TopMost窗口.

将上句的:

HDC dc = ::GetDC(m_hWnd);

改为HDC dc = ::GetDC(NULL);
直接获得屏幕DC,
然后绘制在DC上即可.
使得图片够大,足够覆盖,
当然,这样的话,你得不停的来绘制,
防止它被擦除.

另一种方法就是:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"C:\\aa.BMP",WM_WININICHANGE);
设置一个墙纸,
然后把桌面隐藏掉
lanstar200 2004-07-22
  • 打赏
  • 举报
回复
在OnInitDialog中

int nScreenWidth = GetSystemMetrics( SM_CXSCREEN);
int nScreenheight = GetSystemMetrics( SM_CYSCREEN);

MoveWindow( 0 , 0 ,nScreenWidth , nScreenheight , TRUE);
將窗口設置成屏幕大小
lanstar200 2004-07-22
  • 打赏
  • 举报
回复
自己創建一個TOPMOST窗口
然後再OnPaint()中

HDC dc = ::GetDC(m_hWnd);
HDC dcMem;
dcMem = ::CreateCompatibleDC(dc);
HBITMAP hBitmap = (HBITMAP) ::LoadImage( NULL , "C:\\2.bmp" , IMAGE_BITMAP ,
0 , 0 ,LR_LOADFROMFILE );
HBITMAP hOldBm = (HBITMAP)::SelectObject(dcMem , hBitmap);
CRect rt;
BITMAP bm;
::GetObject( hBitmap , sizeof(BITMAP) , &bm);
GetClientRect(&rt);
::SetStretchBltMode(dc , COLORONCOLOR);
StretchBlt( dc , 0 , 0 , rt.Width() , rt.Height() , dcMem , 0 , 0 , bm.bmWidth , bm.bmHeight , SRCCOPY);
::DeleteDC(dcMem);
DeleteObject(hBitmap);
::ReleaseDC( m_hWnd , dc);

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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