自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (1)
  • 收藏
  • 关注

原创 工作笔记11

http://www.docin.com/p-876046409.htmlhttps://blog.csdn.net/simanstar/article/details/21126209http://www.360doc.com/content/11/0527/16/930254_119801102.shtml 三维模型下载网址内存泄漏:将Gvld.h中的注释掉的内容打开性能查看工具Co...

2018-12-27 15:32:01 315

原创 知道两点和凸度的情况下,如何计算圆弧圆心、圆弧BOX包围盒

知道两点和凸度的情况下,如何计算圆弧圆心、圆弧BOX包围盒

2024-05-16 16:55:37 623

原创 导出类、基本运行时检查

#if defined FBC_EXPORT#define FBC_API __declspec(dllexport)#else#define FBC_API __declspec(dllimport)#endif导出类或函数C/C++ 代码生成 -》基本运行时检查,检查是否越界dll中类的成员变量变化后,编译dll后,假如exe中使用的dll,需要重新编译exe...

2022-03-18 16:32:53 754

原创 HENHMETAFILE 打印图片到剪切板

if (OpenClipboard()) { EmptyClipboard(); SetClipboardData(CF_ENHMETAFILE, hMF); HBITMAP hBitmap = ::CreateCompatibleBitmap(hdcScreen, lWidth, lHeight); HDC hMemDC = ::CreateCompatibleDC(hdcScreen); if (hBitmap != NULL && hMemDC ..

2021-11-05 16:48:12 278

原创 CTreeCtrl的使用:TVN_SELCHANGING、NM_CUSTOMDRAW消息

public: CTreeCtrl m_Tree; afx_msg void OnTvnSelchangingSeltree(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMCustomdrawTree(NMHDR *pNMHDR, LRESULT *pResult);BEGIN_MESSAGE_MAP(CBlockRefSelDlg, CDialog) ON_NOTIFY(TVN_SELCHANGING, IDC_BLK_SELTREE,

2021-07-21 17:20:31 377

原创 读写XML文件

读取XML文件 MSXML2::IXMLDOMDocumentPtr spDoc; HRESULT hr = spDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); ATLASSERT(SUCCEEDED(hr)); CComBSTR bsDataPath; m_spPathMng->GetLocalFullPath(PN_DATA, &bsDataPath); CString strFile = C...

2021-06-03 17:35:07 152

原创 HSL和RGB的相互转换

void CCxDbSolid::RGB2HSL(LONG cr, double &H, double &S, double &L){ double R, G, B, Max, Min, DelMax; byte *pTemp = (byte *)&cr; R = (double)*pTemp / 255.0; G = (double)*(pTemp + 1) / 255.0; B = (double)*(pTemp + 2) / 255.0; Min =

2021-05-13 11:14:23 1847

原创 读取UTF8等格式的文档

void GetFileDataFormatData(BSTR i_bsFilePathName){ m_vecPts.clear(); m_vecCurTypes.clear(); // 读文件 CStringArray StrArray; CString sFileName = COLE2T(i_bsFilePathName); try { FILE* f = NULL; _tfopen_s(&f, sFileName, _T("rb")); BYTE bom

2021-02-26 14:08:32 318

原创 创建纯色画刷、位图画刷填充

// 0. 大背景 HBRUSH hBrushBack = ::CreateSolidBrush(RGB(0, 0, 255)); HBRUSH hBrushOld = (HBRUSH)pDC->SelectObject(hBrushBack); POINT ptArrayBack[4]; ptArrayBack[0].x = 0; ptArrayBack[0].y = 0; ptArrayBack[1].x = 0; ptArrayBack[1].y = 1000; ptArray

2020-12-30 13:32:09 213

原创 GDI获得当前HDC的HPEN的颜色

INT i = ::GetROP2(hdc); /*HPEN hPen = ::CreatePen(PS_SOLID, 0, RGB(0, 255, 0)); ::SelectObject(hdc, hPen);*/ HPEN hPen = (HPEN)GetCurrentObject(hdc, OBJ_PEN); CPen *pPen = CPen::FromHandle(hPen); int color = 0; if (pPen) { UINT ui = p..

2020-11-16 21:38:12 3190 1

原创 CMetaFileDC的创建

int CALLBACK MyEnhMetaFileProc( _In_ HDC hDC, _In_ HANDLETABLE *lpHTable, _In_ const ENHMETARECORD *lpEMFR, _In_ int nObj, _In_ LPARAM lpData){ DWORD iType = lpEMFR->iType; return 1;} .

2020-11-12 22:27:16 652

原创 获取剪切板有格式的数组

void GetClipboardStr(BSTR *o_pbsText){ CString strText; if (IsClipboardFormatAvailable(CF_UNICODETEXT)) { OpenClipboard(NULL); if (IsClipboardFormatAvailable(CF_UNICODETEXT)) { HANDLE hGlobal = GetClipboardData(CF_UNICODETEXT); strText = .

2020-11-02 20:14:31 151

原创 PreTranslateMessage将WM_MOUSEWHEEL消息发送给子窗口

BOOL PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_MOUSEWHEEL: { POINT pos; pos.x = GET_X_LPARAM(pMsg->lParam); pos.y = GET_Y_LPARAM(pMsg->lParam); CRect Rect; m_wnd.GetWindowRect(&Rect); if (Rect.Pt

2020-11-02 10:16:41 514

原创 OnMouseMove消息需要注意OnMButtonDown、OnMButtonUp的位置

// 更加严谨的写法可以避免是Down和Up都发生在当前窗口void OnMButtonDown(UINT nFlags, CPoint point){ m_bMBttonDown = TRUE; SetCapture();}void OnMButtonUp(UINT nFlags, CPoint point){ if (m_bMBttonDown) { m_bMBttonDown = FALSE; ReleaseCapture(); }}void OnMouseMove

2020-11-02 10:12:09 626

原创 获得编辑框的文本区域大小

RECT rc; rc.left = rc.top = 1; rc.right = m_iWidth - 1; rc.bottom = m_iHeight - 1; // ES_NOHIDESEL用于Edit控件没有焦点的时候,也可以选中其中的内容,并加亮 DWORD dwStyle = WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL | ES_NOHIDESEL/*| WS_BORDER*/ ; m_EditCtrl.Creat.

2020-09-25 10:33:51 185

原创 对话框拦截控件消息

BOOL CQuickMosaicDlg::PreTranslateMessage(MSG* pMsg){ if (pMsg->message==WM_KEYDOWN) //键盘按下 { if (pMsg->hwnd==GetDlgItem(IDC_DATALIST)->m_hWnd) { switch (pMsg->wParam) { case 'A'://A键

2020-09-10 15:47:07 312

原创 获取HBITMAP,导出带透明度的png图片

// 从HDC 获取 HBitmap STDMETHOD(ExportHBitmap)(ULONG_PTR* o_hBitmap) { HBITMAP hBmp = NULL; HANDLE hOld; HDC hMemDC = NULL; long lRectPara[4]; GetWndRect(lRectPara); long nWidth = lRectPara[2]; long nHeight = lRectPara[3]; hMemDC = CreateC

2020-06-23 20:41:18 886

原创 三点求圆弧中心

作者:李玉昆链接:https://www.zhihu.com/question/40422123/answer/95637252来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。已知空间三个点,解算外接圆圆心坐标,C++编程实现struct PT3{ double x, y, z;};int solveCenterPointOfCircle(std::vector<PT3> pd, double centerpoint[]){ double

2020-06-08 16:21:52 678

原创 ATL::CImage将数据信息转为带透明度的png图片

//保存到磁盘上的png文件int iWidth = m_FrameBuffer.m_iSizeX;int iHight = m_FrameBuffer.m_iSizeY;CImage Image;Image.CreateEx(iWidth, -iHight, 32, BI_RGB, NULL, 0x000000FF);byte* fromByte = m_FrameBuffer.m_pBits;int nPitch = Image.GetPitch(), nBPP = Image.GetBPP

2020-06-02 21:23:22 296

原创 查看Message类型

2020-01-17 15:12:02 321

原创 Windows GDI 坐标空间和变换

void CWindowsPracticeView::OnDraw(CDC* pDC){ CWindowsPracticeDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; HDC hdc = pDC->m_hDC; // TODO: 在此处为本机数据添加绘制代码 // 第6章 坐标空间和变...

2019-11-29 16:19:07 300

原创 渐变色画刷:线性渐变画刷/路径渐变画刷

void GetRGB(LONG cr, byte& R, byte& G, byte& B){ byte *pTemp = (byte *)&cr; R = *pTemp; G = *(pTemp+1); B = *(pTemp+2);};void GetTightXYBox(XYZ* i_ptArray, long i_nPtsNum, XYZ...

2019-11-15 17:08:05 421

原创 计算程序运行时间

LONGLONG t1, t2, persecond; QueryPerformanceFrequency((LARGE_INTEGER *) &persecond); //询问系统一秒钟的频率 QueryPerformanceCounter((LARGE_INTEGER *) &t1); ...... QueryPerformanceCounter...

2019-10-16 17:25:54 107

原创 C++11一些新特性

右尖括号改进vector<vector > vec; // C++03vector<vector> vec; // C++11nullptrvoid f(int);void f(void*)f(0); // call f(int)f(NULL); // call f(int) 因为NULL的值为0F(nullptr); // call f(v...

2019-10-14 16:10:22 81

原创 OpenGL基础练习

#include "windows.h"#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <string>//#include "windows.h"// 纹理加载函数#include "stb_image.h"// 数学算法类#i...

2019-10-10 17:26:23 190

原创 LONG类型的最大值限制

intsafe.h关于最大最小值,保证不越界#define INT8_MAX 127i8#define UINT8_MAX 0xffui8#define BYTE_MAX 0xff#define SHORT_MAX 32767#define INT16_MAX 32767i16#define USHORT_MAX ...

2019-09-27 12:31:28 5124

原创 MFC文件选择对话框(支持多选)

void CSelectDlg::OnButselect() { // TODO: Add your control notification handler code here //声明变量 CString strPath = _T(""); //构造文件打开对话框 CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREA...

2019-09-18 23:11:35 1251

原创 CString 转换成TCHAR *的方法

方法一,使用强制转换。例如:CString theString( “This is a test” );LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;方法二,使用strcpy。例如:CString theString( “This is a test” );LPTSTR lpsz = new TCHAR[theString.GetLength()+1];...

2019-09-18 09:55:36 1277

原创 将数据导出excel

#include "stdafx.h"#include "ToExcel.h"//#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\MSO.DLL" #import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52" \ rename("RGB", "MSORGB") \...

2019-09-17 11:14:23 137

原创 调用MFC打开文件选择对话框

CFileDialog dlg(FALSE, _T("xlsx"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("EXCEL文件|*.xls;*.xlsx||"), this); if (dlg.DoModal() != IDOK) {  return; }

2019-09-16 23:18:03 266

原创 com写代码注意事项

应将 IGeCurve * spCurFirst, *spCurLast 写成 CComPtr spCurFirst, spCurLast想要遍历获得首曲线,可以不用bool变量来判断,可以判断获得首曲线是否为空

2019-09-16 23:15:45 81

原创 _tfopen_s打开文件返回的错误码信息

CComBSTR errorLog;errorLog += _T("1.查询目录:");errorLog += str1;errorLog += _T("\r\n");if( (err = _tfopen_s( &stream, str1, _T("r") )) ==0 ){ AddFont(cType,&LogFont,&ntme,str1,type);...

2019-08-03 22:41:31 1120

原创 CGridCtrlEx表格及限制表格输入数字和‘.’

CGridCtrlEx m_Grid;BOOL CDlgFillinTable::SetContentsByNumericCol() { CCellID currentCell = m_Grid.GetFocusCell(); CString strContents = m_Grid.GetItemText(currentCell.row,currentCell.col); if(st...

2019-08-03 22:39:08 429

原创 根据ini文件读取spb mdb文件信息

#include <iostream>#include <fstream>#include <map>#include <string> #include <io.h>#include <WINDOWS.H>#include <iosfwd>#include <vector>#inclu...

2019-08-03 22:31:24 148

原创 mfc的一些使用

//List View m_ListView.GetClientRect(&rect); m_ListView.SetExtendedStyle(m_ListView.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 为列表视图控件添加9列 CString heads[9] = {_T("时...

2019-07-01 21:33:03 99

原创 COM中的AddRef, Relesae, QueryInterface的实现代码

不使用ATL,手工实现一个COM时,你需要做哪些工作?请给出类定义与至少AddRef, Relesae, QueryInterface的实现代码。需要:接口的定义和实现,DLL暴露给COM库的几个重要函数:DllGetClassObject,CoGetClassObject,DllCanUnloadNow,DllRegisterServer,DllUnregisterServer,def文件i...

2019-06-30 23:42:00 422

原创 COM的使用

//导出函数void CTESTDlg::OnBnClickedButton1(){ // TODO: Add your control notification handler code here //1.加载动态库 HINSTANCE m_hDll = LoadLibrary(_T("MyFirstCom.dll")); //2.根据函数名获取函数地址 typedef ...

2019-06-30 23:39:34 419

转载 DLL中导出函数的两种方式(dllexport与.def文件)

DLL中导出函数的两种方式(dllexport与.def文件)DLL中导出函数的声明有两种方式:一种方式是:在函数声明中加上__declspec(dllexport);另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。方式一:在函数声明中加上__declspec(dllexport)/// 在动态链接库程序中//...

2019-06-30 23:34:35 863

原创 提高X64和WIN32的兼容性

不要轻易指针转化成 INT,因为这样32和64位的INT位不同,32为会截断,造成指针错误使用INT_PTR可以使32位和64位分别使用自己的定义来使用INT对于INT_PTR等使用 sizeof函数要慎重,因为获得的值是不同的...

2019-06-24 22:02:00 427

原创 使程序在cmbs和Unicode两种模式下都可以运行

用TCHAR可以兼容CHAR,WCHAR两种模式用_tgetenv(),_tfopen()代替 getenv(),fopen()TRACE(“弹出对话框!\n”);可以在输出框输出信息// ModifyMBCSDlg.cpp : implementation file//#include "stdafx.h"#include "ModifyMBCS.h"#include "Mo...

2019-06-24 21:54:26 129

MFCApplicationGL4.zip

通过设置欧拉角(俯仰角、偏航角)

2021-08-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除