随笔分类 - VC
摘要:由于接收消息必须要有hwnd,也就是需要有个窗口对应才能接收消息,但有些情况下不需要这个窗口却又想要能够接收消息,找了下,大概有这么些办法:1、在一个BCB版块看到有个人提问在dll中不用窗口怎么接收消息的一个回答:自定义一个窗口句柄: 申请:AllocateHWnd 释放:DeallocateHWnd 就可以接受和发送消息啦2、建立一个普通的隐藏窗口,只用于处理消息,不干其它事情3、建立一个“消息窗口(Message-Only窗口)”,这种窗口仅仅用于处理消息,而不能被显示出来。在创建时指定CreateWindowEx的参数hwndParent为HWND_MESSAGE.或在创建窗口后S..
阅读全文
摘要:umdh用法很简单:gflags -i application_name +ustumdh.exe -pn:application_name.exe -f:FirstDump.txt... exercise the applicationumdh.exe -pn:application_name.exe -f:SecondDump.txtumdh.exe FirstDump.txt SecondDump.txt -f:Result.txtgflags -i application_name - ust
阅读全文
摘要:很多时候我们会限制程序只能开启一个,一般我们会用全局命名互斥量来实现这个任务。如果程序没有界面,这样做可以很好实现。但是如果程序有界面呢,用户在双点桌面的快捷方式时,程序不能开启,最多只能提示程序已开启。这样就算完事了。但对用户来说,还要在任务栏上找个半天(也许这时个任务栏已全部都排满了。所以这对用户是很大的不方便。 下面写的是我最近看到的一个方案,它在第二次启动时最就第一次打开的界面显示在最前面。用户操作很方便多// CAtlFileMapping<HWND> m_mapping; map里放的时程序开启后的主界面窗口句柄#define APP_OBJECT_NAME _T(“a
阅读全文
摘要:在多线程的程序里,往往很容易的使用TerminateThread函数。这个函数的功能是结束一个工作的线程在MSDN中REMARKS是这样说的: TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode c...
阅读全文
摘要:在MFC,ATL的源代码中充斥着__declspec(selectany) 的声明。selectany可以让我们在.h文件中初始化一个全局变量而不是只能放在.cpp中。比如有一个类,其中有一个静态变量,那么我们可以在.h中通过类似 " __declspec(selectany) type class::variable = value; "这样的代码来初始化这个全局变量。既是该.h被多次include,链接器也会为我们剔除多重定义的错误。对于teamplate的编程会有很多便利。
阅读全文
摘要:C语言中排序的算法有很多种,系统也提供了一个函数qsort()可以实现快速排序。原型如下: 显示代码打印1void qsort(void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));它根据comp所指向的函数所提供的顺序对base所指向的数组进行排序,nmem为参加排序的元素个数,size为每个元素所占的字节数。例如要对元素进行升序排列,则定义comp所指向的函数为:如果其第一个参数比第二个参数小,则返回一个小于0的值,反之则返回一个大于0的值,如果相等,则返回0。 例: 显示代码打印01#
阅读全文
摘要:在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的参数。(1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:#Pragma message(“消息文本
阅读全文

浙公网安备 33010602011771号