内存兼容DC这样用不对么?
c++吧
全部回复
仅看楼主
level 11
gameloftyou 楼主
以下是关键代码:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    HDC hdc,hmdc;
    PAINTSTRUCT ps;
    
    switch(message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hwnd,&ps);
        hmdc = CreateCompatibleDC(hdc);
        SelectObject(hmdc,hBitmap);
        BitBlt(hdc,0,0,640,450,hmdc,0,0,SRCCOPY);
        SelectObject(hmdc,hSpritem);
        BitBlt(hdc,100,50,48,54,hmdc,0,0,SRCAND);
        SelectObject(hmdc,hSprite);
        BitBlt(hdc,100,50,48,54,hmdc,0,0,SRCPAINT);
        EndPaint(hwnd,&ps);
        return 0;
以下省略............................................

2012年07月30日 13点07分 1
level 11
gameloftyou 楼主
以上几张图是程序运行后,来回几次窗口最小化最大化时的显示效果。
2012年07月30日 13点07分 2
这样做好麻烦的..还需要遮盖图...
2012年07月30日 13点07分
@zealot_sean 我是在看windows程序设计,目前才看到键盘那一章,位图绘制也是网上搜得代码。另外用什么方法绘制更方便,希望你能说下,我先记着。[呵呵]
2012年07月30日 14点07分
@gameloftyou gdi可以直接过滤指定颜色
2012年07月30日 14点07分
@zealot_sean 哦,我找找,谢了。
2012年07月30日 14点07分
level 11
gameloftyou 楼主
另外如果我把内存兼容DC放在WM_CREATE消息处理期间生成的话,就不会出现这样的情况,难道内存兼容DC不能放在WM_PAINT消息处理期间?
2012年07月30日 13点07分 3
level 10
hmdc用完要干掉
2012年07月30日 13点07分 4
哦,我用DeleteDC(hmdc)试了可以,可是为什么用ReleaseDC不行?两者区别是什么?
2012年07月30日 13点07分
@gameloftyou delete对应create,release对应get
2012年07月30日 13点07分
@矮油嫑酱紫唉 [大惊],原来有这么简单易记的关系。
2012年07月30日 13点07分
@gameloftyou 对的,呵呵
2012年07月30日 14点07分
level 11
gameloftyou 楼主
codepad被墙了么,进不去了[揉脸]
2012年07月30日 13点07分 5
1