一.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相关推荐

  1. Visual Studio 2011开发者预览版发布

    关键词:Visual,Studio | 作者:虫虫 | 收藏这篇资讯 Visual Studio 2011,也叫"vNext"是微软的下一代IDE.它覆盖了软件开发的整个生命周期, ...

  2. 2011年20大3D网站

    如果要在互联网编年史上描述2011年的话,那么无需任何插件即可在浏览器中直接嵌入支持硬件加速的3D图形一定会被记上重重的一笔. 随着大部分现代浏览器都增加了对WebGL的支持(微软IE除外),以及最近 ...

  3. 从Visual Studio看微软20年技术变迁

    前言 这个世界从来都不缺变革,从工业革命到晶体管和集成电路,从生活电器到物联网,从简陋人机到精致体验,我们在享受技术带来的便捷的同时,也在为复杂设计而带来的挑战和生产力下降而痛并快乐着.而迫切期盼的, ...

  4. DLNA介绍(包含UPnP,2011/6/20 更新)

    这部分的内容大多来源于网络及官方文档,依照自己的翻译理解整理所成.东西比較多,从头慢慢看还是能够懂个大概的. 文件夹: 一.DNLA的建立 二.DLNA的成员 三.DLNA标准的制定 四.DLNA的设 ...

  5. DLNA介绍(包括UPnP,2011/6/20 更新)

    http://blog.csdn.net/musiccow/article/details/6387603 这部分的内容大多来源于网络及官方文档,按照自己的翻译理解整理所成.东西比较多,从头慢慢看还是 ...

  6. 【2011.9.20】Spring配置文件总结

    首先来看一个标准的Spring配置文件 applicationContext.xml <? xml version="1.0" encoding="UTF-8&qu ...

  7. Visual Studio 20年

    这是一个暴露年龄的话题,如果一个程序员从第一个版本开始使用Visual Studio的话,现在应该是40多岁的中年大叔了.我的程序员生涯是从Visual basic 6.0 (vb6)开始的,一晃就过 ...

  8. 【转】Visual Studio 2010 架构图之用例图(UML Use Case Diagram)

    这篇文章是来自园子的,我只是把自己觉得重要的地方,做了更鲜明的标记和解释. 使用Visual Studio 2010可以在项目中添加架构图,项目可以是ASP.NET.Windows Forms.... ...

  9. python js 效率_巧用 db.system.js 提升20% 开发效率

    开门见山,20%是我造的,哈哈,为的就是让各位mongoer能够对db.system.js collection 引起注意. 这个也是在我最近浏览InfoQ 的时候,看到一篇关于MongoDB 文章 ...

  10. Visual Studio 2003/Visual Studio 2005常用快捷键(快捷方式)

    调试快捷键 F6: 生成解决方案 Ctrl+F6: 生成当前项目 F7: 查看代码 Shift+F7: 查看窗体设计器 F5: 启动调试 Ctrl+F5: 开始执行(不调试) Shift+F5: 停止 ...

最新文章

  1. 哈佛医学院解析:触发医学深度学习系统受到「对抗攻击」的诱因有哪些?
  2. QuickMock:基于Express的快速mock平台
  3. 怎么求星期几的后几天C语言,计算任何一天是星期几的C语言源代码.
  4. 南加州大学等开源元学习研究库learn2learn
  5. 华为全新折叠屏方案曝光:让人眼前一亮!
  6. html页面改成thymeleaf,【Thymeleaf】Thymeleaf模板对html实时刷新
  7. QT之QPainter用法
  8. 《沟通的技术——让交流、会议与演讲更有效》一第一部分 建导准备
  9. 怎样当一个企业舍不得的人
  10. 简单循迹小车实验心得_你真的了解循迹小车吗,小宇教你如何制作属于自己的循迹小车...
  11. 企业微信可以获取用户unionid吗?
  12. html svg单击事件,html5 svg 中元素点击事件添加方法
  13. html svg折线带圆角,SVG / d3.js上的矩形的一个角的圆角(svg / d3.js rounded corner
  14. storyboard(故事版)新手教程 图文详解 3.在故事版上使用scrollview
  15. [浅析]UE4物理系统
  16. zabbix4.4.3使用postgresql数据库
  17. 以“技术”规划跨境电商未来发展之路!跨境电商技术论坛顺利举办!
  18. css怎么设置注释快捷键,html中注释的快捷键是
  19. 剩余寿命预测的标签设置
  20. 【Android 开发实例】时间管理APP开发

热门文章

  1. Django-model进阶
  2. java的ThreadLocal类的使用方法
  3. http协议相关内容
  4. UESTC_秋实大哥与花 2015 UESTC Training for Data StructuresProblem B
  5. 当查找名字的时候通过外围作用域向外查找(如何理解)
  6. ASP.NET_读写Cookie
  7. js - (初中级)常见笔试面试题
  8. HBase实战:记一次Safepoint导致长时间STW的踩坑之旅
  9. ES6学习笔记(二十二)ArrayBuffer
  10. JMeter 性能测试进阶实战