Hisworld.tistory.com
The hisWorld
(140)
hisworld_new
(0)
hisOld
(138)
Android
(7)
Computer Vision
(18)
JAVA
(4)
C/C++
(26)
열혈강의 C
(32)
TCP/IP socket
(12)
WinAPI
(16)
System Programming
(0)
etc
(23)
Plan
(0)
hisWorld
(0)
hiStory
(0)
hiStudy
(0)
hiSnap
(0)
홈
태그
미디어로그
위치로그
방명록
Windows Live Messenger
winapi
Join C
대학생 공모전
The Turing test page
훈스닷넷
C/C++ Reference
WIKI
/
/
블로그 내 검색
simplepaint2
SimpePaint2
2009.01.19
SimpePaint2
URUZ-7
2009. 1. 19. 19:46
2009. 1. 19. 19:46
/*=============================================== Program Title : SimplePaint2 Name : siro-y Date : 2009/01/19 Version : 1.0 E-Mail : ms08th@hotmail.com ===============================================*/ #include
#include "resource.h" LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass=TEXT("SimplePaint2"); HWND hWnd; int APIENTRY WinMain(HINSTANCE hlnstance,HINSTANCE hPrevlnstance ,LPSTR lpszCmdParam,int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst=hlnstance; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=(HBRUSH)(COLOR_BTNFACE); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); WndClass.hInstance=hlnstance; WndClass.lpfnWndProc=WndProc; WndClass.lpszClassName=lpszClass; WndClass.lpszMenuName=NULL; WndClass.style=CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; RegisterClass(&WndClass); hWnd=CreateWindow(lpszClass,lpszClass,WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,(HMENU)NULL,hlnstance,NULL); ShowWindow(hWnd,nCmdShow); while (GetMessage(&Message,NULL,0,0)){ TranslateMessage(&Message); DispatchMessage(&Message); } return (int)Message.wParam; } int GetCheckedRadioButton(HWND hDlg, int First, int Last) { for(int id=First; id<=Last; id++) { if(IsDlgButtonChecked(hDlg,id)==BST_CHECKED) return id; } return -1; } //SetDlgProc에 필요한 전역 변수 HWND hDlgMain; int thick=1; enum tag_color {RED=0,GREEN,BLUE}; int Color = RED; COLORREF LineColor[] = {RGB(255,0,0),RGB(0,255,0),RGB(0,0,255)}; BOOL CALLBACK SetDlgProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) { switch(iMessage) { case WM_INITDIALOG: CheckRadioButton(hDlg,IDC_THICK1,IDC_THICK5,IDC_THICK1+thick-1); CheckRadioButton(hDlg,IDC_RED,IDC_BLUE,IDC_RED+Color); return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: //check button set(선굵기) if(IsDlgButtonChecked(hDlg,IDC_THICK1)==BST_CHECKED) thick=1; if(IsDlgButtonChecked(hDlg,IDC_THICK2)==BST_CHECKED) thick=2; if(IsDlgButtonChecked(hDlg,IDC_THICK3)==BST_CHECKED) thick=3; if(IsDlgButtonChecked(hDlg,IDC_THICK4)==BST_CHECKED) thick=4; if(IsDlgButtonChecked(hDlg,IDC_THICK5)==BST_CHECKED) thick=5; //radio button set(선색상) if(IsDlgButtonChecked(hDlg,IDC_RED)==BST_CHECKED) Color = RED; if(IsDlgButtonChecked(hDlg,IDC_GREEN)==BST_CHECKED) Color = GREEN; if(IsDlgButtonChecked(hDlg,IDC_BLUE)==BST_CHECKED) Color = BLUE; EndDialog(hDlg,IDOK); return TRUE; case IDCANCEL: EndDialog(hDlg,IDCANCEL); return TRUE; } break; } return FALSE; } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; HPEN MyPen,OldPen; //pen 핸들 static int x,y; //mouse 좌표 static BOOL bNowDraw=FALSE; //그리기 가능 상태 TCHAR *str = TEXT("화면 지움 : 스페이스 바, 더블클릭"); switch(iMessage) { case WM_LBUTTONDOWN: x=LOWORD(lParam); y=HIWORD(lParam); bNowDraw=TRUE;//그리기 가능 return 0; case WM_RBUTTONDOWN: DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,SetDlgProc); return 0; case WM_MOUSEMOVE: if(bNowDraw){ hdc=GetDC(hWnd);//dc를 구함 TextOut(hdc,10,10,str,lstrlen(str)); MyPen=CreatePen(PS_SOLID, thick,LineColor[Color]);//설정된 정보로 펜을 만듬 OldPen=(HPEN)SelectObject(hdc, MyPen); //복사 MoveToEx(hdc,x,y,NULL); x=LOWORD(lParam); y=HIWORD(lParam); LineTo(hdc,x,y); SelectObject(hdc,OldPen);//복사된 펜으로 설정 DeleteObject(MyPen);//사용된 펜 삭제 ReleaseDC(hWnd,hdc);//dc해제 } return 0; case WM_LBUTTONUP: bNowDraw=FALSE;//그리기 안됨 return 0; case WM_LBUTTONDBLCLK: MessageBox(hWnd,TEXT("다 지우겠슈~!"),TEXT("알림"),MB_OK); InvalidateRect(hWnd,NULL,TRUE); return 0; case WM_KEYDOWN: switch(wParam) { case VK_SPACE: MessageBox(hWnd,TEXT("다 지우겠슈~!"),TEXT("알림"),MB_OK); InvalidateRect(hWnd,NULL,TRUE); } return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }
공유하기
게시글 관리
Hisworld.tistory.com
PREV
이전
1
NEXT
다음
+ Recent posts
Powered by
Tistory
, Designed by
wallel
Rss Feed
and
Twitter
,
Facebook
,
Youtube
,
Google+
티스토리툴바