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

📄 phonebooks.c

📁 brew平台下用VC开发的电话本
💻 C
📖 第 1 页 / 共 3 页
字号:
				{
					item.wItemID=2001;
					item.dwData=i;
					item.wImage=MOBILE;
					IMENUCTL_AddItemEx(pme->pHListCtl,&item);
				}
				break;
			default:
				break;
			}
		}
		j=IMENUCTL_GetSel(pme->pHListCtl);
		IMENUCTL_GetItemData(pme->pHListCtl,j,&data);
		pAbF=IADDRREC_GetField(pAbr,data);
		ISTATIC_SetText(pme->pStaticCtl,NULL,pAbF->pBuffer,NULL,AEE_FONT_BOLD);
		RELEASE_Ctl(&pAbr);
	}

	return (IWindow *)pme;

}
void		CListWin_Enable(IWindow * po, boolean bEnable)
{
	CListWin* pme = (CListWin*)po;

	pme->m_bActive=TRUE;
	if(pme->pPopMenuCtl==NULL)
	{	
		IMENUCTL_SetActive(pme->pHListCtl,bEnable);
		IMENUCTL_SetActive(pme->pVListCtl,bEnable);
	}
	else
	{
		IMENUCTL_SetActive(pme->pVListCtl,FALSE);
		IMENUCTL_SetActive(pme->pHListCtl,FALSE);
		IMENUCTL_SetActive(pme->pPopMenuCtl,bEnable);
	}
	CSoftMenuCtl_SetActive(pme->pSoftMenuCtl,bEnable);
}
void		CListWin_Redraw(IWindow * po)
{
	CListWin* pme = (CListWin*)po;
	AEERect	  rect;

	IDISPLAY_ClearScreen(pme->m_pIDisplay);
	CListWin_Enable(po,TRUE);

	IMENUCTL_Redraw(pme->pHListCtl);
	IMENUCTL_Redraw(pme->pVListCtl);
	ISTATIC_Redraw(pme->pStaticCtl);
	CSoftMenuCtl_Redraw(pme->pSoftMenuCtl);

	ISTATIC_GetRect(pme->pStaticCtl,&rect);
	IDISPLAY_DrawHLine(pme->m_pIDisplay,rect.x,rect.y,rect.dx);
	IMENUCTL_GetRect(pme->pVListCtl,&rect);

	IIMAGE_Draw(pme->pPhotoCtl,rect.x+rect.dx,rect.y+20);
	if(pme->pPopMenuCtl!=NULL)
		IMENUCTL_Redraw(pme->pPopMenuCtl);
}
boolean		CListWin_HandleEvent(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
	CListWin*	pme=(CListWin*)po;
	uint32		data;
	IAddrRec*		pAbr=NULL;
	int				m,n,i,j;
	AEEAddrField*	pAbF=NULL;


	if(pme->m_bActive==FALSE)
		return FALSE;
	IMENUCTL_HandleEvent(pme->pVListCtl,eCode,wParam,dwParam);
	IMENUCTL_HandleEvent(pme->pHListCtl,eCode,wParam,dwParam);

	switch(eCode)
	{
	case EVT_KEY:
		switch(wParam)
		{
		case AVK_UP:
		case AVK_DOWN:
			if(IMENUCTL_GetItemCount(pme->pVListCtl)>0)
			{
				IMENUCTL_GetItemData(pme->pVListCtl,IMENUCTL_GetSel(pme->pVListCtl),&data);
				pAbr=IADDRBOOK_GetRecByID(pme->m_pOwner->m_pAddrBook,data);
				if(!pAbr)
					return FALSE;
				n=IADDRREC_GetFieldCount(pAbr);
				IMENUCTL_DeleteAll(pme->pHListCtl);
				for(i=0;i<n;i++)
				{
					CtlAddItem		item;
					item.pText=NULL;
					item.pImage=NULL;
					item.pszResText=NULL;
					item.pszResImage=PHONEBOOKS_RES_FILE;
					item.wText=0;
					item.wFont=0;
					pAbF=IADDRREC_GetField(pAbr,i);
					if(pAbF==NULL)
					{
						RELEASE_Ctl(&pAbr);		
						return NULL;
					}
					switch(pAbF->fID)
					{
					case AEE_ADDRFIELD_PHONE_HOME:
						if(WSTRLEN(pAbF->pBuffer)>0)
						{
							item.wItemID=2000;
							item.dwData=i;
							item.wImage=5003;
							IMENUCTL_AddItemEx(pme->pHListCtl,&item);
						}
						break;
					case AEE_ADDRFIELD_PHONE_GENERIC:
						if(WSTRLEN(pAbF->pBuffer)>0)
						{
							item.wItemID=2001;
							item.dwData=i;
							item.wImage=5002;
							IMENUCTL_AddItemEx(pme->pHListCtl,&item);
						}
						break;
					default:
						break;
					}
				}
				if(IMENUCTL_GetItemCount(pme->pHListCtl)>0)
				{
					j=IMENUCTL_GetSel(pme->pHListCtl);
					IMENUCTL_GetItemData(pme->pHListCtl,j,&data);
					pAbF=IADDRREC_GetField(pAbr,data);
					ISTATIC_SetText(pme->pStaticCtl,NULL,pAbF->pBuffer,NULL,AEE_FONT_BOLD);
				}
				RELEASE_Ctl(&pAbr);
				CListWin_Redraw(po);

			}
			break;

		case AVK_LEFT:
		case AVK_RIGHT:
			if(IMENUCTL_GetItemCount(pme->pHListCtl)>0)
			{
				IMENUCTL_GetItemData(pme->pVListCtl,IMENUCTL_GetSel(pme->pVListCtl),&data);
				pAbr=IADDRBOOK_GetRecByID(pme->m_pOwner->m_pAddrBook,data);
				if(!pAbr)
					return FALSE;
				j=IMENUCTL_GetSel(pme->pHListCtl);
				IMENUCTL_GetItemData(pme->pHListCtl,j,&data);
				pAbF=IADDRREC_GetField(pAbr,data);

				ISTATIC_SetText(pme->pStaticCtl,NULL,pAbF->pBuffer,NULL,AEE_FONT_BOLD);
				RELEASE_Ctl(&pAbr);
				CListWin_Redraw(po);
			}
			break;
		}
		break;
	case EVT_COMMAND:
		switch(wParam)
		{
		//左软键
		case 0:
			{
				if(pme->pPopMenuCtl==NULL)
				{
					AEERect		rect;
					if(ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_MENUCTL,&pme->pPopMenuCtl)!=SUCCESS)
					{
						pme->pPopMenuCtl=NULL;
						return FALSE;
					}
					SETAEERECT(&rect,0,pme->m_pOwner->m_cyHeight-pme->pSoftMenuCtl->m_Rect.dy-4*pme->m_pOwner->m_nNChSize,2*pme->m_pOwner->m_cxWidth/3,4*pme->m_pOwner->m_nNChSize);
					IMENUCTL_SetRect(pme->pPopMenuCtl,&rect);
					IMENUCTL_AddItem(pme->pPopMenuCtl,NULL,NULL,3,L"新建",NULL);
					IMENUCTL_AddItem(pme->pPopMenuCtl,NULL,NULL,4,L"删除",NULL);
					CSoftMenuCtl_SetSoftKey(pme->pSoftMenuCtl,NULL,L"取消",L"选择");
					CListWin_Redraw(pme);
				}
				else
				{
					RELEASE_Ctl(&pme->pPopMenuCtl);
					CSoftMenuCtl_SetSoftKey(pme->pSoftMenuCtl,NULL,L"选项",L"编辑");
					CListWin_Redraw(pme);
				}
			}
			return TRUE;
			break;

		//右软键
		case 1:
			if(pme->pPopMenuCtl==NULL)
			{
				IMENUCTL_GetItemData(pme->pVListCtl,IMENUCTL_GetSel(pme->pVListCtl),&data);
				CPhoneBooks_SetWindow(pme->m_pOwner,W_FORM,data+1);
			}
			else
			{
				ISHELL_HandleEvent(pme->m_pIShell,EVT_COMMAND,IMENUCTL_GetSel(pme->pPopMenuCtl),NULL);
			}
			return TRUE;
			break;

		//新建联系人记录
		case 3:
			CPhoneBooks_SetWindow(pme->m_pOwner,W_FORM,NULL);
			return TRUE;
			break;
		case 4:
			{
				if(IMENUCTL_GetItemCount(pme->pVListCtl)>0)
				{
					IMENUCTL_GetItemData(pme->pVListCtl,IMENUCTL_GetSel(pme->pVListCtl),&data);
					IADDRREC_RemoveRec(IADDRBOOK_GetRecByID(pme->m_pOwner->m_pAddrBook,data));
					IMENUCTL_DeleteItem(pme->pVListCtl,IMENUCTL_GetSel(pme->pVListCtl));
					IMENUCTL_GetItemData(pme->pVListCtl,IMENUCTL_GetSel(pme->pVListCtl),&data);
					pAbr=IADDRBOOK_GetRecByID(pme->m_pOwner->m_pAddrBook,data);
					if(!pAbr)
						return FALSE;
					n=IADDRREC_GetFieldCount(pAbr);
					IMENUCTL_DeleteAll(pme->pHListCtl);
					for(i=0;i<n;i++)
					{
						CtlAddItem		item;
						item.pText=NULL;
						item.pImage=NULL;
						item.pszResText=NULL;
						item.pszResImage=PHONEBOOKS_RES_FILE;
						item.wText=0;
						item.wFont=0;
						pAbF=IADDRREC_GetField(pAbr,i);
						if(pAbF==NULL)
						{
							RELEASE_Ctl(&pAbr);		
							return NULL;
						}
						switch(pAbF->fID)
						{
						case AEE_ADDRFIELD_PHONE_HOME:
							item.wItemID=2000;
							item.dwData=i;
							item.wImage=5003;
							IMENUCTL_AddItemEx(pme->pHListCtl,&item);
							break;
						case AEE_ADDRFIELD_PHONE_GENERIC:
							item.wItemID=2001;
							item.dwData=i;
							item.wImage=5002;
							IMENUCTL_AddItemEx(pme->pHListCtl,&item);
							break;
						default:
							break;
						}
					}
					j=IMENUCTL_GetSel(pme->pHListCtl);
					IMENUCTL_GetItemData(pme->pHListCtl,j,&data);
					pAbF=IADDRREC_GetField(pAbr,data);
					ISTATIC_SetText(pme->pStaticCtl,NULL,pAbF->pBuffer,NULL,AEE_FONT_BOLD);
					RELEASE_Ctl(&pAbr);
				}
				RELEASE_Ctl(&pme->pPopMenuCtl);
				CSoftMenuCtl_SetSoftKey(pme->pSoftMenuCtl,NULL,L"选项",L"编辑");
				CListWin_Redraw(pme);
			}
			return TRUE;
			break;

		default:
			break;
		}
		break;

	default:
		break;
	}

	//事件链末端
	if(pme->pPopMenuCtl!=NULL)
		IMENUCTL_HandleEvent(pme->pPopMenuCtl,eCode,wParam,dwParam);

	CSoftMenuCtl_HandleEvent(pme->pSoftMenuCtl,eCode,wParam,dwParam);

	return TRUE;

}
void		CListWin_Delete(IWindow * po)
{
	CListWin* pme = (CListWin*)po;

	CSoftMenuCtl_Release(pme->pSoftMenuCtl);
	RELEASE_Ctl(&pme->pVListCtl);
	RELEASE_Ctl(&pme->pHListCtl);
	RELEASE_Ctl(&pme->pPopMenuCtl);
	RELEASE_Ctl(&pme->pPhotoCtl);
	RELEASE_Ctl(&pme->pStaticCtl);

	FREE(pme);

}

IWindow*	CFormWin_New(CPhoneBooks * pOwner)
{
	CFormWin*		pme;
	VTBL(IWindow)	vtbl;
	AEERect			rect;

	//继承自CWindow的类必须如此构造
	IWINDOW_SETVTBL(&vtbl, CFormWin_Enable, CFormWin_Redraw, CFormWin_HandleEvent, CFormWin_Delete);
	pme = (CFormWin *)CWindow_New(sizeof(CFormWin), pOwner, &vtbl);
	if (!pme)
	  return NULL;
	
	//派生类私有成员构造

	//软键菜单
	pme->pSoftMenuCtl=CSoftMenuCtl_New(pOwner);
	if(!pme->pSoftMenuCtl)
		return NULL;
	CSoftMenuCtl_SetBackground(pme->pSoftMenuCtl,FALSE,NULL,MAKE_RGB(0,0,255));
	CSoftMenuCtl_SetSoftKey(pme->pSoftMenuCtl,0,L"取消",L"保存");

	//姓名栏
	pme->pNameImage=ISHELL_LoadResImage(pme->m_pIShell,PHONEBOOKS_RES_FILE,5001);
	if(!pme)
		return NULL;
	if(ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_TEXTCTL,&pme->pNameBox)!=SUCCESS)
		return NULL;
	SETAEERECT(&rect,20,0,50,20);
	ITEXTCTL_SetRect(pme->pNameBox,&rect);
	ITEXTCTL_SetProperties(pme->pNameBox,TP_FRAME);
	ITEXTCTL_SetInputMode(pme->pNameBox,AEE_TM_CURRENT);


	//手机号码栏
	pme->pMobileImage=ISHELL_LoadResImage(pme->m_pIShell,PHONEBOOKS_RES_FILE,5002);
	if(!pme)
		return NULL;
	if(ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_TEXTCTL,&pme->pMobileBox)!=SUCCESS)
		return NULL;
	SETAEERECT(&rect,20,20,50,20);
	ITEXTCTL_SetRect(pme->pMobileBox,&rect);
	ITEXTCTL_SetProperties(pme->pMobileBox,TP_FRAME);
	ITEXTCTL_SetInputMode(pme->pMobileBox,AEE_TM_NUMBERS);

	//座机号码栏
	pme->pPhoneImage=ISHELL_LoadResImage(pme->m_pIShell,PHONEBOOKS_RES_FILE,5003);
	if(!pme)
		return NULL;
	if(ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_TEXTCTL,&pme->pPhoneBox)!=SUCCESS)
		return NULL;
	SETAEERECT(&rect,20,40,50,20);
	ITEXTCTL_SetRect(pme->pPhoneBox,&rect);
	ITEXTCTL_SetProperties(pme->pPhoneBox,TP_FRAME);
	ITEXTCTL_SetInputMode(pme->pPhoneBox,AEE_TM_NUMBERS);

	//群组选择栏
	pme->pGroupImage=ISHELL_LoadResImage(pme->m_pIShell,PHONEBOOKS_RES_FILE,5004);
	if(!pme)
		return NULL;
	if(ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_LISTCTL,&pme->pGroupBox)!=SUCCESS)
		return NULL;
	SETAEERECT(&rect,20,60,50,20);
	IMENUCTL_SetRect(pme->pGroupBox,&rect);
	IMENUCTL_AddItem(pme->pGroupBox,NULL,NULL,100,L"未知群组",NULL);
	IMENUCTL_AddItem(pme->pGroupBox,NULL,NULL,101,L"朋友",NULL);
	IMENUCTL_AddItem(pme->pGroupBox,NULL,NULL,102,L"同事",NULL);
	IMENUCTL_AddItem(pme->pGroupBox,NULL,NULL,103,L"家人",NULL);
	IMENUCTL_AddItem(pme->pGroupBox,NULL,NULL,104,L"同学",NULL);

	pme->nActiveIndex=0;
	pme->nRecID=0;

	return (IWindow *)pme;

}
void		CFormWin_Enable(IWindow * po, boolean bEnable)
{
	CFormWin* pme = (CFormWin*)po;

	pme->m_bActive=TRUE;
	CSoftMenuCtl_SetActive(pme->pSoftMenuCtl,bEnable);
	
	if(pme->pNameBox)
		ITEXTCTL_SetActive(pme->pNameBox,FALSE);
	if(pme->pMobileBox)
		ITEXTCTL_SetActive(pme->pMobileBox,FALSE);
	if(pme->pPhoneBox)
		ITEXTCTL_SetActive(pme->pPhoneBox,FALSE);
	if(pme->pGroupBox)
		IMENUCTL_SetActive(pme->pGroupBox,FALSE);
	switch(pme->nActiveIndex)
	{
	case 0:

⌨️ 快捷键说明

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