Visual C++ 2011-5-20
一.LockFile和UnlockFile
锁定文件部分区域,防止其他程序进行该部分区域的读写
#include <windows.h> #include <stdio.h>void main() {HANDLE hFile;HANDLE hAppend;DWORD dwBytesRead, dwBytesWritten, dwPos;BYTE buff[4096];// Open the existing file.hFile = CreateFile(TEXT("one.txt"), // open One.txtGENERIC_READ, // open for reading0, // do not shareNULL, // no securityOPEN_EXISTING, // existing file onlyFILE_ATTRIBUTE_NORMAL, // normal fileNULL); // no attr. templateif (hFile == INVALID_HANDLE_VALUE){printf("Could not open One.txt."); return;}// Open the existing file, or if the file does not exist,// create a new file.hAppend = CreateFile(TEXT("two.txt"), // open Two.txtFILE_APPEND_DATA, // open for writingFILE_SHARE_READ, // allow multiple readersNULL, // no securityOPEN_ALWAYS, // open or createFILE_ATTRIBUTE_NORMAL, // normal fileNULL); // no attr. templateif (hAppend == INVALID_HANDLE_VALUE){printf("Could not open Two.txt."); return;}// Append the first file to the end of the second file.// Lock the second file to prevent another process from// accessing it while writing to it. Unlock the// file when writing is complete.while (ReadFile(hFile, buff, sizeof(buff), &dwBytesRead, NULL)&& dwBytesRead > 0){dwPos = SetFilePointer(hAppend, 0, NULL, FILE_END);LockFile(hAppend, dwPos, 0, dwBytesRead, 0);WriteFile(hAppend, buff, dwBytesRead, &dwBytesWritten, NULL);UnlockFile(hAppend, dwPos, 0, dwBytesRead, 0);}// Close both files.CloseHandle(hFile);CloseHandle(hAppend); }
二.GetOverlappedResult
此函数可以查询I/O处理过程中的传输状态.如下代码示例,可以通过以下方式查看状态,见SDK示例(Testing for the End of a File)
// Check the result of the asynchronous read // without waiting (forth parameter FALSE). bResult = GetOverlappedResult(hFile,&stOverlapped,&dwBytesRead,FALSE) ; if (bResult) { float floatOffset=(float)stOverlapped.Offset;printf("ReadFile operation completed (%f)\n",floatOffset/dwFileSize);// Manual-reset event should be reset since it is now signaled.ResetEvent(stOverlapped.hEvent); }
三.Dialog消息循环
Dialog有着自己的消息循环,见下示例代码,About消息循环在DialogBox函数中创建
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;switch (message){case WM_COMMAND:wmId = LOWORD(wParam);wmEvent = HIWORD(wParam);// Parse the menu selections:switch (wmId){case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}break;case WM_PAINT:hdc = BeginPaint(hWnd, &ps);// TODO: Add any drawing code here...EndPaint(hWnd, &ps);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0; }// Message handler for about box. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {UNREFERENCED_PARAMETER(lParam);switch (message){case WM_INITDIALOG:return (INT_PTR)TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return (INT_PTR)TRUE;}break;}return (INT_PTR)FALSE; }
四.对话框参数
DialogBoxParam 方法多了一个参数,可以在WM_INITDIALOG消息中传递一个参数,同理CreateDialog和CreateDialogParam也是如此
五.ATL窗体类介绍
很好的一篇文章
http://msdn.microsoft.com/en-us/library/aa260759(VS.60).aspx
http://www.vckbase.com/document/viewdoc/?id=1119
Visual C++ 2011-5-20相关推荐
- Visual Studio 2011开发者预览版发布
关键词:Visual,Studio | 作者:虫虫 | 收藏这篇资讯 Visual Studio 2011,也叫"vNext"是微软的下一代IDE.它覆盖了软件开发的整个生命周期, ...
- 2011年20大3D网站
如果要在互联网编年史上描述2011年的话,那么无需任何插件即可在浏览器中直接嵌入支持硬件加速的3D图形一定会被记上重重的一笔. 随着大部分现代浏览器都增加了对WebGL的支持(微软IE除外),以及最近 ...
- 从Visual Studio看微软20年技术变迁
前言 这个世界从来都不缺变革,从工业革命到晶体管和集成电路,从生活电器到物联网,从简陋人机到精致体验,我们在享受技术带来的便捷的同时,也在为复杂设计而带来的挑战和生产力下降而痛并快乐着.而迫切期盼的, ...
- DLNA介绍(包含UPnP,2011/6/20 更新)
这部分的内容大多来源于网络及官方文档,依照自己的翻译理解整理所成.东西比較多,从头慢慢看还是能够懂个大概的. 文件夹: 一.DNLA的建立 二.DLNA的成员 三.DLNA标准的制定 四.DLNA的设 ...
- DLNA介绍(包括UPnP,2011/6/20 更新)
http://blog.csdn.net/musiccow/article/details/6387603 这部分的内容大多来源于网络及官方文档,按照自己的翻译理解整理所成.东西比较多,从头慢慢看还是 ...
- 【2011.9.20】Spring配置文件总结
首先来看一个标准的Spring配置文件 applicationContext.xml <? xml version="1.0" encoding="UTF-8&qu ...
- Visual Studio 20年
这是一个暴露年龄的话题,如果一个程序员从第一个版本开始使用Visual Studio的话,现在应该是40多岁的中年大叔了.我的程序员生涯是从Visual basic 6.0 (vb6)开始的,一晃就过 ...
- 【转】Visual Studio 2010 架构图之用例图(UML Use Case Diagram)
这篇文章是来自园子的,我只是把自己觉得重要的地方,做了更鲜明的标记和解释. 使用Visual Studio 2010可以在项目中添加架构图,项目可以是ASP.NET.Windows Forms.... ...
- python js 效率_巧用 db.system.js 提升20% 开发效率
开门见山,20%是我造的,哈哈,为的就是让各位mongoer能够对db.system.js collection 引起注意. 这个也是在我最近浏览InfoQ 的时候,看到一篇关于MongoDB 文章 ...
- Visual Studio 2003/Visual Studio 2005常用快捷键(快捷方式)
调试快捷键 F6: 生成解决方案 Ctrl+F6: 生成当前项目 F7: 查看代码 Shift+F7: 查看窗体设计器 F5: 启动调试 Ctrl+F5: 开始执行(不调试) Shift+F5: 停止 ...
最新文章
- 哈佛医学院解析:触发医学深度学习系统受到「对抗攻击」的诱因有哪些?
- QuickMock:基于Express的快速mock平台
- 怎么求星期几的后几天C语言,计算任何一天是星期几的C语言源代码.
- 南加州大学等开源元学习研究库learn2learn
- 华为全新折叠屏方案曝光:让人眼前一亮!
- html页面改成thymeleaf,【Thymeleaf】Thymeleaf模板对html实时刷新
- QT之QPainter用法
- 《沟通的技术——让交流、会议与演讲更有效》一第一部分 建导准备
- 怎样当一个企业舍不得的人
- 简单循迹小车实验心得_你真的了解循迹小车吗,小宇教你如何制作属于自己的循迹小车...
- 企业微信可以获取用户unionid吗?
- html svg单击事件,html5 svg 中元素点击事件添加方法
- html svg折线带圆角,SVG / d3.js上的矩形的一个角的圆角(svg / d3.js rounded corner
- storyboard(故事版)新手教程 图文详解 3.在故事版上使用scrollview
- [浅析]UE4物理系统
- zabbix4.4.3使用postgresql数据库
- 以“技术”规划跨境电商未来发展之路!跨境电商技术论坛顺利举办!
- css怎么设置注释快捷键,html中注释的快捷键是
- 剩余寿命预测的标签设置
- 【Android 开发实例】时间管理APP开发