C++ mfc

runedemonic의 이미지

클릭하면 원이 그려지고 원을 누르면 삭제되는 프로그램을 만들고 싶은데 안됩니다 조언좀 해주세요

protected:
	DECLARE_MESSAGE_MAP()
public:
	ClickInfo a[10] = {0};
	ClickInfo b[1] = { 0 };
	int click = 0;
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	void Delete(int idx)
	{
		memmove(a + idx, a + idx + 1, 10 - idx);
	}
 
};
---------------------------------------------------------------
void CWork2View::OnLButtonDown(UINT nFlags, CPoint point)
{
	if (click >= 10)
	{
		AfxMessageBox(_T("최대10개까지 입니다."));
		return;
	}
	a[click].x = point.x;
	a[click].y = point.y;
	if (click != 0)
	{
		a[click].x = point.x;
		a[click].y = point.y;
		b[0].x = point.x;
		b[0].y = point.y;
	}
 
	// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
	CClientDC dc(this);
	CBrush brush(RGB(255, 0, 0));
	dc.SelectObject(&brush); 
 
 
	if (click == 0)
	{
		dc.Ellipse(a[click].x - 50, a[click].y - 50, a[click].x + 50, a[click].y + 50);
	}
	else
	{
		for (int i = 0; i <= click; i++)
		{
 
 
			if ((a[i].x - 50 <= b[0].x) || (a[i].x + 50 >= b[0].x) && (a[i].y - 50 <= b[0].y) || (a[i].y + 50 >= b[0].y)) //a배열의 좌표가 지정된 범위 안에 있으면 a배열의 값을 지정해서 삭제
			{
				Delete(i);
			}
			else
			{
				dc.Ellipse(a[click].x - 50, a[click].y - 50, a[click].x + 50, a[click].y + 50);
 
			}
		}
	}
 
 
	click++;
	b[0] = { 0 };
 
 
	CView::OnLButtonDown(nFlags, point);
}
shint의 이미지

일단. 웹에서 그려보는 함수로 만들어 봤습니다. ㅇ_ㅇ;; 요즘 웹 브라우저에서 됩니다.
웹에서. 아래 주소 링크를 선택하고. Run 으로 실행 후. canvas 영역을. 마우스로 클릭하면 됩니다.
https://www.w3schools.com/code/tryit.asp?filename=FVB4GRMLO6HY

//-------------
//이 부분을 변경
//-------------
if ((a[i].x - 50 <= b[0].x) || (a[i].x + 50 >= b[0].x) && (a[i].y - 50 <= b[0].y) || (a[i].y + 50 >= b[0].y)) //a배열의 좌표가 지정된 범위 안에 있으면 a배열의 값을 지정해서 삭제

//수정 된 예제
if((a[i].x -50 < b.x) && (b.x < a[i].x +50) && (a[i].y -50 < b.y) && (b.y < a[i].y +50))

//-------------
//이 부분을 변경
//-------------
b[0] = { 0 };

//수정 된 예제
b.x = xmouse;
b.y = ymouse;

//-------------
//일단. 이것은 제외 ㅇ_ㅇ;;
//윈도우에서. 그리는 방법은 이것저것 공부하셔야 할겁니다.
//Win32 API / MFC / .Net / GDI+ / OpenGL / DirectX
//책 예제 소스를 참고해보세요. - 네이버 북 / 서점 / 도서관
//코드 구루. 코드 프로젝트. 데브피아. 구글. WinAPI. TipSoft. 등에서.
//잘되는 Paint 페인트 예제. 게임 예제를 사용하기도 합니다.
//-------------
- SetROP() 를 사용해서. 기존 그려진 영역을 지우기도 합니다.
- 이미지의 깜빠임을 줄이기 위해서. 더블버퍼링을 하기도 합니다.
- 비트 마스크로 그리기에 사용하기도 합니다.

댓글 첨부 파일: 
첨부파일 크기
Package icon 참고용 검색 및 테스트 자료.zip3.24 MB
Image icon K-007.jpg482.93 KB

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.