chenesha 2013-12-09 14:51
浏览 776

不知道为什么双缓冲没效果,谁能示范示范吖

#include
#include
#include "resource.h"
#include

BOOLEAN InitWindowClass(HINSTANCE hinstance,int nCmdshow);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

HBITMAP hBitmap;
BITMAP Bitmap;
HBITMAP hmemBitmap;
HDC hdc,hmemdc,hmemdc_1;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{

    HWND hwnd;
    MSG Msg;
    WNDCLASS wndclass;
    char lpszClassName[] = "窗口";
    char lpszTitle[]= "My_Windows";

    wndclass.style = 0;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
    wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = lpszClassName;

        if(!RegisterClass(&wndclass))
    {
        MessageBeep(0) ;
        return FALSE ;
    }
    hwnd=CreateWindow(
                    lpszClassName,
                    lpszTitle,
                    WS_OVERLAPPEDWINDOW,
                    CW_USEDEFAULT,
                    CW_USEDEFAULT,
                    CW_USEDEFAULT,
                    CW_USEDEFAULT,
                    NULL,
                    NULL,
                    hInstance,
                    NULL);




        hBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP01));
            GetObject(hBitmap,sizeof(BITMAP),&Bitmap);


    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&Msg,NULL,0,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT PtStr;
RECT rect;
HBRUSH hbrush;

static WORD x,y;
int X=200,Y=100;

    switch(message)
    {

        case WM_MOUSEMOVE:          //处理鼠标移动信息.

            x=LOWORD(lParam);       //获得鼠标的X坐标.
            y=HIWORD(lParam);       //获得鼠标的Y坐标.
        //  hcursor= LoadCursorFromFile(".\\chuizi.cur");
            SetCursor((HCURSOR)LoadImage(NULL,".\\chuizi.cur",IMAGE_ICON,50,50,LR_LOADFROMFILE));

            return 0;


        case WM_LBUTTONDOWN:        

            hdc=GetDC(hwnd);
            InvalidateRect(hwnd,NULL,1);
            ReleaseDC(hwnd,hdc);
            break;

        case WM_CREATE:

            hdc=GetDC(hwnd);

            hmemdc=CreateCompatibleDC(NULL);
            hmemdc_1=CreateCompatibleDC(NULL);



            SetTimer(hwnd,1,100,NULL);
            break;


        case WM_PAINT:
            hdc=BeginPaint(hwnd,&PtStr);
            GetClientRect(hwnd,&rect);
            hbrush=CreateSolidBrush(RGB(0,135,0));
            SelectObject(hdc,hbrush);
            Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom);



            SelectObject(hmemdc_1,hBitmap);

            hmemBitmap=CreateCompatibleBitmap(hdc,rect.right  , rect.bottom );
            SelectObject(hmemdc,hmemBitmap);
            FillRect(hmemdc,&rect,NULL);
        //  SelectObject(hmemdc,hBitmap);
            BitBlt(hmemdc,0,0,Bitmap.bmWidth,Bitmap.bmHeight,hmemdc_1,0,0,SRCCOPY);
            BitBlt(hdc,0,0,Bitmap.bmWidth,Bitmap.bmHeight,hmemdc,0,0,SRCCOPY);



                EndPaint(hwnd,&PtStr);
            break;

        case WM_TIMER:
            //如果按下开始按钮则开始刷新
            InvalidateRect(hwnd,NULL,0);
            break;

        case WM_DESTROY:
            DeleteObject(hBitmap);
            DeleteObject(hmemBitmap);

            ReleaseDC(hwnd,hdc);
            ReleaseDC(hwnd,hmemdc);
            ReleaseDC(hwnd,hmemdc_1);
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd,message,wParam,lParam);
    }


    return 0;

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 jupyterthemes 设置完毕后没有效果
    • ¥15 matlab图像高斯低通滤波
    • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
    • ¥15 钢筋实图交点识别,机器视觉代码
    • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
    • ¥50 400g qsfp 光模块iphy方案
    • ¥15 两块ADC0804用proteus仿真时,出现异常
    • ¥15 关于风控系统,如何去选择
    • ¥15 这款软件是什么?需要能满足我的需求
    • ¥15 SpringSecurityOauth2登陆前后request不一致