首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

HDC(设备上下文)有关问题

2012-04-22 
HDC(设备上下文)问题C/C++ codeBeginPaint(hwnd,&ps)hdc GetDC(hwnd)LineTo(hdc,10,300)bgHdc Crea

HDC(设备上下文)问题

C/C++ code
BeginPaint(hwnd,&ps);        hdc = GetDC(hwnd);        LineTo(hdc,10,300);        bgHdc = CreateCompatibleDC(NULL);        //bgHmap = (HBITMAP)LoadImage(_hInstance,"C:\\test.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR|LR_LOADFROMFILE);          bgHmap = CreateBitmap(800,600,2,1,NULL);        LineTo(bgHdc,x,y);        SelectObject(bgHdc,   bgHmap);                 LineTo(bgHdc,300,100);        LineTo(bgHdc,100,100);        LineTo(bgHdc,200,100);        LineTo(bgHdc,400,100);        LineTo(bgHdc,500,100);        LineTo(bgHdc,100,200);        LineTo(bgHdc,300,100);        LineTo(bgHdc,100,500);                EndPaint (hwnd, &ps) ;        BitBlt(hdc,0,0,600,400,bgHdc,0,0,SRCCOPY);        DeleteDC(hdc);        DeleteDC(bgHdc);        DeleteObject(bgHmap);

这样不行
C/C++ code
BeginPaint(hwnd,&ps);        hdc = GetDC(hwnd);        LineTo(hdc,10,300);        bgHdc = CreateCompatibleDC(NULL);        bgHmap = (HBITMAP)LoadImage(_hInstance,"C:\\test.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR|LR_LOADFROMFILE);          //bgHmap = CreateBitmap(800,600,2,1,NULL);        LineTo(bgHdc,x,y);        SelectObject(bgHdc,   bgHmap);                 LineTo(bgHdc,300,100);        LineTo(bgHdc,100,100);        LineTo(bgHdc,200,100);        LineTo(bgHdc,400,100);        LineTo(bgHdc,500,100);        LineTo(bgHdc,100,200);        LineTo(bgHdc,300,100);        LineTo(bgHdc,100,500);                EndPaint (hwnd, &ps) ;        BitBlt(hdc,0,0,600,400,bgHdc,0,0,SRCCOPY);        DeleteDC(hdc);        DeleteDC(bgHdc);        DeleteObject(bgHmap);

这样就可以,为什么载入一张图片在画就可以?难道是没有分配内存空间?

[解决办法]
EndPaint (hwnd, &ps) ;
这里都已经将hdc释放了,你怎么可能用呢
[解决办法]
看下CreateBitmap的返回值 貌似现在都是用CreateImage的

[解决办法]
CreateBitmap 的第五个参数是这样解释的所以的bgHmap 是未定义的。
[in] Pointer to an array of color data used to set the colors in a rectangle of pixels. Each scan line in the rectangle must be word aligned (scan lines that are not word aligned must be padded with zeros). If this parameter is NULL, the contents of the new bitmap is undefined. 

热点排行