![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows程序设计第5版
文章平均质量分 76
心情第一
请不要假装努力,人生不会陪你演戏
展开
-
OLE Drag&Drop | OLE 数据传送(Data Transfer)
第一部分:OLE Drag&Drop 介绍 1.基本概念拖放,是指用鼠标拖动的方法,在不同程序的窗口之间、同一程序的不同窗口之间或同一程序同一窗体的不同控件之间,进行移动、复制、粘贴数据等操作的技术。拖放操作是依靠操作系统来完成的,被拖动的对象首先向操作系统注册一种它所使用数据的格式,并且按照这种格式来提供数据,拖放结束时,目标窗口提取出数据,并根据提取的数据生成相应的...转载 2019-04-01 11:34:23 · 760 阅读 · 1 评论 -
用FileZilla搭建FTP服务器及相关问题
注意版本是否一直,这是2017年5月份的最新版 官方资源下载链接:客户端,或者直接点击下载“FileZilla_3.24.0_win64-setup.exe”;服务端,或者直接点击下载“FileZilla_Server-0_9_60_2.exe”; 在服务器上安装并配置服务端: 安装过程这里不再赘述,一直下一步,在跳出弹窗时勾选“Always connect to this se...转载 2018-08-08 14:50:11 · 423 阅读 · 0 评论 -
FileZilla_Server 架设FTP服务器
安装安装时有几点需要注意,在选择启动方式的时候,根据自己的需要选择,这里选择手工启动,端口用默认的就好(后期可以更改):选择服务器管理界面启动方式时,选择前两个的后果就是进入系统桌面就会弹出,大家都很鄙视这种方式,那就选择第三个,手工启动:安装完毕,启动的时候会弹出一遍的窗口,既然是本机做服务器,就保留默认的127.0.0.1以及端口14147,勾选总是连接到该服务器,安装完成...转载 2018-08-11 13:31:20 · 544 阅读 · 0 评论 -
使用MFC的FTP时每次上传一个文件后就出错解决办法
用MFC的库写了个ftp上传功能,先创建文件夹再上传文件,结果发现文件夹可以正常创建好,结果上传文件的时候每次只能传一个文件,之后程序就产生错误中断。可以确定的是本地通过其他ftp软件访问ftp服务器是没问题的,权限也没问题,可以创建文件。反复的测试,结果都是只能上传一个文件,于是怀疑是哪里设置不对,先通过GetLastError获得错误代码是12003,接着用InternetGetLas...翻译 2018-12-12 17:46:28 · 685 阅读 · 0 评论 -
深入理解FTP协议
文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议。FTP使用交互式的访问,允许客户指定文件的类型和格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。 文件传输协议有基于TCP的FTP和基于UDP的简单文件传输协议TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是...转载 2018-08-10 20:57:03 · 1103 阅读 · 0 评论 -
线程同步互斥的4种方式
windows系统c++多线程开发线程的一些基本概念一、线程的基本概念。基本概念:线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程不拥有系统资源,近拥有少量运行必须的资源。二、线程的基本状态。基本状态:...转载 2018-06-19 22:48:34 · 32546 阅读 · 0 评论 -
VC++ 多线程编程,win32,MFC 例子(转)
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); /...转载 2019-03-11 14:13:48 · 275 阅读 · 0 评论 -
WaitForSingleObject函数用法
用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法。 但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。 Windows提供了许多内核对象来实现线程的同步。对于线程同步而言,这些内核对象有两个非常重要的状态:“已通知”状态,“未通知”状态(也有翻译为:受信状态,未受信状态)。Wi...转载 2019-06-05 11:31:51 · 30672 阅读 · 3 评论 -
windows系统c++多线程开发
线程的一些基本概念一、线程的基本概念。基本概念:线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程不拥有系统资源,近拥有少量运行必须的资源。二、线程的基本状态。基本状态:就绪、阻塞和运行三种基本状态。就绪状态,指线程具备运行...转载 2018-06-19 22:25:15 · 283 阅读 · 0 评论 -
CreateEvent函数在多线程中使用及实例
HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState,LPCSTR lpName);bManualReset:TRUE,使用ResetEvent()手动重置为无信号状态;FALSE,当一个等待线程被释放时,自动重置状态为无信号状态。bInitia...转载 2019-06-05 12:03:53 · 840 阅读 · 0 评论 -
windows系统c++多线程开发
线程的一些基本概念一、线程的基本概念。基本概念:线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程不拥有系统资源,近拥有少量运行必须的资源。二、线程的基本状态。基本状态:就绪、阻塞和运行三种基本状态。就绪状态,指线程具备运行...转载 2018-06-19 22:46:19 · 2936 阅读 · 0 评论 -
WaitForSingleObject与WaitForMultipleObjects用法详解
在多线程下面,有时候会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects。这两个函数都会等待Object被标为有信号(signaled)时才返回的。那么,什么是信号呢?简单来说,Windows下创建的Object都会被赋予一个状态量。如果Object被激活了,或者正在使用...原创 2018-06-19 22:30:26 · 487 阅读 · 0 评论 -
死锁的理解及例子
任何时候当一段代码需要两个(或更多)资源时,都有潜在性的死锁阴影。死锁的情况可能非常复杂,许多线程的独立性彼此纠缠在一起。虽然有一些算法可以侦测并仲裁死锁状态, 基本上它们仍嫌过于复杂。对大部分程序而言,最好的政策就是找出一种方法以确保死锁不会发生。稍后你会看到,强迫将资源锁定,使它们成为 " all-or-nothing"(要不统统获得,要不统统没有),可以阻止死锁的发生。死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。原创 2020-10-30 08:35:54 · 682 阅读 · 0 评论 -
VC++深入详解:钩子函数
VC++深入详解:钩子函数什么是HOOK编程?这得从Windows消息机制说起:当在应用程序窗口内点击鼠标左键时,操作系统会感知这一事件,然后把消息放到应用程序的消息响应队列中,应用程序通过GetMessage读取消息,然后通过DispatchMessage将消息调度给操作系统,操作系统会调用在设计窗口类时指定的应用程序窗口过程函数对消息进行处理。假如我们希望对某个特殊的消息进行屏蔽,比如希望这个...转载 2018-06-24 00:06:47 · 1562 阅读 · 0 评论 -
第08章 定时器
Microsoft Windows定时器:是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。您的程序将时间间隔告诉Windows,例如「每10秒钟通知我一声」,然后Windows给您的程序发送周期性发生的WM_TIMER消息以表示时间到了。初看之下,Windows定时器似乎不如键盘和鼠标设备重要,而且对许多应用程序来说确实如此。但是,定时器比您可能认为的要重要得多,它不...转载 2018-08-11 17:37:15 · 278 阅读 · 0 评论 -
第21章 动态链接库
动态链接库(也称为DLL)是Microsoft Windows最重要的组成要素之一。大多数与Windows相关的磁盘文件如果不是程序模块,就是动态链接程序。迄今为止,我们都是在开发Windows应用程序;现在是尝试编写动态链接库的时候了。许多您已经学会的编写应用程序的规则同样适用于编写这些动态链接库模块,但也有一些重要的不同。动态链接库的基本知识正如前面所看到的,Windows应用程序是一...转载 2018-08-13 00:42:57 · 252 阅读 · 0 评论 -
第10章 注册表
什么是注册表?注册表(registry)是Microsoft Windows 中的一个重要数据库。如何打开注册表?用快捷键Windows+R打开运行窗口,输入regedit、regedit.exe或者regedt32、regedt32.exe四个名称均可。注册表的作用?用于存储系统和应用程序的设置信息。注册表的结构?注册表是层次结构的数据库,由以下嵌套容器和数据组成:子树(...转载 2018-08-17 00:18:25 · 796 阅读 · 0 评论 -
第02章 Unicode简介
在第一章中,我已经预告,C语言中在Microsoft Windows程序设计中扮演着重要角色的任何部分都会讲述到,您也许在传统文字模式程序设计中还尚未遇到过这些问题。宽字符集和Unicode差不多就是这样的问题。简单地说,Unicode扩展自ASCII字符集。在严格的ASCII中,每个字符用7位表示,或者计算机上普遍使用的每字符有8位宽;而Unicode使用全16位字符集。这使得Unicode...转载 2018-08-21 14:35:16 · 252 阅读 · 0 评论 -
第23章 领略Internet
Internet-全世界计算机透过不同协议交换信息的大型连结体-近几年重新定义了个人计算的几个领域。虽然拨接信息服务和电子邮件系统在Internet流行开来之前就已经存在,但它们通常局限于文字模式,并且根本没有连结而是各自分隔的。例如,每一种信息服务都需要拨不同的电话号码,用不同的使用者ID和密码登录。每一种电子邮件系统仅允许在特定系统的缴款使用者之间发送和接收邮件。现在,往往只需要拨单一支电...转载 2018-08-24 20:27:22 · 240 阅读 · 0 评论 -
第04章 输出文字
在前一章,您看到了一个简单的Windows 98程序,它在窗口中央,或者更准确地说,在显示区域中央显示一行文字。正如我们学到的,显示区域是整个应用程序窗口中未被标题列、窗口边框,以及可选的菜单列、工具列、状态列和滚动条占据的部分。简而言之,显示区域是窗口中可以由程序任意书写和传递视觉信息的部分。对于程序的显示区域,您几乎可以为所欲为,只不过您不能假定窗口大小是某一特定尺寸,或者在程序执行时其大...转载 2018-08-22 20:08:47 · 278 阅读 · 0 评论 -
第05章 图形基础
图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视讯显示器和打印机上显示图形。正如您所认为的那样,GDI是Windows非常重要的部分。不只您为Windows编写的应用系统在显示视觉信息时使用GDI,就连Windows本身也使用GDI来显示使用者接口对象,诸如菜单、滚动条、图标和鼠标光标。不幸的是,如果要对GDI进行全面的讲述,将需要...转载 2018-08-22 20:10:15 · 621 阅读 · 0 评论 -
第06章 键盘
在Microsoft Windows 98中,键盘和鼠标是两个标准的使用者输入来源,在一些连贯操作中常产生互补作用。当然,鼠标在今天的应用程序中比十年前使用得更为广泛。甚至在一些应用程序中,我们更习惯于使用鼠标,例如在游戏、画图程序、音乐程序以及Web浏览器等程序中就是这样。然而,我们可以不使用鼠标,但绝对不能从一般的PC中把键盘拆掉。相对于个人计算机的其它组件,键盘有非常久远的历史,它起源于...转载 2018-08-22 20:12:45 · 766 阅读 · 0 评论 -
第07章 鼠标
鼠标是有一个或多个键的定位设备。虽然也可以使用诸如触摸画面和光笔之类的输入设备,但是只有鼠标以及常用在膝上型计算机上的轨迹球等才是渗透了PC市场的唯一输入设备。情况并非总是如此。当然,Windows的早期开发人员认为他们不应该要求使用者为了执行其产品而必须买只鼠标。因此,他们将鼠标作为一种选择性的附加设备,而为Windows中的所有操作以及applet提供一种键盘接口(例如,查看Windows...转载 2018-08-22 20:14:08 · 252 阅读 · 0 评论 -
第09章 子窗口控件
回忆第七章的CHECKER程序。这些程序显示了矩形网格。当您在一个矩形中按下鼠标按键时,该程序就画一个x;如果您再按一次鼠标按键,那么x就消失。虽然这个程序的CHECKER1和CHECKER2版本只使用一个主窗口,但CHECKER3版本却为每个矩形使用一个子窗口。这些矩形由一个叫做ChildProc的独立窗口消息处理程序维护。如果有必要,无论矩形是否被选中,都可以给ChildProc增加一种向...转载 2018-08-22 20:17:41 · 939 阅读 · 0 评论 -
第11章 菜单及其它资源
大多数Windows程序都包含一个自订的图标,Windows将该图标显示在应用程序窗口标题列的左上角。当程序被列在「开始」菜单中,被显示在屏幕底部的工作列中,被列在Windows Explorer中,或者作为快捷方式显示在桌面上时,Windows也显示该程序的图标。有些程序-大部分是像小画家一类的图形绘制工具-也使用自订鼠标光标来表示程序的不同操作。还有许多Windows程序使用菜单和对话框。菜单...转载 2018-08-22 20:21:03 · 420 阅读 · 0 评论 -
第12章 对话框
如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息。程序写作者可以通过在某选项后面加上省略号(…)来表示该菜单项将启动一个对话框。对话框的一般形式是包含多种子窗口控件的弹出式窗口,这些控件的大小和位置在程序资源描述文件的「对话框模板」中指定。虽然程序写作者能够「手工」定义对话框模板,但是现在通常是在Visual C++ Developer Studio中以交谈式操作的...转载 2018-08-22 20:22:38 · 807 阅读 · 0 评论 -
第13章 剪贴板
Microsoft Windows剪贴簿允许把数据从一个程序传送到另一个程序中。它的原理相对而言比较简单,把数据存放到剪贴簿上的程序或从剪贴簿上取出数据的程序都无须太多的负担。Windows 98和Microsoft Windows NT都提供了剪贴簿浏览程序,该程序可以显示剪贴簿的目前内容。许多处理文件或者其它数据的程序都包含一个「Edit」菜单,其中包括「Cut」、「Copy」和「Past...转载 2018-08-22 20:23:35 · 525 阅读 · 0 评论 -
第14章 使用打印机
为了处理文字和图形而使用视讯显示器时,设备无关的概念看来非常完美,但对于打印机,设备无关的概念又怎样呢?总的说来,效果也很好。在Windows程序中,用于视讯显示器的GDI函数一样可以在印表纸上打印文字和图形,在以前讨论的与设备无关的许多问题(多数都与平面显示的尺寸、分辨率以及颜色数有关)都可以用相同的方法解决。当然,一台打印机不像使用阴极射线管的显示器那么简单,它们使用的是印表纸。它们之间有...转载 2018-08-22 20:24:36 · 2188 阅读 · 0 评论 -
第15章 位图和Bitblt
位图是一个二维的位数组,它与图像的图素一一对应。当现实世界的图像被扫描成位图以后,图像被分割成网格,并以图素作为取样单位。在位图中的每个图素值指明了一个单位网格内图像的平均颜色。单色位图每个图素只需要一位,灰色或彩色位图中每个图素需要多个位。位图代表了Windows程序内储存图像信息的两种方法之一。储存图像信息的另一种形式是metafile,我将在第十八章讨论。Metafile储存的就是对图像...转载 2018-08-23 15:14:17 · 1495 阅读 · 0 评论 -
第16章 调色盘管理器
如果硬件允许,本章就没有存在的必要。尽管许多现代的显示卡提供24位颜色(也称「true color」或「数百万色」)或16位颜色(「增强色」或「数万种颜色」),一些显示卡-尤其是在便携式计算机上或高分辨率模式中-每个图素只允许8位。这意味着仅有256种颜色。我们用256种颜色能做什么呢?很明显,要显示真实世界的图像,仅16种颜色是不够的,至少要使用数千或数百万种颜色,256种颜色位于中间状态。...翻译 2018-08-24 20:15:29 · 664 阅读 · 0 评论 -
第17章 文字和字体
显示文字是本书所要解决的首要问题,现在我们来研究Microsoft Windows中各种有效字体和字体大小的使用方法以及调整文字的方式。Windows 3.1发表的TrueType使程序写作者和使用者以灵活的方式处理文字的能力大幅增强。TrueType是轮廓字体技术,由Apple Computer公司和Microsoft公司开发,并被许多字体制造商支持。由于TrueType字体能够连续缩放,并...翻译 2018-08-24 20:17:12 · 1665 阅读 · 0 评论 -
第18章 MetaFile
MetaFile 壹佰软件开发小组 整理编译 MetaFile和向量图形的关系,就像位图和位映像图形的关系一样。位图通常来自实际的图像,而MetaFile则大多是通过计算机程序人为建立的。MetaFile由一系列与图形函数呼叫相同的二进制记录组成,这些记录一般用于绘制直线、曲线、填入的区域和文字等。「画图(paint)」程序建立位图,而「绘图...翻译 2018-08-24 20:18:13 · 2277 阅读 · 0 评论 -
第19章 多重文件界面
多重文件接口(MDI)是Microsoft Windows文件处理应用程序的一种规范,该规范描述了窗口结构和允许使用者在单个应用程序中使用多个文件的使用者接口(如文书处理程序中的文字文件和电子表格程序中的电子表格)。简单地说,就像Windows在一个屏幕上维护多个应用程序窗口一样,MDI应用程序在一个显示区域内维护多个文件窗口。Windows中的第一个MDI应用程序是Windows下的Micros...翻译 2018-08-24 20:19:31 · 284 阅读 · 0 评论 -
第20章 多任务和多线程
多任务是一个操作系统可以同时执行多个程序的能力。基本上,操作系统使用一个硬件时钟为同时执行的每个程序配置「时间片段」。如果时间片段够小,并且机器也没有由于太多的程序而超出负荷时,那么在使用者看来,所有的这些程序似乎在同时执行着。多任务并不是什么新的东西。在大型计算机上,多任务是必然的。这些大型主机通常有几十甚至几百个终端机和它连结,而每个终端机使用者都应该感觉到他或者她独占了整个计算机。另外,...翻译 2018-08-24 20:23:16 · 270 阅读 · 0 评论 -
第22章 声音与音乐
在Microsoft Windows中,声音、音乐与视讯的综合运用是一个重要的进步。对多媒体的支持起源于1991年所谓的Microsoft Windows多媒体延伸功能(Multimedia Extensions to Microsoft Windows)。1992年,Windows 3.1的发布使得对多媒体的支持成为另一类API。最近几年,CD-ROM驱动器和声卡-在90年代初期还很少见-已成为...转载 2018-08-24 20:25:43 · 1879 阅读 · 0 评论 -
第03章 窗口和消息
在前两章,程序使用了同一个函数MessageBox来向使用者输出文字。MessageBox函数会建立一个「窗口」。在Windows中,「窗口」一词有确切的含义。一个窗口就是屏幕上的一个矩形区域,它接收使用者的输入并以文字或图形的格式显示输出内容。MessageBox函数建立一个窗口,但这只是一个功能有限的特殊窗口。消息窗口有一个带关闭按钮的标题列、一个选项图标、一行或多行文字,以及最多四个按钮...转载 2018-08-22 19:05:18 · 230 阅读 · 0 评论