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

📄 notepad.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
📖 第 1 页 / 共 4 页
字号:
											searchlist2 = NULL; 
											searchflag = 0; 
										}
									}
								}
								else			//点击的不是已选目录/文件
								{
									if(((offset - row + 1) >= 0) && ((offset - row + 1) < NOTE_DISP_MAX))
									{
										RepaintWindow(note[offset - row + 1], BS_INVERT);		//把刚才的目录/文件恢复
									}
									RepaintWindow(note[i], BS_INVERT);						//设定现在点击的目录/文件为选定目录/文件,并设定为反色显示
									offset = i + row - 1; 
								}
							}
							else
							if(msg.lparam == property[i])			//点击属性按钮
							{
								PropertyDisp(nowlist[i + row - 1]); 
//								offset = -1; 
							}
						}
					}
				}
				break; 
			
			case WM_VSCROLL:
				if(msg.lparam == scroll)
				{
					switch(msg.wparam)
					{
						case SB_PAGEUP:
							row -= NOTE_DISP_MAX; 
							if (row < 1)		row = 1; 
							break; 
						case SB_PAGEDOWN:
							row += NOTE_DISP_MAX; 
							if (row > (length - NOTE_DISP_MAX + 1))	row = (length - NOTE_DISP_MAX + 1); 
							break; 
						case SB_LINEUP:
							row -= 1; 
							if (row < 1)		row = 1; 
							break; 
						case SB_LINEDOWN:
							row += 1; 
							if (row > (length - NOTE_DISP_MAX + 1))	row = (length - NOTE_DISP_MAX + 1); 
							break; 
						case SB_THUMBTRACK:
							dragflag = 1; 
							break; 
						case SB_ENDSCROLL:
							row = GetScrollPos(scroll,0,0,0); 
							dragflag = 0; 
							break;
					}
					if(!dragflag)
					{
						SetScrollPos(scroll,row,0,0); 					// 滚动条拖动定位
						GroupOn( hGC );
						//显示的更新
						for(i = 0; i < NOTE_DISP_MAX; i++)
						{		
							if((i + row - 1) < allnum)						//列表没有结束时
							{
								if(*(nowlist[i + row - 1]->id) == 0)			//是文件类型
									SetWindowText(property[i], NULL, (char *)zi_wenjianshuxing); 
								else							//是目录类型
									SetWindowText(property[i], NULL, (char *)zi_mulushuxing);		//属性按钮
								SetWindowText(note[i], nowlist[i + row - 1]->name, NULL);		//目录文件名称
							}
							else								//列表结束时,显示空按钮
							{
								SetWindowText(property[i], NULL, NULL);		//显示空属性和按钮
								SetWindowText(note[i], "", NULL); 
							}
						}
						GroupOff( hGC, 0, 46, 159, 197 );
						if((offset >= (row - 1)) && (offset <= (row - 1 + NOTE_DISP_MAX)))
						{
							RepaintWindow(note[offset - row + 1], BS_INVERT); 
						}
					}
				}
				break; 

			case WM_QUIT:
				if(MessageBox(mainwin, "确定要退出吗?", "提醒", MB_ICONEXCLAMATION|MB_OKCANCEL) == IDOK)		//询问是否退出;
					quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}	
//	Lfree(tempitem); 
	for(i = 0; i < allnum; i++)
	{
		Lfree(nowlist[i]); 
	}
	if(searchflag == 1)
		DelOldSearchList(searchlist2); 
	else
		DelOldSearchList(searchlist); 
	DetachDataBase(lacb); 
	DestroyWindow( mainwin ); 
	EndofTask(); 
	return; 
}


//新建模块
STATUS CreateNote(char *currentid)
{
	//定义窗口和控件ID
	U32		mainwin;			//主窗口
	U32		type;				//新建类型选择	选择框
	U32		name;				//目录(文件)名称		编辑栏
	U32		tip;				//静态框
	U32		ok;					//确定	按钮
	U32		cancel;				//取消	按钮
	U32		keyboard;			//软键盘
	U32		tskbar;				//底部任务栏

	//定义函数变量
	MSG		msg; 
	S16		quit = 0; 
	U16		i, j; 
	U16		flag = 0; 
	S16		allnum; 
	S16		newtype = 0; 			//新建类型
	char	temp[NAME_SIZE + 1]; 		//新建的目录(文件)的名称	
	PROPERTY	*nowlist[MAX_ITEM_NUM]; 
	PROPERTY	newitem; 
	LOCALSEARCHLIST		*searchlist; 
	DBLACB		*lacb; 
	char	id[2]; 

//	FILE_S	*fp; 

	//初始化
	SL_ITEM	 item[] =
	{
		SL_UNCHECKED,	"目录",
		SL_UNCHECKED,	"文件", 
		0,	NULL,
	}; 

	memset(temp, 0x00, (NAME_SIZE + 1)); 
	memset(id, 0x00, 2); 
	newitem.id = id; 

	lacb = LinkDataBase(NOTEPAD_DATA_BASE); 
	searchlist = LocalSortRecord(lacb, NOTEPAD_NAME_FIELD, currentid, PRECISE_PART_MATCH); 
	allnum = searchlist->num; 
	GetNoteList(nowlist, allnum, searchlist); 

//	strcpy(newpath, currentdir); 

	//创建窗口控件
	mainwin = CreateWindow(WNDCLASS_WIN, "新建", WS_OVERLAPPEDWINDOW, 0, 0, PHY_LCD_W, PHY_LCD_H, 0, 0, NULL); 
	type = CreateWindow(WNDCLASS_SELECT, "类型选择", WS_CHILD|SLS_ENABLE|SLS_FRAME|SLS_RADIOBOX, (LCD_WIDTH-100)/2, 23, 100, 50, mainwin, 0, item); 
	tip = CreateWindow(WNDCLASS_STATIC, "目录/文件名", WS_CHILD|SS_TEXT, (LCD_WIDTH-150)/2, 73, 150, 17, mainwin, 0, NULL); 
	name = CreateWindow(WNDCLASS_EDITOR, "", WS_CHILD|ES_SINGLE_REGULAR, (LCD_WIDTH-150)/2, 90, 150, 20, mainwin, NAME_SIZE + 1, NULL); 
	ok = CreateWindow(WNDCLASS_BUTTON, "确定", WS_CHILD|BS_REGULAR, 20 + (LCD_WIDTH-145)/2, 111, 40, 20, mainwin, 0, NULL); 
	cancel = CreateWindow(WNDCLASS_BUTTON, "取消", WS_CHILD|BS_REGULAR, 100 + (LCD_WIDTH-145)/2, 111, 40, 20, mainwin, 0, NULL); 
	keyboard = CreateWindow(WNDCLASS_KEYBD, "", WS_CHILD|KBS_HANDWRITE|0xff, 1 + (LCD_WIDTH-145)/2, 144, 157, 70, mainwin, 0, NULL); 

	tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);

	SetFocus(name); 
	//程序开始
	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0); 
		switch(msg.message)
		{
			case WM_COMMAND:
				if(msg.lparam == ok)
				{
					if(newtype == DIR_TYPE)
					{
						//建立目录
						GetEditorStr(name, temp, NAME_SIZE); 
						if(strlen(temp) == 0)
						{
							MessageBox(mainwin, "请输入目录名", "提醒", MB_ICONEXCLAMATION|MB_OK); 
						}
						else
						{
							if(strlen(currentid) >= 2)
							{
								MessageBox(mainwin, "不能创建三级以上的目录!", "提醒", MB_ICONEXCLAMATION|MB_OK); 
							}
							else
							{
								newitem.index = 0; 
								newitem.content = NULL; 
								newitem.size = NULL; 
								newitem.parent = currentid;	
								newitem.name = temp; 
								*(newitem.id) = 0; 
								for(i = 1; i < 255; i++)
								{
									flag = 0; 
									for(j = 0; j < allnum; j++)
									{
										if(*(nowlist[j]->id) == i)
										{
											flag = 1; 
											break; 
										}
									}
									if(flag != 1)
									{
										*(newitem.id) = (char)i; 
										break; 
									}
								}
								if(*(newitem.id) == 0)
								{
									MessageBox(mainwin, "当前目录下的目录已满,不能再创建目录了!", "提醒", MB_ICONEXCLAMATION|MB_OK); 
								}
								else
								{
									AddDirFile(&newitem); 
								}
								quit = 1;						//退出
							}
						}
					}
					else
					if(newtype == TEXT_TYPE)
					{
						//建立文件
						GetEditorStr(name, temp, NAME_SIZE); 
						if(strlen(temp) == 0)
						{
							MessageBox(mainwin, "请输入文件名", "提醒", MB_ICONEXCLAMATION|MB_OK); 
						}
						else
						{
							newitem.index = 0; 
							newitem.parent = currentid;	
							newitem.name = temp; 
							*(newitem.id) = 0; 
							CreateFile(&newitem); 
							quit = 1; 
						}
					}
					else
						MessageBox(mainwin, "请选择新建类型!", "提醒", MB_ICONEXCLAMATION|MB_OK); 
				}
				else
				if(msg.lparam == cancel)
				{
					goto ERR; 
				}
				break; 

			case WM_SELECTBOX:
				if(msg.lparam == type)
				{
					if(item[0].state == SL_CHECKED)
					{
						if(newtype != DIR_TYPE)
							newtype = DIR_TYPE; 
					}
					else
					if(item[1].state == SL_CHECKED)
					{
						if(newtype != TEXT_TYPE)
							newtype = TEXT_TYPE; 
					}
					else
						newtype = 0; 
				}
				break; 
				
			case WM_QUIT:
				quit = 1; 
				break; 
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}
	for(i=0; i<allnum; i++)
	{
		Lfree(nowlist[i]); 
	}
	DelOldSearchList(searchlist); 
	DetachDataBase(lacb); 
	DestroyWindow( mainwin ); 
	return CREATE_OK; 
ERR:
	for(i=0; i<allnum; i++)
	{
		Lfree(nowlist[i]); 
	}
	DelOldSearchList(searchlist); 
	DetachDataBase(lacb); 
	DestroyWindow( mainwin ); 
	return CREATE_FAIL; 
}

//建立文件函数
STATUS CreateFile(PROPERTY *newitem)
{
	//定义窗口和控件ID
	U32		mainwin;			//主窗口
	U32		save;				//保存按钮
	U32		sendsms;			//发送短信按钮
	U32		infrared;			//红外发送按钮
	U32		textedit;			//文件内容编辑栏
	U32		keyboard;			//软键盘
	U32		tskbar;				//底部任务栏

	//定义函数用变量
	MSG		msg; 
	S16		quit = 0; 
	char	newcontent[TEXT_SIZE + 1]; 
	U8		saveflag = 0; 
	char	size[6]; 

	memset(newcontent, 0x00, (TEXT_SIZE + 1)); 
	memset(size, 0x00, 6); 
	//创建窗口
	mainwin = CreateWindow(WNDCLASS_WIN, "创建文件", WS_OVERLAPPEDWINDOW, 0, 0, PHY_LCD_W, PHY_LCD_H, 0, 0, NULL); 
	save = CreateWindow(WNDCLASS_BUTTON, "\\保存", WS_CHILD|BS_REGULAR, (LCD_WIDTH - 70)/2, 23, BUTTON_W, BUTTON_W, mainwin, 0x00140014, (char *)zi_save); 
	sendsms = CreateWindow(WNDCLASS_BUTTON, "\\发送短信", WS_CHILD|BS_REGULAR, 25 + (LCD_WIDTH - 70)/2, 23, BUTTON_W, BUTTON_W, mainwin, 0x00140014, (char *)zi_fasongduanxin); 
	infrared = CreateWindow(WNDCLASS_BUTTON, "\\红外", WS_CHILD|BS_REGULAR, 50 + (LCD_WIDTH - 70)/2, 23, BUTTON_W, BUTTON_W, mainwin, 0, NULL); 
	textedit = CreateWindow(WNDCLASS_EDITOR, "", WS_CHILD|ES_MULTI_REGULAR, 2 + (LCD_WIDTH - 160)/2, 48, 156, 80, mainwin, TEXT_SIZE, NULL); 
	keyboard = CreateWindow(WNDCLASS_KEYBD, "", WS_CHILD|KBS_HANDWRITE|0xff, 1, 144, 157, 70, mainwin, 0, NULL); 

	tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);

	SetFocus(textedit); 

	//程序开始
	while(!quit)
	{
		ASIXGetMessage(&msg, NULL, 0, 0); 
		switch(msg.message)
		{
			case WM_COMMAND:
				if(msg.lparam == save)				//点击保存按钮
				{
					GetEditorStr(textedit, newcontent, TEXT_SIZE); 
					if(strlen(newcontent) == 0)
					{
						MessageBox(mainwin, "请输入文件内容!", "提醒", MB_ICONEXCLAMATION|MB_OK); 
					}
					else
					{
						newitem->content = newcontent; 
						sprintf(size, "%u",strlen(newcontent)); 
						newitem->size = size; 
						AddDirFile(newitem); 
						saveflag = 1; 
						quit = 1; 
//						fseek(fp, 0, SEEK_SET); 
//						fwrite(newcontent, sizeof(char), strlen(newcontent), fp); 
					}
				}
				else
				if(msg.lparam == sendsms)			//点击发送短信按钮
				{
					GetEditorStr(textedit, newcontent, TEXT_SIZE); 
					if(strlen(newcontent) == 0)
					{
						MessageBox(mainwin, "请输入文件内容!", "提醒", MB_ICONEXCLAMATION|MB_OK); 
					}
					else
					{
						TransmitSMS(newcontent); 
					}
				}
				else
				if(msg.lparam == infrared)			//点击红外发送按钮
				{
					GetEditorStr(textedit, newcontent, TEXT_SIZE); 
					if(strlen(newcontent) == 0)
					{
						MessageBox(mainwin, "请输入文件内容!", "提醒", MB_ICONEXCLAMATION|MB_OK); 
					}
					else
					{
						//红外发送
						; 
					}
				}
				break; 

			case WM_QUIT:
				GetEditorStr(textedit, newcontent, TEXT_SIZE);			//读出文件内容
				if((strlen(newcontent) != 0) && (saveflag == 0))					//内容不为空时,提示是否保存
				{
					if(MessageBox(mainwin, "是否保存文件!", "提醒", MB_ICONEXCLAMATION|MB_YESNO) == IDYES)
					{
						newitem->content = newcontent; 
						sprintf(size, "%u", strlen(newcontent)); 
						newitem->size = size; 
						AddDirFile(newitem); 
					}
				}
				quit = 1; 
				break; 
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}	
	DestroyWindow( mainwin ); 
	return CREATE_OK; 
}

//文件阅读模块
void ReadNotepad(PROPERTY **nowlist, S16 offset, S16 allnum)
{
	//定义窗口和控件ID
	U32		mainwin;				//主窗口
	U32		save;					//保存按钮

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -