Exemple #1
0
static int DialogProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
	switch(message) {
	case MSG_INITDIALOG:
		{
			tipLabelData_t* tipLabelData;

			tipLabelData = (tipLabelData_t*)lParam;
			if(!tipLabelData) {
				db_error("invalid tipLabelData\n");
				return -1;
			}
			SetWindowAdditionalData(hDlg, (DWORD)tipLabelData);

			if(tipLabelData->pLogFont) {
				SetWindowFont(hDlg, tipLabelData->pLogFont);
			}
			if(tipLabelData->full_screen == 1){
				SetWindowBkColor(hDlg,FULL_BLACK);			
			}else{
				SetWindowBkColor(hDlg, tipLabelData->bgc_widget);			
			}
			if(tipLabelData->full_screen == 1){
				SetWindowElementAttr(GetDlgItem(hDlg, IDC_TITLE), WE_FGC_WINDOW, PIXEL2DWORD(HDC_SCREEN, FULL_BLACK) );
				SetWindowElementAttr(GetDlgItem(hDlg, IDC_TEXT), WE_FGC_WINDOW,  PIXEL2DWORD(HDC_SCREEN, FULL_BLACK) );
			}else{
				SetWindowElementAttr(GetDlgItem(hDlg, IDC_TITLE), WE_FGC_WINDOW, PIXEL2DWORD(HDC_SCREEN, tipLabelData->fgc_widget) );
				SetWindowElementAttr(GetDlgItem(hDlg, IDC_TEXT), WE_FGC_WINDOW,  PIXEL2DWORD(HDC_SCREEN, tipLabelData->fgc_widget) );
			}		
			SetTimerEx(hDlg, TIMEOUT_TIMER, tipLabelData->timeoutMs / 10, timerCallback);
		}
		break;
	case MSG_PAINT:
		{
			RECT rect;
			HDC hdc; 
			tipLabelData_t* tipLabelData;

			hdc = BeginPaint(hDlg);

			tipLabelData = (tipLabelData_t*)GetWindowAdditionalData(hDlg);
			GetClientRect(GetDlgItem(hDlg, IDC_TITLE), &rect);
			if(tipLabelData->full_screen == 1){
				SetPenColor(hdc, FULL_BLACK);
			}else{
				SetPenColor(hdc, tipLabelData->linec_title );	
			}
			Line2(hdc, 0, RECTH(rect) + 2, RECTW(rect), RECTH(rect) + 2);
			#if 0
			char *filepath=(char *)"/etc/res/others/wifi.png";
			LoadBitmapFromFile(HDC_SCREEN, &tipLabelData->bitImage, filepath);
			FillBoxWithBitmap(hdc,0,0,320,240,&tipLabelData->bitImage);		
			#endif
			//ShowWindow(hDlg,SW_SHOWNORMAL);
			EndPaint(hDlg, hdc);
		}
		break;
	case MSG_FONTCHANGED:
		{
			PLOGFONT pLogFont;		
			pLogFont = GetWindowFont(hDlg);
			if(pLogFont) {
				SetWindowFont(GetDlgItem(hDlg, IDC_TITLE), pLogFont);
				SetWindowFont(GetDlgItem(hDlg, IDC_TEXT), pLogFont);
			}
		}
		break;
	case MSG_KEYUP:
		{	
			switch(wParam) {
			case CDR_KEY_RIGHT:
				EndDialog(hDlg, 0);
				break;
			case CDR_KEY_LEFT:
			case CDR_KEY_OK:
			case CDR_KEY_MODE:
				break;
			}			
		}
		break;
	case MSG_KEYDOWN:
		{	
		
			//EndDialog(hDlg, 0);
		}
		break;
	case MSG_CLOSE_TIP_LABEL:	
		tipLabelData_t* tipLabelData;

		tipLabelData = (tipLabelData_t*)GetWindowAdditionalData(hDlg);
		db_info("MSG_CLOSE_LOWPOWER_DIALOG\n");
		if(IsTimerInstalled(hDlg, ONE_SHOT_TIMER) == TRUE) {
			KillTimer(hDlg, ONE_SHOT_TIMER);
		}
		if(IsTimerInstalled(hDlg, TIMEOUT_TIMER) == TRUE) {
			KillTimer(hDlg, TIMEOUT_TIMER);
		}
		if (tipLabelData->bitImage.bmBits != NULL){
			UnloadBitmap(&tipLabelData->bitImage);
		}
		EndDialog(hDlg, 0);
		break;
	}
	return DefaultDialogProc(hDlg, message, wParam, lParam);
}
Exemple #2
0
static int msgBoxProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam )
{
	MBPrivData* privData;
	switch(message) {
	case MSG_FONTCHANGED:
		{
			HWND hChild;	
			hChild = GetNextChild(hDlg, 0);
			while( hChild && (hChild != HWND_INVALID) )
			{
				SetWindowFont(hChild, GetWindowFont(hDlg));
				hChild = GetNextChild(hDlg, hChild);
			}
		}
		break;
	case MSG_INITDIALOG:
		{
			unsigned int dwStyle;
			MessageBox_t* info = (MessageBox_t *)lParam;
			if(info == NULL) {
				db_error("invalid info\n");	
				return -1;
			}
			dwStyle = info->dwStyle & MB_TYPEMASK;

			privData = (MBPrivData*)malloc(sizeof(MBPrivData));
			privData->dwStyle = dwStyle;
			if(privData->dwStyle & MB_OKCANCEL){
				privData->IDCSelected = IDC_BUTTON_START + 1;
				privData->buttonNRs = 2;
			} else {
				privData->IDCSelected = IDC_BUTTON_START;
				privData->buttonNRs = 1;
			}
			db_msg("buttonNRs is %d\n", privData->buttonNRs);

			privData->flag_end_key = info->flag_end_key;
			privData->linecTitle = info->linecTitle;
			privData->linecItem = info->linecItem;
			privData->confirmCallback = info->confirmCallback;
			privData->confirmData = info->confirmData;
			privData->msg4ConfirmCallback = info->msg4ConfirmCallback;
			SetWindowAdditionalData(hDlg, (DWORD)privData);

			SetWindowFont(hDlg, info->pLogFont);

			/******* the hilight is the global attibute *******/
			gp_hilite_bgc = GetWindowElementPixel(hDlg, WE_BGC_HIGHLIGHT_ITEM);
			gp_hilite_fgc = GetWindowElementPixel(hDlg, WE_FGC_HIGHLIGHT_ITEM);

			gp_normal_bgc = info->bgcWidget;
			gp_normal_fgc = info->fgcWidget;
			SetWindowBkColor(hDlg, gp_normal_bgc);

			SetWindowElementAttr(GetDlgItem(hDlg, IDC_TITLE), WE_FGC_WINDOW, Pixel2DWORD(HDC_SCREEN, gp_normal_fgc));
			SetWindowElementAttr(GetDlgItem(hDlg, IDC_TEXT), WE_FGC_WINDOW, Pixel2DWORD(HDC_SCREEN, gp_normal_fgc));
			SetWindowText(GetDlgItem(hDlg, IDC_TITLE), info->title);
			SetWindowText(GetDlgItem(hDlg, IDC_TEXT), info->text);

			for(unsigned int i = 0; i < privData->buttonNRs; i++) {
				SetWindowElementAttr( GetDlgItem(hDlg, IDC_BUTTON_START + i), WE_FGC_WINDOW, Pixel2DWORD(HDC_SCREEN, gp_normal_fgc));
				SetWindowAdditionalData2( GetDlgItem(hDlg, IDC_BUTTON_START + i), (DWORD)info->buttonStr[i]);
			}
		}
		break;
	case MSG_KEYUP:
		{
			privData = (MBPrivData *)GetWindowAdditionalData(hDlg);
			switch(wParam) {
			case CDR_KEY_OK:
				if(privData->flag_end_key == 1) {
					db_msg("hDlg is %x\n", hDlg);
					if( (privData->IDCSelected == IDC_BUTTON_START) && privData->confirmCallback) {
						if(privData->msg4ConfirmCallback) {
							SetWindowText(GetDlgItem(hDlg, IDC_TEXT), privData->msg4ConfirmCallback);
							SetTimerEx(hDlg, TIMER_CONFIRM_CALLBACK, 5, timerCallback);
							SetNullFocus(hDlg);
						} else {
							db_msg("confirmCallback\n");
							(*privData->confirmCallback)(hDlg , privData->confirmData);
							db_msg("confirmCallback\n");
						}
					} else {
						EndDialog(hDlg, privData->IDCSelected);
					}
				}
				break;
			case CDR_KEY_MENU:
			case CDR_KEY_MODE:
				if(privData->flag_end_key == 1)
					EndDialog(hDlg, IDC_BUTTON_CANCEL);
				break;
			case CDR_KEY_LEFT:
				privData->IDCSelected--;
				if(privData->IDCSelected < IDC_BUTTON_START) {
					privData->IDCSelected = IDC_BUTTON_START + privData->buttonNRs - 1;
				}
				InvalidateRect(hDlg, NULL, TRUE);	
				break;
			case CDR_KEY_RIGHT:
				privData->IDCSelected++;
				if(privData->IDCSelected > (IDC_BUTTON_START + privData->buttonNRs - 1) ) {
					privData->IDCSelected = IDC_BUTTON_START;
				}
				InvalidateRect(hDlg, NULL, TRUE);	
				break;
			default:
				break;
			}
		}
		break;
	case MSG_KEYDOWN:
		{
			RECT rect;
			GetClientRect(hDlg, &rect);
			privData = (MBPrivData *)GetWindowAdditionalData(hDlg);
			switch(wParam) {
			case CDR_KEY_OK:
				if(privData->flag_end_key == 0) {
					db_msg("hDlg is %x\n", hDlg);
					if( (privData->IDCSelected == IDC_BUTTON_START) && privData->confirmCallback ) {
						if(privData->msg4ConfirmCallback) {
							SetWindowText(GetDlgItem(hDlg, IDC_TEXT), privData->msg4ConfirmCallback);
							SetTimerEx(hDlg, TIMER_CONFIRM_CALLBACK, 5, timerCallback);
							SetNullFocus(hDlg);
						} else {
							db_msg("confirmCallback\n");
							(*privData->confirmCallback)(hDlg , privData->confirmData);
							db_msg("confirmCallback\n");
						}
					} else {
						EndDialog(hDlg, privData->IDCSelected);	
					}
				}
				break;
			case CDR_KEY_MENU:
			case CDR_KEY_MODE:
				if(privData->flag_end_key == 0) {
					EndDialog(hDlg, 0);	
				}
				break;

			default:
				break;
			}
		}
		break;
	case MSG_PAINT:
		{
			RECT rect, rect1;
			HDC hdc = BeginPaint(hDlg);
			privData = (MBPrivData *)GetWindowAdditionalData(hDlg);

			GetClientRect(GetDlgItem(hDlg, IDC_TITLE), &rect);
			GetClientRect(hDlg, &rect1);
			/**** draw the line below the title *******/
			SetPenColor(hdc, privData->linecTitle );
			Line2(hdc, 1, RECTH(rect) + 1, RECTW(rect) - 2, RECTH(rect) + 1);

			/**** draw the line above the button *******/
			SetPenColor(hdc, privData->linecItem );
			Line2(hdc, 1, RECTH(rect1) * 3 / 4 - 2, RECTW(rect1) - 2, RECTH(rect1) * 3 / 4 - 2);

			unsigned int i;
			for(i = 0; i < privData->buttonNRs; i++) {
				if(IDC_BUTTON_START + i == privData->IDCSelected) {
					drawButton(hDlg, IDC_BUTTON_START + i, BUTTON_SELECTED);
				} else {
					drawButton(hDlg, IDC_BUTTON_START + i, BUTTON_UNSELECTED);
				}
			}
			EndPaint(hDlg, hdc);
		}
		break;
	case MSG_DESTROY: {
		db_msg("msg destroy");
		privData = (MBPrivData *)GetWindowAdditionalData(hDlg);
		if(privData)
			free(privData);
		}
		break;
	case MSG_CLOSE_TIP_LABEL:
		EndDialog(hDlg, 0);
		break;
	default:
		break;
	}

	return DefaultDialogProc (hDlg, message, wParam, lParam);
}