내가 DC 잘안해서 그런데 이거 규정에 어긋남?
진짜 도움이 절실함. 책보고 하는데도 안됌 ㅠㅠ
일단 사진이 대화상자에 올라가야하는데 대화상자까지는 생성이 됌요
근데 그 이후로는 사진이 안올라가짐 대화상자에
TextOut으로 글씨는 써짐 근데 사진은 출력이 안됌
#include <windows.h>
#include "resource.h"
BOOL CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam);
HINSTANCE g_hInst;
HWND hWndMain;
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), HWND_DESKTOP, WndProc);
}
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,x,y,bx,by,MemDC,0,0,SRCCOPY);
SelectObject(MemDC,OldBitmap);
DeleteDC(MemDC);
}
BOOL CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static HBITMAP MyBitmap;
switch (iMessage) {
case WM_CREATE:
MyBitmap=LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BITMAP1));
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
DrawBitmap(hdc,10,10,MyBitmap);
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
DeleteObject(MyBitmap);
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
형님들 제발 부탁드립니다. 짤리면 짤리는 사유라도좀 알려주세요 ㅠㅠ
참고로 오류도 안떠서 ;; 더 이상함
대화상자니까 case WM_CREATE: 가 아니고 case WM_INITDIALOG: 로 하셔야 합니다
디버그 돌려봐서 MyBitmap 에 정상적으로 비트맵이 로딩됐는지만 확인해봐도 원인을 찾았을텐데... 가능하면 static var 에는 선언시 NULL 같은 초기값을 주고, 리소스는 귀찮더라도 초기화 성공여부를 확인해서 표시하는 코드를 넣으시길. 그 저주받은 삽질이 몸에 배지 않으면 C++ 개발자 되기 힘들걸랑...