你有QQ号吗,我在QQ里可以给你点建议!

解决方案 »

  1.   

    我再跟你说说,简单的应用不需要两个层
    一个HDC上画两次就可以了第一次描绘是画abc.bmp背景第二次 SetBkMode(hdc,TRANSPARENT);一下就可以在原来的背景图上写字。void Desktop()
    {
        HWND hDesk=::GetDesktopWindow();    //得到桌面窗口句柄
        TCHAR str[60]="背景上的文字?需要变化再捎加处理";
        HDC hdc = ::GetWindowDC(hDesk); 
        HFONT font= ::CreateFont(34, 24,  0,  0,  FW_BOLD,  FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,  CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,  FF_DECORATIVE, "黑体" );
        SelectObject(hdc,    font );
        HBITMAP hbitmap;
       HDC fromdc;
       hbitmap=(HBITMAP)LoadImage(GetModuleHandle(NULL),"abc.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE |LR_CREATEDIBSECTION );
    fromdc=CreateCompatibleDC(NULL);
    SelectObject(fromdc,hbitmap);
    StretchBlt(hdc,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),fromdc,0,0,520/*这个你自己确定*/,316,SRCCOPY);    SetBkMode(hdc,TRANSPARENT);
        SetTextColor(hdc,RGB(255,0,0));
        TextOut(hdc,10,10,str,strlen(str));
        DeleteObject(hbitmap);
    DeleteDC(fromdc);
    }
    上面函数就全屏幕显示一个图片,在上面写上字了
    道理就是这样。不需要两个层。
      

  2.   

    上面只是一个演示,具体的需要你修改一下啊
    没必要一定要在桌面上画图(画桌面、、、好象是在捣乱、、、:)
    你把桌面的HDC换成自己的窗口的HDC
    可以自己Create一个windows,到时候把自己的窗口以及hdc销毁就可以了
      

  3.   

    111222,你好,这是程序需要的,请看
    http://www.csdn.net/expert/topic/96/96772.shtm