
vc++
文章平均质量分 62
ityezi_admin
这个作者很懒,什么都没留下…
展开
-
C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式
void CShowNetImageView::OnDraw(CDC* pDC){ CShowNetImageDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CAtlHttpClient* client = new CAtlHttpClient(转载 2014-06-18 15:33:48 · 815 阅读 · 0 评论 -
mfc实现图文打印
怎样用CPrintDialog来实现打印功能 把以下程序段加入你的程序 把dc1当作Device Content. 就任你打印了.注意别画错地方. 自己换页. 更绝的是可调用窗口的OnPrint或OnDra转载 2014-06-09 12:14:35 · 888 阅读 · 1 评论 -
c/c++/MFC 调用 js 函数代码
调用函数代码和示例 1 首先 .h 文件中定义: CComPtr m_sphtmlWnd; CComPtr m_spHtmlDoc;//方法1 可以取得返回值。。。。。//调用方法示例:stringArray为传入参数列表,getSum为js函数,pVarResult 为返回值/* CStringArray stringArray; stringArray.Remove转载 2014-06-09 11:50:10 · 808 阅读 · 0 评论 -
vc画图的一些简单方法演示,各种DC
/*HDC hdc = ::GetDC(this->GetSafeHwnd()); MoveToEx(hdc,m_BtnDown.x,m_BtnDown.y,NULL); LineTo(hdc,point.x,point.y); ::ReleaseDC(this->GetSafeHwnd(),hdc);*/ /*CDC *pDC=GetDC(); pDC->MoveTo(m_B转载 2014-05-26 17:32:30 · 487 阅读 · 0 评论 -
如何实现双缓冲、vc双缓冲
CDC MemDC; //首先定义一个显示设备对象CBitmap MemBitmap;//定义一个位图对象//随后建立与屏幕显示兼容的内存显示设备MemDC.CreateCompatibleDC(NULL);//这时还不能绘图,因为没有地方画//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小MemBitmap.CreateCompatibleBitmap(pDC转载 2014-05-26 17:30:20 · 391 阅读 · 0 评论 -
VC++20个小技巧(copy)
一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL);三、关闭计算机OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构OsVersi转载 2014-05-26 17:26:26 · 546 阅读 · 0 评论 -
VC++屏幕抓图、屏幕截图并保存
稍微改改可以封装一个函数转载 2014-05-26 17:22:58 · 836 阅读 · 0 评论 -
VC获取窗口图片(截图)
//借鉴网上的文章:HBITMAP CopyDCToBitmap(HDC hDC, LPRECT lpRect) { if(!hDC || !lpRect || IsRectEmpty(lpRect)) return NULL; HDC hMemDC; HBITMAP hBitmap, hOldBitmap; int nX, nY, nX2, nY2;转载 2014-05-26 17:21:24 · 1036 阅读 · 0 评论 -
VC中使用GDI+实现为按钮加载Png图片
一、在stdafx.h文件中添加头文件,命名空间,库的引用, #includeusingnamespace Gdiplus;#pragmacomment( lib, "gdiplus.lib" )二、在程序实现文件中添加全局变量ULONG_PTRgdiplusToken;转载 2014-05-26 17:11:56 · 642 阅读 · 0 评论 -
vc显示jpg,gif图像简单方法
ShowJpgGif(CDC* pDC,CString strPath, int x, int y){ IStream *pStm; CFileStatus fstatus; CFile file; LONG cb; if (file.Open(strPath,CFile::modeRead)&&file.GetStatus(s转载 2014-05-26 17:45:59 · 402 阅读 · 0 评论 -
MFC所有控件随窗口变化的实现
1.在头文件中加入: POINT Old;//存放对话框的宽和高。 void resize(); //声明函数2.在OnInitDialog中加入: CRect rect; GetClientRect(&rect); //取客户区大小 Old.x=rect.right-rect.left; Old.y=rect.bottom-rect.top;转载 2014-05-26 17:49:31 · 521 阅读 · 0 评论 -
MFC下图形任意角度旋转.
图形的旋转公式:x1 = (x - xcenter) * cosθ - (y - ycenter) * sinθ + xcenter; y1 = (x - xcenter) * sinθ + (y- ycenter) * cosθ + ycenter; x, y:为原先点的坐标位置。x1, y1旋转后点的坐标位置。Xcenter, ycent转载 2014-07-04 18:04:45 · 8281 阅读 · 0 评论 -
快速排序算法简单易懂实现
void swap(int *p1, int *p2){ int temp; temp = *p1; *p1 = *p2; *p2 = temp;}int partition(int data[], int lo, int hi)//data[lo]--data[hi]{ int i, j; int key = data[hi]; i = lo; for(j = lo;转载 2014-06-18 15:30:34 · 402 阅读 · 0 评论 -
CAtlHttpClient 下载文件保存到本地,拿去就能用简单易懂
void CtestdddDlg::OnBnClickedButton1(){ USES_CONVERSION; CAtlHttpClient httpCli; tstring strURL=_T("http:// .ppstream.com/ppsgame_silent.exe"); if( httpCli.Navigate(strURL.c_str())) { if (原创 2014-06-18 15:27:01 · 924 阅读 · 1 评论 -
C语言的谜题
我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。而《谁说C语言很简单》则通过一些看似你从来不可能写出的代码来告诉大家C语言并不是一件容易事情。《6个变态的hello world》和《如何弄乱C的源代码》则以一种极端的方式告诉大家,不要以为咱们自己写不出混乱的代码,每个程序员其实都有把代码搞得一团乱的潜质。通过这些文转载 2014-06-16 15:06:47 · 365 阅读 · 0 评论 -
C++ 对象的内存布局(下)
C++对象的内存布局(下) 陈皓http://blog.youkuaiyun.com/haoel <<<点击这里查看上篇 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的源代码如下所示。其中,转载 2014-06-16 15:07:59 · 359 阅读 · 0 评论 -
C++ 对象的内存布局(上)
C++对象的内存布局(上) 陈皓http://blog.youkuaiyun.com/haoel 点击这里查看下篇>>>前言 07年12月,我写了一篇《C++虚函数表解析》的文章,引起了大家的兴趣。有很多朋友对我的文章留了言,有鼓励我的,有批评我的,还有很多问问题的。我在这里一并对大家的留言表示感谢。这也是我为什么再写一篇续言的原因。因为,在上一篇文章转载 2014-06-16 15:07:26 · 377 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.youkuaiyun.com/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的转载 2014-06-16 14:53:59 · 368 阅读 · 0 评论 -
_stdcall 和 _cdecl
每个线程都必须有一个进入点函数,线程从这个进入点开始运行。主线程的进入点函数是main,如果想在线程中创建另一个辅助线程,则必须为该辅助线程创建一个进入点函数,这个函数被称为线程函数。线程函数的定义如下:DWORD WINAPI ThreadProc(LPVOID lpParam); //线程函数名称可以是任意的WINAPI 是一个宏,在windef.h 文件中有声明:转载 2014-07-04 18:12:03 · 446 阅读 · 0 评论 -
C++ MFC控件随着窗口大小变化而自适应
void CMFCcodeDlg::OnSize(UINT nType, int cx, int cy){ CDialogEx::OnSize(nType, cx, cy); CRect rect; pWndT->GetWindowRect(&rect); ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标 //cx/m_rect.Width()为对转载 2014-05-26 16:54:27 · 1797 阅读 · 0 评论 -
MFC 打印程序的编制
MFC 在实现打印编程工作时已经建立了一个已有的框架,我们只要往这个框架里面填东西即可。打印工作其实就是在DC 上绘图,不过这里的DC 是打印机的DC ,明确这一点之后,想当然的,我们打印的任务可以分为获取打印机DC 、根据打印机驱动让用户交互设置打印参数、开始打印、打印的具体过程(分页、绘制等)、结束打印、释放DC 。以下通过一段示列代码来说明:转载 2014-06-09 14:12:12 · 878 阅读 · 0 评论 -
ANSI 和 UNICODE 的函数对应表
ANSI UNICODE 通用(char.h) (wchar.h) (tchar.h)char wchar_t TCHARchar * wchar_t * PTCHAR (PTSTR,LPWSTR,PWSTR,WCHAR)printf wprint转载 2014-05-23 10:26:02 · 434 阅读 · 0 评论 -
VC++中MCI播放音频文件
MCI播放mp3音频文件例程源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。或添加代码#pragma comment(lib, "winmm.lib")MCI_OPEN_PARMS op;转载 2014-06-04 14:23:04 · 977 阅读 · 0 评论 -
监控Windows操作系统用户增删修改
监控Windows操作系统的用户信息更改,可以采用监控注册表来实现。在注册表中,用户和用户组信息保存在HKEY_LOCAL_MACHINE的SAM\\SAM\\Domains\\Account下面。用户信息保存在SAM\\SAM\\Domains\\Account\\Users下面;用户组信息保存在SAM\\SAM\\Domains\\Account\\Aliases下面。当然可以转载 2014-06-04 14:16:36 · 571 阅读 · 0 评论 -
Shadow Hook实现网络安全打印监控
如何实现对打印的监控,微软提出的一种解决方案就是时刻检测放到打印队列中的打印任务,发现有任务出现,就从中筛选出来提供给调用者。对此功能的实现,微软的确公开了一套完整的代码,并且能够实现我们基本想要的功能,但是在实现功能之余,我又进行了更深一层的研究和测试,通过Hook win32k.sys内的打印相关的4个函数就完美地实现了打印监控功能。我们先分析一下当系统完成一次打印任务需要调用的几转载 2014-06-04 14:04:38 · 1063 阅读 · 0 评论 -
CListCtrl自动排序
在C++界面开发中,WLT::CListCtrl和MFC的CListCtrl都没有自动排序功能,不过他们都提供了一个回调函数,通过SortItems或者SortItemsEx方法来进行。激活SortItems方法,需要接受Column的Click事件,然后设置合适的数据,就可以实现自动排序了。 CListCtrl的排序微软的VC++实在是个弱智的IDE,编程10小时,转载 2014-06-04 14:26:00 · 798 阅读 · 0 评论 -
VC隐藏任务栏和桌面图标
HWND hTaskBar=FindWindow("Shell_TrayWnd",NULL);//find taskbar handle ShowWindow(hTaskBar,SW_HIDE); HWND hDeskIcon=FindWindow("Progman",NULL); //find desktop icons ShowWindow(hDeskIcon,SW_H转载 2014-06-04 12:11:14 · 820 阅读 · 0 评论 -
Boost::Thread使用示例
Boost::Thread的实现总体上是比较简单的,前面已经说过,thread只是一个跨平台的线程封装库,其中按照所使用的线程选项的不同,分别决定使用Windows线程API,pThread,或Mac平台的thread实现。以下只讨论Windows,即使用BOOST_HAS_WINTHREAD的情况。Boost::Thread有两个构造函数:一个是thread(),构造一个表示当前执行线程的线转载 2014-06-04 17:01:49 · 438 阅读 · 0 评论 -
如何在SYSTEM权限下实现屏幕监控
屏幕监控是远控软件的基本功能之一。版权声明作者:iprowq现在很多远控程序的服务端通常为DLL形式,通过远程线程注入等方法插入到services、svchost等SYSTEM权限的进程中去,而此时常规的屏幕监控就会失效(这是因为与SYSTEM权限进程关联的窗口站、桌面与普通进程不同)。如何才能在SYSTEM权限下实现屏幕监控呢?一、 屏幕监控的基本原理屏幕转载 2014-06-04 12:13:55 · 3844 阅读 · 0 评论 -
MFC双缓冲代码,拿去就能用,非常简单
BOOL CDlgUserInfoList::OnEraseBkgnd( CDC * pDC ){ //获取窗口大小 CRect rtWindow; GetWindowRect(&rtWindow); ////////////////////////////////////////////////////////////////////////// CDC MemDC; //首先定义原创 2014-06-03 19:22:00 · 1053 阅读 · 0 评论 -
vc 获取系统版本
//获取系统版本SystemInfo GetSystemVersion(){ SystemInfo si=S_ERROR; OSVERSIONINFOEX osInfo; osInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX); if (::GetVersionEx((OSVERSIONINFO*)&osInfo)==0) { //M原创 2014-05-22 10:35:40 · 552 阅读 · 0 评论 -
通过注册表获取某款软件的信息
//通过注册表获取某款软件的信息CString GetRegValue(CString strKey,CString strField){ CString strValue=_T(""); CString strPath; strPath.Format(_T("Software\\%s"),strKey); HKEY hKEY; LONG lRet=(::RegOpenKeyEx原创 2014-05-22 10:37:36 · 633 阅读 · 0 评论 -
vc添加开机自启动&取消开机自启动
//开机启动bool CreateAutoRun(){ bool bRet=false; //添加以下代码 HKEY hKey; char pFileName[MAX_PATH] = {0}; //得到程序自身的全路径 DWORD dwRet = GetModuleFileNameW(NULL, (LPWCH)pFileName, MAX_PATH); //找到系转载 2014-05-22 10:42:32 · 525 阅读 · 0 评论 -
直白C语言函数递归调用
这是我第二次在这里说递归调用,我准备这次把这个困扰人的东西说清楚。我们还是先从例子入手转载 2014-05-23 14:43:45 · 665 阅读 · 0 评论 -
C++使用VS2010导出Excel的方法及步骤
最近工作需要将listctrl中的数据导出到Excel中。网上找了很多,但多数是VC6.0的。结合VC6.0导出的方法,自己琢磨了不少时间,终于将问题解决了。轻松之余,将过程分享出来,希望对需要的人有所帮助。 VC6.0的请看这里:http://topic.youkuaiyun.com/t/20050718/15/4151984.html 环境:Windows7Mic转载 2014-06-05 17:19:45 · 746 阅读 · 0 评论 -
vc只允许程序有一个实例运行
//只允许一个实例运行 HANDLE hMutex=CreateMutex(NULL,TRUE,_T("OnlyTag")); if(hMutex) { if(ERROR_ALREADY_EXISTS==GetLastError()) { exit(0); return FALSE; } }把这段代码放到你的程序中原创 2014-05-22 10:44:46 · 512 阅读 · 0 评论 -
获取当前默认浏览器路径
//获取当前默认浏览器路径bool GetDefaultBrowserPath(CString &strPath){ bool bRet=false; LONG lRet=0; HKEY hKey; lRet=RegOpenKeyEx(HKEY_CLASSES_ROOT,_T("http\\shell\\open\\command"),0,KEY_ALL_ACCESS,&hK原创 2014-05-22 10:36:48 · 1428 阅读 · 0 评论 -
常用的字符编码转换集合
string CommonFun::GBT2A(LPCTSTR pstrData, UINT nCodePage){ int nSize = WideCharToMultiByte(nCodePage, 0, pstrData, -1, 0, 0,NULL,NULL); char *lpsz=(char *)_alloca(nSize+1); memset(lpsz,0,nSize+1);原创 2014-05-22 10:22:53 · 419 阅读 · 0 评论 -
GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
根据官方的说法:For the best results use the following table to convert paths.Windows 2000 = GetModuleFileNameEx()Windows XP x32 = GetProcessImageFileName()Windows XP x64 = GetProcessImageFileName转载 2014-05-22 10:17:11 · 969 阅读 · 0 评论 -
VC程序里判断系统是64位还是32位的正确方法
BOOL IsWow64() { typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); LPFN_ISWOW64PROCESS fnIsWow64Process; BOOL bIsWow64 = FALSE; fnIsWow64Process = (LPFN_ISWOW64PROCESS)G转载 2014-05-22 10:14:55 · 381 阅读 · 0 评论