Earn without any Investment!

Wednesday, January 12, 2011

Freehand Drawing implemented in a V C++ Program

#include<windows.h>
long _stdcall myfunc(HWND,UINT,UINT,long);
WNDCLASSA a;
int flag=0,x1,y1,x2,y2;
int _stdcall WinMain(HINSTANCE i,HINSTANCE j, char *k,int l)
{
    HWND h;
    MSG m;
    a.hInstance=i;
    a.lpszClassName="my";
    a.lpfnWndProc=myfunc;
    a.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    RegisterClassA(&a);
    h=CreateWindowA("my","Free Hand Drawing",WS_OVERLAPPEDWINDOW,10,10,150,100,0,0,i,0);
    //h=CreateWindowExA(WS_OVERLAPPEDWINDOW,"Free Hand Drawing","my",WS_OVERLAPPEDWINDOW,10,10,150,100,0,0,i,0);
    ShowWindow(h,3);
    while(GetMessage(&m,0,0,0))
        DispatchMessage(&m);
    return 0;
}
long _stdcall myfunc(HWND w,UINT x,UINT y,long z)
{
    HDC d;
    switch(x)
    {
        case WM_LBUTTONDOWN:
            if(flag==0)
            {
                x1=LOWORD(z);
                y1=HIWORD(z);
                flag=1;
            }
            else
            {
                d=GetDC(w);
                MoveToEx(d,x,y,0);
                LineTo(d,LOWORD(z),1+WORD(z));
                ReleaseDC(w,d);
                flag=0;
            }
            break;
        case WM_MOUSEMOVE:
            if(flag==1)
            {
                x2=LOWORD(z);
                y2=HIWORD(z);
                d=GetDC(w);
                MoveToEx(d,x1,y1,0);
                LineTo(d,x2,y2);
                ReleaseDC(w,d);
                x1=x2;
                y1=y2;
            }
            break;
        case WM_LBUTTONUP:
            flag=0;
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProcA(w,x,y,z);
    }
    return 0L;
}

No comments:

Post a Comment