int a, b, c,x,y,y1,x1,x2;
CString str,str1,str2;
CString astr;
CClientDC dc(this);
 CRect   rectClient;
 GetClientRect(rectClient);
 CBitmap bmp;
 GetWindowRect(&rectClient);
 bmp.LoadBitmapW(IDB_BITMAP_BACKGROUND);//IDB_BITMAP_BACKGROUND为背景图片
 bmp.CreateCompatibleBitmap(&dc,GetSystemMetrics(SM_CXSCREEN)*2,GetSystemMetrics(SM_CYSCREEN)*2);
 CDC dcBmp;
 dcBmp.CreateCompatibleDC(&dc);
     CBitmap* pOldBmp = dcBmp.SelectObject(&bmp);
 TEXTMETRIC tm;
dcBmp.GetTextMetrics(&tm);    
 a = 255; b = 0; c = 0;
 dcBmp.SetTextColor(RGB(a, b, c)); 
 CFont font;
 VERIFY(font.CreatePointFont(400, _T("黑体"), &dcBmp));//创建字体 Arial格式 400为字高
 dcBmp.SelectObject(&font);  //选择该字体进入PDC
 dcBmp.SetTextAlign( TA_BASELINE | TA_CENTER ); 
 dcBmp.SetBkMode(TRANSPARENT);
 x=rectClient.Width()/2;
 y=rectClient.Height()*2/16;
 str=_T("谢谢");
 TCHAR * t = str.GetBuffer();
 dcBmp.TextOutW(x,y,t); 
    dc.BitBlt(0,0,GetSystemMetrics(SM_CXSCREEN)*2,GetSystemMetrics(SM_CYSCREEN)*2, &dcBmp, 0,0,SRCCOPY); //将位图画到客户区上
    dcBmp.SelectObject(pOldBmp);现在程序运行到 bmp.LoadBitmapW(IDB_BITMAP_BACKGROUND);之后再运行bmp.CreateCompatibleBitmap(&dc,GetSystemMetrics(SM_CXSCREEN)*2,GetSystemMetrics(SM_CYSCREEN)*2);就会报错“Debug Assertion Failed!" File:f:\ftm\vctools\vc7libs\ship\atlmfc\src\mfc\wingdi.cpp   Line:1157 这个问题都困扰我好几天了。麻烦哪位大侠帮小弟解决一下。在此先谢了。

解决方案 »

  1.   

    CBitmap bmp1;
    CPaintDC dc(this);
    CDC memdc;memdc.CreateCompatibleDC(&dc);
    bmp1.CreateCompatibleBitmap(&memdc,20,20);bmp1.CreateCompatibleBitmap(&memdc,20,20);这句放在dcBmp.CreateCompatibleDC(&dc);之后试试。
      

  2.   

    注意这时应为:bmp1.CreateCompatibleBitmap(&dcBmp,20,20);
      

  3.   

    你LoadBitmap以后怎么又CreateCompatibleBitmap呢?你这是在干什么?
    LoadBitmap以后,你的HBITMAP就不为NULL了,所以后面的CreateCompatibleBitmap就错了。
      

  4.   

    bmp1.CreateCompatibleBitmap(&memdc,20,20);这句放在dcBmp.CreateCompatibleDC(&dc);