![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
VC++
liang_lq
这个作者很懒,什么都没留下…
展开
-
对话框以字符串形式显示
做项目过程中,需要将字符串显示在屏幕的任意位置,并可用鼠标拖动以改变位置,研究了下,实现如下://创建字体 CFont font; HRGN wndRgn; CDC dc, *pDC = GetDC(); font.CreateFont( 90, // nHeight 45, // nWidth 0, // nEscapement原创 2011-02-27 21:50:00 · 1947 阅读 · 0 评论 -
线程的同步(一)---临界区
<br />当多个线程访问一个独占性共享资源时,可以使用“临界区”对象。任一时刻只有一个线程可以拥有临界区对象,拥有临界区的线程可以访问被保护起来的资源或代码段,其他希望进入临界区的线程将被挂起等待,直到拥有临界区的线程放弃临界区时为止,这样就保证了不会在同一时刻出现多个线程访问共享资源。<br />以下的临界区用法中,CRITICAL_SECTION一般是在SDK下使用,而CCriticalSection类是MFC对CRITICAL_SECTION使用的封装。如果是在MFC下编程,推荐使用CCritica原创 2011-03-13 22:59:00 · 951 阅读 · 0 评论 -
线程的同步(二)---事件
事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象,或者说当应用程序必须等到发生某事才能访问资源,应该使用事件对象。在所有的内核对象中,事件内核对象是个最基本的对象。它们包含一个使用计数(与所有内核对象一样),一个用于指明该事件是个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。 事件能够通知一个操作已经完成。有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的原创 2011-03-14 00:15:00 · 688 阅读 · 0 评论 -
线程的同步(三)---互斥
<br />互斥对象(mutex)能够确保线程拥有对单个资源的互斥访问权。实际上互斥对象是因此而得名的。互斥对象包含一个使用数量,一个线程I D和一个递归计数器。互斥对象的行为特性与临界区相同,但是互斥对象属于内核对象,而临界区则属于用户方式对象。这意味着互斥对象的运行速度比关键代码段要慢。但是这也意味着不同进程中的多个线程能够访问单个互斥对象,并且这意味着线程在等待访问资源时可以设定一个超时值。<br />只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都原创 2011-03-17 23:24:00 · 552 阅读 · 0 评论 -
IP地址 DWORD与字符串转换
<br />CString dwIP2csIP(DWORD dwIP){ CString strIP = _T(""); WORD add1,add2,add3,add4; add1=(WORD)(dwIP&255); add2=(WORD)((dwIP>>8)&255); add3=(WORD)((dwIP>>16)&255); add4=(WORD)((dwIP>>24)&255); strIP.Format("%d.%d.%d.%d",add4,add3,add2转载 2011-05-19 13:18:00 · 6830 阅读 · 1 评论 -
关于线程池
线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"技术产生的原因。比如转载 2013-06-23 05:51:51 · 567 阅读 · 0 评论 -
关于rootkit
一、定义rootkit是由有用的小型程序组成的工具包,使得攻击者能够保持访问计算机上具有最高权限的用户“root”。换句话说,rootkit是能够持久或可靠地、无法检测地存在于计算机上的一组程序和代码。rootkit提供了两个主要功能:远程命令和控制,以及软件窃听。远程命令和控制(简称远程控制):包括对文件进行控制,导致系统重启或“死机蓝屏”,以及访问命令shell(即cmd.exe或原创 2013-06-24 18:17:33 · 1428 阅读 · 0 评论 -
关于VC的一些编译错误
1、fatal error C1010: unexpected end of file while looking for precompiled header directive解决:在cpp文件中加入#include "StdAfx.h"原创 2013-08-15 10:45:30 · 700 阅读 · 0 评论 -
关于类的大小
类的大小可以归纳以下几个原则:1、类的大小为类的非静态成员数据的类型大小之和,也就是说静态成员数据不作考虑。2、类的大小与类中的构造函数、析构函数以及其他的普通成员函数无关(虚函数除外),只与它当中的成员数据有关。3、虚函数由于要维护虚函数表,所以要占据一个指针大小,也就是4字节。4、为了优化存取效率,类的总大小也遵守类似class字节对齐的(与基本数据类型中的长度最大的对齐)。原创 2013-08-15 10:47:34 · 1953 阅读 · 0 评论 -
动态创建Radio Button
项目中遇到要动态创建单选按钮的情况,把代码整理如下:对话框的成员变量:private: std::list m_radioList; //用来保存动态创建的按钮的指针,便于释放 对话框的成员函数:private: void ClearRadioList(); //释放动态创建的按钮在对话框的OnInitDialog函数里添加创建按钮的代码: CRect rcBtn(20,0,120,15); //按钮高度为15,间隔高度为10 for (int i = 0; i原创 2011-03-12 15:05:00 · 3450 阅读 · 0 评论 -
关于m_pMainWnd
今天写程序时遇到个简单而又很有意思的问题,封装了一个网络接口类,发送数据以及网络的回调接口都在这个类里面,打算在回调函数里给AfxGetMainWnd()发送消息以更新主界面的数据,同时程序有一个登录框,需要在登录的回调函数里判断是否登录成功,以决定是否显示主界面,于是就想到这样做: BOOL CXXXApp::InitInstance(){ //... CDlgLogin dlgLogin; m_pMainWnd = &dlgLogin; if (IDCANCEL ==原创 2011-02-18 18:04:00 · 5937 阅读 · 4 评论 -
VC6.0编译器参数设置
<br />http://hi.baidu.com/kingchl/blog/item/a5dabfd35d594235960a166f.html<br /> <br />VC6.0编译器参数的设置主要通过VC的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:<br /><br />/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS转载 2011-02-18 13:27:00 · 964 阅读 · 0 评论 -
VC 窗口特效(淡入淡出、滑动显示等)
http://blog.csdn.net/qiaozhangchi/archive/2008/12/11/3497367.aspxvoid CAboutDlg::OnClose() { AnimateWindow(GetSafeHwnd(), 500, AW_BLEND | AW_HIDE); //淡出0.5秒 CDialog::OnClose();}int CAboutDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialo转载 2011-02-28 22:57:00 · 3232 阅读 · 0 评论 -
VC 窗口特效(栅条)
想做一个栅条特效的窗口,在网上找到一篇VC窗口特效的文章,原文:http://blog.csdn.net/qiaozhangchi/archive/2008/12/11/3497367.aspx,发现并没有栅条特效,在网上找了很久也没找到,无奈只好自己想办法了。灵光一现下,想到以前做的异形窗口,便想用SetWindowRgn函数加定时器来实现。主要用到三个函数: BOOL CreateRectRgn(int x1, int y1, int x2, int y2); int Combine原创 2011-02-28 23:28:00 · 1710 阅读 · 0 评论 -
对话框的隐藏
<br />1.在OnInitDialog中添加<br /> WINDOWPLACEMENT wp; <br /> wp.length=sizeof(WINDOWPLACEMENT);<br /> wp.flags=WPF_RESTORETOMAXIMIZED; <br /> wp.showCmd=SW_HIDE; <br /> SetWindowPlacement(&wp);<br /> <br /> ModifyStyleEx(WS_EX_APP原创 2011-03-01 14:19:00 · 1693 阅读 · 0 评论 -
带滚动条的对话框类
<br />在codeproject上看到了个有滚动条的对话框DEMO,原文http://www.codeproject.com/KB/dialog/scroll_dialog.aspx,不过是用SDK写的,为了在MFC下使用方便,把它改写成了类CScrollDialog,使用时把自己的对话框从CScrollDialog类继承,并把自己对话框类代码中的CDialog都替换为CScrollDialog即可。代码如下:<br />ScrollDialog.h文件<br />// ScrollDialog.h:原创 2011-03-05 00:55:00 · 8622 阅读 · 2 评论 -
CListCtrl选中行
1、设置CListCtrl选中行m_list.SetItemState(nIndex,LVIS_SELECTED,LVIS_SELECTED);2、选中行改变项目中用到ClistCtrl,当选中行改变时,另外一个控件的详细信息也随之改变,最开始使用鼠标点击事件:void CMyDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { TODO: Add your control notification handler code here int n原创 2011-03-07 13:25:00 · 13918 阅读 · 2 评论 -
VC6使用STL时很多C4786警告
<br />http://www.cnitblog.com/cockerel/archive/2006/06/12/12069.html<br /> <br />下面的代码编译时报告了一大堆愚蠢的C4786编译警告,足有十四个:<br />f:/program files/microsoft visual studio/vc98/include/list(125) : warning C4786: '?$reverse_bidirectional_iterator@Viterator@?$list@V?$b转载 2011-02-17 17:38:00 · 6922 阅读 · 0 评论 -
IsKindOf()函数
<br /> 知道有IsKindOf这么个函数,用来检测:(1)对象是否属于指定的类,(2)对象是否属于指定类派生的类,但是一直没用过,今天用了下,提示错误error C2039: 'classXXX' : is not a member of 'XXX',查了很多资料,才把它搞明白,记录如下:<br />1、对使用IsKindOf这个函数的类要在.h文件夹里定义DECLARE_DYNAMIC或DECLARE_SERIAL宏<br />class CDlgTest : public CDialog{原创 2011-02-17 13:51:00 · 6503 阅读 · 2 评论 -
Class Wizard Error: A duplicate insert block exists for class (CMyclass) in the source files
http://www.codeguru.com/forum/archive/index.php/t-112218.htmltaraNovember 1st, 2000, 04:44 PMHi,I am getting this error message in Visual Studio 6.0 when trying to bring up Class Wizard for this specific Dialog resource I have. I have been looking for dupl转载 2011-02-17 17:26:00 · 2072 阅读 · 2 评论 -
线程的同步(四)---信号量
信号量内核对象用于对资源进行计数。它们与所有内核对象一样,包含一个使用数量,但是它们也包含另外两个带符号的32位值,一个是最大资源数量,一个是当前可用资源数量。最大资源数量用于标识信标能够控制的资源的最大数量,而当前资源数量则用于标识当前可以使用的资源的数量。信号量的使用规则如下:• 如果当前可用资源的数量大于0,则发出信标信号。• 如果当前可用资源数量是0,则不发出信标信号。原创 2013-06-23 03:49:58 · 835 阅读 · 0 评论