MFC多点触控画板

        为了搭配一个项目,决定做个支持多点的多人画板,之前一直使用winfrom但是不支持多点(微软自己的东西都不支持=.=),于是研究了两天MFC,哇,一比较,简直绝望,感觉使用好费劲,各种不知道问题的报错,但是做了两天还是实现基本功能了(第三天就让我实现更多的功能,于是有研究了两天wpf,简直简单,就是HTML和winform的结合体)。

      官方的多点触控是基于单文档的,感谢这个帖子,让我改成基于对话框的:https://blog.csdn.net/peppereggfriedrice/article/details/51507792

      微软官方配置教程:https://msdn.microsoft.com/zh-cn/library/ee851785.aspx

      感觉把自己会的记录下来,省的以后再接触到全忘记了。

       配置完之后你会发现,是整个dialog都可以画的,建个pictureControl就会把dialog的事件遮挡,于是想了个办法,在主dialog上面建两个子dialog,这样就实现两个独立画板。

      重绘dialog的方法是OnPaint(),初始化方法是InitInstance()在子dialog里面默认都是没有的。右键dialog选择类向导插入,没有就在窗口事件里面,属性栏哪里:


在OnPaint():

CPaintDC dc(this);
	CRect rc;
	GetClientRect(&rc);
	CDC dcMem;
	dcMem.CreateCompatibleDC(&dc);
	CBitmap bmpBackground;
	bmpBackground.LoadBitmap(IDB_BITMAP1);

	BITMAP bitmap;
	bmpBackground.GetBitmap(&bitmap);
	CBitmap* pbmpPri = dcMem.SelectObject(&bmpBackground);
	dc.StretchBlt(0, 0, rc.Width(), rc.Height(), &dcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);

对每个控件进行什么操作,都需要先通过ID(可以看做唯一标志符)获取句柄,比如保存图片:

	CWnd* bmpShow(this); //获取句柄,可以写ID
	CDC *pdc = bmpShow->GetDC();
	CImage  imag;
	CRect rect;

	GetClientRect(&rect);        //获取画布大小  
	bmpShow->GetClientRect(&rect);
	imag.Create(rect.Width(), rect.Height(), 32);
	::BitBlt(imag.GetDC(), 0, 0, rect.Width(),rect.Height(), pdc->m_hDC, 0, 0, SRCCOPY);
	CString picturePath;
	picturePath = "D:\\aa\\soen.png";  //文件路径  
	HRESULT hResult = imag.Save(picturePath); //保存图片  
	ReleaseDC(pdc);
	imag.ReleaseDC();

但愿以后不会遇到这东西==。

源码下载地址:https://download.csdn.net/download/qq_35957011/10306370







评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zero游戏开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值