WINDOWS编程
文章平均质量分 71
adrianfeng
这个作者很懒,什么都没留下…
展开
-
深入浅出Win32多线程程序设计之线程通信
简介 线程之间通信的两个基本问题是互斥和同步。 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。 线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。 线程互斥是一种特殊的线程同步。转载 2010-09-01 14:21:00 · 518 阅读 · 0 评论 -
解说Win32的窗口子类化
<br /><br />作者:李马(home.nuc.edu.cn/~titilima)<br />下载本文的配套源代码<br /><br />也许你需要一个特殊的Edit来限制浮点数的输入,但是现有的Edit却并不能完成这项工作——因为它只能够单纯的限制大小写或者纯数字。当你在论坛上求救的时候,某个网友告诉你:“用子类化。”你也许会在看到一线曙光的同时多出了一连串的问题:何为子类化?子类化的原理是什么?如何实现子类化?下面就让我从一个简单的C++程序开始,一步步解开你的疑团吧。 <br /> 首先,我为你转载 2010-11-25 14:45:00 · 723 阅读 · 1 评论 -
子窗口与父窗口的消息关系网-2
<br /><br />下面是得自MSDN中关于Common Controls的说明,具体路径为:ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WIN32COM.v10.en/shellcc/platform/commctls/common/common.htm#Using_Common_Control<br />可以发消息给通用控件来通知控件做某事或者向控件要某事。<br />当控件发生某事件,比如用户输入,会向父窗口发WM_NOTIFY消息。请自行查阅WM_NOT转载 2010-11-25 14:04:00 · 1435 阅读 · 0 评论 -
tcp打洞
<br /><br />Internet的迅速发展以及IPv4地址数量的限制使得网络地址翻译(NAT,Network AddressTrans2lation)设备得到广泛应用。NAT设备允许处于同一NAT后的多台主机共享一个公网(本文将处于同一NAT后的网络称为私网,处于NAT前的网络称为公网)IP 地址。一个私网IP 地址通过NAT设备与公网的其他主机通信。公网和私网IP地址域,如下图所示:<br />广域网与私网示意图<br />一般来说都是由私网内主机(例如上图中“电脑A-01”)主动发起转载 2010-11-02 14:27:00 · 4467 阅读 · 2 评论 -
文件打开方式在windows和unix系统上的不同
<br />在windows下,文件可以以二进制或文本方式打开,但在unix系统中,没有此种区别,文件都是以二进制文件打开的。<br /> <br /> <br />如果在windows下,文件以文本方式打开(默认方式),则系统或做如下处理:<br /> <br />1、对于换行符 0x0d 0x0a 和0x0a的转换<br />2、对于文件结束符CTRLZ(0x1A)的判别<br /><br />所以,unix程序移植到windows下时,可能要注意,否则会导致不必要的字节加进去或是文件异常结束原创 2010-10-21 10:41:00 · 1593 阅读 · 1 评论 -
GetWindowRect和GetClientRect(转)
原文:http://blog.chinaunix.net/u/25372/showart_304363.htmlGetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。 ClientToS转载 2010-10-07 13:43:00 · 591 阅读 · 0 评论 -
MFC中实现简单的位图显示、处理
最近在做图像采集的工作,需要处理图像数据,所以学习了一下位图显示,而且只看了设备相关位图DDB。基本上实现了位图的显示、位图数据的处理等功能。这里就记录一下我自己的理解,不一定全都对,仅供参考而已。要显示位图,需要做如下工作:CStatic* pStatic=(CStatic*)GetDlgItem(IDC_DISPLAY2);CDC* pDC=pStatic->GetDC();CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP2);BIT转载 2010-10-07 13:48:00 · 4592 阅读 · 1 评论 -
C++中两个类交叉定义或递归定义的解决办法
<br />有两个类这样定义:<br /> <br />Subject.h 头文件如下:<br />#ifndef SUBJECT_H<br />#define SUBJECT_H<br />#include <iostream><br />#include "Observer.h"<br /> <br />class Subject<br />{<br />public:<br /> void Info(){ std::cout <<" Subject !/n"; }<br />protect转载 2010-09-30 15:53:00 · 2978 阅读 · 0 评论 -
互斥对象 Mutex 和MFC中的CMutex
互斥(Mutex)是一种用途非常广泛的内核对象。能够保证多个线程对同一共享资源的互斥访问。同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。与其他几种内核对象不同,互斥对象在操作系统中拥有特殊代码,并由操作系统来管理,操作系统甚至还允许其进行一些其他内核对象所不能进行的非常规操作。 只有拥有互斥对象并得以进入到共享资源,而其他转载 2010-09-01 15:05:00 · 826 阅读 · 0 评论 -
tcp + 阻塞 + 多線程 => 如何停止Recv()
http://topic.csdn.net/t/20051117/01/4398756.htmlTCP的阻塞模式,服務器程序 主線程 => 界面 線程2 => Accept() 線程3 => Recv() 線程2在Accept了一個Client的連接後返回一個TCP Socket,我把它放到線程3來接收資料。 問題是在Recv()在沒有資料到來的時候會一直等待,我想在收到界面命令的時候令到它停止等待。 請各位給個正確的思路!=========================设置socket超时间隔,比如10转载 2010-09-01 14:22:00 · 5919 阅读 · 0 评论 -
windows线程学习
线程(thread):是为了提高系统内程序的并发执行程度而提出来的概念,它是比进程更小的能够独立运行的基本单位。线程是一个轻量级实体(light-weight entity),它的结构(thread structure)相对简单,在切换速度上非常得快,同一进程中的线程切换不会引起进程的切换,对于并行计算来讲,有效的利用线程能够改善计算的效率,简化计算的复杂性。同一进程中的线程共享如下内容: 全局变量 堆数据 打开的文件句柄 用户及用户组ID但每原创 2010-09-01 09:21:00 · 1564 阅读 · 0 评论 -
windows 多线程同步技术
转载自: 天极网,,http://www.yesky.com/443/1770443.shtml摘要: 多线程同步技术是计算机软件开发的重要技术,本文对多线程的各种同步技术的原理和实现进行了初步探讨。 关键词: VC++6.0; 线程同步;临界区;事件;互斥;信号量; 阅读目录: 使线程同步 临界区 管理事件内核对象 信号量内核对象 互斥内核对象 小结 正文 使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处转载 2010-09-03 09:23:00 · 991 阅读 · 0 评论 -
Windows中线程的基础知识和简单应用----Thread的等待
在上一篇文章中讲到了线程的生死。对于线程来说,创建是最简单的;结束相对就要复杂一下了,因为要考虑让线程自己终止,这样才能更好的释放线程所咱用的资源。个人认为对于线程而言最难之处要属线程的同步。这就像是一位领导者,在管理下属。用好的管理方式能让下属相互协作,事半功倍;不好的管理方式会让下属手忙脚乱,重复劳动互相等待。致使工作无法进行。在《Thread的生死》中,已经领略到了线程的随机性。也就是说,当我们依次创建了三个线程后,线程并不一定能按照创建的顺序依次工作。请看下面的例子。class SampleThre转载 2010-09-01 15:28:00 · 4755 阅读 · 0 评论 -
C语言中几种输出调试信息的方法
<br /><br />在调试程序时,输出调试信息是一种普遍、有效的方法。输出调试信息一般有以下五种方法:<br />方法一:直接使用屏幕打印函数printf。<br />该方法直接在需要输出调试信息的位置使用函数printf输出相应的调试信息,以及某些关键变量的值。我们通过以下求阶层的函数fact来看看该方法的调试程序过程。 #include <stdio.h><br /> int fact(int n)<br /> {<br /> int i,f=1;<br /> f转载 2011-03-17 14:07:00 · 1054 阅读 · 0 评论