Windows编程
Road2010
这个作者很懒,什么都没留下…
展开
-
Windows消息响应机制之四:PostQuitMessage和GetMessage函数 .
Windows是消息驱动的操作系统。在Windows环境下编程必须熟练掌握Windows消息响应机制。 今天在练习Win32编程时碰到一个关于GetMessage函数的问题。这个问题之前一直没有引起过我的注意,但是今天 在网上搜索发现这个问题很多程序员都跟我一样处于一知半解的状态。 在Win32应用程序的主函数中有一段消息循环收发的代码: while (GetMessage(&Ms转载 2013-07-04 21:40:21 · 1105 阅读 · 0 评论 -
在Windows Server 2008系统中如何设置主题
1.开启Themes服务:运行: services.msc > 找到Themes服务项,默认是禁用,改为自动。若找不到Themes服务,请参看下面1.1添加Themes服务。若不能正确启动Themes服务,请参看下面1.2添加“桌面体验”功能。2.运行服务器管理器:左窗口选择功能-右边点“添加功能”在弹出的“添加功能向导”窗口中拖到最下面,倒数第二项“桌面体验”勾选即进行安装。转载 2014-04-29 16:57:26 · 1800 阅读 · 0 评论 -
Visual C++ 64 位迁移的常见问题
1、用 Visual C++ 创建在 64 位 Windows 操作系统中运行的应用程序时,应注意以下问题:· 在 64 位 Windows 操作系统中,int 和 long 是 32 位值。对于计划为 64 位平台编译的程序,应注意不要将指针赋给 32 位变量。在 64 位平台上,指针为 64 位,如果将该指针赋给 32 位变量,则应截断该指针值。·转载 2014-03-17 22:13:35 · 1220 阅读 · 0 评论 -
VS2012在win7 64位机中x86和x64下基本类型的占用空间大小
#include "stdafx.h"#include int _tmain(int argc, _TCHAR* argv[]){ int i = 0; i = sizeof(int); // x86:4 x64:4 i = sizeof(long); // x86:4 x64:4 i = sizeof(void*); // x86:4 x6原创 2014-03-17 20:35:08 · 5111 阅读 · 0 评论 -
C++多线程编程
C++多线程编程(入门) 1、背景为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍。早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序。在大型机年代,计算能力是一种宝贵资源。对于资源拥有方来说,最好的生财之道自然是将同一资源同时租售给尽可能多的用户。最理想的情况是垄断全球计算市场。所以不难理解为何当年IBM预测“全球只要有4台计转载 2014-02-28 21:55:38 · 916 阅读 · 0 评论 -
C++多线程总结
在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:l 并发l 异步l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。1任务队列1.1 以生产者-消费者模型设计任务队列 生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被逻辑模块修改后,就产生一个更新转载 2014-02-28 21:36:07 · 962 阅读 · 0 评论 -
C++线程池的实现
使用多线程编程可以显著提高程序的运行速度,由于现在的操作系统都是多核的,所以一个多线程的程序,由于系统内核是基于时间片轮询的,所以多线程程序再用系统内核的时间大大增多,所完成的任务就更快。 线程池头文件: 12345678910111213141516171819202122转载 2014-02-28 21:13:49 · 2287 阅读 · 0 评论 -
进程间通信
摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。1 进程与进程通信 进程是装入内存并准备执行的程序,每转载 2014-02-13 17:17:34 · 643 阅读 · 0 评论 -
64位进程调用32位dll的解决方法
最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题。由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题,这个问题让我很是挠头了几天。相关资料转载 2013-11-15 09:36:33 · 877 阅读 · 0 评论 -
堆、栈、自由存储区、全局/静态存储区和常量存储区
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没转载 2013-07-26 15:46:55 · 665 阅读 · 0 评论 -
Windows消息响应机制之三:线程与消息队列 .
当一个线程第一次被创建时,系统假定线程不会用于任何与用户相关的任务。这样可以减少线程对系统资源的要求。但是,一旦该线程调用一个与图形用户界面有关的函数 ( 如检查它的消息队列或建立一个窗口 ),系统就会为该线程分配一些另外的资源,以便它能够执行与用户界面有关的任务。特别是,系统分配了一个THREADINFO结构,并将这个数据结构与线程联系起来。 THREADINFO结构体如下: 1.将转载 2013-07-04 21:39:30 · 1277 阅读 · 0 评论 -
Windows 消息优先级
也许题目有些夸张,但是Windows消息方面确实存在一些不去探究就摸不着头脑的事情,这种问题不是明显错误,不会抛出异常,但却是最棘手的问题,给调试带来很大麻烦,所以我将实际遇到的问题整理如下,以供参考。 一、Windows 消息以及消息处理算法Windows以消息驱动的方式,使得线程能够通过处理消息来响应外界。Windows 为每个需要接受消息和处理消息的线程建立消息队列(包括发送消息转载 2013-07-04 15:43:42 · 1028 阅读 · 0 评论 -
windows消息响应机制之一:消息分析器
《Windows核心编程》中第九章-用户模式线程同步中一个例子用到了Win32界面编程,发现里面有个很奇特的宏定义chHANDLE_DLGMSG,Debug后发现作者其实用到了Windows中的消息分析器,而这种处理方式是我之前在练习Win32编程时一直在找寻的一种消息映射方式。于是到网上搜索到这边Blog。博主分析的非常细致,讲解的十分详细,转载过来作为今后学习借鉴。转载自:http://b转载 2013-07-04 21:37:48 · 973 阅读 · 0 评论 -
Windows 消息响应机制之二:消息 .
队列消息和非队列消息 从消息的发送途径来看,消息可以分成2种:队列消息和非队列消息。消息队列由可以分成系统消息队列和线程消息队列。系统消息队列由Windows维护,线程消息队列则由每个GUI线程自己进行维护,为避免给non-GUI现成创建消息队列,所有线程产生时并没有消息队列,仅当线程第一次调用GDI函数数系统给线程创建一个消息队列。队列消息送到系统消息队列,然后到线程消息队列;非队列消转载 2013-07-04 21:38:47 · 1661 阅读 · 0 评论 -
多种SOKECT通讯模型的理解(select,WSAAsyncSelect,WSAEventSelect,Overlapped I/O 事件通知,Overlapped I/O 完成例程,IOCP)
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面我就以老陈接收信件为例讲解SocketI/O模型。 一:select模型 老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信,在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。转载 2014-06-12 11:40:13 · 1225 阅读 · 0 评论