该函数向指定的窗体添加一个矩形,然后窗口客户区域的这一部分将被重新绘制。
在MFC程序中如何注册/注销ActiveX控件(.OCX) VC++ 2009-07-29 22:25 阅读83 评论0 字号: 大大 中中 小小 在程序中注册ActiveX控件(...; } else return FALSE ; } //---------------------------------- 在程序中注销
10.基于3D的界面库 MangoGUI_V0.1.5 MangoGUI是猫仔在DXUT基础上修改得来的一个开源GUI系统。...现在支持的系统包括Android,windows,wince,linux。clayui的特点是能实现各种2D,3D动画,一些WPF,FLEX才能实现的界面效果,通过clayui可以很方便的实现。...http://www.xcgui.com/ 9.魔方界面库 官方网站 http://www.muilib.com/ MuiLib(Magic UI Library)Windows高级界面开发库是在国内首家免费开源的...在2013版的大灰狼远程操控中就采用了这款界面库。...以上都是我在工作和个人业余时间收集积累的开源或商业界面库,这些界面库各有各的特色和侧重点,也有不同的换肤思想,如果要用在项目中还是要进行适当的增删整改。
SWP_NOSIZE); } } 参考资料: 1、CodeProject上 作者Tsuda Kageyu提供的方法:链接是:How to determine if your window is topmost. 2、VC
在一般的设计中,当需要一个线程时,就创建一个,但是当线程过多时可能会影响系统的整体效率,这个性能的下降主要体现在:当线程过多时在线程间来回切换需要花费时间,而频繁的创建和销毁线程也需要花费额外的机器指令...,同时在某些时候极少数线程可能就可以处理大量,比如http服务器可能只需要几个线程就可以处理用户发出的http请求,毕竟相对于用户需要长时间来阅读网页来说,CPU只是找到对应位置的页面返回即可。...通过控制线程数量从而减少了CPU的线程切换,而且用完的线程还到线程池而不是销毁,下一次再用时直接从池中取,在某种程度上减少了线程创建与销毁的消耗,从而提高效率 在Windows上,使用线程池十分简单...在windows上主要有四种线程池 1. 普通线程池 2. 同步对象等待线程池 3. 定时器回调线程池 4....下面来依次说明各种线程池的使用: 普通线程池 普通线程池在使用时主要是调用QueueUserWorkItem函数将回调函数加入线程池队列,线程池中一旦有空闲的线程就会调用这个回调,函数原型如下: BOOL
,里面涉及一个响应用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.
使用GetFileAttributes函数获取文件属性 INVALID_FILE_ATTRIBUTES 执行失败 FILE_ATTRIBUTE_DIRECTOR...
📷 代码: #include <iostream> #include <fstream> #include <string> #include <windows...
vc++快速使用richedit控件 1)初始化//必须加,否则无法显示窗口 CXXXApp::CXXXApp() //找到应用类 { // TODO: add construction code...在Edit控件OnEnChange的事件中不要随便用UpdateData(FALSE),因为当输入字符超过256个时,输入焦点会自动跳转到首行第一格
VC++ MFC 常用技巧(一) <?...在关闭窗口时,当要对文件进行保存时,可在这里添加函数: 1.)在CMainFrame里的OnClose()里,用MessageBox("内容","标题",组合形式);组合形式可以查看MSDN的MESSAGEBOX...( ) Function 2.)在CXXXDoc::SaveModified() 里,只能用AfxMessageBox(""); 不能用MessageBox()函数 (五)....得到窗体的标题: 1.)AfxGetMainWnd()->GetWindowText(); 2.)先FindWindow()找到窗口的HWND,在GetWindowText(); (七)....在装进自定义的光标后,在移动的过程中,鼠标的形状总是在自定义和默认的光标之间晃动,可以这样解决,在视中的PreCreateWindow()中加入如下几句: BOOL CXXXXView::PreCreateWindow
LPCTSTR lpExistingFileName, // pointer to name of an existing file LPCTSTR l...
在vc++ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess() 三个SDK函数: WinExec,ShellExecute ,CreateProcess...虽然Microsoft认为WinExec已过时,但是在许多时候,简单的WinExec函数仍是运行新程序的最好方式。... LPPROCESS_INFORMATION lpProcessInformation //用于在进程创建后接受相关信息 ; 使用方法如下: ...这些句柄拥有在参数lpProcessAttributes和lpThreadAttributes中规定的访问。...关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的其他注意事项: 1、定义头文件 在头文件stdafx.h中必须定义以下两个头文件: #include
右键Properties,VC++ Directories-->Include Directories,加入你待测试函数所在的头文件目录,即Hello.h所在目录。
几个例子 因为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
我们知道当内存的边界正好对齐在相应机器字长边界上时,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
C语言是一个面向过程的编程语言,在解决一个问题的时候,程序员需要思考计算机应该如何一步一步完成这个问题,然后将相应过程转化为代码。...C++是在C语言的基础上发展来的,但是并不是C++比C语言高级,两者的编程思想不一样,应用的领域也不一样。在各自的领域,谁也不能替代谁。
当在某个程序中安装钩子后,它将监视该程序的消息,在指定消息还没到达窗口之前钩子程序先捕获这个消息。这样就有机会对此消息进行过滤,或者对Windows消息实现监控。...卸载钩子有两种方法: (1)、结束掉安装钩子的进程 将设置钩子的进程结束,进程在退出之前会自行卸载掉该进程安装的所有消息钩子。...但是如果病毒在系统进程中注入代码而安装的钩子,这样钩子句柄就位于系统进程中,我们不可以结束系统进程,这时就只能获取这个消息钩子句柄,然后调用函数卸载。...如何枚举稍后讲解,还要解决一个问题,就是在枚举过程中,我们怎么知道哪个句柄是病毒安装的呢?...再次反汇编该函数的实现可以看出,在不同操作系统下该函数的最后三行代码如下。
如果对话框中只有一个水平(或垂直)滚动条,则不会出现什么问题,问题是本例程序有一特殊之处,笔者有意设置了两个水平滚动条,可按前述都用一个WM_HSCROLL消息控制函数,所以程序必须能识别出哪个滚动条在发送消息...在scrodlg.h类声明中的最上面加入下面两行。 ...nmax); psb = (cscrollbar*) getdlgitem(idc_scr2); psb-〉setscrollrange(nmin, nmax); 3.利用classwizard在cscrodlg
title: VC++ 崩溃处理以及打印调用堆栈 tags: [VC++, 结构化异常处理, 崩溃日志记录] date: 2018-08-28 20:59:54 categories: windows...高级编程 keywords: VC++, 结构化异常处理SEH, 崩溃日志记录 --- 我们在程序发布后总会面临崩溃的情况,这个时候一般很难重现或者很难定位到程序崩溃的位置,之前有方法在程序崩溃的时候记录...系统在每个线程的堆栈环境中都维护了一个SEH表,表中是用户注册的异常类型以及它对应的处理函数,每当用户在函数中注册新的异常处理函数,那么这个信息会被保存在链表的头部,也就是说它是采用头插法来插入新的处理函数...,从这个角度上来说,我们可以很容易理解为什么在一般的高级语言中一般会先找与try块最近的catch块,然后在找它的上层catch,由里到外依次查找。...在获取到对应的符号表位置后有这样的代码 if (NULL !
外部输入的参数不能直接作为文件路径,防止被恶意攻击,比如构造一个跨目录限制的文件路径…/…/…/etc/passwd或…/…/boot.ini,或构造一个指向系...
领取专属 10元无门槛券
手把手带您无忧上云