首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    VC++编写ActiveX控件

    ,里面涉及一个响应用PLC的采集信息的问题(PLC用串口和工控机相连接),然后思考如何用C#写串口通讯程序,结果师兄一旁直接用VC++写了一个“*.ocx控件”,并在自己的电脑上进行了测试,完工后就把生成的...说到跨语言的模块化程序设计,本文之前发表的一篇《VC++的DLL应用(含Demo演示)》中讲了dll的创建方法,用户可以将一些公用函数放在dll源文件中,然后编译生成一个dll文件,供程序动态加载连接并调用里面的函数...最后VC++会自动生成一些文件,这些文件就构成了ActiveX的基本模板,文件的主要结构如下:     直接编译一下,然后Debug目录下面就会生成一个名为“ocxDemo.ocx”的控件注册文件,...总述:通过“类向导”工具,为控件添加属性、方法和事件后,VC++会自动相应的文件里面生成代码,比如内部方法属性和外部方法属性之间的映射,消息的建立,消息的声明,等等。...3.2.1 通过VC++调用      利用VC6.0建立一个MFC的基本对话框应用程序      完成程序向导后。执行下面的步骤: 1.

    3.4K30

    老版VC++线程池

    一般的设计中,当需要一个线程时,就创建一个,但是当线程过多时可能会影响系统的整体效率,这个性能的下降主要体现在:当线程过多时在线程间来回切换需要花费时间,而频繁的创建和销毁线程也需要花费额外的机器指令...,同时某些时候极少数线程可能就可以处理大量,比如http服务器可能只需要几个线程就可以处理用户发出的http请求,毕竟相对于用户需要长时间来阅读网页来说,CPU只是找到对应位置的页面返回即可。...通过控制线程数量从而减少了CPU的线程切换,而且用完的线程还到线程池而不是销毁,下一次再用时直接从池中取,某种程度上减少了线程创建与销毁的消耗,从而提高效率 Windows上,使用线程池十分简单...windows上主要有四种线程池 1. 普通线程池 2. 同步对象等待线程池 3. 定时器回调线程池 4....下面来依次说明各种线程池的使用: 普通线程池 普通线程池使用时主要是调用QueueUserWorkItem函数将回调函数加入线程池队列,线程池中一旦有空闲的线程就会调用这个回调,函数原型如下: BOOL

    1.5K30

    VC++ IPv6的支持

    几个例子 因为IPV6 不能再像V4那样直接往地址结构中填写IP了,因此IPV6的场合需要大量使用getaddrinfo函数,来根据具体的IP字符串或者根据主机名来自动获取地址信息,然后根据地址信息直接调用...当然写入的时候按照这几种方式写入,为了方便写入IP地址,微软定义了一个宏: #define s_addr S_un.S_addr 因此填入IP地址的时候可以简单的使用这个宏来给S_addr这个共用体成员赋值...sockaddr_in6 该结构类似于sockaddr_in,只不过它表示的是IPV6的地址信息,使用上,由于IPV6是128的地址占16个字节,而sockaddr_in 中表示地址的部分只有4个字节..., 所以它与之前的两个是不能转化的,使用IPV6的时候需要特殊的处理,一般不直接填写IP而是直接根据IP的字符串或者主机名来连接。...但是WinSock中更常用的是WSAAddressToString 与 WSAStringToAddress INT WSAAddressToString( LPSOCKADDR lpsaAddress

    1.4K20

    VC++平台上的内存对齐操作

    我们知道当内存的边界正好对齐相应机器字长边界上时,CPU的执行效率最高,为了保证效率,VC++平台上内存对齐都是默认打开的,32位机器上内存对齐的边界为4字节;比如看如下的代码: struct MyStruct...MyStruct)<<endl; return 0; } 此时输出的结果并不是sizeof(int) + sizeof(char) = 5而是8,因为内存对齐的原因,将char分配为4个字节效率更高; VC...平台上我们可以通过预处理指令:#pragma pack(show)来查看当前内存对齐的方式,我们代码前加上一句#pragma pack(show),再次编译,在编译器的“生成”窗口中看到一个警告:“warning...MyStruct)<<endl; system("PAUSE"); return 0; } 这个时候得到结果为5,也就是说我们已经将对齐方式改为了1; 除了这个预处理指令我们也可以通过VC

    76330

    VC++中使用OpenCV进行颜色检测

    VC++中使用OpenCV进行颜色检测 VC++中使用OpenCV进行颜色检测非常简单,首选读取一张彩色图像,并调用函数cvtColor(img, imgHSV, COLOR_BGR2HSV);函数将原图...颜色检测通常可以用于物体检测和跟踪中,尤其不同的图像和物体中根据特定的颜色去筛选出某个物体。...这两种表示目的上类似,但在方法上有区别。...二者在数学上都是圆柱,但HSV(色相、饱和度、明度)概念上可以被认为是颜色的倒圆锥体(黑点在下顶点,白色在上底面圆心),HSL概念上表示了一个双圆锥体和圆球体(白色在上顶点,黑色在下顶点,最大横切面的圆心是半程灰色...VC++中使用OpenCV对图像进行颜色检测 通过学习油管博主murtazahassan的视频Learn-OpenCV-cpp-in-4-Hours,里面第6个OpenCV示例将到如何从一副兰博基尼的轿车图像中进行颜色检测

    17300

    VC++消息钩子编程「建议收藏」

    当在某个程序中安装钩子后,它将监视该程序的消息,指定消息还没到达窗口之前钩子程序先捕获这个消息。这样就有机会对此消息进行过滤,或者对Windows消息实现监控。...卸载钩子有两种方法: (1)、结束掉安装钩子的进程 将设置钩子的进程结束,进程退出之前会自行卸载掉该进程安装的所有消息钩子。...但是如果病毒系统进程中注入代码而安装的钩子,这样钩子句柄就位于系统进程中,我们不可以结束系统进程,这时就只能获取这个消息钩子句柄,然后调用函数卸载。...如何枚举稍后讲解,还要解决一个问题,就是枚举过程中,我们怎么知道哪个句柄是病毒安装的呢?...再次反汇编该函数的实现可以看出,不同操作系统下该函数的最后三行代码如下。

    76820
    领券