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); }
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); }