C++
love3s
这个作者很懒,什么都没留下…
展开
-
AtlAxWinInit疑问
// WebBrowser.cpp : 定义应用程序的入口点。//#include "stdafx.h"#include "WebBrowser.h"HWND hWndWeb;typedef HRESULT (WINAPI *pAtlAxGetControl)(HWND,void**);pAtlAxGetControl MyAtlAxGetControl;IWebBrowser2转载 2012-03-24 09:51:29 · 2251 阅读 · 0 评论 -
C, C++零碎记录
1、 wsprintf宏, 格式化字符串, 格式: wsprintf(sBuff, _T("%s,%d"), _T("字符串"), 10); sBuf结果 = "字符串,10";2、读INI文件 char chIP[250]; //返回值 GetPrivateProfileString("节点名", "Key", "默认值", chIP, 250原创 2012-09-12 09:45:34 · 597 阅读 · 0 评论 -
HOOK实现
在别的网站上找的, 觉得不错, 记录一下DLL部分:functions.#include #include #pragma comment( lib, "Ws2_32.lib" ) #pragma comment( lib, "detours.lib" ) #pragma comment( lib, "detoured.lib" ) int ( WINAPI *Re转载 2012-10-07 16:59:02 · 679 阅读 · 0 评论 -
C++原生事件
// evh_native.cpp#include #include [event_source(native)]class CSource {public: __event void MyEvent(int nValue);}; [event_receiver(native)]class CReceiver {public: void MyHandler1(i转载 2012-09-16 12:40:16 · 687 阅读 · 0 评论 -
CListCtrl添加右键菜单
添加CListCtrl的右键响应事件(NM_RCLICK)void CCardInfoDlg::OnNMRClickListCard(NMHDR *pNMHDR, LRESULT *pResult){ LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); //防止在空白区点击弹出菜单 if (m_LstCtrl.Get原创 2012-09-23 11:22:58 · 9925 阅读 · 1 评论 -
CListCtrl选中行保持高亮
在CListCtrl中添加NM_CUSTOMDRAW消息的事件响应:void CCardInfoDlg::OnNMCustomdrawListCard(NMHDR *pNMHDR, LRESULT *pResult){ NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR ); *pResult = CDRF_DODEFAULT; // Fi原创 2012-09-23 10:45:22 · 2978 阅读 · 0 评论 -
MFC静态发布应用
1. 配置 活动 Release2. 项目->属性->配置属性->常规->MFC的使用 设为: 在静态库中使用MFC3. 项目->属性->配置属性->C/C++->代码生成->运行库 谁为: 多线程(/MT)如果编译出现如下类似错误:nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsign原创 2012-10-12 22:30:42 · 885 阅读 · 0 评论 -
C++屏幕取色
void CGetColorDlg::OnTimer(UINT_PTR nIDEvent){ // TODO: 在此添加消息处理程序代码和/或调用默认值 POINT pt; COLORREF cr; HDC hdcScreen; TCHAR szBuffer[255] = { 0 }; switch (nIDEvent) { case MY_TIMER: {原创 2012-10-18 21:20:53 · 3325 阅读 · 0 评论 -
Detours库下载
http://research.microsoft.com/en-us/downloads/d36340fb-4d3c-4ddd-bf5b-1db25d03713d/default.aspx原创 2012-10-29 15:20:40 · 2164 阅读 · 0 评论 -
CListCtrl防闪烁
添加拓展属性LVS_EX_DOUBLEBUFFER原创 2012-10-27 16:32:04 · 1117 阅读 · 0 评论 -
__try __except __finally
void CGetColorDlg::OnBnClickedOk(){ // TODO: 在此添加控件通知处理程序代码 TCHAR *sText = new TCHAR[MAX_PATH]; __try { wsprintf(sText, L"finally测试"); MessageBox(sText); __try { MessageBox(L"except测试"原创 2012-10-22 10:58:29 · 718 阅读 · 0 评论 -
刷新桌面
//--刷新桌面1、SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);2、HWND hWndDesktop = (HWND)GetDesktopWindow(); InvalidateRect( hWndDesktop );原创 2012-10-27 13:23:00 · 1122 阅读 · 0 评论 -
CListCtrl虚拟列表技术
创建列表列m_LstCtr.InsertColumn(0, L"列1", LVCFMT_CENTER, 40);m_LstCtr.InsertColumn(1, L"列2", LVCFMT_CENTER, 80);m_LstCtr.InsertColumn(2, L"列3", LVCFMT_CENTER, 0); //列宽为零, 标识隐藏该列m_LstCtr.InsertColumn(3,原创 2012-10-28 14:59:43 · 7735 阅读 · 2 评论 -
CtrlList判断点击的是否为CheckBox
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);if ( 0 == pNMItemActivate->iSubItem ){ TCHAR sText[MAX_PATH] = { 0 }; DWORD dwPos = GetMessagePos(); CPoint point( LOWORD(dwPos), HIW原创 2012-12-07 14:35:43 · 1317 阅读 · 0 评论 -
VC编译LUA与调用
环境vs2010,lua版本5.2新件一个空项目,添加所有src内的文件,然后移除lua.c, lua.h, luac.c, print.c文件.选择项目-属性-配置属性-常规-配置类型,即可选择生成静态库或动态库.下面演示一个c++调用lua函数的例子.test.lua代码function MaxMin(x, y) if x > y then re转载 2012-12-10 15:58:20 · 816 阅读 · 0 评论 -
C++文件(夹)选择对话框
由于各种应用,我们需要调用系统的打开文件对话框或者打开文件夹对话框,或两者兼有。今遇到这个情况已经解决,特写下这篇博文。1.打开文件对话框常用的方法是使用系统的CFileDialog。这里介绍另外一种方法就是使用OPENFILENAME这个结构体和GetOpenFileName()这个函数,可以实现单选文件或者多选文件,代码如下:TCHAR szBuffer[MAX_PATH] =转载 2012-12-26 17:05:16 · 16036 阅读 · 1 评论 -
C++计算一条直线上某点的坐标
假设起点(X1, Y1) 终点(X2, Y2), 间距(从起点开始一段距离)为R两点之间的距离 S = sqrt(pow(X2-X1, 2) + pow(Y2-Y1, 2))方法一:方位角: F = atan((Y2-Y1)/(X2-X1))方位角概念: 方位角又称地平经度(Azimuth (angle)缩写Az)是在平面上量度物体之间的角度原创 2012-12-17 17:46:06 · 7162 阅读 · 1 评论 -
读取ZIP文件
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;#define SECTION_LENGTH 0x0000002E //每个SESION的长度, 不带名字#define SECTION_DES_LENGTH_POS 0x原创 2012-12-22 17:37:19 · 2716 阅读 · 0 评论 -
GetModleFileName和GetModuleBaseName的区别
GetModleFileName返回进程名包含路径GetModuleBaseName返回进程名不包含路径下面是获取当前进程名的方法GetModleFileName(NULL, lpText, sizeof(lpText));GetModuleBaseName(GetCurrentProcess(), NULL, lpText, sizeof(lpText));使用GetModuleBa原创 2012-09-28 16:46:20 · 8648 阅读 · 2 评论 -
TinyXML起步
在使用Tiny的注意事项:1. 添加所有的头文件和源文件至你的工程2.在项目属性中选择C/C++->预编译头->预编译头 选择为 不使用预编译头原创 2012-09-05 22:29:50 · 504 阅读 · 0 评论 -
C++函数嵌套定义
//函数的嵌套定义int AddThreeInt(int iFirst, int iSecond, int iThree){ struct AddTwoInt { int operator()(int iOne, int iTwo) { return iOne + iTwo; } } AddTwoInt; return AddTwoInt(iFirst, iSecon原创 2012-09-03 12:27:34 · 5568 阅读 · 0 评论 -
Liunx C获取IP、MAC地址
#include #include #include #include #include #include //获取地址//返回IP地址字符串//返回:0=成功,-1=失败int getlocalip(char* outip){ int i=0; int sockfd; struct ifconf ifconf;原创 2012-04-26 14:54:51 · 2516 阅读 · 0 评论 -
Linux 下使用gcc生成so(动态链接库)文件
Linux 下使用gcc生成so(动态链接库)文件 //the file name is sum.c#include int sum(int a, int b){ return a + b;}OK.现在我们准备生成一个名为 libsum.so 的目标本地库。使用 GCC 编译器来编译生成我们要的结果gcc -Wall -fPIC -O2原创 2012-04-26 18:17:56 · 7537 阅读 · 0 评论 -
MFC控件关联变量
控件关联变量的方法:在控件上右键-->添加变量->将类别改成Value(默认是Control) ->选择变量类型->取一个变量名->根据类型会提示相关项可输入如下图点击完成(注意这里的访问, 变量类型和变量名之所以是灰色的, 是因为我这是第二次打开)将会在三处生成代码1. 头文件 访问所选位置(这里是public) int iNumber;2. 类初始化此变量3.D原创 2012-06-01 10:54:41 · 10163 阅读 · 0 评论 -
C/C++中如何获取数组的长度?
C、C++中没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array)转载 2012-05-20 09:34:22 · 2429 阅读 · 0 评论 -
给VC程序加上热键(快捷键)
在利用Windows Media Player ActiveX控件写了一个简单的媒体播放器,想让自己写的这个播放器实现彻底隐藏的功能:程序主窗体的隐藏、在任务栏上的隐藏、在Alt+Tab键在程序间切换时的隐藏。这样,程序在实施隐藏后其他人将意识不到程序的执行,可以达到非常好的隐身效果,并且再次按下该热键可以使程序隐藏后从后台呼出。 注册热键首先要在程序中注册一个热键,无论该程序在前台还转载 2012-08-10 15:27:02 · 7659 阅读 · 0 评论 -
自己开发环境的字体颜色配置
字体: Consolas字号: 12前景色: 黑色背景色: 自定义色RGB(150,200,150)效果图:原创 2012-08-15 10:34:20 · 1171 阅读 · 0 评论 -
VS中TODO注释的使用
在开发中要有一个计划,在那里实现,怎么实现,可以先写下来,以后可以检查是否实现了TODO: 可以方便的帮助我们完成这样的任务编程可以这样标记//TODO: 未实现以后在任务列表中就可以看到任务列表在试图-->任务列表 打开VS2010中默认没有启用TODO功能(在任务列表中看不到), 设置方法:工具->选项->文本编辑器->C/原创 2012-08-17 15:15:15 · 21596 阅读 · 3 评论 -
CListCtrl控件使用方法总结
列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:LVS_I转载 2012-08-31 15:04:25 · 1724 阅读 · 0 评论 -
C++ string转换CString
我们在写程序时,常常会遇到类型转换的问题。现总结一些常见的类型转换。1,const char*(C风格字符串)与string之间转换: (1) const char*可以直接对string类型赋值,例如: const char* pchar = "qwerasdf"; s转载 2012-08-31 12:34:04 · 989 阅读 · 0 评论 -
CListCrtl控件行选中
m_LstCtrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);原创 2012-08-31 15:42:22 · 1419 阅读 · 0 评论 -
MFC打开和保存对话框
#include "stdafx.h"//打开文件对话框CString OpenDialg(CWnd* pParentWnd){ CFileDialog DlgOpenFile(TRUE, _T("*.*"), NULL, OFN_EXPLORER, _T("文本文件|*.txt|All File|*.*||"), pParentWnd); int iResult = DlgOpenF原创 2012-09-01 10:56:58 · 644 阅读 · 0 评论 -
VC++获取程序路径
CString sPath; GetModuleFileName(NULL, sPath.GetBuffer(MAX_PATH), MAX_PATH); //GetModuleFileName获取的是完整路径+文件名 sPath.ReleaseBuffer(); //下边只取文件的完整路径(去掉文件名) int nPos; nPos = sPath.ReverseFind(原创 2012-08-31 17:16:06 · 715 阅读 · 0 评论 -
MFC退出窗口提示
void CControlsTestDlg::OnClose(){ // TODO: 在此添加消息处理程序代码和/或调用默认值 if(IDNO == ::MessageBox(this->m_hWnd, _T("确定退出系统吗?"), _T("提示"), MB_ICONQUESTION | MB_YESNO)) { return; } CDialogEx::OnClose();}原创 2012-09-02 19:50:43 · 3701 阅读 · 1 评论 -
C++两种方式创建窗口
第一种: CreateWindow#include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ static TCHAR szA原创 2012-09-03 11:30:22 · 5887 阅读 · 0 评论 -
C++调用HTTP实现方式
Http访问有两种方式,GET和POST,就编程来说GET方式相对简单点,它不用向服务器提交数据,程序中使用POST方式,提交数据并从服务器获取返回值。为实现Http访问,微软提供了二套API:WinINet, WinHTTP。WinHTTP比WinINet更加安全和健壮,可以这么认为WinHTTP是WinINet的升级版本。程序中,通过一个宏的设置来决定是使用WinHttp还是Win转载 2012-09-03 09:20:32 · 20222 阅读 · 2 评论 -
一段登录代码
//用户名框ID#define IDC_EDIT_ACCOUNT 0x3F6//密码框ID#define IDC_EDIT_PW 0x3f7//LOGIN按钮ID#define IDC_BUTTON_LOGIN 0x3f5//START按钮ID#define IDC_BUTTON_START 0x3e8//服务选择列表框ID#define IDC_LISTBOX_SRV 0原创 2012-09-02 16:38:39 · 789 阅读 · 0 评论 -
C++读写二进制文件
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;typedef struct _my_data_type{ int ID; char Text[20];}MY_DATA_TYPE, *PMY_DATA_TYPE;void Write原创 2012-12-21 18:33:56 · 1121 阅读 · 0 评论