비트맵 출력 (비트맵 크기대로 불러오기)
페이지 정보
작성자 이즈 작성일 07-01-06 08:16 조회 1,176 댓글 0본문
#include <windows.h>
#include "resource.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE hInstance;
LPSTR lpszClass="프로그램";
// 비트맵 변수
HBITMAP hBitmap;
BITMAP bitmap;
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow )
{
// 비트맵 불러오기 (리소스 비트맵)
hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
HWND hWnd;
MSG msg;
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&msg,0,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc,memDC;
PAINTSTRUCT ps;
static int nX,nY;
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
memDC = CreateCompatibleDC(hdc);
SelectObject(memDC,hBitmap);
GetObject(hBitmap, sizeof(BITMAP),(BITMAP *)&bitmap);
nX = bitmap.bmWidth;
nY = bitmap.bmHeight;
BitBlt(hdc,0,0,nX,nY,memDC,0,0,SRCCOPY);
DeleteDC(memDC);
EndPaint(hWnd,&ps);
return 0;
}
return(DefWindowProc(hWnd,message,wParam,lParam));
}
#include "resource.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE hInstance;
LPSTR lpszClass="프로그램";
// 비트맵 변수
HBITMAP hBitmap;
BITMAP bitmap;
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow )
{
// 비트맵 불러오기 (리소스 비트맵)
hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
HWND hWnd;
MSG msg;
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd,nCmdShow);
while(GetMessage(&msg,0,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc,memDC;
PAINTSTRUCT ps;
static int nX,nY;
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
memDC = CreateCompatibleDC(hdc);
SelectObject(memDC,hBitmap);
GetObject(hBitmap, sizeof(BITMAP),(BITMAP *)&bitmap);
nX = bitmap.bmWidth;
nY = bitmap.bmHeight;
BitBlt(hdc,0,0,nX,nY,memDC,0,0,SRCCOPY);
DeleteDC(memDC);
EndPaint(hWnd,&ps);
return 0;
}
return(DefWindowProc(hWnd,message,wParam,lParam));
}
댓글목록 0
등록된 댓글이 없습니다.