摘要:
最近有项目要做一个高性能网络服务器,决定下功夫搞定完成端口(IOCP),最终花了一个星期终于把它弄清楚了,并用C++写了一个版本,效率很不错。但,从项目的总体需求来考虑,最终决定上.net平台,因此又花了一天一夜弄出了一个C#版,在这与大家分享。一些心得体会:1、在C#中,不用去面对完成端口的操作系统内核对象,Microsoft已经为我们提供了SocketAsyncEventArgs类,它封装了IOCP的使用。请参考:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx?cs-s 阅读全文
摘要:
总的来讲,设置电脑从U盘启动一共有两种方法,第一种是进Bios然后设置U盘为第一启动项。第二种是利用某些电脑现成的启动项按键来选择U盘启动。下面分情况介绍: 方法一、利用快捷键进入BIOS,选择U盘启动:可以参考http://www.upanok.com/jiaocheng/60.html 方法二、这种方法没有统一的步骤,因为某些BIOS版本不同设置也不同,总的来说方法二也分两种: 1)一种是没有硬盘启动优先级“HardDiskBootPriority”选项的情况,直接在第一启动设备“Firstbootdevice”里面选择从U盘启动; 2)另一种是存在硬盘启动优先级“HardDis... 阅读全文
摘要:
[准备工作]1、将SkinMagicTrial.dll放置在调试目录2、设置库文件目录,在项目[连接器]的[附加依赖项]中加入库SkinMagicTrial.lib3、在项目的stdafx.h文件中加入头文件 #include "SkinMagicLib.h"4、。smf的皮肤文件让人安装目录下(若时候资源式调用,则放在.rc文件夹)[创建过程]1、初始化SkinMagic库:要使用SkinMagic,这一步必不可少。在应用程序类的InitInstance()函数中行加入如下代码(粗体部分): CWinApp::InitInstance();VERIFY( 1 == Ini 阅读全文
摘要:
(一)刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具。使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能。但常用的并不多!在VC.Net 普遍使用的预处理指令:#pragma once//只要在头文件的最开始加入这条指令就能够保证头文件被编译一次//传统的解决办法是使用#ifdef 以及#endif 来避免头文件的重复编译## 连接符与# 符## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(t 阅读全文
摘要:
线程的同步由 于同一进程的所有线程共享进程的虚拟地址空间,并且线程的中断是汇编语言级的,所以可能会发生两个线程同时访问同一个对象(包括全局变量、共享资源、 API函数和MFC对象等)的情况,这有可能导致程序错误。例如;1).如果一个线程在未完成对某一大尺寸全局变量的读操作时,另一个线程又对该变量进行了写操 作,那么第一个线程读入的变量值可能是一种修改过程中的不稳定值。2).属于不同进程的线程在同时访问同一内存区域或共享资源时,也会存在同样的问题。因此,在多线程应用程序中,常常需要采取一些措施来同步线程的执行。需要同步的情况包括以下几种:1).在多个线程同时访问同一对象时,可能产生错误。例如,如 阅读全文
摘要:
-- 选择自 vcforever 的 Blog在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作. 下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!一. message 参数。message 它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message("消息文本") 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条 指令在 阅读全文
摘要:
参考:/***************************************************************在OnInitDialog中,可以调用 InitMenu( GetMenu()),从配置文件中读取菜单项,或者调用 ExportMenu(GetMenu())导出菜单内容//加载菜单实现菜单的多语言切换 void InitMenu( CMenu *menu ) { if ( menu==NULL || ( !::IsMenu(menu->m_hMenu))) return ; CString szText; int nCount,subCount, i.. 阅读全文
摘要:
预备知识——MFC文件操作1.计算机是如何管理自身所存放着的大量的信息的呢?硬盘上的信息是以文件的形式被管理的。2.为什么要在程序中使用文件?通常,程序中的数据在程序运行结束之后,就会从内存中清除,再次运行程序时不会自动出现。在编制程序的过程中不可避免的会遇到将某些数据永久保存的问题,当程序关闭后,依然可以使用这些数据,这时就需要进行文件操作。3.文件类型(Visual C++处理的文件通常分为两种)文本文件:只可被任意文本编辑器读取ASCII文本。二进制文件:指对包含任意格式或无格式数据的文件的统称。这里只介绍文本文件的读写,INI文件也属于文本文件的范畴,且INI文件的结构和用途与普通的文 阅读全文