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

这段sdk双缓冲有什么有关问题

2012-02-11 
这段sdk双缓冲有什么问题intiCOLORREFrgbRECTclientRectHDCmemdcHBITMAPbmpHBITMAPoldbmpintclientW

这段sdk双缓冲有什么问题
int   i;
COLORREF   rgb;
RECT           clientRect;
HDC   memdc;
HBITMAP     bmp;
HBITMAP     oldbmp;
int             clientWidth;
int             clientHeight;

GetClientRect(main_window_hwnd,   &clientRect);
rgb   =   RGB(255,0,255);
clientWidth     =   clientRect.right   -   clientRect.left;
clientHeight   =   clientRect.bottom   -   clientRect.top;

//   initialize   memory   DC
if   (NULL   ==   (memdc   =   CreateCompatibleDC(hdc)))
{
return   0;
}

bmp   =   CreateCompatibleBitmap(hdc,   clientWidth,   clientHeight);
//SetBkMode(memdc,   TRANSPARENT);
oldbmp   =   SelectObject(memdc,   &bmp);
FillRect(memdc,   &clientRect,   (HBRUSH)   (COLOR_WINDOW+1));

//Circle_MPA(memdc,   200,   100,   50,   rgb);

for   (i   =   50;   i <300;   i++)
{
SetPixel(memdc,   i,   70,   rgb);
}

BitBlt(hdc,   0,   0,
clientWidth,   clientHeight,
memdc,   0,   0,   SRCCOPY);
SelectObject(memdc,   &oldbmp);
DeleteDC(memdc);
/////////////////////////////
图形显示不出来

[解决办法]
int i;
COLORREF rgb;
RECT clientRect;
HDC memdc;
HBITMAP bmp;
HBITMAP oldbmp;
int clientWidth;
int clientHeight;

GetClientRect(main_window_hwnd, &clientRect);
rgb = RGB(255,0,255);
clientWidth = clientRect.right - clientRect.left;
clientHeight = clientRect.bottom - clientRect.top;

// initialize memory DC
if (NULL == (memdc = CreateCompatibleDC(hdc)))
{
return 0;
}

bmp = CreateCompatibleBitmap(hdc, clientWidth, clientHeight);
//SetBkMode(memdc, TRANSPARENT);
oldbmp = (HBITMAP)SelectObject(memdc, bmp);
FillRect(memdc, &clientRect, (HBRUSH) (COLOR_WINDOW+1));

//Circle_MPA(memdc, 200, 100, 50, rgb);

for (i = 50; i <300; i++)
{
SetPixel(memdc, i, 70, rgb);
}

BitBlt(hdc, 0, 0,
clientWidth, clientHeight,
memdc, 0, 0, SRCCOPY);
SelectObject(memdc, oldbmp);
DeleteDC(memdc);

热点排行