www.pudn.com > GOS.rar > MainFrame.cpp


// CMainFrame.cpp: implementation of the CMainFrame class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "MainFrame.h" 
#define ITEM_W 85 
#define ITEM_H 90 
 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CMainFrame::CMainFrame() 
{ 
	m_nBackColor=RGB(6,105,178)|EdgeRGB(255,192,0); 
	m_nStyle|=WS_MAXIMIZE; 
	//m_nStyle &= ~WS_CAPTION; 
} 
 
CMainFrame::~CMainFrame() 
{ 
 
} 
 
//消息处理函数 
void CMainFrame::WndProc(int nMessage, int wParam, int lParam) 
{ 
	GWnd* pWnd; 
	switch(nMessage) 
	{ 
	case WM_PAINT: 
		if(wParam & ~ODA_CLIENT)OnNcPaint(); 
		if(wParam & ODA_CLIENT){OnPaint();DrawControls();} 
		break; 
	case WM_COMMAND: 
		pWnd=(GWnd*)wParam; 
		if(pWnd==&m_btnOK)OnOK(); 
		else if(pWnd==&m_btnCancel)OnCancel(); 
		else OnRadio(pWnd); 
		break; 
	case WM_CREATE: 
		OnCreate(); 
		break; 
	case WM_CLOSE: 
		if(wParam)OnQueryClose(); 
		break; 
	case WM_TIMER: 
		OnTimer(lParam); 
		break; 
	case WM_LBUTTONDOWN: 
		GDialog::WndProc(nMessage, wParam,lParam); 
		if(!(m_nState & ODS_GRAYED) && PtInRect(wParam,lParam,m_Rect))OnButton(TRUE,wParam,lParam); 
		break; 
	case WM_LBUTTONUP: 
		if(PtInRect(wParam,lParam,m_Rect))OnButton(FALSE,wParam,lParam); 
		else GDialog::WndProc(nMessage, wParam,lParam); 
		break; 
	default: 
		GDialog::WndProc(nMessage, wParam,lParam); 
		break; 
	} 
} 
 
void CMainFrame::OnCreate() 
{ 
	 
	m_nTextTop=-20; 
	GDialog::OnCreate(); 
	m_strText="GSPDA 2005"; 
 
	int nWidth=m_Rect.right-m_Rect.left; 
	int nHeight=m_Rect.bottom-m_Rect.top; 
/*	KString str; 
	for(int i=0;i<5;i++) 
	{ 
		str.Format("Sng%d",i); 
		AddControl(&m_btnRadio[i],str,BS_RADIOBUTTON|BS_PUSHLIKE); 
		m_btnRadio[i].MoveWindow(nWidth-(i<3?80:100),10+i*30,75,25); 
	} 
	m_btnRadio[0].m_nStyle|=WS_GROUP; 
	m_btnRadio[3].m_nStyle|=WS_GROUP;*/ 
	 
	//AddControl(&m_btnOK,"启动",0); 
	//m_btnOK.MoveWindow(nWidth-160,nHeight-40,70,35); 
	/*AddControl(&m_btnCancel,"退出",0); 
	m_btnCancel.MoveWindow(nWidth-80,nHeight-40,70,35); 
	m_rectClick.left=-1;*/ 
	 
} 
 
void CMainFrame::OnPaint() 
{ 
	//GDialog::OnPaint(); 
{ 
	int y,dy,y1=m_Rect.top,y2=m_Rect.bottom,h=y2-y1+1; 
	int c,r,g,b; 
	for(y=y1;y<=y2;y++) 
	{ 
		dy=y2-y; 
		r=(255-6)*dy/h+6; 
		g=(255-105)*dy/h+105; 
		b=(255-178)*dy/h+178; 
		m_nForeColor=RGB(r,g,b); 
		Line(m_Rect.left,y,m_Rect.right,y); 
	} 
	m_nForeColor=RGB(0,0,0); 
} 
	 
	RECT r; 
 
 
	r=MakeRect(m_Rect.left,m_Rect.top-m_nTextTop,ITEM_W,ITEM_H-5); 
	DrawItem(&acBmpMyComp,"Camera",r); 
	 
	r.left+=ITEM_W;r.right+=ITEM_W; 
	DrawItem(&acBmpUser,"User",r); 
	 
	r.left+=ITEM_W;r.right+=ITEM_W; 
	DrawItem(&acBmpPower,"GSM/3G",r); 
 
	r=MakeRect(m_Rect.left,r.bottom+5,ITEM_W,ITEM_W-5); 
	DrawItem(&acBmpChart,"Vedio",r); 
	 
	r.left+=ITEM_W;r.right+=ITEM_W; 
	DrawItem(&acBmpHelp,"Audio",r); 
} 
 
void CMainFrame::OnQueryClose() 
{ 
	if(m_nDlgResult==-1) 
	{ 
		int nResult=MessageBox("Close GSPDA?",NULL,MB_YESNO|MB_ICONQUESTION); 
		if(nResult==IDNO)m_nDlgResult=0; 
	} 
} 
 
 
void CMainFrame::DrawItem(const BITMAP *bm, LPCTSTR szText,RECT rect) 
{ 
	RECT r; 
	int w0=(rect.left+rect.right+1)/2; 
	 
	r=MakeRect(w0-bm->bmWidth/2,rect.top+m_pFont->nHeight/2,bm->bmWidth,bm->bmHeight); 
	DrawBitmap(bm,r); 
	r.bottom=rect.bottom-m_pFont->nHeight; 
	r.left=rect.left;r.right=rect.right; 
	DrawText(szText,r,DT_CENTER|DT_BOTTOM); 
} 
 
void CMainFrame::OnOK() 
{ 
	/*GIME dlg; 
	dlg.m_btn[0].m_strText=m_btnOK.m_strText; 
	dlg.DoModal(); 
	m_btnOK.m_strText=dlg.m_btn[0].m_strText;*/ 
 
	GIME dlg; 
	KString str; 
	KFile file; 
	file.Open("fdj.ini",KFile::modeCreate); 
	file.ReadString(str); 
	dlg.m_btn[0].m_strText=str; 
	dlg.DoModal(); 
	str=dlg.m_btn[0].m_strText; 
	file.SeekToBegin(); 
	file.WriteString(str); 
} 
 
void CMainFrame::OnCancel() 
{ 
	m_nDlgResult=IDCANCEL; 
} 
 
void CMainFrame::OnRadio(GWnd *pWnd) 
{ 
	if(pWnd==&m_btnRadio[0]) 
	{ 
		for(int i=0;i<5;i++) 
		{ 
			m_btnRadio[i].m_nStyle |=BS_PUSHLIKE; 
			m_btnRadio[i].PostMessage(WM_PAINT,-1,-1); 
		} 
	} 
	else if(pWnd==&m_btnRadio[1]) 
	{ 
		for(int i=0;i<5;i++) 
		{ 
			m_btnRadio[i].m_nStyle &= ~BS_PUSHLIKE; 
			m_btnRadio[i].m_nStyle &= ~BS_LEFTTEXT; 
			m_btnRadio[i].PostMessage(WM_PAINT,-1,-1); 
		} 
	} 
	else if(pWnd==&m_btnRadio[2]) 
	{ 
		for(int i=0;i<5;i++) 
		{ 
			m_btnRadio[i].m_nStyle &= ~BS_PUSHLIKE; 
			m_btnRadio[i].m_nStyle |= BS_LEFTTEXT; 
			m_btnRadio[i].PostMessage(WM_PAINT,-1,-1); 
		} 
	} 
} 
 
void CMainFrame::OnTimer(int nTick) 
{ 
	m_strText.Format("Tick:%d",nTick); 
	PostMessage(WM_PAINT,ODA_FOCUS,-1); 
} 
 
void CMainFrame::OnButton(BOOL bDown, int x, int y) 
{ 
	x-=m_Rect.left;y-=m_Rect.top; 
	int nColor=m_nForeColor; 
	if(bDown==1) 
	{ 
		if(m_Rect.left!=-1) 
		{ 
			OnButton(-1,m_rectClick.left,m_rectClick.top); 
		} 
		m_rectClick.left=m_Rect.left+(x/ITEM_W)*ITEM_W; 
		m_rectClick.right=m_rectClick.left+ITEM_W; 
		m_rectClick.top=m_Rect.top-m_nTextTop-(y/ITEM_H)*ITEM_H; 
		m_rectClick.bottom=m_rectClick.top+ITEM_H-5; 
		m_nForeColor=RGB(255,255,0)|PS_DOT1; 
		Rectangle(m_rectClick); 
	} 
	else 
	{ 
		OnPaint();DrawControls(); 
		//m_nForeColor=m_nBackColor & 0xffffff; 
		//Rectangle(m_rectClick); 
		if(PtInRect(x,y,m_rectClick) && bDown==0) 
		{ 
			x/=ITEM_W;y/=ITEM_H; 
			if(x==0 && y==0) 
			{ 
				OnSystem(); 
			} 
			if(x==0 && y==1) 
			{ 
				OnChart(); 
			} 
		} 
		m_rectClick.left=-1; 
	} 
	m_nForeColor=nColor; 
} 
 
void CMainFrame::OnSystem() 
{ 
	CGenIO dlg; 
	dlg.DoModal(); 
} 
 
void CMainFrame::OnChart() 
{ 
	CVibration dlg; 
	dlg.DoModal(); 
}