• 大小: 27KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-04-11
  • 语言: 其他
  • 标签: win32  

资源简介

使用纯win32API模仿Windows记事本开发的一个小程序,实现了记事本的所有功能,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 < It->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 < It->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


评论

共有 条评论