Sign in to follow this  
GotenRulezU

Cheap Ripoff of Paint plz help

Recommended Posts

GotenRulezU    100
How Do I make it so that when the person clicks and drags it paints all of the parts they have dragged over. I can only make it draw in places. ALSO A NOTE i'm using bitmaps because i'm trying to learn more abotu using them. Thats why I use them instead of fillrect. heres my source so far:
#include<windows.h>
#include<string>
using namespace std;
bool gameover = false;
int mousex;
int mousey;
int colortrack = 1;
HBRUSH brush = CreateSolidBrush(RGB(255,0,0));
LRESULT CALLBACK WndProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam);
class MyBitmap{
private:
	HWND window;
	HDC hdc;
	HDC imagedc;
	HBITMAP image;
	HBITMAP oldimage;
	int height;
	int width;
public:
	MyBitmap(HWND hwnd, char* file,int xwidth,int yheight){
		hdc = GetDC(hwnd);
		imagedc = CreateCompatibleDC(hdc);
		image = (HBITMAP)LoadImage(NULL,"mypic.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
		width = xwidth;
		height = yheight;
		window = hwnd;
	}
	void Draw(int x, int y){
		SelectObject(imagedc,image);
		BitBlt(hdc,x,y,width,height,imagedc,0,0,SRCCOPY);
	}
	void Cleanup(){
		oldimage = (HBITMAP)SelectObject(imagedc,image);
		DeleteObject(oldimage);
		DeleteDC(imagedc);
		ReleaseDC(window, hdc);
	}
};
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hpInstance,PSTR cmdline,int iCmd){
	WNDCLASS wc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.hCursor = LoadCursor(NULL,IDC_ARROW);
	wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
	wc.hInstance = hInstance;
	wc.lpfnWndProc = WndProc;
	wc.lpszClassName = "class";
	wc.lpszMenuName = NULL;
	wc.style = CS_VREDRAW|CS_HREDRAW;
	RegisterClass(&wc);
	HWND hwnd = CreateWindow("class","My Window",WS_OVERLAPPEDWINDOW,0,0,800,600,NULL,NULL,hInstance,NULL);
	MSG msg;
	MyBitmap mybitmap(hwnd,"mypic.bmp",10,10);
	ShowWindow(hwnd,iCmd);
	UpdateWindow(hwnd);
	while(!gameover){
		if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		else{
			mybitmap.Draw(mousex,mousey);
		}
	}
	mybitmap.Cleanup();
	return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam){
	switch(iMsg){
	case WM_DESTROY:
		PostQuitMessage(0);
		gameover = true;
		break;
	case WM_LBUTTONDOWN:
		mousex = LOWORD(lParam);
		mousey = HIWORD(lParam);
		break;
	case WM_RBUTTONDOWN:
		break;
	}
	return DefWindowProc(hwnd,iMsg,wParam,lParam);
}

Thanks,

Share this post


Link to post
Share on other sites
GotenRulezU    100
Well I think maybe I should say click and drag like in paint how you use the pencil to draw lines and stuff. Maybe its a little more clear now. [smile]
Thanks again,(sorry for double post)

Share this post


Link to post
Share on other sites
phatdom    130
Try this:


LRESULT CALLBACK WndProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam){
switch(iMsg){
case WM_DESTROY:
PostQuitMessage(0);
gameover = true;
break;
case WM_LBUTTONDOWN:
mousex = LOWORD(lParam);
mousey = HIWORD(lParam);
lbd=true;
break;
case WM_LBUTTONUP:
lbd=false;
break;
case WM_MOUSEMOVE:
if(lbd){
mousex = LOWORD(lParam);
mousey = HIWORD(lParam);
}
break;
case WM_RBUTTONDOWN:
break;
}
return DefWindowProc(hwnd,iMsg,wParam,lParam);
}




(lbd is a global bool set to false initially).

Anyway, hope this makes sense...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this