資源簡介
使用純win32API模仿Windows記事本開發(fā)的一個小程序,實現(xiàn)了記事本的所有功能,BUG基本不存在了,完善的還是比較可以的
代碼片段和文件信息
#include?“EditMenu.h“
#include?“stdafx.h“
int?GetStrLength(CString?Str)
{
int?Num?LineLength;
char?*pChar;
Num???=?WideCharToMultiByte(CP_ACP?0?Str?-1?NULL?0?NULL?0);
pChar?=?new?char[Num?*?sizeof(char)];
if(pChar?==?NULL)
{
return?FALSE;
}
memset(pChar?0?Num?*?sizeof(char));
WideCharToMultiByte(CP_ACP?0?Str?-1?pChar?Num?NULL?0);
LineLength?=?strlen(pChar);
delete?pChar;
return?LineLength;
}
//?將過長的一行文本拆成多行
BOOL?LineStor(vector?&StrInfo?int?CXBuffer?int?CXChar?HWND?hWnd?HFONT?HFont)
{
TextStr?Tmp;
HDC?hDC?=?GetDC(hWnd);
SIZE?ShowLength;
Selectobject(hDC?HFont);
int?MAX?=?CXBuffer?*?CXChar;
if(StrInfo.size()?<=?0)
{
return?FALSE;
}
for(vector::iterator?It?=?StrInfo.begin();?It?!=?StrInfo.end();?It++)
{
BOOL?NextOne?=?FALSE;
while(It?!=?StrInfo.end()?&&?It->Str.GetLength()?==?0?&&?StrInfo.size()?!=?1)
{
It?=?StrInfo.erase(It);
}
if(It?==?StrInfo.end())
{
break;
}
if(It->Str.Find(_T(“\n“))?>=?0)
{
if(It->Newline?==?TRUE)
{
It->Str?=?It->Str?+?_T(“\n“);
It->Newline?=?FALSE;
}
while(It->Str.Find(_T(“\n“))?>=?0)
{
int?NEnd?=?It->Str.Find(_T(“\n“));
if(NEnd?==?It->Str.GetLength()?-?1)
{
It->Newline?=?TRUE;
It->Str.Delete(NEnd?1);
}
else
{
Tmp.Str?????=?It->Str.Left(NEnd);
Tmp.Newline?=?TRUE;
It->Str.Delete(0?NEnd?+?1);
It?=?StrInfo.insert(It?Tmp);
}
}
}
GetTextExtentPoint32(hDC?It->Str?It->Str.GetLength()?&ShowLength);
if(GetStrLength(It->Str)?>?CXBuffer?&&?It->Newline?==?TRUE)
{
int?NowLength?=?0;
for(int?i?=?0;?i?Str.GetLength();?i++)
{
if(It->Str[i]?>?127)
{
NowLength?+=?2;
}
else
{
NowLength++;
}
if(NowLength?>=?CXBuffer)
{
GetTextExtentPoint32(hDC?It->Str?i?&ShowLength);
int?TrueLength?=?ShowLength.cx;
while(TrueLength?>?MAX)
{
GetTextExtentPoint32(hDC?It->Str?--i?&ShowLength);
TrueLength?=?ShowLength.cx;
}
Tmp.Newline?=?FALSE;
Tmp.Str?=?It->Str.Left(i);
It->Str.Delete(0?i);
It?=?StrInfo.insert(It?Tmp);
NextOne?=?TRUE;
break;
}
}
}
else?if(GetStrLength(It->Str)?>?CXBuffer?&&?It->Newline?==?FALSE)
{
int?NowLength?=?0;
for(int?i?=?0;?i?Str.GetLength();?i++)
{
if(It->Str[i]?>?127)
{
NowLength?+=?2;
}
else
{
NowLength++;
}
if(NowLength?>=?CXBuffer)
{
GetTextExtentPoint32(hDC?It->Str?i?&ShowLength);
int?TrueLength?=?ShowLength.cx;
while(TrueLength?>?MAX)
{
GetTextExtentPoint32(hDC?It->Str?--i?&ShowLength);
TrueLength?=?ShowLength.cx;
}
Tmp.Newline?=?FALSE;
Tmp.Str?=?It->Str.Left(i);
It->Str.Delete(0?i);
It?=?StrInfo.insert(It?Tmp);
if(It?+?2?!=?S
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????964??2017-06-23?09:00??MyEdit.sln
?????文件??????18837??2017-08-01?10:26??MyEdit\EditMenu.cpp
?????文件????????898??2017-07-27?13:09??MyEdit\EditMenu.h
?????文件???????7367??2017-07-31?16:11??MyEdit\FileMenu.cpp
?????文件????????464??2017-07-31?16:08??MyEdit\FileMenu.h
?????文件??????10796??2017-07-14?16:40??MyEdit\MyEdit.aps
?????文件??????61610??2017-08-01?14:56??MyEdit\MyEdit.cpp
?????文件?????????39??2017-06-22?12:57??MyEdit\MyEdit.h
?????文件???????2998??2013-07-22?01:18??MyEdit\MyEdit.ico
?????文件???????8954??2017-07-14?16:40??MyEdit\MyEdit.rc
?????文件???????5126??2017-07-19?09:12??MyEdit\MyEdit.vcxproj
?????文件???????2279??2017-07-19?09:06??MyEdit\MyEdit.vcxproj.filters
?????文件????????165??2017-06-29?14:55??MyEdit\MyEdit.vcxproj.user
?????文件????????750??2017-06-30?15:39??MyEdit\MyPhoto.ico
?????文件???????2244??2017-06-22?12:57??MyEdit\ReadMe.txt
?????文件???????1707??2017-07-31?15:15??MyEdit\Resource.h
?????文件???????2998??2013-07-22?01:18??MyEdit\small.ico
?????文件???????1106??2017-07-19?16:57??MyEdit\stdafx.cpp
?????文件???????1385??2017-07-31?15:48??MyEdit\stdafx.h
?????文件????????236??2017-06-22?12:57??MyEdit\targetver.h
?????目錄??????????0??2017-08-01?14:56??MyEdit
-----------?---------??----------?-----??----
???????????????130923????????????????????21
評論
共有 條評論