记录我的Windows编程(二)贴张图片

贴图就几步

1.创建DC句柄以及DC内存

2.loadimage

3.选择项目,绘图

写成代码就像这样:

PAINTSTRUCT ps;
HDC hdc,mdc;//创建DC句柄
HBITMAP hbmp;
mdc = CreateCompatibleDC(hdc);//创建DC内存
hbmp = (HBITMAP)LoadImage(NULL,path,IMAGE_BITMAP,200,200,LR_LOADFROMFILE);//loadimage到DC内存中
SelectObject(mdc, hbmp);//选择项目
BitBlt(hdc,0,0,200,200,mdc,0,0,SRCCOPY);//绘图

要注意使用的路径一定是'\\'注意是两个‘\',第一个'\'应该是转义符的意思

//以上是核心部分,也就是绘图应该有的几步。
//窗口建立之后,系统会调用重绘的部分,也就是WM_PAINT部分,我们就把代码写到这里面就OK。
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>

//1.设计一个窗口类
//2.注册窗口类
//3.创建窗口
//4.显示及更新窗口
//5.消息循环
//6.窗口函数

static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("测试程序");
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

//设计一个窗口类
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
	WNDCLASSEX wcex;

	wcex.cbSize = sizeof(WNDCLASSEX);
	wcex.style          = CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc    = WndProc;
	wcex.cbClsExtra     = 0;
	wcex.cbWndExtra     = 0;
	wcex.hInstance      = hInstance;
	wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
	wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName   = NULL;
	wcex.lpszClassName  = szWindowClass;
	wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

	hInst=hInstance;//hinstance赋值全局变量

//注册窗口类
	if (!RegisterClassEx(&wcex))
	{
		MessageBox(NULL,_T("Call to RegisterClassEx failed!"),_T("Win32 Guided Tour"),NULL);
		return 1;
	}

//创建窗口
	HWND hWnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,1024, 768,NULL,NULL,hInstance,NULL);

//显示及更新窗口
	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);

//消息循环
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return (int) msg.wParam;
}

//消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;

	switch (message)
	{
	
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);//开始绘图
/*--------------核心部分------------------*/
		HDC mdc;
		HBITMAP hbmp;

		mdc = CreateCompatibleDC(hdc);
		hbmp = (HBITMAP)LoadImage(NULL,TEXT("D:\\1.bmp"),IMAGE_BITMAP,200,200,LR_LOADFROMFILE);
		SelectObject(mdc, hbmp);
		BitBlt(hdc,0,0,200,200,mdc,0,0,SRCCOPY);
/*--------------核心部分------------------*/
		DeleteObject(hbmp);
		DeleteDC(mdc);//记得用完了删除
		DCEndPaint(hWnd, &ps);//结束绘图
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
		break;
	}
}




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值