Własny paint


(Kamiljano) #1

coś mi w mojej procedurce nie śmiga, ale nie wiem dokładnie co

BOOL CALLBACK dialproc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam){

	HDC hdc;

	PAINTSTRUCT p;

	POINT temp;

	char zamiana[20];

	static vector point;

	switch(message)

	{

	case WM_INITDIALOG:

	//MessageBox(hwnd, L"Udało się", L"Komunikat", MB_OK);

		return 0;

	case WM_CLOSE:

		EndDialog(hwnd, 0);

		return 0;

	case WM_LBUTTONDOWN:

		temp.x=LOWORD(lparam);

		temp.y=HIWORD(lparam);

		point.push_back(temp);

		//itoa(temp.x, zamiana, 10);

		//MessageBoxA(hwnd, zamiana, "lol", MB_OK);

		SendMessage(hwnd, WM_PAINT,0,0);

		//MessageBox(hwnd, L"Udało się", L"Komunikat", MB_OK);

		return 0;

	case WM_PAINT:

		hdc=BeginPaint(hwnd, &p);

		for (vector::iterator i=point.begin(); i!=point.end(); i++){

		SetPixel (hdc, i->x,i->y, RGB(0,0,255));

		}

		EndPaint(hwnd, &p);

		return 0;

	}

	return false;

}

no więc jak już można zauważyć procedura moja ma rysować pojedyncze pikselki tam gdzie się kliknie. Może teraz trochę dziwnie wygląda... początkowo próbowałem to bez vectora, że normalnie pod WM_LBUTTONDOWN pisałem SetPixel, ale nie działało, to zrobiłem tak, ale też nic to nie dało... a więc wszystko się kompiluje, ale nie rysuje wcale...


([alex]) #2

Ne wysyła się zdarzenia WM_PAINT.

Masz zapodać InvalidateRect Rect może być NULL'em