- 博客(39)
- 资源 (5)
- 收藏
- 关注
转载 Win32环境下dll编程原理
比较大应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在
2008-07-31 09:38:00 794
转载 DLL初学者指南(非MFC)
作者:Notsosuperhero译者:小刀人环境: Visual C++ 2003, Windows源代码下载:DLL_Project.rar -DLL Project的源代码及测试项目原文出处: codeguru我正在学习DLLs,谈不上对其有什么高屋建瓴的见解;本文只是(通过)编码让你看到并想知道代码是如何运行的。在本文中,我假定你知道如何使用你的编译器特性,比如设置目录路径等等。
2008-07-31 09:31:00 1086
转载 VC编写DLL几种方法的简介
动态连接库最大的特点就是能节省磁盘空间.当多个进程共享同一个DLL的时候,内存中只有一个DLL的代码.通过映射来使各个进程得以调用.1.用VC建立一个WIN32 DLL我们利用VC编写DLL有几种方法.如果用VC建立一个WIN32 DLL 工程.那这个工程就应该只导出C++的类或全局变量.和全局函数.方法就是在CPP文件中编写你的代码,为每个需要导出的元素进行导出办法是增加如下语句
2008-07-31 09:25:00 7198
转载 用vc写DLL - -
通过MFC AppWizard(dll)输入DLL程序的名称"DLL"后点击"Finish"按钮生成一个DLL程序的基本结构,其中在运行到图二界面时,我们可以选择第一项按钮"Regular DLL with MFC statically linked" 生成常规静态DLL,也可以选择第二项按钮"Regular DLL using shared MFC DLL"生成常规动态DLL,后者的体积
2008-07-31 09:24:00 1280
转载 仅通过崩溃地址找出源代码的出错行
出处:统一教学网 作者:bz201 的 Blog 编辑:N/A 发表日期:2006-6-25 16:00:00 作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃!“该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最
2008-07-31 09:23:00 1561
转载 Linux下的定时器:alarm()与setitimer()
Linux下的定时器有两种,以下分别介绍:1、alarm如果不要求很精确的话,用alarm()和signal()就够了unsigned int alarm(unsigned int seconds)函数说明: alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并
2008-07-29 09:27:00 1189
转载 定时器:为 Windows 实现一个连续更新,高精度的时间供应器
原著:Johan Nilsson翻译:lxhui原文出处:MSDN Magazine March 2004(Timers...)原代码下载: HighResolutionTimer.exe (404KB)本篇文章假定你熟悉 C++ 和 Win32 API 概要 从 Windows NT 里获得的时间戳(Timestamp),根据你所使用的硬件,其最大精度为 10
2008-07-29 09:22:00 3333
转载 线程池的使用
第8章讲述了如何使用让线程保持用户方式的机制来实现线程同步的方法。用户方式的同步机制的出色之处在于它的同步速度很快。如果关心线程的运行速度,那么应该了解一下用户方式的同步机制是否适用。到目前为止,已经知道创建多线程应用程序是非常困难的。需要会面临两个大问题。一个是要对线程的创建和撤消进行管理,另一个是要对线程对资源的访问实施同步。为了对资源访问实施同步,Wi n d o w s提供了许多基本要素
2008-07-29 09:08:00 2117
转载 定时器示例
#include tchar.h>// The caption of our message boxTCHAR g_szCaption[] = TEXT("Timed Message Box");// How many seconds well display the message boxint g_nSecLeft = 0;// This is STATIC window control
2008-07-28 16:57:00 746
转载 线程与内核对象的同步
用户同步的方式的优点是速度非常快。但也有局限性:互锁函数只能在单值上运行,无法使线程进入等待状态。关键代码段函数可以使线程等待,但只能对单个进程中的线程同步,且容易产生死锁(进入关键代码段时不能设置超时值)。内核对象同步方式的缺点:速度慢,当调用任何内核同步函数时,调用线程都会从用户方式切换到内核方式。内核对象同步状态:已通知、未通知。eg.进程:进程创建时总是处于未,进程运行时处于未,
2008-07-28 16:55:00 1127
转载 Linux网络编程一步一步学-select详解
2007-11-11 21:26select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On s
2008-07-24 15:32:00 1190
转载 Linux下如何实现秒以下精确定时与休眠
Linux 中提供的休眠函数是sleep 和alarm ,但是他们仅仅提供以秒为单位的休眠,这中休眠有些进程显然太长了,那么怎样才能使进程以更小的时间分辨率休眠呢? 我知道的方法有2种,下面就做分别介绍。 第一种方法是使用定时器,Linux提供的定时器函数是: int setitimer(int which, const struct itimerval *value
2008-07-24 14:56:00 1593
转载 使用CPU时间戳进行高精度计时
正文 对关注性能的程序开发人员而言,一个好的计时部件既是益友,也是良师。计时器既可以作为程序组件帮助程序员精确的控制程序进程,又是一件有力的调试武器,在有经验的程序员手里可以尽快的确定程序的性能瓶颈,或者对不同的算法作出有说服力的性能比较。 在Windows平台下,常用的计时器有两种,一种是timeGetTime多媒体计时器,它可以提供毫秒级的计时。但这个精度对很多应用场合而言还是太粗糙了。另一种
2008-07-24 13:46:00 675
转载 通过异步程序调用(APC)实现的定时功能
定时器是一个在特定时间或者规则间隔被激发的内核对象。结合定时器的异步程序调用可以允许回调函数在任何定时器被激发的时候执行。本文的例子代码显示了如何实现。 使用本定时器时,你需要把常量_WIN32_WINNT定义为0x0400,并且此常量应该在包之前定义,以确保声明合适的定时器原型函数。 通过调用CreateWaitableTimer()可以创建一个定时器,此函数返回一个指向内核对象
2008-07-24 09:31:00 1063
转载 利用VC++编程实现程序自动启动
工作中经常遇到一些程序,它们在系统启动的过程中,自动打开并运行,以便实现对系统的监控或者病毒的检测等特定的目的,典型的例子就是常用的一些杀毒软件 如:KV300及瑞星杀毒软件等。笔者在此,以自己的编程实践为基础,说明这些程序自动启动的原理和方法,同时对一些典型程序代码进行分析,以便读者在今 后的编程过程中使用。 一、 程序自动启动的原理及方法: 1. 利用WIN.INI文件实
2008-07-23 16:40:00 1086
原创 CreateWaitableTimer和SetWaitableTimer函数
用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去。比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物。要想实现这些功能,就可以使用定时器的API函数CreateWaitableTimer和SetWaitableTimer来实现了,这对API函数创建的时钟是比较精确的,可以达到100倍的10亿分之一秒。 函数CreateWaitableTimer和SetWaitab
2008-07-23 14:26:00 6746 1
转载 UNREFERENCED_PARAMETER的用处
作用:告诉编译器,已经使用了该变量,不必检测警告!在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告。当你生命了一个变量,而没有使用时,编译器就会报警告:“warning C4100: XXXX : unreferenced formal parameter.” 所以,为了让编译器不必检测你的警告,就使用UNREFERENCED_PARAM
2008-07-16 13:21:00 899
转载 关闭 C4996 警告
关闭 C4996 警告在使用VC 2005 的开发者会遇到这样的问题,在使用std命名空间库函数的时候,往往会出现类似于下面的警告: warning C4996: strcpy was declared deprecated出现这样的警告,是因为VC2005中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、缓冲区溢出、非法访问等安全问题。这些函数如:strcpy、strc
2008-07-09 10:14:00 2151
转载 VC++ MFC 多线程及线程同步
VC++ MFC 多线程及线程同步关键词: MFC 多线程及线程同步 VC++6.0; 线程同步;临界区;事件;互斥;信号量; 使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理
2008-07-08 13:22:00 1091
转载 STL之map
STL之map1. map中的元素其实就是一个pair.2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行.3. map是个无序的容器, 而vector之类是有序的. 所谓有序无序是指放入的元素并不是按一定顺序放进去的, 而是乱序, 随机存放的(被映射后近似随机存放).所以遍历的时候有些效率差别.4. 判断有没
2008-07-07 14:25:00 684
转载 在MFC下如何定义全局变量和全局函数VC++
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。 一、在应用程序类中定义 用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。
2008-07-04 11:09:00 1976
转载 vc++中有全局变量及全局函数
全局变量一般这样定义:1。在一类的.cpp中定义 int myInt;然后再在要用到的地方的.cpp里extern int myInt;这样就可以用了。2。在stdafx.cpp中加入:int myInt;然后在stdafx.h中加入:extern int myInt这样定义的变量以后无论在什么文件中都可见的.3。比较规范的是,先定义一个Glbs
2008-07-04 11:08:00 4924
原创 VC++中CEdit控件使用笔记
向CEdit中追加文本(原来文本不变)已经让滚动条始终在底部方法一:(效率不高) CString strTemp; GetDlgItem(IDC_EDIT_OUTPUT)->GetWindowText(strTemp); strTemp += strAppendText; GetDlgItem(IDC_EDIT_OUTPUT)->SetWindowText(strT
2008-07-03 16:11:00 6813
转载 VC控件
VC学习笔记1:按钮的使能与禁止用ClassWizard的Member Variables为按钮定义变量,如:m_Button1;则m_Button1.EnableWindow(true); 使按钮处于允许状态m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示VC学习笔记2:控件的隐藏与显示用CWnd类的函数BOOL ShowWin
2008-07-03 10:50:00 2991 1
转载 is not a class or namespace name解决方法
is not a class or namespace name解决方法每建立一个新类,都要在classname.cpp文件中加入#include "stdafx.h"文件,而且加的位置要在第一行;原因:编译器通过一个头文件stdafx.h来使用预编译头文件,所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC 标准头文件(如Windows.H、Afxwin.H)预先
2008-07-03 09:44:00 25554
转载 Run-Time Check Failure #2 - Stack around the variable 'var' was corrupted
Run-Time Check Failure #2 - Stack around the variable var was corrupted摘要:简介VC++.NET编译新功能,运行时错误检查,编译选项 (/RTC1, equiv. to /RTCsu)最近把一个别人早期在VC 6下编写的一个服务移植到VC 7.1 (.NET 2003)时,突然跳出好些运行时错误提示。
2008-07-02 15:38:00 4719
转载 Visual C++开发工具与调试技巧整理
自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,在这里把Visual C++开发工具与调试技巧整理摘录如下,希望对大家有用,省去大家再去搜索的烦恼。 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations
2008-07-02 15:33:00 920
转载 socket函数列表
socket() 我们使用系统调用socket()来获得文件描述符:#include#includeint socket(int domain,int type,int protocol);第一个参数domain设置为“AF_INET”。第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。第三个参数设置为0。系统调用socket()只返
2008-07-02 10:46:00 3625 2
转载 VC++中的函数调用惯例
VC++中的函数调用惯例 作者:zhaoyao73 我们知道在进行函数调用时,有几种调用方法,主要分为C式,Pascal式.在C和C++中C式调用是缺省的,类的成员函数缺省调用为_stdcall。二者是有区别的,下面我们用实例说明一下: 1
2008-07-02 10:32:00 1038
转载 非阻塞recvfrom的设置
我想用UDP阻塞模式给硬件设备发包,然后收包。因为网络的问题,经常丢包,也就是发了之后没有响应。这样的话,recvfrom会一直停在那里,死机了一样。 能不能设成超时自动返回,或者其它什么解决办法,谢谢! 我不想用非阻塞模式,据说比较耗资源。 //连接超时 //----------------
2008-07-02 10:15:00 29568
转载 用VC获取本机IP地址列表的方法
// GetIplist.cpp : Defines the entry point for the console application. // // 程序功能:取出本机的所有IP,保存为一个字符串列表 // 作者:someone(阿风) // windows xp + sp2 , vc6 + sp5编译通过 // #inclu
2008-07-02 09:47:00 1696
转载 简单的摄像头视频浏览和捕获程序
新建一个基于对话框的工程,引用头文件 ,导入 vfw32.lib 库,库文件可以在vc存在路径中找到; 如:D:/Program Files/Microsoft Visual Studio/VC98/Lib/vfw32.lib 在窗体上添加四个个按钮,修改ID为IDC_VIDEO , IDC_CAPTURE , IDC_STOPVIDEO , IDC_STOPCAPTUR
2008-07-02 09:46:00 756
转载 VC++中进程与多进程管理的方法
进程进程是当前操作系统下一个被加载到内存的、正在运行的应用程序的实例。每一个进程都是由内核对象和地址空间所组成的,内核对象可以让系统在其内存放有关进程的统计信息并使系统能够以此来管理进程,而地址空间则包括了所有程序模块的代码和数据以及线程堆栈、堆分配空间等动态分配的空间。进程仅仅是一个存在,是不能独自完成任何操作的,必须拥有至少一个在其环境下运行的线程,并由其负责执行在进程地址空间内的代
2008-07-02 09:44:00 673
转载 vc中socket编程步骤
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib的库文件。服务器端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:绑
2008-07-02 09:41:00 997
转载 深入 CSocket 编程之阻塞和非阻塞模式
深入 CSocket 编程之阻塞和非阻塞模式作者: Starlight本文适合初中级读者阅读 有时,花上几个小时阅读、调试、跟踪优秀的源码程序,能够更快地掌握某些技术关键点和精髓。当然,前提是对这些技术大致上有一个了解。 我通过几个采用 CSocket 类编写并基于 Client/Server (客户端 / 服务端)的网络聊天和传输文件的程序 ( 详见: 源代码参考
2008-07-02 09:38:00 763
转载 vc网络编程入门
vc网络编程入门对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手。许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清,只知其所以而不知起所以然。 同步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而异步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式
2008-07-02 09:34:00 1066
转载 VC++ Socket编程 简单的Tcp/ip客户端
#include #include #include #define NO_FLAGS_SET 0#define PORT (u_short) 44965#define DEST_IP_ADDR "192.168.10.158" //Server addressINT main(VOID){ WSADATA
2008-07-02 09:31:00 4399
转载 浅析:setsockopt()改善程序的健壮性
主 题: 浅析:setsockopt()改善程序的健壮性 作 者: gdy119 (夜风微凉) 不断的收到coolmei25 (梅生)的答谢,我都不好意思了(我都没帮到他),下面写出我在网络编程中的一点心得体会,希望对他(^_^也对大家)有帮助:1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesoc
2008-07-01 10:52:00 787
转载 Socket编程中select()的妙用
来源:本文出自: 作者: (2001-09-13 09:00:00) 发信站: 华南网木棉站 (Tue Aug 4 15:43:41 1998), 转信 【 原文由 cpu 所发表 】 用过 WinSock API 网友们知道:WinSock 编程中有一很方便的地方便是其 息驱动机制,不管是底层 API 的 WSAAsyncSelect() 还是 M
2008-07-01 09:57:00 690
windowresize
2013-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人