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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何快速将文本中的tab更换成逗号(图文详解)

不多说&#xff0c;直接上干货&#xff01; 现有一份数据如下。 下载日志数据并分析 到搜狗实验室下载用户查询日志 1) 介绍 搜索引擎查询日志库设计为包括约1个月(2008年6月)Sogou搜索引擎部分网页查询需求及用户点击情况的网页查询日志数据集合。为进行中文搜索引擎用户行为…

java中矩阵怎么打印_在Java编程中打印二维数组或矩阵

在本文中&#xff0c;我们将尝试以与通常在纸上书写相同的方式在控制台上打印数字数组或数字矩阵。为此&#xff0c;逻辑是一个接一个地访问数组的每个元素&#xff0c;并使其以空格分隔打印&#xff0c;当行到达矩阵中的emd时&#xff0c;我们还将更改行示例public class Prin…

Commit Monitor–svn监控工具

SVN更改通知的工具&#xff0c;在这里分享给大家。 自己负责的模块代码有时被同事修改&#xff0c;但是没有知会&#xff0c;也不容易了解到具体的改动内容&#xff0c;可能造成各种各样的问题。这里推荐一个工具Commit Monitor&#xff0c;可以监控svn仓库的提交记录&#xff…

用python发送email

#coding:utf-8from email.header import Headerfrom email.mime.text import MIMETextfrom email.utils import parseaddr, formataddrimport smtplibdef _format_addr(s): name, addr parseaddr(s) return formataddr((Header(name, utf-8).encode(), addr))#发件人地址…

java 获取mac地址 乱码_Java:开机获取Mac地址问题

server.jar设置为开机自启动&#xff0c;启动时会执行getLinuxMac()方法获取本机Mac地址&#xff1a;private static String getLinuxMac() {StringBuffer sb new StringBuffer();try {String str "ifconfig | grep ether | sed -n 1p | awk -F {print $2}";Strin…

WinCE6.0学习之EBoot源码分析----startup.s(三)

下面将详细叙述MMU的设置&#xff0c;也是本人花费时间最多的一部分内容&#xff0c;无论是2410、6410甚至是Cortex-A8核的ARM&#xff0c;MMU的设置基本都一样&#xff0c;所以移植时这部分可以直接搬过来&#xff0c;只需要更改全局内存映射表的映射关系即可。<?xml:name…

oracle 察看用户是否被锁,解锁以及改密码

以管理员身份登陆察看用户状态&#xff08;是否被锁&#xff09; select * from dba_users where usernameuser1 解锁 ALTER USER user1 ACCOUNT UNLOCK; 修改用户密码 alter user user1 identified by newpass;转载于:https://www.cnblogs.com/lcword/p/8232042.html

java json删除节点_指定json的某个节点进行增、删、改

有时候我们需要对json结构的数据进行更新&#xff0c;或增&#xff0c;或改&#xff0c;或删。当json层级比较复杂时操作起来是比较麻烦的&#xff0c;得一层层找下去找到要更新的节点才能操作它。我用python语言封装了一个类&#xff0c;提供三个函数分别用于增删改json的目标…

高级 Linux 命令精通指南(2)

xargs 大多数 Linux 命令都会产生输出&#xff1a;文件列表、字符串列表等。但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办&#xff1f;例如&#xff0c;file 命令显示文件类型&#xff08;可执行文件、ascii 文本等&#xff09;&#xff1b;您可以处理输出&a…

java如何实现Socket的长连接和短连接

讨论Socket必讨论长连接和短连接 一、长连接和短连接的概念 1、长连接与短连接的概念&#xff1a;前者是整个通讯过程&#xff0c;客户端和服务端只用一个Socket对象&#xff0c;长期保持Socket的连接&#xff1b;后者是每次请求&#xff0c;都新建一个Socket,处理完一个请求就…

java怎么更改id名_java - 尽管ID已更改为_id,但列'_id'不存在

我已经将我的ID重命名为_id&#xff0c;但仍然得到column _id does not exist ...我错过了什么吗&#xff1f;MyDatabaseelper.javapublic class MyDatabaseHelper extends SQLiteOpenHelper {public static final int DATABASE_VERSION1;public static final String DATABASE_…

NTP搭建(原创)

server 127.127.1.0 fudge 127.127.1.0 stratum 11 driftfile /var/lib/ntp/drift broadcastdelay 0.008 上面是自己作为ntp服务器简单配置 server 192.168.1.10 prefer driftfile /var/lib/ntp/drift broadcastdelay 0.008 上面是选择其他服务器作为ntp服务器简单配置 完事后…

疯狂的java 目录_疯狂创客圈 JAVA 高并发 总目录

无编程不创客&#xff0c;疯狂创客圈&#xff0c;一大波编程高手正在交流、学习中!疯狂创客圈&#xff1a; JAVA 高并发 研习社群&#xff0c; QQ群&#xff1a;104131248(已满) 236263776 (请加此群)疯狂创客圈 经典图书 &#xff1a; 《Netty Zookeeper Redis 高并发实战…

也谈云计算

云计算的介绍和讨论不时见诸于报章网端&#xff0c;但是基本上是各说各话&#xff0c;众说纷纭中让大家仍然感觉云里雾里&#xff0c;不见明路。 本文没有涵盖全部的观点&#xff0c;但却希望提供一种思路&#xff0c;大家共同探讨云的建设。云计算是英文Cloud Computing的翻译…

ubuntu设置静态ip

一、 编辑interfaces文件 &#xff08;需要修改文件权限&#xff09; sudo vi /etc/network/interfaces 二、将一下内容添加进去 auto lo iface lo inet loopback auto ens33 iface ens33 inet static address 192.168.0.1&#xff08;要设置的静态ip&#xff09; netmas…

车辆入库java程序_java扫描入库及出库,基于谷歌类开发.仅提供完整代码 连接SQL使用,...

java扫描入库及出库&#xff0c;基于谷歌类开发.仅提供完整代码 连接SQL使用,需要自行制作中心服务器&#xff0c;中心服务器代码在本人另一实例里面&#xff0c;请自行下载【实例简介】扫描入库及出库&#xff0c;基于谷歌类开发.仅提供完整代码【实例截图】【核心代码】//直接…

用phpmyadmin更改root密码的方法

首先用root账号登陆phpmyadmin&#xff0c;然后点击左侧进入mysql数据库&#xff0c;在顶部点击“mysql”进入sql输入界面。输入以下命令&#xff1a; update user set passwordpassword(root) where Userroot root为你希望修改的密码&#xff0c;切记不要在数据库中直接手工修…

Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载

效果图&#xff1a; 1、activity_main.xml 描述&#xff1a;定义了六个按钮 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/activity_main&quo…

java中的%nf_java中DecimalFormat四舍五入用法详解

DecimalFormat 是 NumberFormat 的一个具体子类&#xff0c;用于格式化十进制数字。它可以支持不同类型的数&#xff0c;包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)这些内容的本地化。下边先介绍下DecimalFormat的用法&#xf…

org.SLF4J

SLF4J不是具体的日志解决方案&#xff0c;它只服务于各种各样的日志系统。按照官方的说法&#xff0c;SLF4J是一个用于日志系统的简单Facade&#xff0c;允许最终用户在部署其应用时使用其所希望的日志系统。 实际上&#xff0c;SLF4J所提供的核心API是一些接口以及一个LoggerF…