⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notepad.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
📖 第 1 页 / 共 4 页
字号:
							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 + -