MFC 常用控件

目录

一、控件的交互方式

二、CButton/CheckBox/RadioButton

三、EditControl

四、ListBox

五、ComBox

六、Progress/Timer

七、PictureController

八、ListControl

九、Tree


一、控件的交互方式

得到控件的类的对象,就可以通过这个对象来操作类

CWnd* GetDlgItem(int nID) const;

添加变量-值/对象

这两个都是在父窗口类中进行添加的

  • 添加变量,就可以获得控件的值,会在构造函数初始化,并且关联绑定,与UpdateData配合使用
  • 添加控件,就可以通过对象来操作控件,会进行关联绑定

响应控件事件

这些都是交互控件的方式都是要在父窗口类中进行比较好

二、CButton/CheckBox/RadioButton

这个三个控件类的父类都是CButton

单选框处理

一般主要是为了获得单选框选择的内容,所以要为单选框添加变量-值

多个单选框要注意Group这个属性,在第一个要勾选上。

一般会添加一个 int 型变量,多个对话框,值是按照TAB(CTRL+D)顺序从低到高从0开始加1

构造函数中初始化为 -1

在这个函数中完成关联绑定

对于单选框值的处理可以使用 switch 进行处理

多选框处理

使用BOOL数组处理对话框

关联与初始化

按钮处理

按钮的话,一般是响应消息;或者控制按钮禁用,通过使用disabled属性

IsWindowEnabled():判断当前窗口是否可点;

EnableWindow():设置当前窗口是否可点

需求:点击确定后,会弹出选择结果,之后另外一个按钮由不可点切换到可点的状态。

思路:响应按钮控件消息

void CMFCCommonItemDlg::OnBnClickedBtnResult()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData();
	if (m_sex == -1)
	{
		MessageBox(_T("请选择性别"), _T("性别确实"), MB_OK | MB_ICONEXCLAMATION);
		return;
	}
	CString strMsg = CString(_T("您的性别是: ")) + ((m_sex == 0) ? _T("男") : _T("女")) + _T("\n");
	CString strFav = _T("");
	CString Favs[3] = { _T("足球"),_T("篮球"),_T("瑜伽") };

	for (int i = 0; i < 3; i++)
	{
		if (m_fav[i])
		{
			strFav += Favs[i];
		}
	}
	if (strFav.GetLength() > 0)
	{
		strMsg += _T("您的爱好是:") + strFav;
	}
	else
	{
		strMsg += _T("您没有任何爱好! ");
	}
	MessageBox(strMsg, _T("结果展示"));
	CWnd* pTestBtn = GetDlgItem(IDC_BUTTON3);
	if (pTestBtn->IsWindowEnabled() == FALSE)
	{
		pTestBtn->EnableWindow(TRUE);
	}
	else
	{
		pTestBtn->EnableWindow(FALSE);
	}
}

三、EditControl

编辑框需要关注以下这个控件的属性,属性栏中点击属性看看下面的解释就明白了

diabled与onlyread一摸一样,就是文字是否灰色,后者还可选中,两者均不可编辑

想要实现编辑框多行文本,启动多行属性后,确定按钮会自动截胡Enter回车键,需要启用wantreturn,来让编辑款响应这个消息

Tapstop,就是按下tab键是否可以停到编辑框中

// 获得文本框控件
CEdit* edit =  (CEdit*)GetDlgItem(IDC_EDIT1);
// 获取文本
edit->GetWindowText(text);
// 设置文本
edit->SetWindowText(_T(""));
//文本发生改变
ON_EN_CHANGE(IDC_EDIT_TEXT, &CMFCCommonItemDlg::OnEnChangeEditText)

遇到了一个很难绷的bug,偷个懒给编辑框使用默认的ID,resource.h文件中未出现错误,但是在父窗口类添加控制变量是关联错误,最后发现是VS2019把这个IDC_EDIT解析到IDC_FAMALE上

四、ListBox

列表的属性可以在VS上看看,都有说明,一般默认即可,选择这个属性一定要选上多行(血的教训)

一般处理方式:要获取选中内容,需要一个控件变量

给列表添加控件变量-控件类型,通过这个对象可以拿到对象的选择数据

构造函数初始化列表

处理列表选择

void CMFCCommonItemDlg::OnBnClickedBtnTest()
{
	// TODO: 在此添加控件通知处理程序代码

		// TODO: 在此添加控件通知处理程序代码

		// TODO: 在此添加控件通知处理程序代码
	CString strText;
	// 获取选择总数
	int total = m_company.GetSelCount();
	if (total == 0)
	{
		MessageBox(_T("没有选中任何公司"));
		return;
	}
	else
	{
		// 堆上开辟数组
		int* index = new int[total];
		strText += _T("你选中了");
		TCHAR buf[32] = _T("");
		//total 转换的整数值
		//buf 存储转换结果的缓冲区指针
		//32 是缓冲区的大小
		//10 表示使用十进制进行转换。
		_itow_s(total, buf, 32, 10);
		strText += buf;
		strText += _T("个公司\n");
		//用于获取选择的项目或条目保存到index
		m_company.GetSelItems(total, index);
		CString strTemp;
		for (int i = 0; i < total; i++)
		{
			m_company.GetText(index[i], strTemp);
			strText += strTemp + _T("");
		}
		delete[] index;
		MessageBox(strText);
	}
}

五、ComBox

下拉列表由两部分组成,一部分是编辑框,一部分是单选;

当下拉列表属性类型为:Simple时,就没有编辑框的功能;DROWLIST时,有编辑框的功能。

可以在Data中编辑下拉列表的内容,;隔开

其他属性一般默认即可

给两个编辑框添加控件变量用来获取控件的选择内容和编辑框内容

void CMFCCommonItemDlg::OnBnClickedBtnTestDroplist()
{
	// TODO: 在此添加控件通知处理程序代码

	int cur = m_Simple.GetCurSel();
	if (cur == -1)
	{
		TRACE("%s(%d):当前没有选中任何列\n", __FILE__, __LINE__);
	}
	else
	{
		TRACE("%s(%d):当前没有选中第%d列\n", __FILE__, __LINE__, cur + 1);
		CString tmp;
		m_Simple.GetLBText(cur, tmp);
		MessageBox(tmp);
	}
	cur = m_listDrop.GetCurSel();
	CString tmp;
	if (cur == -1)
	{
		TRACE("%s(%d):当前没有选中任何列\n", __FILE__, __LINE__);
		m_listDrop.GetEditSel();  // 获取下拉列表编辑框的字符数量
		m_listDrop.GetWindowText(tmp);  // 获取编辑框内容
		MessageBox(tmp);
	}
	else
	{
		TRACE("%s(%d):当前没有选中第%d列\n", __FILE__, __LINE__, cur + 1);
		m_listDrop.GetLBText(cur, tmp);
		MessageBox(tmp);
	}
}

六、Progress/Timer

进度条的属性没什么值得关注的,一般使用默认即可,

进度条类的常用方法

// 设置进度条的范围是 0~10000
m_progress.SetRange(0, 10000);// SetRange32();可设置范围更大

// 获取当前进度
int pos = m_progress.GetPos();

// 设置当前进度
m_progress.SetPos(pos + 500);

// 获取进度条最大值,最小值
int low, upper;
m_progress.GetRange(low, upper);

一般使用方式:

给父窗口类添加一个进度条对象变量,再在父窗口类中增加一个成员变量来管理进度值,在初始化函数中初始化为0,同时设置进度条

配合定时器使用,设置两个定时器,处理消息WM_TINER

void CMFCCommonItemDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	static int count = 0;
	if (nIDEvent == 99)
	{
		m_progress.SetPos(m_progress_pos);
	}
	else if (nIDEvent == 10)
	{
		TRACE("%s(%d):%s %d\n", __FILE__, __LINE__, __FUNCTION__, GetTickCount());
		int low, upper;
		m_progress.GetRange(low, upper);
		if (m_progress_pos >= upper)
		{
			KillTimer(10);
		}
		else
		{
			m_progress_pos += 10;
		}
	}
	CDialogEx::OnTimer(nIDEvent);
}

第一个定时器作用是更新定时器,第二个是增加进度。

七、PictureController

想要加载图片资源,需要先在对话框的属性 ACCEPT FILE中选为 TRUE

要处理对话框的 WM_DROPFILES 消息;PictureController要选择对应的图片属性

位图要选择BITMAP,图标要选择ICON类型

给PictureController添加控件变量

void CMFCCommonItemDlg::OnDropFiles(HDROP hDropInfo)
{
	// 得到拖曳进入对话框文件数量
	int count = DragQueryFile(hDropInfo, -1, NULL, 0);
	TCHAR sPath[MAX_PATH];
	char mbsPath[MAX_PATH * 2];
	for (int i = 0; i < count; i++)
	{
		memset(sPath, 0, sizeof(sPath));
		memset(mbsPath, 0, sizeof(mbsPath));
		// 获取文件名
		DragQueryFile(hDropInfo, i, sPath, MAX_PATH);
		size_t total = 0;
		wcstombs_s(&total, mbsPath, sizeof(mbsPath), sPath, MAX_PATH);
		TRACE("%s(%d):%s %s\n", __FILE__, __LINE__, __FUNCTION__, mbsPath);
		if (CString(sPath).Find(_T(".ico")))
		{
			HICON hIcon = (HICON)LoadImage(AfxGetInstanceHandle(), sPath, IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE);
			m_picture.SetIcon(hIcon);
		}
	}
	// 重回,显示图片
	InvalidateRect(NULL);

	CDialogEx::OnDropFiles(hDropInfo);
}

DragQueryFile 是一个 Windows API 函数,通常用于检索拖放操作中的文件信息。它可以获取拖放操作中被拖动的文件的文件名或者文件数量等信息。

这个函数的原型如下:

UINT DragQueryFile(
  HDROP hDrop,
  UINT  iFile,
  LPTSTR lpszFile,
  UINT  cch
);

参数说明:

  • hDrop:标识拖放操作的句柄。
  • iFile:要检索的文件的索引,从零开始计数。
  • lpszFile:用于接收文件名的缓冲区。
  • cch:缓冲区的大小,以字符为单位。

DragQueryFile 函数可以通过指定的索引值 iFile 来依次获取拖放操作中所涉及的文件名。当 iFile 为 0xFFFFFFFF 时,它将返回拖放操作中包含的文件数量。

使用 DragQueryFile 函数,你可以方便地在拖放操作结束后获取拖放的文件信息,从而进行相应的处理和操作。

这行代码使用了 wcstombs_s 函数来将宽字符字符串转换为多字节字符字符串。让我详细解释一下每个参数的作用:

  • &total:这是一个指向 size_t 类型的变量的指针,用来存储成功转换的字符数(不包括终止的空字符)。在函数调用后,total 会被设为转换后的字符数。
  • mbsPath:这是目标多字节字符缓冲区的指针,用来存储转换后的多字节字符串。
  • sizeof(mbsPath):这是目标缓冲区的大小,表示可以存储的最大字符数。
  • sPath:这是源宽字符字符串的指针,需要进行转换的原始字符串。
  • MAX_PATH:这是源宽字符字符串的最大长度。

HICON hIcon = (HICON)LoadImage(AfxGetInstanceHandle(), sPath, IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE);

这行代码使用了 LoadImage 函数来加载图标文件,并将加载后的图标句柄存储在 hIcon 变量中。让我逐个解释每个参数的含义:

  • AfxGetInstanceHandle():这是 MFC 框架提供的函数,用于获取当前实例的模块句柄。
  • sPath:这是包含图标文件路径的字符串,指定要加载的图标文件的完整路径。
  • IMAGE_ICON:这个参数指定了要加载的是一个图标而不是位图。
  • 0 和 0:这两个参数分别表示期望的图标的宽度和高度。由于我们使用了 LR_DEFAULTSIZE 标志,这里的宽度和高度参数可以被忽略。
  • LR_LOADFROMFILE | LR_DEFAULTSIZE:这是加载图标的一组标志,LR_LOADFROMFILE 表示从文件加载图标,LR_DEFAULTSIZE 表示使用默认的图标尺寸。

综合起来,这行代码的作用是从指定的文件路径加载图标,并将加载后的图标句柄存储在 hIcon 变量中。加载后的图标可以用于后续的显示或其他操作。

AfxGetInstanceHandle 是一个 MFC(Microsoft Foundation Class)框架提供的函数,它用于获取当前实例的模块句柄。在 MFC 应用程序中,每个窗口或对话框都属于一个实例,而 AfxGetInstanceHandle 可以用来获取当前实例的模块句柄。

模块句柄是操作系统中用来标识模块(如可执行文件或动态链接库)的唯一标识符。在 Windows 程序中,模块句柄可以用于加载资源、注册类、处理消息等操作。

在这个特定的代码片段中,AfxGetInstanceHandle() 被用作 LoadImage 函数的第一个参数,以指示从哪个模块中加载图标文件。通过使用 AfxGetInstanceHandle,可以确保从当前应用程序实例的模块中加载图标文件。

八、ListControl

ListControl 属性中VIEW一般使用LIST,或者REPORT;始终显示选中内容设置为TRUE;单选可以设置选择,单选/多选,给一个控件变量

初始化在OnInitDialog中

	// 设置背景颜色
	m_listData.SetBkColor(RGB(128, 255, 64));
	// 设置文本背景颜色
	m_listData.SetTextBkColor(RGB(128, 255, 64));
	// 插入列 LVCFMT_LEFT 文本左对齐
	m_listData.InsertColumn(0, _T("CHECK"), LVCFMT_LEFT, 200);
	m_listData.InsertColumn(1, _T("IP"), LVCFMT_LEFT, 140);
	m_listData.InsertColumn(2, _T("ID"), LVCFMT_LEFT, 240);
	m_listData.InsertColumn(3, _T("序号"), LVCFMT_LEFT, 50);
	// "DWORD" 是 Windows API 中定义的一种数据类型,代表双字(Double Word),即 32 位的无符号整数。
	// GetExtendedStyle 函数来获取列表视图控件(List View Control)的扩展样式
	DWORD extStyle = m_listData.GetExtendedStyle();

	// LVS_EX_FULLROWSELECT 表示在列表视图控件中选中整行而不是仅选中单元格。
	extStyle |= LVS_EX_FULLROWSELECT;
	// LVS_EX_GRIDLINES 表示在列表视图控件中显示网格线。
	extStyle |= LVS_EX_GRIDLINES;
	// LVS_EX_CHECKBOXES 表示在列表视图控件中显示复选框。
	extStyle |= LVS_EX_CHECKBOXES;

	// 设置拓展样式
	m_listData.SetExtendedStyle(extStyle);

	m_listData.InsertItem(0, CString("FALSE")); // 序号
	m_listData.SetItemText(0, 1, _T("192.168.0.1")); // IP
	m_listData.SetItemText(0, 2, _T("283749283747298")); // ID
	m_listData.SetItemText(0, 3, _T("0")); // CKECK
	m_listData.InsertItem(1, CString("TRUE"));
	m_listData.SetItemText(1, 1, _T("192.168.0.1")); // IP
	m_listData.SetItemText(1, 2, _T("283749283747298")); // ID
	m_listData.SetItemText(1, 3, _T("0")); // CKECK

处理

void CMFCCommonItemDlg::OnBnClickedBtnList()
{
	// TODO: 在此添加控件通知处理程序代码

	// 获取选中了多少行
	int lineCount = m_listData.GetItemCount();
	// 获取列表视图的头部控件
	CHeaderCtrl* pHeader = m_listData.GetHeaderCtrl();
	// 从头部控件中获取列的数量
	int coloumnCount = pHeader->GetItemCount();
	// 获取每一个文本
	// 遍历行
	for (int i = 0; i < lineCount; i++)
	{
		// 当前行是否被选中
		if (m_listData.GetCheck(i))
		{
			TRACE("%s(%d):%s %s\n", __FILE__, __LINE__, __FUNCTION__, "选中");
		}
		else
		{
			TRACE("%s(%d):%s %s\n", __FILE__, __LINE__, __FUNCTION__, "未选中");
		}
		// 遍历列
		for (int j = 0; j < coloumnCount; j++)
		{
			CString temp = m_listData.GetItemText(i, j);
			char text[256];
			memset(text, 0, sizeof(text));
			size_t total;
			// 控件中往往是宽字节编码
			wcstombs_s(&total, text, sizeof(text), temp, temp.GetLength());
			TRACE("%s(%d):%s %s\n", __FILE__, __LINE__, __FUNCTION__, text);
		}
	}
}

九、Tree

属性没什么值得关注的,默认的即可

一般会使用一个图片类存储图,CImageList 是 MFC 中用来管理图像列表的类,它可以用于存储和管理一系列的图标或位图,并提供了方便的方法来对这些图像进行操作。一般来说,CImageList 对象通常用于在界面控件中显示图标,比如在树形控件、列表控件或工具栏中。

初始化

	m_icons.Create(IDC_TREE_TEST, 32, 3, 0);
	m_tree.SetImageList(&m_icons, TVSIL_NORMAL);
	HTREEITEM hRoot = m_tree.InsertItem(_T("root"), 0, 1);
	HTREEITEM hLeaf1 = m_tree.InsertItem(_T("leaf"), 2, 1, hRoot);
	m_tree.InsertItem(_T("sub"), 2, 1, hLeaf1);
	HTREEITEM hLeaf2 = m_tree.InsertItem(_T("leaf"), 2, 1, hRoot);
	m_tree.InsertItem(_T("sub"), 2, 1, hLeaf2);

CImageList::Create 方法用于创建一个图像列表,并且可以从资源中加载位图来初始化这个图像列表。下面是这个方法的参数含义:

  • nBitmapID:指定了包含图像资源的位图资源的 ID。
  • cx:指定了图像的宽度(以像素为单位)。
  • nGrow:指定了当图像列表中的图像数量超过当前分配的空间时,图像列表应该如何增长的标志。这通常设置为零,表示不进行增长。
  • crMask:指定了透明色的颜色值,用于创建具有透明效果的图像列表。当图像中包含此颜色值时,它会被视为透明部分。

m_tree.SetImageList(&m_icons, TVSIL_NORMAL);

这行代码将图像列表对象 m_icons 关联到树形控件 m_tree 上。具体来说,SetImageList 方法的参数含义如下:

  • 第一个参数 &m_icons 是指向图像列表对象的指针,表示要关联的图像列表。
  • 第二个参数 TVSIL_NORMAL 表示把图像列表应用到树形控件的普通状态图标上。

通过这个操作,树形控件就可以使用图像列表中的图标来显示节点的图标了。

处理 

void CMFCCommonItemDlg::OnTvnSelchangedTreeTest(NMHDR* pNMHDR, LRESULT* pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码

	// 获取了树形控件中选中项的数量
	UINT nCount = m_tree.GetSelectedCount();
	if (nCount > 0)
	{
		// GetSelectedItem 函数获取当前选中项的句柄 hSelect
		HTREEITEM hSelect = m_tree.GetSelectedItem();
		// 使用 GetItemText 函数获取选中项的文本内容
		CString strText = m_tree.GetItemText(hSelect);
		char sText[256] = "";
		size_t total;
		wcstombs_s(&total, sText, sizeof(sText), strText, strText.GetLength());
		TRACE("%s(%d):%s %s\n", __FILE__, __LINE__, __FUNCTION__, sText);
	}

	*pResult = 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Framework 6.1 正式 GA

Spring Framework 6.1在运行时方面针对 JDK 21 和 Jakarta EE 10 上提供了一级支持&#xff0c;同时保留了 JDK 17 和 Jakarta EE 9 基线。Spring 还通过精细的元数据推理跟踪 GraalVM for JDK 21 的演变&#xff0c;同时暂时保持与 GraalVM 22.3 的兼容性。 主要变化 支持 JD…

解决终端自暂停的问题 关闭快速编辑模式 python代码暂停

问题描述&#xff1a; 在windows10终端中运行的python出现自暂停或者是点击鼠标后出现暂停&#xff0c;敲回车或空格它才继续运行。 解决方法 注意&#xff1a;windows不能针对所有命令行统一设置&#xff0c;只能单个程序去设置。 半永久 在终端右键点击属性 取消勾选快速…

自注意力机制理解

当理解自注意力机制时&#xff0c;可以想象一个句子级别的文本输入作为示例。假设我们有以下句子&#xff1a;“The cat is eating fish”。现在我们将这个句子转换成词嵌入向量序列&#xff1a; (给定有值的只是示例&#xff0c;方便理解&#xff0c;以下都是这样&#xff09…

clion2020 中文版安装

一 程序安装 安装包地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1EJsmgmZcCQHoKDECkxmeaw?pwd1111 提取码&#xff1a;1111

C++构造函数和析构函数

构造函数和析构函数的由来 手机有出厂设置&#xff0c;在不用这个手机的时候我们也会清理这个手机的隐私内容。C面向对象的思想来源于生活&#xff0c; 每个对象也应该有初始设置 和 对象销毁前要清理个人隐私数据。 类的构造函数对应于手机的初始化。 类的析构函数对应于手机…

【开源】基于Vue.js的音乐偏好度推荐系统的设计和实现

项目编号&#xff1a; S 012 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S012&#xff0c;文末获取源码。} 项目编号&#xff1a;S012&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1…

PHP 中传值与传引用的区别,什么时候传值什么时候传引用?

传值&#xff1a;当使用传值的方式时&#xff0c;函数或方法会创建原始变量的一个副本&#xff0c;并将该副本传递给函数或方法。在函数或方法内部&#xff0c;对副本的任何修改都不会影响到原始变量。当函数或方法执行完毕后&#xff0c;副本被销毁&#xff0c;不再使用。 传引…

【入门篇】1.5 redis 客户端Jedis和Lettuce对比详解

文章目录 0. 前言1. Lettuce 与Jedis 对比2.详解2.1 线程安全2.2 阻塞/非阻塞2.3 集群支持2.4 PUB/SUB模型2.5 二进制协议 3. 参考资料 0. 前言 对于Java开发者来说&#xff0c;Jedis和Lettuce是两种非常常见的Redis客户端&#xff0c;他们可以帮助开发者更容易地在Java应用中…

多媒体ffmpeg学习教程

多媒体ffmpeg 目前比较流行的音视频文件为:MP4 flv m3u8 ffmpeg ffmpeg ffplay ffprobe ffserverffmpeg -i INPUT -vf "split [main][tmp]; [tmp] cropiw:ih/2:0:0, vflip [flip];[main][flip] overlay0:H/2" OUTPUTffmpeg -i 2022.mp4 -vcodec mpeg4 -b:…

YOLO目标检测——无人机检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;无人机识别数据集说明&#xff1a;无人机检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yolo(txt)三种格式标签…

软件安利——火绒安全

近年来&#xff0c;以优化、驱动、管理为目标所打造的软件屡见不鲜&#xff0c;大同小异的电脑管家相继走入了公众的视野。然而&#xff0c;在这日益急功近利的社会氛围驱动之下&#xff0c;真正坚持初心、优先考虑用户体验的电脑管家逐渐湮没在了浪潮之中。无论是鲁大师&#…

2023年【P气瓶充装】报名考试及P气瓶充装复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年P气瓶充装报名考试为正在备考P气瓶充装操作证的学员准备的理论考试专题&#xff0c;每个月更新的P气瓶充装复审考试祝您顺利通过P气瓶充装考试。 1、【多选题】充装过程中出现充气头漏气的主要原因为&#xff1…

python 对图像进行聚类分析

import cv2 import numpy as np from sklearn.cluster import KMeans import time# 中文路径读取 def cv_imread(filePath, cv2_falgcv2.COLOR_BGR2RGB): cv_img cv2.imdecode(np.fromfile(filePath, dtypenp.uint8), cv2_falg) return cv_img# 自定义装饰器计算时间 def…

C++知识点总结(6):高精度乘法

一、高精度数 低精度数 1. 输入两个数字 char a_str[1005] {}; long long b; cin >> a_str >> b; 2. 将高精度数转换为整型 int a[1005] {}; int len_a strlen(a_str); for (int i 0; i < len_a-1; i) {a[len_a-i-1] a_str[i] - 48; } 3. 计算 int …

2.3 调用智谱 API

调用智谱 API 1 申请调用权限2 调用智谱 AI API3 使用 LangChain 调用智谱 AI参考&#xff1a; 智谱 AI 是由清华大学计算机系技术成果转化而来的公司&#xff0c;致力于打造新一代认知智能通用模型。公司合作研发了双语千亿级超大规模预训练模型 GLM-130B&#xff0c;并构建了…

【Python】Loguru模块更简洁的日志记录库

Loguru: 更优雅的日志记录解决方案&#xff01; loguru 是一个Python 简易且强大的第三方日志记录库&#xff0c;该库旨在通过添加一系列有用的功能来解决标准记录器的注意事项&#xff0c;从而减少 Python 日志记录的痛苦。 使用自带自带的 logging 模块的话&#xff0c;则需要…

机器学习笔记 - 使用 PyTorch 的多任务学习和 HydraNet

一、HydraNet简述 特斯拉使用了一个模型可以解决他们正在处理的每一项可能的任务。 例如:物体检测、道路曲线估计、深度估计、3D重建、视频分析、物体追踪、ETC等等。 以下是在 NVIDIA GPU 上以 3 种不同配置运行的 2 个计算机视觉模型的基准测试。 在第一个配置中,我…

柯桥会计培训|中级会计职称,考过中级,可以从事哪些工作?

拿下中级会计证书后&#xff0c;可以从事哪些工作呢&#xff1f;一起来看看吧~ 财务经理 财务经理可以说是会计人梦寐以求的岗位&#xff0c;上可以和老板畅聊公司财务情况&#xff0c;下可以管理整个财务部。但是在财务管理水平日益成为企业核心竞争力的今天&#xff0c;企业…

软件工程--软件过程学习笔记

本篇内容是对学校软件工程课堂内容的记录总结&#xff0c;部分也来源于网上查找的资料 软件过程基础 软件过程是指在软件开发过程中&#xff0c;经过一系列有序的步骤和活动&#xff0c;从问题定义到最终软件产品交付和维护的全过程。这个过程旨在确保软件项目能够按时、按预…

AWS EC2、阿里云ECS、腾讯云CVM初步对比

作为国内外的头部云厂商&#xff0c;AWS、阿里云、腾讯云都有着相似功能的云产品&#xff0c;而作为云上最基础的资源就是云服务器——一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件&#xff0c;即可迅速创建…