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

📄 page.c

📁 一个minigui 工程框架,需要windows 下的minigui 开发环境
💻 C
📖 第 1 页 / 共 3 页
字号:
	i++;
	return i;

}
int page_p_add_button(Page* page_p,Button* button_p,int OwnPage_Pos,int type)
{
	int i = 0;
	ButtonList p;
	ButtonList prv;
	ButtonList* address;


	if (page_p == NULL)
		return -1;
	
	address = &page_p->m_blButtonList;
	p = page_p->m_blButtonList;
	prv = p;	

	while(p){

		i++;
		prv = p;
		address = &p->next;
		p = p->next;
		
	}
	p = (ButtonList)malloc(sizeof(struct BUTTONLIST));
	if( 0 == p)
		return i;
	memset(p,0,sizeof(struct BUTTONLIST));
	p->button_p = button_p;	
	*address = p;
	i++;
	return i;
}

int page_add_image(Page* page_p,Image* image_p)
{
	int i = 0;
	ImageList p;
	ImageList prv;
	ImageList* address;


	if (page_p == NULL)
		return -1;
	
	address = &page_p->m_ilImageList;
	p = page_p->m_ilImageList;
	prv = p;
	

	while(p){

		i++;
		prv = p;
		address = &p->next;
		p = p->next;
		
	}

	p = (ImageList)malloc(sizeof(struct IMAGELIST));
	if( 0 == p)
		return i;

	memset(p,0,sizeof(struct IMAGELIST));

	image_p->m_pParentPage = page_p;

	p->image_p = image_p;
	
	*address = p;

	list_add_widget(page_p,IMAGE_X,(void*)image_p);

	i++;
	return i;

}

int page_add_border(Page* page_p,Border* border_p)
{
	int i = 0;
	BorderList p;
	BorderList prv;
	BorderList* address;


	if (page_p == NULL)
		return -1;
	
	address = &page_p->m_blBorderList;
	p = page_p->m_blBorderList;
	prv = p;
	

	while(p){

		i++;
		prv = p;
		address = &p->next;
		p = p->next;
		
	}

	p = (BorderList)malloc(sizeof(struct BORDERLIST));
	if( 0 == p)
		return i;

	memset(p,0,sizeof(struct BORDERLIST));

	border_p->m_pParentPage=page_p;

	p->border_p=border_p;
	
	*address = p;

	list_add_widget(page_p,BORDER_X,(void*)border_p);


	i++;
	return i;
}

int page_add_label(Page* page_p,Label* label_p)
{
	int i = 0;
	LabelList p;
	LabelList prv;
	LabelList* address;


	if (page_p == NULL)
		return -1;
	
	address = &page_p->m_llLabelList ;
	p = page_p->m_llLabelList ;
	prv = p;
	

	while(p){

		i++;
		prv = p;
		address = &p->next;
		p = p->next;
		
	}

	p = (LabelList)malloc(sizeof(struct LABELLIST));
	if( 0 == p)
		return i;
	memset(p,0,sizeof(struct LABELLIST));

	label_p->m_pParentPage =  page_p;

	p->label_p  = label_p;
	
	*address = p;
	list_add_widget(page_p,LABEL_X,(void*)label_p);

	i++;
	return i;
}

int page_add_button(Page* page_p,Button* button_p,int OwnPage_Pos,int type)
{
	
	int i = 0;
	ButtonList p;
	ButtonList prv;
	ButtonList* address;


	if (page_p == NULL)
		return -1;
	
	address = &page_p->m_blButtonList;
	p = page_p->m_blButtonList;
	prv = p;
	

	while(p){

		i++;
		prv = p;
		address = &p->next;
		p = p->next;
		
	}

	p = (ButtonList)malloc(sizeof(struct BUTTONLIST));
	if( 0 == p)
		return i;

	memset(p,0,sizeof(struct BUTTONLIST));


	button_p->m_nButtonType = type;	

	button_p->m_pParentPage=page_p;				// set parent page.

	p->button_p = button_p;
	
	*address = p;
	list_add_widget(page_p,BUTTON_X,(void*)button_p);


	i++;
	return i;
	
}TextItem text_struct_init(	STRING szContent,LOG_FONT logfont,BOOL bFring,eLocation eLoc,COLORREF dwTextColor)
{
	TextItem text;
	int slen;

	if(szContent!=NULL)
		slen = strlen(szContent);
	else 
		slen = 0;

	if (slen !=0 ){
		text.m_szContent = (STRING) malloc(slen + 1);
		if(text.m_szContent)
			strcpy(text.m_szContent , szContent);
	}
	else
		text.m_szContent = NULL;

	text.m_eLocation = eLoc;
	text.m_bFring = bFring;
	text.m_ulTextColor = dwTextColor;

	if(logfont!=NULL)
		slen = strlen(logfont);
	else
		slen = 0;

	if(slen !=0)
	{
		text.m_LogFont = (STRING) malloc(slen+1);
		if(text.m_LogFont)
			strcpy(text.m_LogFont ,logfont);
	}
	else
		text.m_LogFont = NULL;
		
	return text;
}

Point	point_struct_init(LONG x,LONG y)
{
	Point point;

	if (x <0)
		x = 0;

	if (y <0)
		y = 0;

	point.x = x;
	point.y = y;

	return point;
}

RectItem rectitem_struct_init2(COLORREF dwFaceColor,COLORREF dwFrameColor,eFrame eFrameThick,eFace_Style eFaceStyle,Point TopLeft,Point BottomRight,int nFrameStyle,int nFrameContrans)
{
	RectItem rectitem;

	rectitem.m_pBottomRight = BottomRight;
	rectitem.m_ulFaceColor = dwFaceColor;
	rectitem.m_eFrameThick = eFrameThick;
	rectitem.m_ulFrameColor = dwFrameColor;
	rectitem.m_eFaceStyle = eFaceStyle;
	rectitem.m_pTopLeft = TopLeft;
	rectitem.m_eFrameStyle = nFrameStyle;
	rectitem.m_eFrameContrans = nFrameContrans;

	return rectitem;
}RectItem rectitem_struct_init(COLORREF dwFaceColor,COLORREF dwFrameColor,eFrame eFrameThick,	eFace_Style eFaceStyle,Point TopLeft,Point BottomRight)
{
	RectItem rectitem;

	rectitem.m_pBottomRight = BottomRight;
	rectitem.m_ulFaceColor = dwFaceColor;
	rectitem.m_eFrameThick = eFrameThick;
	rectitem.m_ulFrameColor = dwFrameColor;
	rectitem.m_eFaceStyle = eFaceStyle;
	rectitem.m_pTopLeft = TopLeft;

	return rectitem;
}
void page_free_resource(Page* pPage)
{
/*	void* widget_p;
	WidgetList wl;
	WidgetList pWidgetList , pWidgetNext;
	ButtonList pButtonList , pButtonNext;
	BorderList pBorderList , pBorderNext;
	ImageList pImageList, pImageNext;
	LabelList pLabelList,pLabelNext;
	PageList pPageList,pPageNext;
	LineList pLineList,pLineNext;

	wl = pPage->m_wlWidgetList;


	while (wl)
	{
		widget_p = wl->widget_pointer;
		switch(wl->widget_type)
		{
		case BUTTON_X:
			button_free_resource((Button*)widget_p);			
			break;
		case BORDER_X:
			border_free_resource((Border*)widget_p);
			break;
		case LINE_X:
			line_free_resource ((Line*)widget_p);
			break;
		case IMAGE_X:
			image_free_resource((Image*)widget_p);
			break;
		case LABEL_X:
			label_free_resource((Label*)widget_p);
			break;
		default:
			break;
		}
		wl = wl ->next ;
	}

	if(pPage->m_szPageName)
		free (pPage->m_szPageName);
	if(pPage->m_szGroupID)
		free (pPage->m_szGroupID);
	if(pPage->m_itImageItem.szImageName)
		free(pPage->m_itImageItem.szImageName);
	if(pPage->m_grPageID >0)
		GrDestroyWindow(pPage->m_grPageID);
	if(pPage->m_timer >0)
	{
		pPage->m_timer = 0;
	}


	pButtonList = pPage->m_blButtonList;
	if(pButtonList)
	{
		pButtonNext = pButtonList->next ;
		while(pButtonList)
		{
			free(pButtonList);
			pButtonList = pButtonNext;
			pButtonNext = pButtonList?pButtonList->next :NULL;
		}
	}

	pBorderList = pPage->m_blBorderList;
	if(pBorderList)
	{
		pBorderNext = pBorderList->next ;
		while(pBorderList)
		{
			free(pBorderList);
			pBorderList = pBorderNext;
			pBorderNext = pBorderList?pBorderList->next :NULL;
		}
	}

	pImageList = pPage->m_ilImageList;
	if(pImageList)
	{
		pImageNext = pImageList->next ;
		while(pImageList)
		{
			free(pImageList);
			pImageList = pImageNext;
			pImageNext = pImageList?pImageList->next :NULL;
		}
	}

	pLabelList = pPage->m_llLabelList;
	if(pLabelList)
	{
		pLabelNext = pLabelList->next ;
		while(pLabelList)
		{
			free(pLabelList);
			pLabelList = pLabelNext;
			pLabelNext = pLabelList?pLabelList->next :NULL;
		}
	}


	pLineList = pPage->m_llLineList;
	if(pLineList)
	{
		pLineNext = pLineList->next ;
		while(pLineList)
		{
			free(pLineList);
			pLineList = pLineNext;
			pLineNext = pLineList?pLineList->next :NULL;
		}
	}

	pWidgetList = pPage->m_wlWidgetList ;
	if(pWidgetList)
	{
		pWidgetNext = pWidgetList->next ;
		while(pWidgetList)
		{
			free(pWidgetList);
			pWidgetList = pWidgetNext;
			pWidgetNext = pWidgetList?pWidgetList->next :NULL;
		}
	}
	
	pPageList = pPage->m_plPageList ;
	if(pPageList)
	{
		pPageNext = pPageList->next;
		while(pPageList)
		{
			free(pPageList);
			pPageList = pPageNext;
			pPageNext = pPageList?pPageList->next:NULL;
		}
	}

	pPage->m_wlWidgetList = NULL;
	pPage->m_blButtonList = NULL;
	pPage->m_blBorderList = NULL;
	pPage->m_ilImageList = NULL;
	pPage->m_llLabelList = NULL;
	pPage->m_llLineList = NULL;
	pPage->m_plPageList = NULL;
*/
	return ;
	
}

 BOOL RegisterPageminiGUI (void)
{
	WNDCLASS MyClass;
	MyClass.spClassName = PAGE_MINIGUI;
    MyClass.dwStyle     = WS_NONE;
    MyClass.dwExStyle   = WS_EX_NONE;
    MyClass.hCursor     = GetSystemCursor (IDC_ARROW);
    MyClass.iBkColor    = COLOR_lightwhite;
    MyClass.WinProc     = Page_miniGUIProc;
	return RegisterWindowClass (&MyClass);
	
}
 void UnRegisterPageminiGUI (void)
{
	UnregisterWindowClass (PAGE_MINIGUI);

}
int Page_miniGUIProc (HWND hwnd, int message, WPARAM wParam, LPARAM lParam)
{
	switch (message) 
	{
	case MSG_PAINT:
		{
			Page* page;
			WinInfo* info = 0;
			info = (WinInfo*)SearchInfo(hwnd);
			if(!info)
				return 0;
			page = (Page*)info->obj;

			ExposurePage(page);
		}
		break;
	case MSG_LBUTTONDOWN:
		break;
	case MSG_LBUTTONUP:
		break;
	case MSG_TIMER:
		{
			WinInfo* info = 0;
			info = (WinInfo*)SearchInfo(hwnd );
			if(!info)
				return ;
			if(info->type == SUBPAGE_X)	
			{
				int len =0;
				int page_no = 0;
				Page* page_p;
				ButtonList buttonlist;
				Page* page ,*target_page,*OwnPage;
				page = (Page*)info->obj;
				target_page =(Page*) page->target_page;
				OwnPage = (Page*)page->m_pParentPage;
				page_p = g_list; 
				
				if(page->m_timer >0 )
				{
					KillTimer(page->m_grPageID,page->m_timer);
					page->m_timer = 0;
					page->target_page = 0;
				}
				Show_page(page,FALSE,FALSE,NULL);
				
				if(target_page != NULL)			
				{
					Show_page(target_page,TRUE,TRUE,NULL);
					for(page_no = 0;page_no < g_list_number;page_no++)
					{
						if ((g_list[page_no].m_bStyle == MAIN_PAGE) && (g_list[page_no].m_grPageID >0))
						{
							page_p = &g_list[page_no];
							if(page_p!=target_page)
							{
								Show_page(page_p,FALSE,TRUE,NULL);
							}
						}	
					}
				}
				else
				{
					Show_page(OwnPage,TRUE,TRUE,NULL);
				}
				
				if(target_page)
				{
					buttonlist = target_page->m_blButtonList;
					while(buttonlist)
					{
						Button* b = (Button*)buttonlist->button_p;
						if(b && b->m_nReturn)
							b->own_page = OwnPage;
						buttonlist = buttonlist->next;
					}
				}
			}
		}
		break;		
	default:
		break;
	}
	return DefaultControlProc (hwnd, message, wParam, lParam);	
}

⌨️ 快捷键说明

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