亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sugarmemochoosewords.c

?? 最好用的背單詞軟件, palm 平臺(tái), 如果能移植到別的平臺(tái)
?? C
字號(hào):
#include <PalmOS.h>
#include "SugarMemo.h"
#include "SugarMemoRsc.h"
#include "SugarMemoDB.h"
#include "SugarMemoChooseWords.h"

#define ListChoices 10
#define Forward true
#define Backward false

UInt16 RawListItemNumbers = 0;
UInt16 rawListItemIndex[ListChoices];

/////////////////////////////////////////////////
//
// internal functions
//
/////////////////////////////////////////////////

static void ChooseFormInit();
static void RawListDraw(Int16 itemNum, RectangleType * bounds, char** itemText);
static void BuildRawListItemText();
static Boolean SearchUnlearnedWordEntry(Boolean forward, UInt16* cursor);
static void RawListForward(Boolean byline);
static void RawListBackward(Boolean byline);
static void LearnListDraw(Int16 itemNum, RectangleType* bounds, char** itemText);
static void UpdateLearnList();
static void MoveToLearnList(UInt16 itemNum);
static void MoveToRawList(UInt16 itemNum);
/*


//event handler
Boolean ChooseFormHandleEvent(EventType * event){

	FormType* frmP;
	ListType* list;
	Boolean handled = false;
	
	switch (event->eType){
		
		case frmOpenEvent:
			frmP = FrmGetActiveForm();
			ChooseFormInit();
			list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseRawList));
			
			FrmDrawForm(frmP);
			break;
			
		case ctlSelectEvent:
			switch (event->data.ctlSelect.controlID){
				case ChooseLearnButton:
					FrmGotoForm(LearnForm);
					handled = true;
					break;
				
				default:
					break;
			
			}
			break;
			
		case ctlRepeatEvent:
			switch (event->data.ctlRepeat.controlID){
				case ChooseScrollUpRepeating:
					RawListBackward(true);
					break;
				case ChooseScrollDownRepeating:
					RawListForward(true);
					break;
			}
			frmP = FrmGetActiveForm();
			list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseRawList));
			LstSetSelection(list, noListSelection);
			LstDrawList(list);
			handled = true;
			break;
		
		case lstSelectEvent:
			switch(event->data.lstSelect.listID){
				case ChooseRawList:
					frmP = FrmGetActiveForm();
					list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseRawList));
					MoveToLearnList(LstGetSelection(list));
					break;
				case ChooseLearnList:
					frmP = FrmGetActiveForm();
					list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseLearnList));
					MoveToRawList(LstGetSelection(list));
					break;
			}
			handled = true;
			break;
		
		default:
			break;
	}
	
	return handled;
}	

void ChooseFormInit(){
	FormType * frmP;
	ListType * list;
	
	//init choose raw
	frmP = FrmGetActiveForm();
	list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseRawList));
	LstSetDrawFunction(list, RawListDraw);
	LstSetSelection(list, noListSelection);
	
	//init raw list text array
	RawListItemNumbers = 0;
	
	BuildRawListItemText();
	LstSetListChoices(list, NULL, RawListItemNumbers);	
	
	list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseLearnList));
	LstSetDrawFunction(list, LearnListDraw);
	UpdateLearnList();
}

void LearnListDraw(Int16 itemNum, RectangleType* bounds, char** itemText){
	WordRecordType record;
	MemHandle recordH;
	
	HeaderItem item;
	UInt16 index = 0;
	
	if (itemNum < GetHeaderItemNumber(CurrentDB)){
		WordDBGetLearningItem(CurrentDB, &item, itemNum);
		DmFindRecordByID(CurrentDB, item.uniqueID, &index);

		GetWordRecord(CurrentDB, index, &record, &recordH);
		if (record.field[WordFieldQuestion] != NULL)
			WinDrawChars(record.field[WordFieldQuestion], StrLen(record.field[WordFieldQuestion]),
				bounds->topLeft.x, bounds->topLeft.y);
	}
	
	MemHandleUnlock(recordH);
}

void UpdateLearnList(){
	FormType * frmP;
	ListType * list;
	frmP = FrmGetActiveForm();
	list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseLearnList));
	LstSetListChoices(list, NULL, GetHeaderItemNumber(CurrentDB));
	LstSetSelection(list, noListSelection);
	LstDrawList(list);
}
	

void RawListDraw(Int16 itemNum, RectangleType* bounds, char** itemText){
	WordRecordType record;
	MemHandle recordH;

	if (itemNum >= RawListItemNumbers) return;
	
	GetWordRecord(CurrentDB, rawListItemIndex[itemNum], &record, &recordH);
	
	WinDrawChars(record.field[WordFieldQuestion], StrLen(record.field[WordFieldQuestion]), 
		bounds->topLeft.x, bounds->topLeft.y);
	
	MemHandleUnlock(recordH);
}

void BuildRawListItemText(){
	FormType * frmP;
	ListType * list;
	UInt16 i;
	
	UInt16 cursor = 0;
	Boolean full = false;
	Boolean reachedEnd = false;
	Boolean reachedHead = false;

	if (RawListItemNumbers == 0) cursor = 0;
	else cursor = rawListItemIndex[RawListItemNumbers - 1] + 1;
//	if (cursor == 0) SndPlaySystemSound(sndError);
		
	while (SearchUnlearnedWordEntry(Forward, &cursor)){

		rawListItemIndex[RawListItemNumbers] = cursor;

		RawListItemNumbers ++;
		cursor ++;
			
		if (RawListItemNumbers == ListChoices){
			full = true;
			break;
		}	
	}
		
	if (!full) {
		
		reachedEnd = true;
	
		if (RawListItemNumbers == 0) cursor = 0;
		else cursor = rawListItemIndex[0] - 1;
	
		while (SearchUnlearnedWordEntry(Backward, &cursor)){
		
			for (i = RawListItemNumbers - 1; i > 0; i--)
				rawListItemIndex[i] = rawListItemIndex[i-1];
		
			rawListItemIndex[0] = cursor;
			RawListItemNumbers ++;
			cursor --;
		
			if (RawListItemNumbers == ListChoices){
				full = true;
				break;
			}
		}
		
		if (!full) reachedHead = true;
	}
	
		
	if (!reachedHead) {
		cursor = rawListItemIndex[0] - 1;
		reachedHead = !SearchUnlearnedWordEntry(Backward, &cursor);
	}
	
	if (!reachedEnd) {
		cursor = rawListItemIndex[RawListItemNumbers - 1] + 1;	
		reachedEnd = !SearchUnlearnedWordEntry(Forward, &cursor);
	}
	
	frmP = FrmGetActiveForm();
	FrmUpdateScrollers(frmP, FrmGetObjectIndex(frmP, ChooseScrollUpRepeating),
		FrmGetObjectIndex(frmP, ChooseScrollDownRepeating), !reachedHead, !reachedEnd);

	list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseRawList));
	LstSetListChoices(list, NULL, RawListItemNumbers);
	LstSetSelection(list, noListSelection);
	LstDrawList(list);
}

void RawListForward(Boolean byline){
	
	FormType * frmP;
	UInt16 steps;
	UInt16 cursor;
	UInt16 i;
	Boolean reachedEnd;
	
	if (byline) steps = 1;
	else steps = ListChoices - 1;
	
	cursor = rawListItemIndex[RawListItemNumbers - 1] + 1;
	
	while (steps > 0){
		if (!SearchUnlearnedWordEntry(Forward, &cursor)) {
			reachedEnd = true;
			break;
		}
		
		for (i = 0; i < RawListItemNumbers - 1; i++)
			rawListItemIndex[i] = rawListItemIndex[i+1];
		
		rawListItemIndex[RawListItemNumbers -1] = cursor;  
		
		steps--;
	}	
	
	if (!reachedEnd)
		reachedEnd = !SearchUnlearnedWordEntry(Forward, &cursor);
	
	frmP = FrmGetActiveForm();
	FrmUpdateScrollers(frmP, FrmGetObjectIndex(frmP, ChooseScrollUpRepeating),
		FrmGetObjectIndex(frmP, ChooseScrollDownRepeating), true, !reachedEnd);
}

void RawListBackward(Boolean byline){
	FormType * frmP;
	UInt16 steps;
	UInt16 cursor;
	UInt16 i;
	Boolean reachedHead;

	if (byline) steps = 1;
	else steps = ListChoices - 1;
	
	cursor = rawListItemIndex[0] - 1;
	
	while (steps > 0){
		if (!SearchUnlearnedWordEntry(Backward, &cursor)) {
			reachedHead = true;
			break;
		}
		
		for (i = RawListItemNumbers - 1; i > 0; i--)
			rawListItemIndex[i] = rawListItemIndex[i-1];

		rawListItemIndex[0] = cursor;  
		steps--;
	}	
	
	if (!reachedHead)
		reachedHead = !SearchUnlearnedWordEntry(Forward, &cursor);
	
	frmP = FrmGetActiveForm();
	FrmUpdateScrollers(frmP, FrmGetObjectIndex(frmP, ChooseScrollUpRepeating), 
		FrmGetObjectIndex(frmP, ChooseScrollDownRepeating), !reachedHead, true);
	
}

Boolean SearchUnlearnedWordEntry(Boolean forward, UInt16* cursor){
	
	Boolean found = false;
	WordPackedRecord* packed;
	MemHandle recordH;
	
	//if (cursor == 0) SndPlaySystemSound(sndError);
	do {
		//the only error returned by GetWordRecord is Index out of range;
		recordH = DmQueryRecord(CurrentDB, *cursor);
		if (recordH == NULL) return false;
		packed = (WordPackedRecord*) MemHandleLock(recordH);
		
		//if header record, next
		if (GetBitMacro(packed->header.allBits, HeaderFlag) != 0){
			
			//move cursor
			if (forward) (*cursor)++;
			else (*cursor)--;
			MemPtrUnlock(packed);
			found = false;
			continue;
		}
		
		//if not idling, next
		if (packed->wordStatus.wqs.wordQueue != Idling){
			
			//move cursor
			if (forward) (*cursor)++;
			else (*cursor)--;
			MemPtrUnlock(packed);
			found = false;
			continue;
		}
		
		found = true;
		
	} while (found == false);
	
	MemPtrUnlock(packed);
	return found;
}

void MoveToLearnList(UInt16 itemNum){
	
	FormType * frmP;
	ListType * list;
	HeaderItem learningItem;
	MemHandle recordH;
	WordRecordType record;
	WordFieldFlags flag;
	UInt16 i, j;

	if (!(itemNum < RawListItemNumbers)) return;
	flag.allBits = 0;
	
	GetWordRecord(CurrentDB, rawListItemIndex[itemNum], &record, &recordH);
	RemoveBitMacro(record.header.allBits, Raw);
	SetBitMacro(record.header.allBits, Learned);
	j = record.header.allBits;
	record.wordStatus.wqs.wordQueue = Learning;
	ChangeWordRecord(CurrentDB, &rawListItemIndex[itemNum], &record, flag);
	
	//MemHandleUnlock(recordH);
	
	DmRecordInfo(CurrentDB, rawListItemIndex[itemNum], NULL, &learningItem.uniqueID, NULL);
	learningItem.learningStatus = FirstLook;
	AddHeaderItem(CurrentDB, &learningItem); 
	
	//first pack raw list item
	for ( i = itemNum; i < RawListItemNumbers - 1; i++)
		rawListItemIndex[i] = rawListItemIndex[i+1];
	
	RawListItemNumbers--;
	
	BuildRawListItemText();
	frmP = FrmGetActiveForm();
	list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseRawList));
	
	LstDrawList(list);
	
	UpdateLearnList();
	list = FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, ChooseLearnList));
	LstDrawList(list);

}

void MoveToRawList(UInt16 itemNum){
	
	FormType * frmP;
	ListType * list;
	HeaderItem learningItem;
	MemHandle recordH;
	WordRecordType record;
	WordFieldFlags flag;
	UInt16 i, index;
	Err error;
	

	WordDBGetLearningItem(CurrentDB, &learningItem, itemNum);
	RemoveHeaderItem(CurrentDB, itemNum);
	
	error = DmFindRecordByID(CurrentDB, learningItem.uniqueID, &index);
	if (error) ErrAlert(error);
	RawListItemNumbers = 0;


	flag.allBits = 0;	
	GetWordRecord(CurrentDB, index, &record, &recordH);
	RemoveBitMacro(record.header.allBits, Learned);
	SetBitMacro(record.header.allBits, Raw);

	record.wordStatus.wqs.wordQueue = Idling;
	ChangeWordRecord(CurrentDB, &index, &record, flag);

	
	UpdateLearnList();
	
	BuildRawListItemText();	
}*/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕精品一区| 午夜在线成人av| 欧美日韩国产大片| 国产99久久久国产精品潘金| 五月婷婷激情综合| 国产精品成人免费精品自在线观看| 欧美丝袜丝交足nylons图片| 成人激情小说乱人伦| 九九国产精品视频| 天天综合天天做天天综合| 亚洲欧美色一区| 国产日产欧美精品一区二区三区| 欧美夫妻性生活| 欧美自拍丝袜亚洲| 色网综合在线观看| 成人app网站| 国产盗摄一区二区| 国内精品国产三级国产a久久 | 国产精品婷婷午夜在线观看| 日韩一区二区不卡| 欧美午夜一区二区三区| 91农村精品一区二区在线| 成人激情开心网| 国产做a爰片久久毛片| 久久99热狠狠色一区二区| 图片区小说区国产精品视频| 亚洲午夜免费福利视频| 亚洲最大成人网4388xx| 亚洲欧美偷拍三级| 樱花影视一区二区| 亚洲美女在线一区| 亚洲品质自拍视频| 综合久久国产九一剧情麻豆| 中文字幕亚洲一区二区av在线 | 成人久久18免费网站麻豆| 国产在线精品一区在线观看麻豆| 人人爽香蕉精品| 免费成人小视频| 久久精品国产久精国产| 精品影视av免费| 国产麻豆9l精品三级站| 成人av动漫在线| 色婷婷一区二区| 欧美亚洲日本国产| 欧美一区二区在线免费播放| 日韩视频一区在线观看| 久久无码av三级| 国产精品久久久久精k8| 一区二区三区四区激情| 日韩高清国产一区在线| 国内精品伊人久久久久av影院| 国产suv一区二区三区88区| 99久久国产综合精品色伊| 一本久久a久久免费精品不卡| 欧美性大战xxxxx久久久| 日韩一区二区在线看| 精品欧美一区二区久久| 国产视频一区二区三区在线观看 | 亚洲一区二区三区激情| 日韩va欧美va亚洲va久久| 久久99久久99| 成人av电影免费观看| 欧美日韩一二三| 精品国产一区二区在线观看| 国产精品久久久久久久久免费丝袜 | 国产日本欧美一区二区| 亚洲精选视频在线| 天天亚洲美女在线视频| 精品午夜一区二区三区在线观看| 国产激情精品久久久第一区二区 | 97久久精品人人做人人爽| 欧美在线free| 亚洲精品一区二区三区精华液| 国产精品无码永久免费888| 亚洲一区免费在线观看| 狠狠色2019综合网| 91在线观看地址| 欧美一区二区在线免费观看| 欧美国产综合色视频| 亚洲国产美女搞黄色| 精品在线一区二区三区| 91美女福利视频| 欧美电影免费观看高清完整版| 亚洲国产精品高清| 亚洲成人www| 国产99久久久精品| 91精品国产综合久久精品| 国产精品国产自产拍在线| 日韩电影免费在线| 99久久精品国产一区| 日韩精品一区二区三区三区免费| 亚洲欧美在线视频| 久久av中文字幕片| 在线观看国产精品网站| 国产亚洲女人久久久久毛片| 日日摸夜夜添夜夜添亚洲女人| 成人毛片在线观看| 精品成人佐山爱一区二区| 一区二区三区欧美亚洲| 国产91富婆露脸刺激对白| 91精品综合久久久久久| 中文字幕亚洲一区二区av在线| 国内精品自线一区二区三区视频| 欧美性视频一区二区三区| 中文字幕欧美激情| 久久精品99国产精品| 欧美男女性生活在线直播观看| 国产精品二三区| 国产精品123区| 精品国产免费人成电影在线观看四季| 亚洲国产日韩a在线播放性色| www.色综合.com| 国产午夜精品久久久久久久| 久久99精品久久只有精品| 欧美老肥妇做.爰bbww| 亚洲最快最全在线视频| av在线不卡免费看| 中文字幕免费不卡| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 九九视频精品免费| 欧美一区二区三区日韩| 亚洲sss视频在线视频| 欧美性色黄大片| 亚洲综合免费观看高清完整版在线 | 欧美日韩国产中文| 一区二区三区资源| 色8久久精品久久久久久蜜| 国产精品白丝在线| 成人av午夜电影| |精品福利一区二区三区| 91啪九色porn原创视频在线观看| 中文字幕一区日韩精品欧美| www.欧美精品一二区| 亚洲欧美日韩中文播放| av网站免费线看精品| 亚洲男人的天堂在线aⅴ视频| 91网站在线播放| 亚洲最色的网站| 欧美酷刑日本凌虐凌虐| 免费欧美日韩国产三级电影| 日韩一级视频免费观看在线| 人禽交欧美网站| 久久久一区二区三区| 国产黄色精品视频| 亚洲色图欧美偷拍| 欧美日韩不卡一区| 久久精品久久综合| 欧美精品一区二区三区蜜桃 | 91美女在线观看| 亚洲图片自拍偷拍| 91精品国产入口在线| 国产一区二区三区久久久| 国产喂奶挤奶一区二区三区| 91无套直看片红桃| 天天综合天天综合色| 精品国产欧美一区二区| 成人av一区二区三区| 亚洲一区二区中文在线| 日韩免费高清av| 高清不卡一区二区| 亚洲一区二区3| 欧美成人精品福利| 成人精品一区二区三区四区 | 日韩精品一区二区三区视频播放| 国产一区二区三区电影在线观看| 国产精品免费视频一区| 欧美日韩国产三级| 国产精品77777| 一区二区三区国产精华| 欧美大尺度电影在线| 99久久精品国产一区| 免费xxxx性欧美18vr| 中文字幕av一区二区三区免费看 | 91传媒视频在线播放| 久久成人羞羞网站| 亚洲人成小说网站色在线 | 亚洲午夜av在线| 久久久久久麻豆| 欧美日韩国产小视频在线观看| 国产一区亚洲一区| 亚洲一区影音先锋| 亚洲国产精品av| 777久久久精品| 91农村精品一区二区在线| 久久精品国内一区二区三区| 一区免费观看视频| 精品久久久久久久人人人人传媒 | 久久蜜桃一区二区| 欧美人xxxx| 91香蕉视频mp4| 国产福利精品导航| 日韩精品国产欧美| 亚洲精品日韩专区silk| 久久天天做天天爱综合色| 欧美日韩国产123区| av不卡在线观看| 国产九色sp调教91| 另类专区欧美蜜桃臀第一页| 一区二区三区毛片| 亚洲欧美怡红院|