MFC

五月 27, 2014

Capturing the Desktop Screen with the Mouse Cursor Image

下面的文章介绍了两种截屏方式及如何“截取”光标的方法。 通常情况下是无法截取光标的,因为光标不属于窗口中的windows元素,而是独立与窗口系统的另一层东西,叫Hot[...]
Read More »

五月 19, 2014

三种截取屏幕的方式

Various methods for capturing the screen By Gopalakrishna Palem, 19 Sep 2006 Download GDI source code – 72.1 Kb Download DirectX source code[...]
Read More »

五月 9, 2014

How can I return a string from a C dll to C#?

// c code: #include <ole2.h> /* needed for CoTaskMemAlloc */ EXPORT char* getUrlFromBaseURLInList(char *ListFilePath, char *SrchBaseURL, char*[...]
Read More »

二月 21, 2014

解决 error C1083: 无法打开预编译头文件xxx.pch: No such file or directory

问题产生: 通常情况下不会出现这种错误,我出现这样的错误提示是因为,我要发布的是一个静态库,于是把要发布的头文件放到了include目录下,把其他文件(包括stdAfx.h及stdAfx.cpp)放到了src目录下,于是编译时提示: 错误[...]
Read More »

六月 1, 2013

临界区,互斥量,信号量,事件的区别

四种进程或线程同步互斥的控制方法 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事[...]
Read More »

六月 14, 2012

【转】Windows上调用Cygwin编译的函数库

2012-04-05 19:22 转载自 kaien_space 本篇介绍的是静态库函数。静态库扩展名是.lib(windows上)或.a(linux上),他和动态库(dll)是有区别的。 调用静态库编译后会写入执行程序中。然后就可以独立运行了。 动态库旨在动态调用,调用的时候需要加载dll才能正常工作。 (所以动态库往往可以提供补丁,或功能升级的时候使用,但是运行的速度有待商协) 另外,两个库的编译器也不一样,例如mingw用g++.exe生成动态库.dll,[...]
Read More »

三月 5, 2012

UTF8与GBK字符编码之间的相互转换

1、将GBK转换成UTF8 [code lang=”c”] string GBKToUTF8(const std::string& strGBK) { string strOutUTF8 = ""; WCHAR * str1; int[...]
Read More »

十月 19, 2011

关于#pragma pack与sizeof()

本文来自:http://www.cnblogs.com/whu-gy/archive/2008/05/04/1182365.html 这是讲的最清楚明了的了,必须要收藏 :) —khler 对于结构体,在使用sizeof的时候会进行字节的对齐,对齐的规则如下: 1)[...]
Read More »

十月 14, 2011

串口通讯简单回顾

最近几个小项目都是与串口有关的,前段时间用C++实现了一个串口通讯类,高效稳定,效果还不错;后来由于一个同事用C#的SerialPort类与设备通讯时效率很低,让我帮他自己包装了一个C#的Comm通讯类。 串口通讯中对串口的设置基本上很简单,大部分时候只需要设置串口号和波特率、数据位、停止位,其他的很少改动,默认就行了。 在使用C#与设备通讯时,发现一个比较贵的USB转串口线通讯速度不稳定,至少前面几分钟速度会非常的慢,之后就恢复正常了。但是用sscom32调试助手看却很快,所以怀疑打开串口的时候是不是对其他几个参数的设置上的区别导致通讯速度的不同?更奇怪的是另一根相当便宜的USB转串口线,在任何情况下速度都很正常,汗…… 简单讲解 串口是计算机上一种非常通用的通信设备,大多数计算机包含两个基于RS232的串口,由于其使用简单造价低廉而被普遍应用。 奇怪的是近几年出产的笔记本和PC机基本都没有串口这种设备了,而简单易用、成本低廉的特性,让很多硬件设计工程师还是选择了串口作为设备与其他设备的通讯方式。因此,usb串口转换线使用的非常多,它的RS232-485接口连接串口设备,另一端转换为USB接入PC等上位机,在上位机上模拟出多个串口,以实现PC机通过串口与外围串口设备通讯。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。而IEEE488定义规定,对于并行通讯,设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。 串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配。 高深一点,通讯过程中的硬件知识 由于[...]
Read More »

九月 29, 2011

MFC中位图按钮的实现

用了4天搞定一个智能工厂的短信猫控制数据采集设备的程序,重用一回MFC,感觉还是相当爽的,有种老朋友重逢的感觉:) 由于短信猫自带的SDK写的垃圾了点,所以我直接使用AT指令搞定了; 界面基本就是一些位图,通过贴图模拟现场设备的样子; 界面背景、Label,Edit的背景修改都还好说,就是按钮有些特殊,所以需要特殊处理一下,我用的当然也是现成CBitmapButton按钮类——它其实就是简单的从CButton继承了一下,把一些绘制工作子类化了,使用注意事项和其他知识,网上找找,有很多资料,一下是网上找的一些使用资料: 方法一: 1、在资源编辑时,要设置按钮的Owner[...]
Read More »

三月 10, 2011

MFC中跨线程UpdateData(FALSE)报错 ASSERT FAILD问题

MFC程序,在给控件关联的变量赋值后,需要调用UpdateData(FALSE)后才能更新到界面,但是有时候却报错: 断言宏失败,在wincore.cpp的如下位置:   CObject*[...]
Read More »

二月 25, 2011

VC MFC程序,在About对话框中获取并显示程序的版本号

  ================================================= 本文为HeYuanHui原作 转载必须确保本文完整并完整保留原作者信息及本文原始链接! NN:     [...]
Read More »

一月 2, 2011

如何学好3D游戏引擎编程

此文为转载,值得一看 此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 [...]
Read More »

四月 16, 2010

【转】浅谈C/C++内存泄漏及其检测工具

浅谈C/C++内存泄漏及其检测工具 2006-04-03 09:00 作者: 出处:温馨小屋   对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart[...]
Read More »

三月 22, 2010

用 Directx 和 GDI 的 两种方法的截屏代码

http://www.cnblogs.com/piccolo/articles/241933.html   LPDIRECTDRAW lpDD     = NULL;LPDIRECTDRAWSURFACE lpDDSPrime  =[...]
Read More »

三月 22, 2010

GetPixel截屏

作     者:周强 2009.05.02   /*************************************************************************** 函数名称:SaveToBmpFile*[...]
Read More »

三月 22, 2010

基于MFC的截屏

#include “stdafx.h”#include <afxwin.h> void Screen(char filename[]){    CDC *pDC;//屏幕DC    pDC = CDC::FromHandle(GetDC(NULL));//获取当前整个屏幕DC    int BitPerPixel = pDC->GetDeviceCaps(BITSPIXEL);//获得颜色模式    int Width = pDC->GetDeviceCaps(HORZRES);    int Height = pDC->GetDeviceCaps(VERTRES);     printf(“当前屏幕色彩模式为%d位色彩\n”, BitPerPixel);    printf(“屏幕宽度:%d\n”, Width);    printf(“屏幕高度:%d\n”, Height);        CDC memDC;//内存DC    memDC.CreateCompatibleDC(pDC);        CBitmap memBitmap, *oldmemBitmap;//建立和屏幕兼容的bitmap    memBitmap.CreateCompatibleBitmap(pDC, Width, Height);     oldmemBitmap = memDC.SelectObject(&memBitmap);//将memBitmap选入内存DC    memDC.BitBlt(0, 0, Width, Height, pDC, 0, 0, SRCCOPY);//复制屏幕图像到内存DC     //以下代码保存memDC中的位图到文件    BITMAP bmp;    memBitmap.GetBitmap(&bmp);//获得位图信息        FILE *fp = fopen(filename, “w+b”);     BITMAPINFOHEADER bih = {0};//位图信息头    bih.biBitCount = bmp.bmBitsPixel;//每个像素字节大小    bih.biCompression = BI_RGB;    bih.biHeight = bmp.bmHeight;//高度    bih.biPlanes = 1;    bih.biSize = sizeof(BITMAPINFOHEADER);    bih.biSizeImage = bmp.bmWidthBytes * bmp.bmHeight;//图像数据大小    bih.biWidth = bmp.bmWidth;//宽度        BITMAPFILEHEADER bfh = {0};//位图文件头    bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);//到位图数据的偏移量    bfh.bfSize = bfh.bfOffBits + bmp.bmWidthBytes * bmp.bmHeight;//文件总的大小    bfh.bfType = (WORD)0x4d42;        fwrite(&bfh, 1, sizeof(BITMAPFILEHEADER), fp);//写入位图文件头        fwrite(&bih, 1, sizeof(BITMAPINFOHEADER), fp);//写入位图信息头        byte * p = new byte[bmp.bmWidthBytes * bmp.bmHeight];//申请内存保存位图数据     GetDIBits(memDC.m_hDC, (HBITMAP) memBitmap.m_hObject, 0, Height, p,         (LPBITMAPINFO) &bih, DIB_RGB_COLORS);//获取位图数据     fwrite(p, 1, bmp.bmWidthBytes * bmp.bmHeight, fp);//写入位图数据     delete [] p;     fclose(fp);     memDC.SelectObject(oldmemBitmap);}     [...]
Read More »

Proudly powered by WordPress and Sweet Tech Theme