- 발 꼭 들가 것들
- 더블링 무가?
- 더블링 떻게 는가?
- 더블링 무가?
더블링란>?? ¶
더블 링 미를 면 바로 그리는 것 라, 메모리() 먼 그리고 면 나 그리는 방법다. 더블 링 면 깜빡 고, 러 메 많 된다.
그렇다면 더블 링 과 떻게 까? 더블 링 는 꼭 면 깜박 는데만 는 것 다. 내부 므로 들(Idle) 기 고 내부 를 부 보다 더 게 만들 롤 다.
기는 더블 링 리 대만 록 고 무를 때 더블 링 면 겠다는 각 들면 극로 보기 바란다. 다 는 더블 링 면다. (Gang) 면란 로그램 를 개는 를 가며 반로 겨 만 다는 면 다 멋 부리는 경 다. 는 배경 맵 깔고 그 목록 로 롤는 를 보다.
~cpp #include "resource.h" HBITMAP hBit, hBaby; TCHAR szGang[]="Gang Version 1.0\r\n\r\n 감독 : 김 \r\n" "개발 : 김 \r\n 모델 : 김 \r\n : 박 미"; int my; void DrawBitmap(HDC hdc,int x,int y,HBITMAP hBit) { HDC MemDC; HBITMAP OldBitmap; int bx,by; BITMAP bit; MemDC=CreateCompatibleDC(hdc); OldBitmap=(HBITMAP)SelectObject(MemDC, hBit); GetObject(hBit,sizeof(BITMAP),&bit); bx=bit.bmWidth; by=bit.bmHeight; BitBlt(hdc,0,0,bx,by,MemDC,0,0,SRCCOPY); SelectObject(MemDC,OldBitmap); DeleteDC(MemDC); } void OnTimer() { RECT crt; HDC hdc,hMemDC; HBITMAP OldBit; HFONT font, oldfont; RECT grt; int i,j; GetClientRect(hWndMain,&crt); hdc=GetDC(hWndMain); if (hBit==NULL) { hBit=CreateCompatibleBitmap(hdc,crt.right,crt.bottom); } hMemDC=CreateCompatibleDC(hdc); OldBit=(HBITMAP)SelectObject(hMemDC,hBit); DrawBitmap(hMemDC,0,0,hBaby); SetBkMode(hMemDC,TRANSPARENT); font=CreateFont(30,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1, VARIABLE_PITCH | FF_ROMAN,"궁"); oldfont=(HFONT)SelectObject(hMemDC,font); my--; if (my==20) { KillTimer(hWndMain,1); } SetTextColor(hMemDC,RGB(192,192,192)); for (i=-1;i<=1;i++) { for (j=-1;j<=1;j++) { SetRect(&grt,10+i,my+j,400+i,my+300+j); DrawText(hMemDC,szGang,-1,&grt,DT_WORDBREAK); } } SetTextColor(hMemDC,RGB(32,32,32)); SetRect(&grt,10,my,400,my+300); DrawText(hMemDC,szGang,-1,&grt,DT_WORDBREAK); SelectObject(hMemDC,oldfont); DeleteObject(font); SelectObject(hMemDC,OldBit); DeleteDC(hMemDC); ReleaseDC(hWndMain,hdc); InvalidateRect(hWndMain,NULL,FALSE); } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc,hMemDC; PAINTSTRUCT ps; HBITMAP OldBit; RECT crt; switch(iMessage) { case WM_CREATE: hBaby=LoadBitmap(g_hInst,MAKEINTRESOURCE(IDB_BITMAP1)); case WM_LBUTTONDOWN: SetTimer(hWnd,1,70,NULL); my=310; return 0; case WM_TIMER: OnTimer(); return 0; case WM_PAINT: hdc=BeginPaint(hWnd, &ps); GetClientRect(hWnd,&crt); hMemDC=CreateCompatibleDC(hdc); OldBit=(HBITMAP)SelectObject(hMemDC, hBit); BitBlt(hdc,0,0,crt.right,crt.bottom,hMemDC,0,0,SRCCOPY); SelectObject(hMemDC, OldBit); DeleteDC(hMemDC); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: if (hBit) { DeleteObject(hBit); } DeleteObject(hBaby); PostQuitMessage(0); KillTimer(hWnd,1); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }
![]() |
![]() |
![]() |
더 드를 다면 글들 른 로 날라 록 고 대되는 모로 만들 다. 또는 메 가다나 글 Fade In, Fade Out 면 과를 낼 다. 뭏든 더블 링 기만 면 떠 모 깔끔게 면로 구 므로 기발 력 발 볼만다.
~cpp public: CBitmap MemBitmap; CDC MemDC; CPoint Position;
~cpp CTestView::CTestView() { // TODO: add construction code here Position = CPoint(0, 0); }
~cpp void CTestView::OnDraw(CDC* pDC) { CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); MemDC.FillSolidRect(0, 0, 1024, 768, RGB(255, 255, 255)); MemDC.SelectStockObject(NULL_BRUSH); for(int i = 5 ; i <= 10 ; i++) { MemDC.Ellipse(Position.x - i, Position.y - i, Position.x + i, Position.y + i); MemDC.Rectangle(Position.x + 10 - i, Position.y + 10 - i, Position.x + 10 + i, Position.y + 10 + i); } //pDC->StretchBlt(0, 0, 102, 77, &MemDC, 0, 0, 1024, 768, SRCCOPY); pDC->BitBlt(0, 0, 1024, 768, &MemDC, 0, 0, SRCCOPY); // TODO: add draw code for native data here }
~cpp int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; CDC *pDC = GetDC(); MemDC.CreateCompatibleDC(pDC); MemBitmap.CreateCompatibleBitmap(pDC, 1024, 768); MemDC.SelectObject(&MemBitmap); ReleaseDC(pDC); SetTimer(1, 1000, NULL); // TODO: Add your specialized creation code here return 0; } void CTestView::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default Invalidate(); Position.x += 2; Position.y += 1; CView::OnTimer(nIDEvent); }