Windows编程中的若干难点 让编程改变世界 Change the world by program 一个窗口的生与死 我记得有童鞋会问:如果我的程序需要在关闭前让用户判断是否确定要关闭窗口,我应该响应哪个消息呢?响应WM_DESTROY消息吗? ..... 此处省略N多内容,具体请看视频讲解 ...... 究竟是谁调用了谁 在传统的C语言中,我们需要程序实现什么功能,我们就去直接调用相应的函数来完成.例如需要打开文件,那么我会调用fopen函数,需要打印到显示器,我们调用printf函数.…
在Windows编程中,很容易见到这些数据类型:LPSTR,LPTSTR,LPCTSTR... 像很多童鞋一样,当初在学Windows编程的时候,对着些数据类型真的是丈二和尚,摸不着头脑,长时间不用就会想不起来.所以,下面就对此做一个总结. 首先,先来看一下ASCII编码和UNICODE编码的区别.下面是<Windows 程序设计>一书中对Unicode编码的说明: 简单地说,Unicode扩展自ASCII字符集.在严格的ASCII中,每个字符用7位表示,或者计算机上普遍使用的每字符有8位宽:…
Windows编程中UNICODE和_UNICODE定义问题 先转一篇文章: 初学Windows SDK编程时碰到过这个问题,相信很多初学Windows编程的人也都碰到过,后来慢慢搞明白些了,但有时别人问到自己也说不太 清楚.今天借此机会,我也好好整理一下自已的思路,用下面这篇文章详细点地解释下这个问题,希望能帮助到有此疑问的朋友. UNICODE和_UNICODE并不是在头文件中"定义"的,而是程序员通过以下方法之一定义的: 1.用代码定义的,就像你上面的一样: 2.编译选项中指定.…
在windows编程中,有许多奇怪的数据类型,初学者不知道这些代表什么,下面就把一些数据类型列出如下: ATOM 原子(原子表中的一个字符串的参考) BOOL 布尔变量 BOOLEAN 布尔变量 BYTE 字节(8位) CCHAR Windows字符 CHAR Windows字符 COLORREF 红.绿.蓝(RGB)彩色值(32位) Const 变量,该变量的值在执行期间保持为常量 CRITICAL_SECTION 临界段对象 CTRYID 国名标识符 DLGPROC 指向一个对话框过程的指针…
Windows编程中常常涉及到的一个问题是字符串之间的转换,开发过程总是遇到编译器提示无法格式转换的问题.于是自己总结了几种解决的方法. 1.通过T2W转换宏 char* szStr = "balabala"; CString str = CString(szStr); USES_CONVERSION;    LPCWSTR wszClassName = new WCHAR[str.GetLength()+1];    wcscpy((LPTSTR)wszClassName,T2W((…
windows编程中文件操作有以下几种常见方法:1.C语言中文件操作.2.C++语言中的文件操作.3.Win32 API函数文件操作.4.MFC CFile类文件操作.5.MFC CFileDialog类的文件操作.6.注册表文件操作. 下面我来详细说明一下各种文件操作方法:1. C语言中文件操作.需要包含的头文件STDIO.H 写入文件: FILE *pfile=fopen("C.txt","w");//以写的方式打开C.txt文件. fwrite("W…
资源在Windows编程中的应用 资源 加速键.位图.光标.对话框.菜单.字符串.工具条 1.菜单的创建 菜单由以下组成部分: (1)窗口主菜单条 (2)下拉式菜单框 (3)菜单项热键标识 (4)菜单项加速键标识 (5)菜单项分隔线 1)定义菜单 menuID MENU [,载入特性选项] { 菜单项列表 } menulD:menulD是菜单资源名,用以标识特定的菜单,应用程序通过菜单资源名加载指定菜单,它可以是一个字符串,也可以是1-6535之间的任何一个整数. MENU关键字:同来标识资源的…
来源:http://www.jianshu.com/p/5f499f8212e7 引言 本文试图从一个更高的视角来总结Java语言中的并发编程内容,希望阅读完本文之后,可以收获一些内容,至少应该知道在Java中做并发编程实践的时候应该注意什么,应该关注什么,如何保证线程安全,以及如何选择合适的工具来满足需求. 当然,更深层次的内容就会涉及到JVM层面的知识,包括底层对Java内存的管理,对线程的管理等较为核心的问题,当然,本文的定位在于抽象与总结,更为具体而深入的内容就需要自己去实践,考虑到可能…
 发布于 2013-12-11 作者 Ross Gardler 微软开放技术有限公司 (MS Open Tech) 很高兴地宣布发行新的 Windows Azure Puppet 模块.通过这个模块,可以使用流行的开源 DevOps 工具 Puppet 在 Windows Azure 上提供 Linux 和 Windows 虚拟机.产品的支持以Puppet专属 Windows Azure 模块的形式发布在 Puppet Forge 上.此外,还支持网络配置和数据库等关键服务的管理.这样一来,…
1.如何启用?(未来应该可从应用商店中直接安装) 在"控制面板"的"启用或关闭 Windows 功能"中进行勾选安装.(安装完成后需要重新启动) 2.然后呢? 然后打开"命令提示符"或"PowerShell"输入 bash 命令,会提示需要确认接受条款,按 y 接受. 唔,这里会出一些问题,可能因为众所周知的原因,下载过程可能会很漫长,或者根本下载不了. 可以利用 Fiddler 软件(下载地址:https://www.tel…
摘要: 本文主要对Windows内存管理中的堆管理技术进行讨论,并简要介绍了堆的创建.内存块的分配与再分配.堆的撤销以及new和delete操作符的使用等内容. 关键词: 堆:堆管理 1 引言 在大多数Windows应用程序设计中,都几乎不可避免的要对内存进行操作和管理.在进行大尺寸内存的动态分配时尤其显的重要.本文即主要对内存管理中的堆管理技术进行论述. 堆(Heap)实际是位于保留的虚拟地址空间中的一个区域.刚开始时,保留区域中的多数页面并没有被提交物理存储器.随着从堆中越来越多的进行内存分…
资源在基于SDK的程序设计中的应用实验 一.实验目的 1.掌握各种资源的应用及资源应用的程序设计方法.   二.实验内容及步骤 实验任务 1.熟悉菜单资源的创建过程: 2.熟悉位图资源的创建: 3.熟悉对话框资源的应用: 4.熟悉图标资源. 实验内容 在一个窗口中央加载一个任意位图,位图尺寸为窗口面积的四分之一,当单击鼠标左键或键盘上的向上箭头时,位图向上移动,当移动到窗口的上边界时,窗口显示“不能再向上移动了”字样,当单击鼠标右键或键盘上的向下箭头时,位图向下移动,当到达窗口的下边界时,屏幕显…
学习目的 掌握菜单和对话框资源的创建和使用. 编写程序: 设计一个窗口应用程序, 其中有一个VC菜单, 该菜单下有"显示", "隐藏", "退出"选项; 当选择"显示"选项时, 窗口中显示一个对话框, 在对话框中显示"我们一起来学习VC++"; 当选择"隐藏"按钮时,对话框消失;选择"退出"时, 退出应用程序; 并为该程序加载图标 1.菜单资源设计 在资源中新建一个菜…
回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. Windows SDK中回调函数处处可见,MFC中使用回调函数要比纯Window SDK或C#,VB.net中麻烦许多,笔者想借这篇文章来总结MFC中回调函数的使用. 本文以回调函数EnumWindows为例,介绍如何在MFC中使用…
(1)windows写日志系统 void writeDebugEventLog(TCHAR* pszMessage, WORD wType) { //#ifdef _DEBUG HANDLE hEventSource = NULL; ] = { NULL, NULL }; hEventSource = RegisterEventSourceW(NULL, L"DeviceMonitorService"); if (hEventSource) { lpszStrings[] = _T(&…
一般会出现如下两种情况 1.WinMain函数中,最后阶段接收消息队列循环中,调用的GetMessage函数参数提供错误 如: while (GetMessage(&msg,hwnd, 0, 0))       {         TranslateMessage(&msg);         DispatchMessage(&msg);     } 这个错误往往是由于程序员疏忽大意造成的,个别编译器使用时会有自动补全(提示)功能,会提示GetMessage函数的第二个参数是一个H…
1.include: #include表示只在系统提供的头文件中查找: #include "Head File"表示先在当前目录中搜索,若不存在,再到系统目录中查找: vs环境中,主函数源代码所在位置为“当前位置”,而非工程根目录: 头文件名不区分大小写: 2.sizeof: 用sizeof求长度时: 如果对象是数据类型,则需要加括号,如:sizeof(int): 如果对象是类型实例,则无需加括号,如:int a;  sizeof  a;…
错误 1 :   error LNK2001: 无法解析的外部符号 _WTSQueryUserToken@8 解决办法:   ——>查看链接器->输入->附加依赖项,依照debug模式下修改(修改附加依赖项中多余的lib,确保依赖的Lib) error LNK2001:无法解析的外部符号 WinMain 解决办法: 错误 2: error LNK1181: 无法打开输入文件“WinKillHook.lib” 解决办法:   ——>链接器中的输入选项->去掉该Lib 原因:该工…
IDC_:控件的ID命名前缀(Control) IDM_:菜单的ID命名前缀(Menu) IDD_:对话框的ID命名前缀(Dialog) IDR_:资源的ID命名前缀(Resource) IDS_:字符串的ID命名前缀(String) IDB_:位图资源的ID命名前缀(Bitmap)…
流程 1 建立并注册windows类 2 使用windows类创建窗口 3 实现事件处理,主循环 PeekMessage与GetMessage的对比 相同点: PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中的消息派发出去. 不同点: 无论应用程序消息队列是否有消息,PeekMessage函数都立即返回,程序得以继续执行后面的语句(无消息则执行其它指令,有消息时一般要将消息派发出去,再执行其它指令). GetMessage函数只有在消息对立中有消息…
目录: 从ASCII码 到 Unicode Windows 编程中的 "字符” 定义 (如何在windows下进行通用编码) 常用的通用函数,定义 (本文为学习<Programming Windows by Charles Petzold>的笔记) 从ASCII码 到 Unicode 双字节字符集 迄今为止,我们已经看到了256个字符的字符集(ASCII).但中国.日本和韩国的象形文字符号有大约21,000个.如何容纳这些语言而仍保持和ASCII的某种兼容性呢? 解决方案(如果这个说…
本人是刚刚开始学习windows编程的,感觉看雪学院的大牛很NB.想找一些书籍来看学习学习,可是不知道看哪些书好.驱动,对菜鸟们来说真是一个很深奥的话题,所以 ,我找来了这篇文章供大家分享,以后大家发现什么好书就在楼下跟贴吧! 作者:Harry Meng 来源:互联网.也许我的阅读面过于狭小,书架里基本上都是Jeffrey Richter,Charles Petzold,侯捷老师以及潘爱民老师的书,这些书一直陪伴着我,并给我的编程工作带来了很大的帮助,希望我的推荐对你也有帮助. 现 在的计算机图…
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解.GDI可以绘制点.直线曲线.填充封闭区域.位图以及文本,其中文本部分已经在上一篇中将了,请参考[Windows编程]系列第三篇:文本字符输出. 跟前面的GDI对象一样,本篇的这些绘图函数也必须要设备上下文句柄(HDC)作为函数参数,从前文我…
本篇将简单整理基本的Windows应用程序的实现,并作为创建Direct3D 10应用程序的铺垫.具体内容参照< Introduction to 3D Game Programming with DirectX 10>(中文版有汤毅翻译的电子书<DirectX 10 3D游戏编程入门>)中的附录A. 1.编写入口函数WinMain Windows编程中的WinMain函数与普通C++编程的main函数作用相同,指定了程序开始的执行点.其函数原型如下: INT WINAPI WinM…
1.windows编程中,所有的操作都放到窗口过程中进行,main函数只用于描述窗口基本信息. 2.用于获取设备环境句柄时,用BeginPaint/EndPaint,消耗cpu小,但占内存大;用GetDC/ReleaseDC,消耗CPU大,但占内存小. 3.TextOut在同一客户区输出多行内容是,需要不同的x,y坐标才能实现,否则会输出到同一行,造成无法显示. 4.大部分标识参数都需要按位运算,而不是逻辑运算. 5.删除文件函数DeleteFile在调用时,必须确保所删除的文件不在打开状态,否…
摘要: 本文对Windows剪贴板机制作了深入.全面的阐述,具体内容包括:文本.位图.DSP.自定义格式剪贴板的使用和多数据项和延迟提交技术. 关键词: VC++6.0: 剪贴板机制:数据格式:延迟提交 Windows剪贴板 Windows剪贴板是一种比较简单同时也是开销比较小的IPC(InterProcess Communication,进程间通讯)机制.Windows系统支持剪贴板IPC的基本机制是由系统预留的一块全局共享内存,用来暂存在各进程间进行交换的数据:提供数据的进程创建一个全局内存…
一般在进行windows编程时都使用vc++精简版,其插入菜单,图片等资源等更简单,且vc中对中文有更好的支持,win7下安装的Mingw中文并不能很好地显示,有光标显示的位置和光标实际位置不符的问题. MingW创建windows程序的工程,在new时要选择projects中的win32 application windows编程基础: windows编程的核心是消息驱动,要理解消息机制. WinMain函数,该函数是windows程序的入口函数,在其中创建了窗口类(WNDCLASSEX)对象…
Windows编程中关于设置映象模式的四个函数 SetWindowOrgSetViewPortOrgSetMapModeSetWindowExtExSetViewPortExtEx 一.Windows中的映射模式 1.Windows定义映射模式的目的 经 过我的综合,Windows定义映射模的目的又以下几个方面:1.不同人的使用习惯.不同国家的,不同地区,以及不同的人因为习惯喜欢用不同的度量单位, 有的人人喜欢用英寸,而有的人喜欢用公制中的厘米,毫米等.其他的人又喜欢用另外一些单位..2.使软件…
基本技术点 windows 8 中 使用 httpclient 代替 windows phone 中的 httpwebclient , 使用方法 也有些不同 . 下面是windows 8种使用 httpclient的各种方式 a 以get的方式 对服务器发起请求 获得string HttpResponseMessage response = await httpClient.GetAsync(resourceUri); // await关键字 异步加载 * resourceUri 是请求的Url…
在学习Windows Phone 程序开发时经常会使用到Dispatcher.BeginInvoke()的编程方法,可能许多初学者并不熟悉Dispatcher.BeginInvoke的使用方法以及为什么在WP编程中会经常使用到这个方法,下面就粗浅介绍下Dispatcher.BeginInvoke()的使用方法. 在WP编程中,我们经常要做的一件事就是更新UI,而其UI部分都在单一的线程下执行的.就是说,WP的开发编程中绝大部分的UI设置更新都是在UI线程中进行的,如果你在非UI线程中要更新UI的…