MFC29-30天 补充中间遇到的一些小问题

宏定义中的#和##的含义:

#include <Windows.h>
#include <tchar.h>
#include <iostream>
#define Test(x,y) x##y //自动连接 xy
#define T2(x) #x //自动转为字符串 "x"
int main()
{auto p = Test(Message, Box);(*p)(NULL, _T(T2(Hello aaa)), _T("温馨提示"), 0);puts(T2(hehehe hahaha));return 0;
}

因为这边用24色位图 尺寸过大不符合所以返回了NULL

if((lpBitmap== NULL)||(lpBitmap->biBitCount>8))//要不就是你加载的图片为空 要不图像尺寸大于256色了
if (!m_toolBox.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_toolBox.LoadToolBar(IDR_TOOLBOX)){TRACE0("未能创建工具栏\n");return -1;      // 未能创建}LPBITMAPINFOHEADER lpBitmap = (LPBITMAPINFOHEADER)LockResource(hglb);if ((lpBitmap == NULL) || (lpBitmap->biBitCount > 8)){return NULL;}

例如:

	afx_msg void OnDrawTools(UINT);/*afx_msg void OnDrawEllipse();afx_msg void OnDrawLine();afx_msg void OnDrawPencil();afx_msg void OnDrawPolygon();afx_msg void OnDrawRect();afx_msg void OnDrawRrect(); */
	afx_msg void OnUpdateDrawTools(CCmdUI* pCmdUI);/*afx_msg void OnUpdateDrawDrag(CCmdUI* pCmdUI);afx_msg void OnUpdateDrawEllipse(CCmdUI* pCmdUI);afx_msg void OnUpdateDrawLine(CCmdUI* pCmdUI);afx_msg void OnUpdateDrawPencil(CCmdUI* pCmdUI);afx_msg void OnUpdateDrawPolygon(CCmdUI* pCmdUI);afx_msg void OnUpdateDrawRect(CCmdUI* pCmdUI);afx_msg void OnUpdateDrawRrect(CCmdUI* pCmdUI);*/
//void CMainView::OnDrawDrag(){
//	m_nIndex = ID_DRAW_DRAG;
//}
//void CMainView::OnDrawEllipse(){
//	m_nIndex = ID_DRAW_ELLIPSE;
//}
//void CMainView::OnDrawLine(){
//	m_nIndex = ID_DRAW_LINE;
//}
//void CMainView::OnDrawPencil(){
//	m_nIndex = ID_DRAW_PENCIL;
//}
//void CMainView::OnDrawPolygon(){
//	m_nIndex = ID_DRAW_POLYGON;
//}
//void CMainView::OnDrawRect()
//{
//	m_nIndex = ID_DRAW_RECT;
//}
//void CMainView::OnDrawRrect()
//{
//	m_nIndex = ID_DRAW_RRECT;
//}	
//void CMainView::OnUpdateDrawDrag(CCmdUI* pCmdUI)
//{
//	//pCmdUI->SetCheck(m_nIndex == ID_DRAW_DRAG);
//	pCmdUI->SetCheck(m_nIndex == pCmdUI->m_nID);
//}
//void CMainView::OnUpdateDrawEllipse(CCmdUI* pCmdUI)
//{
//	pCmdUI->SetCheck(m_nIndex == pCmdUI->m_nID);
//}
//void CMainView::OnUpdateDrawLine(CCmdUI* pCmdUI)
//{
//	pCmdUI->SetCheck(m_nIndex == pCmdUI->m_nID);
//}
//void CMainView::OnUpdateDrawPencil(CCmdUI* pCmdUI)
//{
//	pCmdUI->SetCheck(m_nIndex == pCmdUI->m_nID);
//}
//void CMainView::OnUpdateDrawPolygon(CCmdUI* pCmdUI)
//{
//	pCmdUI->SetCheck(m_nIndex == pCmdUI->m_nID);
//}
//void CMainView::OnUpdateDrawRect(CCmdUI* pCmdUI)
//{
//	pCmdUI->SetCheck(m_nIndex == pCmdUI->m_nID);
//}
//void CMainView::OnUpdateDrawRrect(CCmdUI* pCmdUI)
//{
//	pCmdUI->SetCheck(m_nIndex == pCmdUI->m_nID);
//}
 void CMainView::OnDrawTools(UINT nID)
{m_nIndex = nID;
}void CMainView::OnUpdateDrawTools(CCmdUI* pCmdUI){//pCmdUI->SetCheck(); //这个TRUE的话7个都会亮起来pCmdUI->SetCheck(pCmdUI->m_nID == m_nIndex);}

区间命令管理,把7套命令和状态管理函数合并成1套

#define ON_COMMAND(id, memberFxn) \  一消息一函数
{WM_COMMAND,CN_COMMAND,(WORD)id,(WORD)id,AfxSigCmd_v,static_cast<AFX_PMSG> (memberFxn)},// ON_COMMAND(id, OnBar) is the same as// ON_CONTROL(0, id, OnBar) or ON_BN_CLICKED(0, id, OnBar)
#define ON_COMMAND_RANGE(id, idLast, memberFxn) \  
一消息的范围 参数为 起始消息 到最终消息  都来搞memberFxn) 这个函数{ WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSigCmd_RANGE, \(AFX_PMSG) \(static_cast< void (AFX_MSG_CALL CCmdTarget::*)(UINT) > \(memberFxn)) },// ON_COMMAND_RANGE(id, idLast, OnBar) is the same as// ON_CONTROL_RANGE(0, id, idLast, OnBar)

gdi+无效

有可能是没有进行初始化

#include <gdiplus.h> 对应头文件 
using namespace Gdiplus;命名空间GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

确保句柄有效

if (pDC->GetSafeHdc() == NULL) {// 绘图上下文无效,无法绘制return;
}
Graphics g(pDC->GetSafeHdc());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/33344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLSTATE[42000]: this is incompatible with sql_mode=only_full_group_by in

执行 SELECT *FROM test WHERE id>1 GROUP BY name having AVG(age)>10 ORDER BY id desc limit 1 提示错误 Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause…

C# winform 布局操作组件介绍

Winform布局 布局的2个属性 Anchor:锁定位置 Dock&#xff1a;填充位置 一般Dock是与容器控件配合使用 布局的一些控件 TableLayoutPanel&#xff1a;表格容器 每个表格只能放一个控件 要放置多个时可以在每个表格里面添加一个Panel&#xff08;也可以是其他的容器&#x…

git一次错误merge的回滚

场景&#xff1a;提交到sit的代码&#xff0c;结果解决冲突merge了DEV的代码&#xff0c;所以要回滚到合并之前的代码 &#xff08;原因是我再网页上处理了冲突&#xff0c;他就自动merge了,如图—所以还是idea处理冲突&#xff0c;可控&#xff09; 方式二&#xff1a; &…

✅最新!自然指数中国科研机构百强名单,出炉!

【SciencePub学术】8 月 9 日&#xff0c;自然指数官网发布了最新的中国科研机构百强名单。名单根据各大机构2022年在自然科学领域的论文贡献份额进行排名。 其中&#xff0c;中国科学院以2053.76的论文贡献份额&#xff0c;位列榜首&#xff1b;中国科学院大学和中国科学技术…

PAT1044 Shopping in Mars

个人学习记录&#xff0c;代码难免不尽人意。 做了这么多题难得本题不看答案一遍过&#xff0c;很是激动。 Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the pa…

c++ | win vscode

vscode 适合新手做一些简单的单个的编译和调试 新手适合去配置c 环境&#xff0c;尤其是当涉及复杂一点的编程&#xff0c;如多文件、多线程&#xff0c;在调试的时候会头大&#xff0c;要求会高一点 但怎么说呢&#xff1f; c 编译和调试是最接近实际开发环境的&#xff0c;与…

06-2_Qt 5.9 C++开发指南_自定义对话框及其调用

本篇介绍到的对话框及其调用实例较为复杂但十分详细&#xff0c;如果做了解可以先参考&#xff1a;QT从入门到实战x篇_13_模态和非模态对话框创建。 文章目录 1. 对话框的不同调用方式2. 对话框QWDialogSize 的创建和使用2.1 创建对话框QWDialogSize2.2 对话框的调用和返回值 …

css内容达到最底部但滚动条没有滚动到底部

也是犯了一个傻狗一样的错误 &#xff0c;滚动条样式是直接复制的蓝湖的代码&#xff0c;有个高度&#xff0c;然后就出现了这样的bug 看了好久一直以为是布局或者overflow的问题&#xff0c;最后发现是因为我给这个滚动条加了个高度&#xff0c;我也是傻狗一样的&#xff0c;…

Vuex 使用教程

Vuex 各子模块的内部结构及作用 这是vuex的内部代码结构&#xff0c;所有的子模块都是一样的 state&#xff1a;存放数据状态&#xff1b; action&#xff1a;指派 mutation &#xff1b; mutation&#xff1a;修改state里面的状态&#xff1b; getter&#xff1a;侧重于对数据…

Mongodb:业务应用(2)

需求&#xff1a; 1、获取保存到mongodb库中的搜索记录列表 2、实现删除搜索记录接口 保存搜索记录数据参考上篇Mongodb&#xff1a;业务应用&#xff08;1&#xff09;_Success___的博客-CSDN博客 获取记录列表 1、创建controller package com.heima.search.controller.v1;…

模拟队列(c++题解)

实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 xx&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现在要对队列进行 MM 个操作&#xff0c;其中的…

GD32F103硬件I2C0通讯

GD32F103的I2C模块有I2C0和I2C1;本程序使用I2C0功能模块; I2C0引脚复用和重映射: 当I2C0_REMAP0时,I2C0引脚复用功能,I2C0_SCL映射到PB6引脚,I2C0_SDA映射到PB7引脚; 当I2C0_REMAP1时,I2C0引脚重映射,I2C0_SCL映射到PB8引脚,I2C0_SDA映射到PB9引脚; I2C1引脚只有复用引脚: I2C…

学习笔记-JVM-对象结构及生命周期

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 对象的创建流程 常量池检查:检查new指令是否能在常…

【2023最新美团笔试题目分析】“求最多出现数字及次数“、坦克大战在线对战游戏(问题描述 + 示例代码 + 时间复杂度分析)

弃幼少嬉戏堕慢之心,而衎衎于进德修业之志。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区特邀专家博主

helm 制作应用的离线安装包

helm 制作应用的离线安装包 1、安装helm 到helm下载对应的压缩包&#xff1a;https://github.com/helm/helm/releases 解压&#xff0c;将helm文件cp到/usr/local/bin/ 文件夹下&#xff0c;查看helm版本&#xff1b;不同的k8s对应不同的helm版本&#xff0c;下载时留心注意…

构建Docker容器监控系统(Cadvisor +InfluxDB+Grafana)

目录 案例概述 Cadvisor InfluxDBGrafana 1.1、 Cadvisor 1.2、InfluxDB 1.3、Grafana 1.4、监控组件架构 1.5、开始部署 安装docker-ce 阿里云镜像加速器 创建自定义网络 创建influxdb容器 案例概述 Docker作为目前十分出色的容器管理技术&#xff0c;得到大量企业…

【博客696】iptables中的-m addrtype --dst-type含义

iptables中的-m addrtype --dst-type含义 场景&#xff1a; 使用docker容器时&#xff0c;一定会在iptables的NAT表中看到下在这样的一条配置规则&#xff1a; -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER-m addrtype --dst-type解析 1、-m addrtype iptables提…

如何使用webpack打包一个库library,使用webpack打包sdk.

如何使用webpack打包一个库library 如果你需要自己封装一些包给别人使用,那么可以参考以下方法 初始化库 mkdir library cd library npm init -y经过以上步骤后会生成一个library文件夹&#xff0c;里面包含一个package.json文件。然后简单修改为如下所示&#xff1a; {&qu…

MongoDB:Unrecognized option: storage

MongoDB一直显示 Unrecognized option: storage try ‘mongod --help’ for more information 意思是我们配置的config文件出了问题。 说明&#xff1a;MongoDB采用的是YAML格式&#xff0c;所以我们只需要稍微改改就好。 在storage前面&#xff1a;没有空格 下面两行最前面…

matplotlib 判断鼠标是否点击在当前线上

在开发中有一个需求&#xff1a;对生成的一条线进行拖拽。 我将这个方法实现在线所在的类里&#xff0c;这个过程中需要判断鼠标是否点击在当前线上&#xff0c;从而实现拖拽。 实现代码如下&#xff1a; # 点击事件 def on_press(self,event):if event.inaxes ! self.ax:retur…