- 博客(18)
- 资源 (4)
- 收藏
- 关注
原创 编译和链接
编译预处理 Prepressinggcc -E xx.c -o xx.i (cpp xx.c > xx.i)主要处理源代码中以#开始的预编译指令,如#include #define等- 将所有#define删除,并且展开所有的宏定义- 处理#include,将被包含的文件插入到该预编译指令的位置- 删除所有注释- 添加行号和文件名标识- 保留所有的#param指令,因为编译器需要他们编译 Compliationgcc -S xx.c -o xx.s (as)
2021-08-17 19:54:54
115
原创 linux 非阻塞 connect 注意事项
bool EnableBlockSocket(bool bEnable){ INT nResult = -1; INT nOption = fcntl(m_nFD, F_GETFL, 0); if (nOption >= 0) { if (bEnable) { nOption &= ~O_NONBLOCK; } else { nOp...
2019-06-14 16:26:47
309
转载 VS使用自定义代码片段实现快速注释
参考:https://blog.youkuaiyun.com/menghuangxiao/article/details/77245688使用代码片段完成快速注释使用方法:在vs中选择工具->代码片段管理器->导入shortcut为快捷键设置<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xml...
2018-08-31 16:45:23
2638
1
原创 c++ 使用变量控制小数点位数
CString str;int n = 3;float f = 3.1415926;str.Format(_T("%%.%df"), n);str.Format((LPCTSTR)str, f);
2018-05-16 14:26:52
2272
原创 vs下编译qt项目,qrc资源问题
遇见的问题:按照qt资源管理器,设置前缀和资源别名,然后使用QPixmap使用资源,发现取得大小为0。解决过程:在网上搜索没有找到类似的问题,对于初学者来说这个是相当费时间的事情。最后究其原因是因为vs不会自动加载qrc文件,因为qrc我是在qt中加载的,手动在vs中加载qrc文件即可成功解决问题。下次看下怎么在vs中直接创建qrc资源文件
2017-05-30 00:14:44
1833
原创 MFC截屏、绘制并复制到剪切板
CDC* pScreenDc = CDC::FromHandle(::GetDC(NULL)); //屏幕DC CDC memDc; // 内存DC CBitmap memBmp; CBitmap* pOldBmp; int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); memDc
2015-09-01 17:10:40
1852
原创 MFC combbox级联使用
combbox的级联使用,当选择一个combbox的时候,例外一个combbox根据第一个选择变化而变化1. 新建一个基于对话框的MFC工程,在对话框上添加两个combbox控件2. 对combox控件添加对象的变量,这里为m_combProv 和 m_combCity,另外还需要个结构体来放置内容std::multimap m_mumapCity;(需要包含map头文件)3 添加第一
2015-06-15 09:40:56
1370
原创 mfc判断组合键和大小写开关
判断组合键可以在PreTranslateMessage虚函数中完成,也可以在wm_keydown中wm_syskeydown(主要处理alt键)中eg:SHORT GetKeyState( int nVirtKey ); 函数的使用详见MSDN在PreTranslateMessage(MSG* pMsg)中判断是否同时按下“ctrl+L”或者“Alt+L”:
2015-06-04 16:50:49
1387
转载 PreTranslateMessage作用和使用方法
在转载的基础上添加了一些自己的新东西进去PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当需要在MFC之前处理某些消息时,常常要在这里添加代码. MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,可以改变MFC的消息控
2015-06-04 16:04:18
878
转载 STL中list的erase()方法
STL中list的erase()方法erase()方法是删除iterator指定的节点 但是要注意的是在执行完此函数的时候iterator也被销毁了 这样的话关于iterator的操作就会报错 以下是关于erase()方法的正确使用 正确使用方法1 std::list< int> List; std::list< int>::iterator itL
2015-04-19 22:44:30
908
原创 MFC在MM_ANISOTROPIC映射模式下使用双缓冲
OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)设置映射模式pDC->SetMapMode(MM_ANISOTROPIC); CRect rcClient; GetClientRect(rcClient); int cx = rcClient.Width(); int cy = rcClient.Height(); pDC->SetViewp
2015-03-24 11:09:44
1599
原创 MFC 消息映射 消息传递MESSAGE_MAP 读深入浅出MFC感悟
三种消息 标准的windows消息如WM_PAINT 命令消息(菜单和工具栏)WM_COMMAND 通知消息(对话框函数中)WM_NOTIFY(Windows9x新控件不在发送WM_COMMAND,而是发送WM_NOTIFY,但之前的旧控件如edit listbox combobox仍然发WM_COMMAND)
2015-01-24 22:07:38
3916
原创 MFC中三个重要的宏
DELCARE_DYNAMIC(class) IMPLEMENT_DYNAMIC(class, classBase)DELCARE_DYNAMIC(class) 主要用于声明CRunTimeClass结构,和获取CRunTimeClass指针,完成RTTI#define DECLARE_DYNAMIC(className)\public:\ static CRuntime
2015-01-22 22:00:22
724
原创 逻辑坐标(窗口) 设备坐标(视口)
"窗口"依赖于逻辑坐标,可以是像素点、毫米或程序员想要的其他尺度。"视口"依赖于设备坐标(像素点)1. Windows都用下面两个公式将窗口坐标转换成视口坐标: xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+
2015-01-21 10:15:09
825
转载 windows 屏幕坐标 窗口坐标 客户区坐标 逻辑坐标 设备坐标之间的关系及转换
设置坐标映射 (1)Windows坐标系统Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系。一般而言,GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标。设备坐标系是面向物理
2015-01-21 10:13:30
4124
转载 vc 线程创建关闭(彻底讲解)
★两套API :OS API vs CRT API 本来照例要先介绍线程的几种死法,但是考虑到很多Windows程序员经常混淆线程API,搞不清楚到底该用哪个。所以先来说一下两套线程API的问题。 首先,Windows操作系统本身提供了线程的创建函数CreateThread 和销毁函数ExitThread 。其中的CreateThread 用于创建线程,ExitThread 用
2014-08-12 12:35:39
1394
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人