MFC技巧之终结文档格式.docx

上传人:b****1 文档编号:15293013 上传时间:2022-10-29 格式:DOCX 页数:21 大小:26.70KB
下载 相关 举报
MFC技巧之终结文档格式.docx_第1页
第1页 / 共21页
MFC技巧之终结文档格式.docx_第2页
第2页 / 共21页
MFC技巧之终结文档格式.docx_第3页
第3页 / 共21页
MFC技巧之终结文档格式.docx_第4页
第4页 / 共21页
MFC技巧之终结文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

MFC技巧之终结文档格式.docx

《MFC技巧之终结文档格式.docx》由会员分享,可在线阅读,更多相关《MFC技巧之终结文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

MFC技巧之终结文档格式.docx

据此,我还实现了RichEdit控件背景绘制AVI动画效果。

65.MFC程序中如何创建多级目录

BOOLmkdirEx(constchar*lpPath)

{

CStringpathname=lpPath;

if(pathname.Right

(1)!

="

\"

pathname+="

;

intend=pathname.ReverseFind('

\'

);

intpt=pathname.Find('

if(pathname[pt-1]=='

'

pt=pathname.Find('

pt+1);

CStringpath;

while(pt!

=-1&

&

pt<

=end)

path=pathname.Left(pt+1);

if(_access(path,0)==-1)

_mkdir(path);

}

returntrue;

66.解决外部符号错误:

_main,_WinMain@16,__beginthreadex

在创建MFC项目时,不使用MFCAppWizard向导,如果没有设置好项目参数,就会在编译时产生很多连接错误,如errorLNK2001错误,典型的错误提示有:

libcmtd.lib(crt0.obj):

errorLNK2001:

unresolvedexternalsymbol_main

LIBCD.lib(wincrt0.obj):

unresolvedexternalsymbol_WinMain@16

msvcrtd.lib(crtexew.obj):

nafxcwd.lib(thrdcore.obj):

unresolvedexternalsymbol__beginthreadex

unresolvedexternalsymbol__endthreadex

下面介绍解决的方法:

1).Windows子系统设置错误,提示:

Windows项目要使用Windows子系统,而不是Console,可以这样设置:

[Project]-->

[Settings]-->

选择"

Link"

属性页,

在ProjectOptions中将/subsystem:

console改成/subsystem:

windows

2).Console子系统设置错误,提示:

控制台项目要使用Console子系统,而不是Windows,设置:

windows改成/subsystem:

console

3).程序入口设置错误,提示:

通常,MFC项目的程序入口函数是WinMain,如果编译项目的Unicode版本,程序入口必须改为wWinMainCRTStartup,所以需要重新设置程序入口:

C/C++"

在Category中选择Output,

再在Entry-pointsymbol中填入wWinMainCRTStartup,即可

4).线程运行时库设置错误,提示:

这是因为MFC要使用多线程时库,需要更改设置:

在Category中选择CodeGeneration,

再在Userun-timelibrary中选择DebugMultithreaded或者multithreaded

其中,

Single-Threaded单线程静态链接库(release版本)

Multithreaded多线程静态链接库(release版本)

multithreadedDLL多线程动态链接库(release版本)

DebugSingle-Threaded单线程静态链接库(debug版本)

DebugMultithreaded多线程静态链接库(debug版本)

DebugMultithreadedDLL多线程动态链接库(debug版本)

单线程:

不需要多线程调用时,多用在DOS环境下

多线程:

可以并发运行

静态库:

直接将库与程序Link,可以脱离MFC库运行

动态库:

需要相应的DLL动态库,程序才能运行

release版本:

正式发布时使用

debug版本:

调试阶段使用

67.创建包含多个子目录的目录

voidCreateAllDirectories(CStringstrDir)

//removeending/ifexists

if(strDir.Right

(1)=="

\\"

strDir=strDir.Left(strDir.GetLength()-1);

//basecase...ifdirectoryexists

if(GetFileAttributes(strDir)!

=-1)

return;

//recursivecall,onelessdirectory

intnFound=strDir.ReverseFind('

\\'

CreateAllDirectories(strDir.Left(nFound));

//actualwork

CreateDirectory(strDir,NULL);

68.ReverseFind()

#include<

STDIO.H>

AFX.H>

intmain()

CStrings;

s.Format("

abcdefghijk"

intnPos=s.ReverseFind('

a'

printf("

nPosis%d\n"

nPos);

return0;

其中,'

对应的nPos是0,'

h'

对应的nPos是7,以此类推。

但是:

s.ReverseFind('

)和s.Find('

)的结果是一样的。

问题是:

ReverseFind()和Find()有什么区别呢:

对于ReverseFind(),查找顺序是从后往前,找到后的nPos是按前后顺序排列的。

而Find()是从前往后查的,找到后的nPos也是按前后顺序排列的。

69.MDI中如何只屏蔽掉子框架的右上角的关闭按钮

intCChildFrame:

OnCreate(LPCREATESTRUCTlpCreateStruct)

if(CMDIChildWnd:

OnCreate(lpCreateStruct)==-1)

return-1;

CMenu*pSysMenu=GetSystemMenu(FALSE);

pSysMenu->

EnableMenuItem(SC_CLOSE,MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);

70.程序如何删除自己

/////////////////////////////////////////////////

intWINAPIWinMain(HINSTANCEh,HINSTANCEb,LPSTRpsz,intn){

//IsthistheOriginalEXEorthecloneEXE?

//Ifthecommand-line1argument,thisistheOriginalEXE

//Ifthecommand-line>

1argument,thisisthecloneEXE

if(__argc==1){

//OriginalEXE:

SpawncloneEXEtodeletethisEXE

//CopythisEXEcutableimageintotheuser'

stempdirectory

TCHARszPathOrig[_MAX_PATH],szPathClone[_MAX_PATH];

GetModuleFileName(NULL,szPathOrig,_MAX_PATH);

GetTempPath(_MAX_PATH,szPathClone);

GetTempFileName(szPathClone,__TEXT("

Del"

),0,szPathClone);

CopyFile(szPathOrig,szPathClone,FALSE);

//***注意了***:

//OpenthecloneEXEusingFILE_FLAG_DELETE_ON_CLOSE

HANDLEhfile=CreateFile(szPathClone,0,FILE_SHARE_READ,NULL,OPEN_EXISTI

NG,FILE_FLAG_DELETE_ON_CLOSE,NULL);

//SpawnthecloneEXEpassingitourEXE'

sprocesshandle

//andthefullpathnametotheOriginalEXEfile.

TCH

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1