
算法
zgl7903
iPad回帖太累人
展开
-
探测输入字符串是否为UTF8编码
#include <windows.h>#include <crtdbg.h>/*UTF-8 编码规则1字节 0BBBBBBB 2字节 110BBBBB 10BBBBBB 3字节 1110BBBB 10BBBBBB 10BBBBBB 4字节 11110BBB 10BBBBBB 10BBBBBB 10BBBBBB 5字节 111110BB 10BBBBBB 10BBBBBB 10BBBBBB 10BBBBBB 6字节 1111110B 10BBBBBB 10BBB.原创 2021-08-25 11:54:56 · 657 阅读 · 0 评论 -
由给定的端点和控制点 计算3次 Bezier 曲线
#include <math.h>//计算3次 Bezier 曲线//P0 P3 端点//P1 P2 控制点//ix 输入X//oy 输出Y//有效时返回truebool CalBezier3(POINT P0, POINT P1, POINT P2, POINT P3, double ix, double &oy){ double t, y, x1=0, x2=1, y1; //超过控制点范围? if(ix <P0.x || ix >P3..原创 2020-10-28 20:55:29 · 2335 阅读 · 0 评论 -
ODBC 枚举数据表名
#include <afxdb.h>class CDatabaseEx : public CDatabase{ DECLARE_DYNAMIC(CDatabaseEx)public: CDatabaseEx(){};public: int EnumTables(CStringArray &sTabs);};IMPLEMENT_DYNAMI...原创 2020-04-06 12:53:43 · 466 阅读 · 1 评论 -
MFC 数据项写入CSV文件
//将数据项写入CSV文件int PutCSVItemLine(FILE *file, CStringArray &sItemLine){ //准备行数据 CStringA sLineString; //循环取子项 for(INT_PTR nItem=0; nItem<sItemLine.GetSize(); nItem++) { //取子...原创 2020-02-25 13:14:27 · 2480 阅读 · 3 评论 -
CFileDialog 使用 OFN_ALLOWMULTISELECT 标志选择多个文件
CFileDialog dlg( TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, NULL, NULL ); DWORD MAXFILE = 2562; //2562 is the max TCHAR* pc = new TCHAR[MAXFILE * (MAX_PATH+1) + 1]; pc[0] = pc[1] = 0; d...原创 2010-09-01 07:19:00 · 7785 阅读 · 0 评论 -
基于状态机的 CSV 文件数据解析
#include <tchar.h>#include <afxtempl.h>#include <stdio.h>#include <string.h>#ifndef CStringA#define CStringA CString#endif //CStringA//解析CSV行数据核心代码//chLine 输入行//szDa...原创 2019-12-27 16:32:26 · 546 阅读 · 3 评论 -
对话框自己处理边框拖动
LRESULT CDlg2Dlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { enum _tagDragMask_t { _DragNull = 0x00, _DragLeft = 0x01, _DragTop = 0x02, _DragRi...原创 2019-11-23 16:00:16 · 371 阅读 · 0 评论 -
GDI+ 绘制模拟钟表
关键点: 窗口坐标(X轴向右,Y轴向下); 窗口角度逆时针; 关键函数DrawClock#if !defined(AFX_COLOCKSTATIC_H__619C9005_4652_45A8_BC24_801ECF6ED3EA__INCLUDED_)#define AFX_COLOCKSTATIC_H__619C9005_4652_45A8_BC24_801ECF6ED3EA__INCL...原创 2019-01-03 16:02:05 · 990 阅读 · 0 评论 -
由给定的点计算Bezier曲线
//计算 Bezier curve//cpt 端点及控制点//cn cpt的数量//st 准备计算多少步//pXY, X,Y的坐标输出BOOL CalBezier(POINT cpt[], int cn, int st, POINT *pXY){ int r,i,k; double t, t1; double coeffx[20], coeffy[20]; i...原创 2019-02-16 15:07:13 · 2867 阅读 · 1 评论 -
将读入的文本文件数据转换为UNICODE
//文本转换为UNICODE//pInByte 从文本文件读入的数据//iInBytesLen 原始数据字节长度//pWchString 返回转换后的UNICODE数据(以0结束)//返回转换后UNICODE数据长度int ConvertText2Unicode(const BYTE *pInByte, const int iInBytesLen, LPWSTR *pWchStr...原创 2019-04-02 10:51:36 · 1399 阅读 · 0 评论 -
GDI+绘制雷达图
欢迎拍砖#include <atlimage.h>using namespace Gdiplus;class CRadarDrawClass{public: //绘制的单元 typedef struct _tagRadarItem_t { WCHAR szName[64]; //名称 float fValue; //数值 ...原创 2019-05-28 18:42:57 · 982 阅读 · 0 评论 -
在内存创建对话框资源
//////////////////////////////////////////////////////////////////////////BaseDynDialog.h#pragma onceclass CBaseDynDialog : public CDialog{ DECLARE_DYNAMIC(CBaseDynDialog) public: ...原创 2019-05-30 18:26:04 · 508 阅读 · 0 评论 -
解决CFtpFileFind在Unicode版本下GetFileURL不能正确返回路径
最近看到 CFtpFileFind GetFileURL 不能正确返回路径在VS2008下测试了一下确实有BUG, 多字节版本下是正常的, 而UNICODE版本下没有后面的文件名大概调试追踪了一下, 先分析GetFileURLCString CFtpFileFind::GetFileURL() const{ ASSERT_VALID(this); ASSERT(m_hC...原创 2019-06-05 09:52:08 · 1011 阅读 · 0 评论 -
从CMFCPropertyGridProperty派生新类,实现点击时显示下拉列表
class CMFCPropertyGridPropertyCB : public CMFCPropertyGridProperty{// Constructionpublic: CMFCPropertyGridPropertyCB(const CString& strName, const COleVariant& varValue, LPCTSTR lpszDesc...原创 2019-08-09 07:03:58 · 1622 阅读 · 1 评论 -
RegNotifyChangeKeyValue 监控注册表变化
///////////////////////////////////////////////////////////////////////RegMonitorClass.h#pragma onceclass CRegMonitorClass{public: //标准构析函数 CRegMonitorClass(); ~CRegMonitorClass();prote...原创 2019-08-22 11:32:20 · 1817 阅读 · 0 评论 -
智能接收条码编辑框
以扫码枪回车作为区分, 下次输入时自动清除 // MyEdit.h : header file#pragma once#define WM_MYINPUT_MSG (WM_USER + 1000)/////////////////////////////////////////////////////////////////////////////// CMyEdit wi...原创 2018-11-09 09:22:56 · 313 阅读 · 0 评论 -
枚举多显示器信息 EnumDisplayMonitors 应用
class CMultiMonitorEnumerator{public: int m_iMontorNumber; typedef struct _tagVMonitorInfo_t { HMONITOR hMonitor; //显示器句柄 TCHAR szDevice[32]; //显示器名 RECT rcVirtual; //虚拟显示屏坐标 R...原创 2018-07-05 12:52:25 · 9442 阅读 · 0 评论 -
使用字符串构造一个FILE指针
typedef struct __FILEX : FILE { CRITICAL_SECTION lock; __FILEX(LPCSTR string) { memset(this, 0, sizeof(*this)); InitializeCriticalSection(&lock); _flag =...原创 2013-12-12 16:26:15 · 771 阅读 · 0 评论 -
Flash memory E2Rom 等常用到的页写算法
long xxxPageWrite(long uAddr, const void *pSrcData, long iLen){ #define PAGE_SIZE 128 //页面大小 #define MAX_ADDRESS 0x10000UL //最大地址 long iDoneBytes=0; //写入的长度 long iOffset, iNewWrLen; unsig原创 2016-04-07 10:55:19 · 1176 阅读 · 0 评论 -
数字按千分组格式化
LPCTSTR FormatThousandNumber(const INT64 iInVal){ static CString strVal; INT64 iVal = (INT64)(iInVal < 0 ? (-iInVal):(iInVal)); strVal.Empty(); do { CString szSub; szSub.Format(_T(原创 2016-07-15 21:05:55 · 517 阅读 · 0 评论 -
FormatMessage 格式化 GetLastError 错误代码
LPCSTR _FormatErrorMessage( LPCTSTR szReason, DWORD dwErrCode ){ static TCHAR szErrMsg[1024]; memset(szErrMsg, 0, sizeof(szErrMsg)); //DWORD dwErrCode = GetLastError(); //之前的错误代码 LPVOID lpM原创 2016-07-17 13:02:49 · 1120 阅读 · 0 评论 -
使用 StretchBlt 制作 缩略图标
使用 StretchBlt 制作 缩略图标原创 2016-08-19 17:35:15 · 1469 阅读 · 2 评论 -
MemBuffer 模板类
MemBuffer 模板类原创 2016-08-24 06:58:55 · 702 阅读 · 0 评论 -
CRC8
CRC8 计算//CRC8#define CRC8_POLY 0x31 //Polynomial 0x31(X8 + X5 + X4 + 1)#define CRC8_INIT 0xFF //Initialization 0xFFBYTE CRC8(const void *pInData, int iLen){ BYTE i, crc, *buf = (BYTE *)pIn原创 2017-02-27 12:54:39 · 1889 阅读 · 0 评论 -
等差数列应用——控制台输出沙漏
#includeint main(){ int i,j,k,l, a1, an, d, n, sn, iN, hN; while(1) { //输入N printf("\r\nPlease input N:"); scanf("%d", &iN); //小于1退出 if(iN < 1) break; //确定边界范原创 2017-03-11 16:28:17 · 556 阅读 · 0 评论 -
Uinx 时间戳的转换
Unix时间戳(Unix timestamp), 定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。原创 2017-10-14 16:47:53 · 1382 阅读 · 0 评论 -
热键管理
#include class CWndHotKeyManage{protected: typedef struct _tagWKItem_t { HWND hWnd; // window to receive hot-key notification int id; // identifier of hot key UI原创 2017-12-15 21:23:05 · 439 阅读 · 0 评论 -
解析和创建快捷方式
#include #include BOOL ResolveShortCut(LPCSTR pszShortcutFile, CHAR pszPath[MAX_PATH+1], CHAR szDescription[MAX_PATH+1]){ BOOL bRet = FALSE; *pszPath = 0; // assume原创 2017-12-15 21:28:19 · 384 阅读 · 0 评论 -
计算[s,e]线段是否经过rc区域
//计算[s,e]线段是否经过rc区域BOOL isLineInRetc(const RECT rc, const POINT s, const POINT e){ BOOL bRet = FALSE; //两点式计算与边界的交点 // y = (y2-y1)/(x2-x1)*(x-x1) + y1; double x1 = s.x, y1 = s.y; double x...原创 2018-03-30 10:17:47 · 579 阅读 · 0 评论 -
查表法计算CRC32
#include <stdio.h>#include <stdlib.h>#include <string.h> typedef unsigned long u_int32_t;typedef unsigned char u_char; static const u_int32_t crc32tab[256] = { 0x00000000UL...原创 2018-04-15 10:20:07 · 3935 阅读 · 0 评论 -
求一组战力值最大算法
在论述上看到此问题,觉得有点意思,写段代码 欢迎大家测试拍砖typedef struct _tagCard_t{ int iCost, iValue; _tagCard_t() { iCost = iValue = 0; }}CARD;template struct CardSelct{ int bSelected[NUM]; int原创 2013-12-03 09:48:45 · 1096 阅读 · 0 评论