📄 notepad.c
字号:
break;
case 1: //按名称查找
templist = SearchName();
if(templist == NULL)
{
break;
}
if(templist->num != 0)
{
if(searchflag == 1)
{
DelOldSearchList(searchlist2);
searchlist2 = NULL;
}
else
{
DelOldSearchList(searchlist);
searchlist = NULL;
}
searchlist2 = templist;
templist = NULL;
if(offset != -1)
{
if(((offset - row + 1) >= 0) && ((offset - row + 1) < NOTE_DISP_MAX))
{
RepaintWindow(note[offset - row + 1], BS_INVERT); //把刚才的目录/文件恢复
}
}
offset = -1;
for(i = 0; i < allnum; i++)
{
Lfree(nowlist[i]);
}
allnum = searchlist2->num;
GetNoteList(nowlist, allnum, searchlist2); //解析数据
length = NOTE_DISP_MAX; //得出滚动条的长度
if(allnum > NOTE_DISP_MAX)
{
length = allnum;
}
for(i = 0; i < allnum; i++)
{
if(*(nowlist[i]->id) == 0) //当项目类型为文件时,跳出
break;
}
dirnum = i; //得出目录的个数
filenum = allnum - dirnum; //剩下的时文件个数
//更改目录和文件的个数
sprintf(dirtemp, "%u", dirnum);
SetWindowText(dirnumdisp, dirtemp, NULL);
sprintf(filetemp, "%u", filenum);
SetWindowText(filenumdisp, filetemp, NULL);
SetWindowText(path, "", NULL);
GroupOn( hGC );
//刷新列表
for(i = 0; i < NOTE_DISP_MAX; i++)
{
if(i < allnum) //列表没有结束时
{
if(*(nowlist[i]->id) == 0) //是文件类型
SetWindowText(property[i], NULL, (char *)zi_wenjianshuxing);
else //是目录类型
SetWindowText(property[i], NULL, (char *)zi_mulushuxing); //属性按钮
SetWindowText(note[i], nowlist[i]->name, NULL); //目录文件名称
}
else //列表结束时,显示空按钮
{
SetWindowText(property[i], NULL, NULL); //显示空属性和按钮
SetWindowText(note[i], NULL, NULL);
}
}
GroupOff( hGC, 0, 46, 159, 197 );
//恢复状态参数
SetScrollRange(scroll, 1, (U16)(length - NOTE_DISP_MAX + 1)); //重新设置滚动条长度,并定位到最顶端
SetScrollPos(scroll, 1, 0, 0);
row = 1;
//查找后的处理
EnableWindow(newone, FALSE);
searchflag = 1;
noworder = TIME_ORDER;
}
else
{
Lfree(templist);
MessageBox(mainwin, "没有符合要求的目录/文件!", "提醒", MB_ICONEXCLAMATION|MB_OK);
}
break;
}
offset = -1;
}
else
if(msg.lparam == order) //点击排序菜单
{
switch(msg.wparam)
{
case 0: //点击按时间排序
if(noworder == TIME_ORDER)
break;
else
{
if(offset != -1)
{
if(((offset - row + 1) >= 0) && ((offset - row + 1) < NOTE_DISP_MAX))
{
RepaintWindow(note[offset - row + 1], BS_INVERT); //把刚才的目录/文件恢复
}
}
offset = -1;
if(searchflag == 1)
LocalSortList(lacb, searchlist2, NOTEPAD_MODIFY_TIME_FIELD, 0);
else
LocalSortList(lacb, searchlist, NOTEPAD_MODIFY_TIME_FIELD, 0);
for(i = 0; i < allnum; i++)
{
Lfree(nowlist[i]);
}
if(searchflag == 1)
GetNoteList(nowlist, allnum, searchlist2); //解析数据
else
GetNoteList(nowlist, allnum, searchlist); //解析数据
GroupOn( hGC );
//刷新列表
for(i = 0; i < NOTE_DISP_MAX; i++)
{
if(i < allnum) //列表没有结束时
{
if(*(nowlist[i]->id) == 0) //是文件类型
SetWindowText(property[i], NULL, (char *)zi_wenjianshuxing);
else //是目录类型
SetWindowText(property[i], NULL, (char *)zi_mulushuxing); //属性按钮
SetWindowText(note[i], nowlist[i]->name, NULL); //目录文件名称
}
else //列表结束时,显示空按钮
{
SetWindowText(property[i], NULL, NULL); //显示空属性和按钮
SetWindowText(note[i], NULL, NULL);
}
}
GroupOff( hGC, 0, 46, 159, 197 );
//恢复状态参数
// SetScrollRange(scroll, 1, (U16)(length - NOTE_DISP_MAX + 1)); //重新设置滚动条长度,并定位到最顶端
SetScrollPos(scroll, 1, 0, 0);
row = 1;
noworder = TIME_ORDER;
}
break;
case 1: //点击按名称排序
if(noworder == NAME_ORDER)
break;
else
{
if(offset != -1)
{
if(((offset - row + 1) >= 0) && ((offset - row + 1) < NOTE_DISP_MAX))
{
RepaintWindow(note[offset - row + 1], BS_INVERT); //把刚才的目录/文件恢复
}
}
offset = -1;
if(searchflag == 1)
LocalSortList(lacb, searchlist2, NOTEPAD_NAME_FIELD, 0);
else
LocalSortList(lacb, searchlist, NOTEPAD_NAME_FIELD, 0);
for(i = 0; i < allnum; i++)
{
Lfree(nowlist[i]);
}
if(searchflag == 1)
GetNoteList(nowlist, allnum, searchlist2); //解析数据
else
GetNoteList(nowlist, allnum, searchlist); //解析数据
GroupOn( hGC );
//刷新列表
for(i = 0; i < NOTE_DISP_MAX; i++)
{
if(i < allnum) //列表没有结束时
{
if(*(nowlist[i]->id) == 0) //是文件类型
SetWindowText(property[i], NULL, (char *)zi_wenjianshuxing);
else //是目录类型
SetWindowText(property[i], NULL, (char *)zi_mulushuxing); //属性按钮
SetWindowText(note[i], nowlist[i]->name, NULL); //目录文件名称
}
else //列表结束时,显示空按钮
{
SetWindowText(property[i], NULL, NULL); //显示空属性和按钮
SetWindowText(note[i], NULL, NULL);
}
}
GroupOff( hGC, 0, 46, 159, 197 );
//恢复状态参数
// SetScrollRange(scroll, 1, (U16)(length - NOTE_DISP_MAX + 1)); //重新设置滚动条长度,并定位到最顶端
SetScrollPos(scroll, 1, 0, 0);
row = 1;
noworder = NAME_ORDER;
}
break;
}
offset = -1;
}
else
if(msg.lparam == rename) //点击重命名按钮
{
if(offset != -1)
{
ChangeName(nowlist[offset]);
SetWindowText(note[offset - row + 1], nowlist[offset]->name, NULL);
// RepaintWindow(note[offset - row + 1], BS_INVERT);
}
else
MessageBox(mainwin, "请选择要更名的目录/文件!!!", "提醒", MB_ICONEXCLAMATION|MB_OK);
offset = -1;
}
else
if(msg.lparam == up) //点击上一级按钮
{
if(searchflag == 1)
{
SetWindowText(path, currentdir, NULL);
EnableWindow(newone, TRUE);
DelOldSearchList(searchlist2);
searchlist2 = NULL;
searchflag = 0;
}
if(strlen(currentid) != 0)
{
*(currentid + strlen(currentid) - 1) = '\0';
}
if(offset != -1)
{
if(((offset - row + 1) >= 0) && ((offset - row + 1) < NOTE_DISP_MAX))
{
RepaintWindow(note[offset - row + 1], BS_INVERT); //把刚才的目录/文件恢复
}
}
offset = -1;
DelOldSearchList(searchlist);
searchlist = LocalSortRecord(lacb, NOTEPAD_NAME_FIELD, currentid, PRECISE_PART_MATCH); //重新读入列表
noworder = NAME_ORDER;
for(i = 0; i < allnum; i++)
{
Lfree(nowlist[i]);
}
allnum = searchlist->num;
GetNoteList(nowlist, allnum, searchlist); //解析数据
length = NOTE_DISP_MAX; //得出滚动条的长度
if(allnum > NOTE_DISP_MAX)
{
length = allnum;
}
for(i = 0; i < allnum; i++)
{
if(*(nowlist[i]->id) == 0) //当项目类型为文件时,跳出
break;
}
dirnum = i; //得出目录的个数
filenum = allnum - dirnum; //剩下的时文件个数
//更改目录和文件的个数
if(strlen(currentid) == 0)
{
strcpy(currentdir, "\\");
}
SetWindowText(path, currentdir, NULL);
sprintf(dirtemp, "%u", dirnum);
SetWindowText(dirnumdisp, dirtemp, NULL);
sprintf(filetemp, "%u", filenum);
SetWindowText(filenumdisp, filetemp, NULL);
GroupOn( hGC );
//刷新列表
for(i = 0; i < NOTE_DISP_MAX; i++)
{
if(i < allnum) //列表没有结束时
{
if(*(nowlist[i]->id) == 0) //是文件类型
SetWindowText(property[i], NULL, (char *)zi_wenjianshuxing);
else //是目录类型
SetWindowText(property[i], NULL, (char *)zi_mulushuxing); //属性按钮
SetWindowText(note[i], nowlist[i]->name, NULL); //目录文件名称
}
else //列表结束时,显示空按钮
{
SetWindowText(property[i], NULL, NULL); //显示空属性和按钮
SetWindowText(note[i], NULL, NULL);
}
}
GroupOff( hGC, 0, 46, 159, 197 );
//恢复状态参数
SetScrollRange(scroll, 1, (U16)(length - NOTE_DISP_MAX + 1)); //重新设置滚动条长度,并定位到最顶端
SetScrollPos(scroll, 1, 0, 0);
row = 1;
}
else //点击目录(文件)或属性按钮
{
for(i = 0; i < NOTE_DISP_MAX; i++)
{
if((i + row - 1) < allnum)
{
if(msg.lparam == note[i])
{
if(offset == -1) //没有已选目录/文件时,设定点击的目录/文件按钮反色,表示选中
{
offset = i + row - 1;
RepaintWindow(note[i], BS_INVERT);
}
else
if(offset == (i + row - 1)) //当点击的是已选目录/文件时,分别作处理
{
if(*(nowlist[offset]->id) == 0) //当已选的是文件时,浏览文件
{
// RepaintWindow(note[i], BS_INVERT);
ReadNotepad(nowlist, offset, allnum);
offset = -1;
}
else //当已选的时目录时,则进入已选目录
{
strcpy(currentid, nowlist[i]->parent);
strcat(currentid, nowlist[offset]->id);
SetWindowText(path, currentdir, NULL);
strcpy(currentdir, nowlist[offset]->name);
if(offset != -1)
{
if(((offset - row + 1) >= 0) && ((offset - row + 1) < NOTE_DISP_MAX))
{
RepaintWindow(note[offset - row + 1], BS_INVERT); //把刚才的目录/文件恢复
}
}
offset = -1;
DelOldSearchList(searchlist);
searchlist = LocalSortRecord(lacb, NOTEPAD_NAME_FIELD, currentid, PRECISE_PART_MATCH); //重新读入列表
for(i = 0; i < allnum; i++)
{
Lfree(nowlist[i]);
}
allnum = searchlist->num;
GetNoteList(nowlist, allnum, searchlist); //解析数据
length = NOTE_DISP_MAX; //得出滚动条的长度
if(allnum > NOTE_DISP_MAX)
{
length = allnum;
}
for(i = 0; i < allnum; i++)
{
if(*(nowlist[i]->id) == 0) //当项目类型为文件时,跳出
break;
}
dirnum = i; //得出目录的个数
filenum = allnum - dirnum; //剩下的时文件个数
//更改目录和文件的个数显示
sprintf(dirtemp, "%u", dirnum);
SetWindowText(dirnumdisp, dirtemp, NULL);
sprintf(filetemp, "%u", filenum);
SetWindowText(filenumdisp, filetemp, NULL);
GroupOn( hGC );
//刷新列表
for(i = 0; i < NOTE_DISP_MAX; i++)
{
if(i < allnum) //列表没有结束时
{
if(*(nowlist[i]->id) == 0) //是文件类型
SetWindowText(property[i], NULL, (char *)zi_wenjianshuxing);
else //是目录类型
SetWindowText(property[i], NULL, (char *)zi_mulushuxing); //属性按钮
SetWindowText(note[i], nowlist[i]->name, NULL); //目录文件名称
}
else //列表结束时,显示空按钮
{
SetWindowText(property[i], NULL, NULL); //显示空属性和按钮
SetWindowText(note[i], NULL, NULL);
}
}
GroupOff( hGC, 0, 46, (LCD_WIDTH + 150)/2, 197 );
//恢复状态参数
SetScrollRange(scroll, 1, (U16)(length - NOTE_DISP_MAX + 1)); //重新设置滚动条长度,并定位到最顶端
SetScrollPos(scroll, 1, 0, 0);
row = 1;
noworder = NAME_ORDER;
if(searchflag == 1)
{
SetWindowText(path, currentdir, NULL);
EnableWindow(newone, TRUE);
DelOldSearchList(searchlist2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -