![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows
avagrant158
这个作者很懒,什么都没留下…
展开
-
AllocConsole()之后,如何重定向stdout,使printf()有效
只需要执行 freopen_s(&m_new_stdout_file,"CONOUT$","w+t",stdout); 不过别忘了程序结束时调用 fclose(m_new_stdout_file);以免造成内存泄露。原创 2009-10-28 10:13:00 · 3148 阅读 · 0 评论 -
InstallShield 如何去掉左下角的商标/去掉定制皮肤的商标
本来想把有关 InstallShiled 皮肤定制方面的东西写一篇小文,但经过几个小时的仔细钻研,决定放弃。最根本的理由是,我还是建议尽量使用 MSI。即便采用 InstallShield 来制作安装程序,也尽量采用 Basic MSI Project,而不要涉及太多 InstallShield 自己的东西。两个原因:1、MSI 兼容性更好比如,在设置了一定的安转载 2009-11-19 09:35:00 · 1555 阅读 · 2 评论 -
应用程序正常初始化(0xc01500002)失败
工程中包含了多余的manifest,生成的dll会包含ID号为2的名为RT_MANIFEST的资源,造成程序无法加载,删除多余的manifest文件重新编译即可。 如果不是自己做的,用VS打开dll然后把ID号改成1即可。原创 2010-01-29 16:45:00 · 3385 阅读 · 0 评论 -
CreateThread()、_beginthread()以及_beginthreadex()联系与区别
联系:CreateThread、_beginthread和_beginthreadex都是用来启动线程的。区别:_beginthread是_beginthreadex的功能子集,_beginthreadex是微软的C/C++运行时库函数,CreateThread是操作系统的函数。虽然_beginthread内部是调用_beginthreadex但他屏蔽了象安全特性这样的功能,所转载 2010-02-02 14:00:00 · 229 阅读 · 0 评论 -
Three Ways to Inject Your Code into Another Process
IntroductionSeveral password spy tutorials have been posted to The Code Project,but all of them rely on Windows hooks. Is there any other way to makesuch a utility? Yes, there is. But转载 2010-02-08 13:22:00 · 258 阅读 · 0 评论 -
windows下重定向cvs服务器地址的一种方法
打开命令行窗口,到工程目录下,执行find . -name Root -exec sed -i s/原IP/新IP/ {} ; 这里的find和sed需要到gnuwin32下载,具体地址如下:http://gnuwin32.sourceforge.net/packages/findutils.htmhttp://gnuwin32.sourceforge.net/packages原创 2010-04-08 11:43:00 · 258 阅读 · 0 评论 -
VS05使用Word自动化的问题解决方案
Compiling...1>DlgProxy.cpp1>g:/my document/visual studio 2005/projects/word/word/capplication.h(3) : warning C4278: 'ExitWindows': identifier in type library 'C://Program Files//Microsoft Office//OFFICE11//MSWORD.OLB' is already a macro; use the 'ren转载 2010-06-25 16:26:00 · 939 阅读 · 0 评论 -
64位下SetWindowLong时的参数GWL_WNDPROC undeclared identifier未定义的错误
<br />这应该是微软的bug,使用GWLP_WNDPROC代替GWL_WNDPROC可解决问题。<br /> <br />原帖地址:http://www.allegro.cc/forums/thread/592764原创 2010-11-06 20:13:00 · 2108 阅读 · 1 评论 -
关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总
<br />32位与64位的数据类型长度是不一样的,而且windows和linux也有些许区别,下面把64位下的数据长度列表如下(无符号unsigned和有符号的长度一样):<br /> <br /> linux64 windows64 linux32 windows32<br />char 8 8 8原创 2010-11-06 20:22:00 · 1787 阅读 · 0 评论 -
编写跨平台程序的关键,C/C++中的内置宏定义
<br />分两部分:<br />操作系统判定:<br />Windows: WIN32<br />Linux: linux<br />Solaris: __sun<br />编译器判定:<br />VC: _MSC_VER<br />GCC/G++: __GNUC__<br />SunCC: __SUNPRO_C和__SUNPRO_CC原创 2011-04-02 13:54:00 · 1559 阅读 · 0 评论 -
InstallShield做MSI窗口中图片Bitmap上的按钮PushButton显示异常,不显示或鼠标移入才显示
经过了无数次的尝试与分析,问题出在InstallShield的一个bug。我们知道,在IS的窗口编辑器里,设置控件的层次可以右键点击一个控件然后选择bring to front或者send to back来调整,表面上看的确有效果,而实际上编译出来的msi却不是IDE里显示的那么好,原因是bring to front和send to back根本毫无用处,在msi文件里没有任何的反应。再原创 2009-11-19 17:53:00 · 634 阅读 · 0 评论 -
SetConsoleCtrlHandler后,在处理函数里PostQuitMessage()无效
When the signal is received, the system creates a new thread in the process to execute the function.当收到信号后,系统启动新的线程来执行处理函数。The PostQuitMessage function posts a WM_QUIT message to the thre原创 2009-11-11 15:45:00 · 708 阅读 · 0 评论 -
IDirect3DDevice9::Present()阻塞10多毫秒ms才返回,fps只能达到60的原因及解决办法
IDirect3DDevice9::Present()会阻塞,达到的最高fps和屏幕刷新率一样,因为Direct3D有这项机制,认为更新频率高于屏幕刷新率没有实际意义,所以在Present里阻塞了一段时间。这是一个很方便的功能,但有时我们不想让Present阻塞我们的主循环。微软的Present函数的文档中并没有指出Present阻塞的问题,而是在其他地方说明了,解决办法就是在创建Device的原创 2009-11-07 08:20:00 · 997 阅读 · 0 评论 -
跨平台linux可用的printf_s之类的_s安全版函数
自动vc2005开始,微软力推_s安全版函数以取代不安全的标准非_s版函数,如果你不用安全版,VC会报一大堆难看的warning。现在问题来了,使用了_s版函数后,VC2003不能用了,而且想要把程序拿到linux也无法运行,你可以费劲巴拉的再改回非_s版,但是太费劲了,而且warning又来了,而且真的可能会不安全哦(高手忽略)。有个简单的办法来解决这个问题,就是使用宏。在你的程序里定义一原创 2009-10-28 11:03:00 · 2003 阅读 · 0 评论 -
解决error LNK2001: unresolved external symbol FWPM_LAYER_OUTBOUND_IPPACKET_V4等LAYER找不到的办法
需要在你的sources文件里的TARGETLIBS中增加 $(DDK_LIB_PATH)/uuid.lib参考http://social.msdn.microsoft.com/forums/en-US/wfp/thread/3771af60-8fc6-4901-87a2-2bc3344eb27b/转载 2009-11-06 16:49:00 · 303 阅读 · 0 评论 -
visual studio 2008编译的C++程序在没安装redistribute包或vs的机器上无法运行
网上有人提到过这个问题,解决方法也大概就是拷贝Microsoft.VC90.CRT等几个文件夹到程序目录,但是有时候这样仍然不能解决问题,原因就在于程序的menifest文件里的版本号问题。首先到Microsoft.VC90.CRT文件夹下看Microsoft.VC90.CRT.manifest文件中的版本号,是9.0.30729.4148,而程序的版本号未必是这个,实际上通过查看系统自动生原创 2009-10-28 10:50:00 · 2721 阅读 · 0 评论 -
GDI+的效率真的好低
今天试了一下GDI+的效率,我的CPU是core 2 2.6G,绘制2个图,只有大概70fps,也就是每秒钟只能绘制140个左右的图,耗尽CPU。绘制的图形的大小好像对效率没什么影响。 原因就是GDI+中的Image类保存图像的时候是不依赖设备的存储格式(device-independent),这种格式在绘制到Graphics内部的HDC的时候,需要进行一次格式转换,这个是最耗时的。原创 2009-10-29 15:32:00 · 782 阅读 · 0 评论 -
如何让程序主循环Update loop在messageBox和modal dialog、menu loop时仍然有效
很多轮询的程序不是消息驱动的,需要一个主循环,程序循环Update,一般的程序主循环形如:bool CLooperImplWindows::deal_message(void){ MSG msg; while( PeekMessage( &msg, NULL, 0, 0,PM_REMOVE )) { if (msg.message==WM原创 2009-10-29 15:40:00 · 456 阅读 · 0 评论 -
Sleep(1)精度不够,不准,睡眠时间过长
Sleep()这个函数可以让线程睡眠一段时间,而后继续执行,参数是毫秒。但是我们会发现,当毫秒数过小时,Sleep往往不能按照给定的时间睡眠,而是睡了长了一点的时间,这是由于Sleep函数的精度导致的,一般的系统默认的精度是10毫秒,也就是说,如果参数小于10,那么Sleep的时间可能是10,或者更多,系统尽量以10毫秒为精度保证时间准确,这对于高精度的程序来说明显不足,系统时钟clock()原创 2009-10-28 09:30:00 · 4591 阅读 · 1 评论 -
为何DC画出来是黑白的
在用内存DC来做双缓存消除闪烁的时候,通常做法是三步走: mem_hdc=CreateCompatibleDC(present_hdc); m_bitmap=CreateCompatibleBitmap(mem_hdc,m_view_width,m_view_height); SelectObject(m_hdc,m_bitmap);这时就会发现当BitBlt到p原创 2009-10-28 11:22:00 · 295 阅读 · 0 评论 -
如何获得texture纹理贴图IDirect3DTexture9的实际大小
网上有人问过这个问题,回贴者老是不回答问题,而是问为啥要获得这个,提问者问这个问题当然有他的需求,比如他想要根据大小来计算贴图时的比例,类似的需求很多。遗憾的是dx里一旦你生成了IDirect3DTexture9对象之后,基本没办法获得图像原始大小了,比如使用GetLevelDesc获得的是底层surface的大小,而surface的长宽都必然是2的n次方,大于或等于图形原始大小,所以如果你原创 2009-11-07 17:21:00 · 1997 阅读 · 4 评论 -
windows7如何在命令行下安装inf文件
到了windows7,发现右键点inf文件没有“安装”选项了,从控制面板中的“添加设备”一直在搜索,无法安装,从网上找了一下,从命令行安装inf文件的方法为rundll32 syssetup,SetupInfObjectInstallAction DefaultInstall128 ./.inf 同理,卸载的方法可能是rundll32 syss翻译 2009-11-02 11:51:00 · 7209 阅读 · 0 评论 -
STATIC控件无法接收WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_LBUTTONUP的问题
发现这些消息都发送给了父窗口,那么说明STATIC控件缺少一个样式,是SS_NOTIFY,这一点在MSDN上无法得到,SS_NOTIFY的说明为:SS_NOTIFY Sends the parent window STN_CLICKED,STN_DBLCLK, STN原创 2011-09-02 19:53:39 · 712 阅读 · 0 评论