//Copyright (c) 1998 - 2001 Microsoft Corporation #include "precomp.h" #include "commdlg.h" #include "fonts.h" void InitializeFailedCodeList(HWND hDialog) { HWND hWndListView = GetDlgItem(hDialog, IDC_FAILED_CODES ); //Setup columns in list view LV_COLUMN lvColumn; TCHAR lpszHeader[128]; lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvColumn.fmt = LVCFMT_LEFT; lvColumn.cx = 225; LoadString(GetInstanceHandle(), IDS_RETAIL_HEADERSPK, lpszHeader, sizeof(lpszHeader)/sizeof(TCHAR)); lvColumn.pszText = lpszHeader; ListView_InsertColumn(hWndListView, 0, &lvColumn); lvColumn.cx = 80; LoadString(GetInstanceHandle(), IDS_RETAIL_HEADERSTATUS, lpszHeader, sizeof(lpszHeader)/sizeof(TCHAR)); lvColumn.pszText = lpszHeader; ListView_InsertColumn(hWndListView, 1, &lvColumn); lvColumn.cx = 160; LoadString(GetInstanceHandle(), IDS_PRODUCT_TYPE, lpszHeader, sizeof(lpszHeader)/sizeof(TCHAR)); lvColumn.pszText = lpszHeader; ListView_InsertColumn(hWndListView, 2, &lvColumn); // Now that this is done, pre-populate the List Control from the Internal // List, if any ListView_SetItemCount(hWndListView, MAX_RETAILSPKS_IN_BATCH); } void ShowErrorWindow(HWND hDialog, BOOL bShow) { HWND hWndList = GetDlgItem(hDialog, IDC_FAILED_CODES); HWND hWndListLabel = GetDlgItem(hDialog, IDC_FAILED_CODES_LABEL); ShowWindow(hWndList, bShow); ShowWindow(hWndListLabel, bShow); ShowWindow(GetDlgItem(hDialog, IDC_CODE_ERROR_SUGGESTION), bShow ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(hDialog, IDC_KEY_PACK_SUCCESS), bShow ? SW_HIDE : SW_SHOW); PropSheet_SetWizButtons(GetParent(hDialog), PSWIZB_FINISH); } void PopulateSuccessCodeList(HWND hDialog) { HWND hWndList = GetDlgItem(hDialog, IDC_SUCCEEDED_CODES); SendMessage(hWndList, LB_RESETCONTENT, 0, 0); LoadFinishedFromList(hWndList); } void PopulateErrorCodeList(HWND hDialog) { HWND hWndList = GetDlgItem(hDialog, IDC_FAILED_CODES); ListView_DeleteAllItems(hWndList); LoadUnfinishedFromList(hWndList); } void ModifyErrorSpecificAppearance(HWND hDialog, DWORD dwRetCode) { TCHAR szBuf[LR_MAX_MSG_TEXT]; UINT nMessageID = ((dwRetCode == ERROR_SUCCESS) ? IDS_FINALSUCCESSMESSAGE2 : IDS_FINALFAILMESSAGE); LoadString(GetInstanceHandle(), nMessageID, szBuf, LR_MAX_MSG_TEXT); SetDlgItemText(hDialog, IDC_MESSAGE, szBuf); //We'll always do this because even if the return code //indicated a failure, some codes may have succeeded PopulateSuccessCodeList(hDialog); ShowErrorWindow(hDialog, (dwRetCode != ERROR_SUCCESS)); if (dwRetCode != ERROR_SUCCESS) { ShowErrorWindow(hDialog, TRUE); PopulateErrorCodeList(hDialog); PropSheet_SetWizButtons(GetParent(hDialog), PSWIZB_BACK | PSWIZB_FINISH); } else { ShowErrorWindow(hDialog, FALSE); dwRetCode = IDS_MSG_LKP_PROCESSED; SetReFresh(1); SetLRState(LRSTATE_NEUTRAL); } } BOOL HandleNotify(HWND hDialog, LPARAM lParam) { DWORD dwNextPage = 0; LPNMHDR pnmh = (LPNMHDR)lParam; switch(pnmh->code) { case PSN_SETACTIVE: { DWORD dwRetCode = 0; TCHAR szMsg[LR_MAX_MSG_TEXT]; dwRetCode = LRGetLastRetCode(); // If everything successful, display the message depending on the Mode ModifyErrorSpecificAppearance(hDialog, dwRetCode); break; } case PSN_WIZBACK: { dwNextPage = LRPop(); LRW_SETWINDOWLONG(hDialog, LRW_DWL_MSGRESULT, dwNextPage); return TRUE; break; } default: { return FALSE; break; } } return TRUE; } LRW_DLG_INT CALLBACK Progress2DlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) { BOOL bStatus = TRUE; PageInfo *pi = (PageInfo *)LRW_GETWINDOWLONG( hwnd, LRW_GWL_USERDATA ); switch (uMsg) { case WM_INITDIALOG: { pi = (PageInfo *)((LPPROPSHEETPAGE)lParam)->lParam; LRW_SETWINDOWLONG(hwnd, LRW_GWL_USERDATA, (LRW_LONG_PTR)pi); //Set the Font for the Title Fields SetControlFont(pi->hBigBoldFont, hwnd, IDC_BIGBOLDTITLE); InitializeFailedCodeList(hwnd); break; } case WM_DESTROY: { LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL ); break; } case WM_NOTIFY: { bStatus = HandleNotify(hwnd, lParam); break; } default: { bStatus = FALSE; break; } } return bStatus; }