MFC 学习笔记

来源:互联网 发布:色调 转化为rgb c语言 编辑:程序博客网 时间:2024/06/06 13:22

1、调试时在Debug窗口打印调试信息

使用OutputDebugString() 函数,包含在<windows.h>,参数要为CString型的,则使用OutputDebugString("aaa")可在输出窗口看到输出信息


2、Cstring追加字符串 str.AppenFormat(_T(""));


3、PathFileExists 函数可以用来查看一个文件或文件夹是否存在。
用法:
在头文件中
#include <shlwapi.h>
#pragma comment(lib,"Shlwapi.lib") //如果没有这行,会出现link错误
if (PathFileExists(strDBPath))
{
   //存在
}
else //不存在


4、GetFileAttributes() 获取文件或目录的属性

(内容转自http://blog.csdn.net/yam_killer/article/details/7665352)

函数原型:

DWORD WINAPI GetFileAttributes( __in LPCTSTR lpFileName );

函数参数

lpFileName [in] :文件或目录的名字,对于ANSI版本,名字不能大于MAX_PATH。

函数返回值

如果函数成功,返回值包含文件或目录的属性。如果函数失败,返回值是INVALID_FILE_ATTRIBUTES。

在MSDN中,文件总共有15种属性,根据磁盘的分区格式不同,文件的属性也会不同。现在针对GetFileAttributes 函数的返回值做以下整理:

返回字段

返回值

属性类型

FILE_ATTRIBUTE_READONLY

1

只读

FILE_ATTRIBUTE_HIDDEN

2

隐藏

FILE_ATTRIBUTE_SYSTEM

4

系统

FILE_ATTRIBUTE_DIRECTORY

16

目录

FILE_ATTRIBUTE_ARCHIVE

32

存档

FILE_ATTRIBUTE_DEVICE

64

保留

FILE_ATTRIBUTE_NORMAL

128

正常

FILE_ATTRIBUTE_TEMPORARY

256

临时

FILE_ATTRIBUTE_SPARSE_FILE

512

稀疏文件

FILE_ATTRIBUTE_REPARSE_POINT

1024

超链接或快捷方式

FILE_ATTRIBUTE_COMPRESSED

2048

压缩

FILE_ATTRIBUTE_OFFLINE

4096

脱机

FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

8192

索引

FILE_ATTRIBUTE_ENCRYPTED

16384

加密

FILE_ATTRIBUTE_VIRTUAL

65536

虚拟

橙色标记的属性为Windows系统中文件的公有属性,其中“只读”、“隐藏”、“系统”、“存档”为文件的四种基本属性。compressed,content_indexed,encrypted只存在于NTFS分区中。

文件去掉全部属性后(四种基本属性),将自动标记为normal。同时具有system和hidden属性的文件会在系统中彻底隐形,这也是病毒常用的伎俩。

commpressed和encrypted不能共存。默认情况下文件都有content_indexed属性



5、自定义消息

摘自http://www.cnblogs.com/smartvessel/archive/2011/07/18/2109472.html

1.  在头文件stdafx.h中增加一个自定义消息宏  
#define WM_USER_THREADEND WM_USER + 1
2.  在于增加新消息的窗口或对话框类的头文件中增加一个回调函数声明,注意要声明为public
afx_msg LRESULT OnUserThreadend(WPARAM wParam, LPARAM lParam);
 3.  在窗口或对话框的cpp文件的BEGIN_MESSAGE_MAP,END_MESSAGE_MAP 中增加一行          
ON_MESSAGE(WM_USER_THREADEND, OnUserThreadend) 
4.  在窗口或对话框的cpp文件中增加回调函数的实现,如:
LRESULT ThreadDialog::OnUserThreadend(WPARAM wParam, LPARAM lParam) 
{
       TRACE("WM_USER_THREADEND message /n");
        return 0;
 }       
5.  自定义消息的触发
::PostMessage(GetSafeHwnd(), WM_USER_THREADEND, 0, 0);
其中GetSafeHwnd()得到了一个当前窗口的句柄,此消息将发给当前窗口,如果想发送消息给其它窗口只需改变这个句柄,前提是目的窗口也实现了此消息的处理函数。


0 0
原创粉丝点击