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

📄 calltoda.c

📁 palm os上的DA编程
💻 C
📖 第 1 页 / 共 3 页
字号:
					setAndDrawFields( param );					handled = true;					break;				case mainButtonPPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == pagerLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = pagerLabel;					} else {						param->mode = 0;					}					setAndDrawFields( param );					handled = true;					break;				case mainButtonFPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == faxLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = faxLabel;					} else {						param->mode = 0;					}					setAndDrawFields( param );					handled = true;					break;				case mainButtonEPushButton:					if( event->data.ctlSelect.on ) {						if( param->mode == emailLabel )							param->modeNum ++;						else							param->modeNum = -1;						param->mode = emailLabel;					} else {						param->mode = 0;					}					setAndDrawFields( param );					handled = true;					break;				default:					break;			}			break;		case popSelectEvent:			switch ( event->data.popSelect.controlID ) {			case mainSelectApplPopTrigger:				param->p.launchAppl = event->data.popSelect.selection;				setAndDrawFields( param );				handled = true;				break;			case mainSelectInsertStringsTrigger:				param->p.insertStrings = event->data.popSelect.selection;				setCompanyTitleFlags( param );				setAndDrawFields( param );				handled = true;				break;			default:				break;			}			break;		case menuEvent:			switch (event->data.menu.itemID) {			case EditCopy:				CopyClipboard( param );				handled = true;				break;			case EditInsertLaunchAddress:				param->insert = true;				param->launchAddrAppl = true;				done= true;				handled = true;				break;			case EditLaunchAddress:				param->launchAddrAppl = true;				done= true;				handled = true;				break;			default:				break;			}			break;				case keyDownEvent:			if (chrIsHardKey(event->data.keyDown.chr)) {			/* maybe 'HotSync!' button pressed ? */				EvtAddEventToQueue(event);				done = true;				handled = true;				break;			}			switch( event->data.keyDown.chr ) {				case pageUpChr:					if( param->optionControl != MAIN_FORM ) {						SndPlaySystemSound( sndWarning );						break;					}					if( param->index > 0 ) {						param->index --;					} else {						SndPlaySystemSound( sndWarning );					}					param->mode = param->modeNum = -1;					/* this enables DA to drag, both on OS 3.5+ and the OS before  */					WinSetDrawWindow(&(form->window));					setAndDrawFields( param );					handled = true;					break;				case pageDownChr:					if( param->optionControl != MAIN_FORM ) {						SndPlaySystemSound( sndWarning );						break;					}					if( param->index + 1 < param->indexNum ) {						param->index ++;					} else {						SndPlaySystemSound( sndWarning );					}					param->mode = param->modeNum = -1;					/* this enables DA to drag, both on OS 3.5+ and the OS before  */					WinSetDrawWindow(&(form->window));					setAndDrawFields( param );					handled = true;					break;				default:					break;			}			break;				/* Following implements 'Draggable' feature */		case penDownEvent://		case frmTitleEnterEvent:			if (IsInside(&form->window.windowBounds,					event->screenX, event->screenY)) {				/* Start Drag */				param->fromX  = event->screenX + form->window.windowBounds.topLeft.x;				param->fromY  = event->screenY + form->window.windowBounds.topLeft.y;				param->moving = true;				FrmEraseForm(form);				/* this enables DA to drag, both on OS 3.5+ and the OS before  */				WinSetDrawWindow(param->rootWindow);				/* Draw only frame as dragging */				ExorFrame(param->p.lastX, param->p.lastY);				handled = true;			} else if (IsOutside(&form->window.windowBounds,				event->screenX, event->screenY)) {				/* Pen tapped on Outside of form -- quit */				done = true;				handled = true;			}			break;				case penMoveEvent:			if (param->moving) {				form = FrmGetActiveForm();				moveX = event->screenX - param->fromX;				moveY = event->screenY - param->fromY;								/* Erase previous frame */				ExorFrame(param->p.lastX, param->p.lastY);								/* Compute new form position */                if (moveX < FrameWidth - param->p.lastX) {                    moveX = FrameWidth - param->p.lastX;                }                 else if (moveX + mainFormWidth + FrameWidth > hwrDisplayWidth - param->p.lastX) {                    moveX = hwrDisplayWidth - param->p.lastX - mainFormWidth - FrameWidth;                }                if (moveY < FrameWidth - param->p.lastY) {                    moveY = FrameWidth - param->p.lastY;                }                 else if (moveY + mainFormHeight + FrameWidth > hwrDisplayHeight - param->p.lastY) {                    moveY = hwrDisplayHeight - param->p.lastY - mainFormHeight - FrameWidth;                }				/* Draw new frame */				param->p.lastX += moveX;				param->p.lastY += moveY;				param->fromX = event->screenX;				param->fromY = event->screenY;				ExorFrame(param->p.lastX, param->p.lastY);				handled = true;			}			break;					case penUpEvent:			form = FrmGetActiveForm();			if (param->moving) {				/* Erase last frame */				ExorFrame(param->p.lastX, param->p.lastY);				/* Save last position into preference *///				param->p.lastX = form->window.windowBounds.topLeft.x;//				param->p.lastY = form->window.windowBounds.topLeft.y;				param->moving = false;				/* Redraw the form at the new position */				form->window.windowBounds.topLeft.x = param->p.lastX;				form->window.windowBounds.topLeft.y = param->p.lastY;				/* this enables DA to drag, both on OS 3.5+ and the OS before  *///				WinSetDrawWindow(&(form->window));				FrmDrawForm(form);				setAndDrawFields( param );				handled = true;			}			break;				default:			break;	}	return done;}static Boolean IsInside(RectanglePtr r, SWord x, SWord y){	return (0 <= x && x <= r->extent.x && 0 <= y && y <= r->extent.y);}static Boolean IsOutside(RectanglePtr r, SWord x, SWord y){	return (!IsInside(r, x, y));}static void ExorFrame(Word topLeftX, Word topLeftY){	RectangleType r;		r.topLeft.x = topLeftX + 2;	r.topLeft.y = topLeftY + 2;	r.extent.x  = mainFormWidth  - 4;	r.extent.y  = mainFormHeight - 4;	WinInvertRectangleFrame(boldRoundFrame, &r);}static void switchFormBitmaps( FormPtr form, Word show ){	FormObjListType *obj_p;	Word num;	for( num = 0 ; num < form->numObjects ; num ++ ) {		obj_p = form->objects + num;		if( obj_p->objectType == frmBitmapObj &&			obj_p->object.bitmap->rscID == mainUnnamed1016BitMap ) {				obj_p->object.bitmap->attr.usable = show;		}	}	return;}static void formSetHelpResource( FormPtr form, Word helpID ){	form->helpRscId = helpID;	return;}static void showObject( FormPtr form, Word objectID ){	FrmShowObject( form, FrmGetObjectIndex(form, objectID) );	return;}static void hideObject( FormPtr form, Word objectID ){	FrmHideObject( form, FrmGetObjectIndex(form, objectID) );	return;}static void showMoreOptionControls( FormPtr form ){	Word num;	Word h_array[] = {//	mainButtonGoButton,	mainButtonInsertButton,	mainButtonDownButton,	mainButtonUpButton,	mainButtonDoneButton,	mainButtonOptionButton,	mainFIeldNameField,	mainFieldNumberField,	mainButtonOPushButton,	mainButtonWPushButton,	mainButtonHPushButton,	mainButtonMoPushButton,	mainButtonPPushButton,	mainButtonFPushButton,	mainButtonEPushButton,	mainButtonMaPushButton,	mainNameFormat0PushButton,	mainNameFormat1PushButton,	mainNameFormat2PushButton,	mainNameFormat3PushButton,	mainPasteTypeCheckbox,//	mainJapaneseCheckbox,	mainFormatLabelLabel,	mainMoreButton,//	mainPasteCompanyCheckbox,//	mainPasteTitleCheckbox,	mainSelectApplPopTrigger,	mainSelectApplLabelLabel,	mainSelectInsertStringsLabel,	mainSelectInsertStringsTrigger,	-1 };	Word s_array[] = {	mainButtonOKButton,	mainAgainButton,//	mainAltStrstriCheckbox,	mainIgnoreCaseCheckbox,	mainFindNameCompanyCheckbox,	mainFindPhonesCheckbox,	mainFindAddressCheckbox,	mainFindCustomsCheckbox,	mainFindNoteCheckbox,	mainLangLabelLabel,	mainLangUSPushButton,	mainLangJPPushButton,	mainLangEUPushButton,	-1 };	// Hide all of Main Control objects	num = 0;	while( h_array[num] != -1 ) {		hideObject( form, h_array[num ++] );	}	//switchFormBitmaps( form, 0 );	//FrmEraseForm( form );	//FrmDrawForm( form );	// Show all of Option Control objects	num = 0;	while( s_array[num] != -1 ) {		showObject( form, s_array[num ++] );	}	FrmSetTitle( form, moreOptionFormTitle );	return;}static void showOptionControls( FormPtr form, Param *param ){	Word num;	Word h_array[] = {//	mainButtonGoButton,	mainButtonInsertButton,	mainButtonDownButton,	mainButtonUpButton,	mainButtonDoneButton,	mainButtonOptionButton,	mainAgainButton,	mainFIeldNameField,	mainFieldNumberField,	mainButtonOPushButton,	mainButtonWPushButton,	mainButtonHPushButton,	mainButtonMoPushButton,	mainButtonPPushButton,	mainButtonFPushButton,	mainButtonEPushButton,	mainButtonMaPushButton,//	mainAltStrstriCheckbox,	mainIgnoreCaseCheckbox,	mainFindNameCompanyCheckbox,	mainFindPhonesCheckbox,	mainFindAddressCheckbox,	mainFindCustomsCheckbox,	mainFindNoteCheckbox,	mainLangLabelLabel,	mainLangUSPushButton,	mainLangJPPushButton,	mainLangEUPushButton,	mainPasteCompanyCheckbox,	mainPasteTitleCheckbox,	-1 };	Word s_array[] = {	mainNameFormat0PushButton,	mainNameFormat1PushButton,	mainNameFormat2PushButton,	mainNameFormat3PushButton,	mainButtonOKButton,	mainMoreButton,	mainPasteTypeCheckbox,//	mainJapaneseCheckbox,//	mainPasteCompanyCheckbox,//	mainPasteTitleCheckbox,	mainFormatLabelLabel,	mainSelectApplPopTrigger,	mainSelectApplLabelLabel,	mainSelectInsertStringsLabel,	mainSelectInsertStringsTrigger,	-1 };	// Hide all of Main Control objects	num = 0;	while( h_array[num] != -1 ) {		hideObject( form, h_array[num ++] );	}		num = 0;/*	if( ! param->p.includeLastname ) {		num = 2;		hideObject( form, mainCheckbox_swapCheckbox );		hideObject( form, mainNoCommaCheckbox );	} else if( ! param->p.swapFirstLast ) {		num = 1;		hideObject( form, mainNoCommaCheckbox );	}*/	switchFormBitmaps( form, 0 );	FrmEraseForm( form );	FrmDrawForm( form );	// Show all of Option Control objects	while( s_array[num] != -1 ) {		showObject( form, s_array[num ++] );	}	FrmSetTitle( form, optionFormTitle );	return;}static void showMainControls( FormPtr form, Param *param ){	Word num;	Word h_array[] = {	mainButtonOKButton,	mainNameFormat0PushButton,	mainNameFormat1PushButton,	mainNameFormat2PushButton,	mainNameFormat3PushButton,	mainPasteTypeCheckbox,//	mainAltStrstriCheckbox,//	mainJapaneseCheckbox,	mainFormatLabelLabel,	mainIgnoreCaseCheckbox,	mainMoreButton,	mainAgainButton,	mainFindNameCompanyCheckbox,	mainFindPhonesCheckbox,	mainFindAddressCheckbox,	mainFindCustomsCheckbox,	mainFindNoteCheckbox,	mainLangLabelLabel,	mainLangUSPushButton,	mainLangJPPushButton,	mainLangEUPushButton,	mainSelectApplPopTrigger,	mainSelectApplLabelLabel,	mainSelectInsertStringsLabel,	mainSelectInsertStringsTrigger,	-1 };	Word s_array[] = {	mainButtonInsertButton,	mainButtonDownButton,	mainButtonUpButton,	mainButtonDoneButton,	mainButtonOptionButton,	mainFIeldNameField,	mainFieldNumberField,//	mainButtonGoButton,	mainPasteCompanyCheckbox,	mainPasteTitleCheckbox,	-1 };	// Hide all of Option Control objects	num = 0;	while( h_array[num] != -1 ) {		hideObject( form, h_array[num ++] );	}		num = 0;	if( param->disableInsert ) {		hideObject( form, mainButtonInsertButton );		num = 1;	}		// Show all of Main Control objects	switchFormBitmaps( form, 1 );	FrmEraseForm( form );	FrmDrawForm( form );		while( s_array[num] != -1 ) {		showObject( form, s_array[num ++] );	}	showCtrlButtons( param, form );		FrmSetTitle( form, mainFormTitle );	return;}static void setCompanyTitleFlags( Param *param ){	unsigned char flags[] = {    BITS_INSERT_NAME,    BITS_INSERT_NUMBER,    BITS_INSERT_NAME_NUMBER,    BITS_INSERT_NAME_COMPANY,

⌨️ 快捷键说明

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