static BOOL CALLBACK Dlg_Warning(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_INITDIALOG: CenterDlg(hDlg, -80); //Центрирование окна диалога в главном окне SetWindowText(hDlg, (Lan+36)->msg); //Вывели новый заголовок OutNameDlg(hDlg, IDC_STATICTEXT1, LPSTR(lParam)); //Усечение имени файла SetDlgItemText(hDlg, IDC_STATICTEXT2, (Lan+65)->msg); SetDlgItemText(hDlg, IDC_REWRITE, (Lan+66)->msg); SetDlgItemText(hDlg, IDC_NEW, (Lan+67)->msg); SetDlgItemText(hDlg, IDCANCEL, (Lan+68)->msg); return TRUE; case WM_CTLCOLORSTATIC: if(GetDlgCtrlID(HWND(lParam)) == IDC_STATICTEXT2) { SetTextColor((HDC)wParam, RGB(255, 0, 0)); SetBkColor((HDC)wParam, FonLTGRAY); return (BOOL)FonBrush; } return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_REWRITE: case IDC_NEW: case IDCANCEL: EndDialog(hDlg, LOWORD(wParam)); //Вернули один из трех кодов return TRUE; } break; } return FALSE; }
UINT_PTR CALLBACK CenterDlgHook(HWND hDlg, UINT message, UINT wParam, LONG lParam) { if (message == WM_NOTIFY && ((LPOFNOTIFY)lParam)->hdr.code == CDN_INITDONE) CenterDlg(GetParent(hDlg)); return 0; }
static BOOL CALLBACK Dlg_FileYes(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { case WM_INITDIALOG: CenterDlg(hDlg, 0); //Центрирование окна диалога в главном окне SetWindowText(hDlg, (Lan+36)->msg); //Вывели новый заголовок OutNameDlg(hDlg, IDC_STATICTEXT1, LPSTR(lParam)); //Усечение имени файла SetDlgItemText(hDlg, IDC_STATICTEXT2, (Lan+65)->msg); SetDlgItemText(hDlg, IDC_STATICTEXT3, (Lan+156)->msg); SetDlgItemText(hDlg, IDC_STATICTEXT5, (Lan+47)->msg); SetDlgItemText(hDlg, IDC_STATICTEXT7, (Lan+157)->msg); SetDlgItemText(hDlg, IDC_STATICTEXT9, (Lan+47)->msg); SetDlgItemText(hDlg, IDOK, (Lan+164)->msg); SetDlgItemText(hDlg, IDC_REP_ALL, (Lan+158)->msg); SetDlgItemText(hDlg, IDC_REP_OLD, (Lan+159)->msg); SetDlgItemText(hDlg, IDC_SCIP, (Lan+160)->msg); SetDlgItemText(hDlg, IDC_SCIP_ALL, (Lan+161)->msg); SetDlgItemText(hDlg, IDC_RENAME, (Lan+163)->msg); SetDlgItemText(hDlg, IDC_REN_AUTO, (Lan+162)->msg); SetDlgItemText(hDlg, IDCANCEL, (Lan+68)->msg); ViewOldFilePar(hDlg); //Параметры старого файла ViewNewFilePar(hDlg); //Параметры нового файла return TRUE; case WM_CTLCOLORSTATIC: if(GetDlgCtrlID(HWND(lParam)) == IDC_STATICTEXT2) { SetTextColor((HDC)wParam, RGB(255, 0, 0)); SetBkColor((HDC)wParam, FonLTGRAY); return (BOOL)FonBrush; } return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_REP_ALL: prCopy = 1; break; //Нажата кнопка Заменять все case IDC_REP_OLD: prCopy = 2; break; //Нажата кнопка Заменять старые case IDC_SCIP_ALL: prCopy = 3; break; //Нажата кнопка Пропускать все case IDC_REN_AUTO: prCopy = 4; break; //Нажата кнопка Переименовывать автоматически case IDC_SCIP: //Нажата кнопка Пропустить case IDOK: //Нажата кнопка Заменить case IDC_RENAME: //Нажата кнопка Переименование case IDCANCEL: prCopy = 0; break; //Нажата кнопка Отменить режим } EndDialog(hDlg, LOWORD(wParam)); //Вернули один из кодов return TRUE; } return FALSE; }
MRESULT EXPENTRY PrnSetupDlgProc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2) { CHAR szPrinter[CCHMAXPATH]; /* Printer Name Holder */ PPRN pprn; /* Printer List Pointer */ register INT i, n; /* Loop Counters */ switch ( msg ) { case WM_INITDLG : /* Save the pointer to user style information */ /* within the dialog's reserved memory */ WinSetWindowPtr(hWnd, QWL_USER, (PVOID)(pprn = (PPRN)mp2)); /* Go through the queue list and add each of the */ /* queue entries to the list box from which the */ /* user can select a printer to use and/or */ /* configure */ for ( i = 0; i < pprn->cQueues; i++ ) { /* Insert item and store index */ WinSendDlgItemMsg(hWnd, LB_PRINTERS, LM_SETITEMHANDLE, MPFROMSHORT(n = (INT)LONGFROMMR(WinSendDlgItemMsg(hWnd, LB_PRINTERS, LM_INSERTITEM, MPFROMSHORT(LIT_SORTASCENDING), MPFROMP(strcat(strcat(strcpy(szPrinter, pprn->pquei[i].pszName), ": "), pprn->pquei[i].pszDriverName))))), MPFROMP(i)); /* If the default printer, save the name to set */ /* selection */ if ( i == pprn->iQueue ) WinSendDlgItemMsg(hWnd, LB_PRINTERS, LM_SELECTITEM, MPFROMSHORT(n), MPFROMSHORT(TRUE)); } CenterDlg(hWnd); break; /* Process list box selections */ case WM_CONTROL : switch ( SHORT2FROMMP(mp1) ) { /* Printer entry selected */ case LN_SELECT : WinEnableWindow(WinWindowFromID(hWnd, DID_SETUP), TRUE); WinEnableWindow(WinWindowFromID(hWnd, DID_OK), TRUE); break; } break; case WM_COMMAND : switch ( SHORT1FROMMP(mp1) ) { case DID_OK : /* Get selection from the list box */ pprn = (PPRN)WinQueryWindowPtr(hWnd, QWL_USER); /* Get printer handle */ pprn->iQueue = (INT)LONGFROMMR(WinSendDlgItemMsg(hWnd, LB_PRINTERS, LM_QUERYITEMHANDLE, MPFROMLONG(WinSendDlgItemMsg(hWnd, LB_PRINTERS, LM_QUERYSELECTION, 0L, 0L)), 0L)); WinDismissDlg(hWnd, TRUE); break; case DID_SETUP : /* Get printer handle */ PrnQueryJobProperties((PPRN)WinQueryWindowPtr(hWnd, QWL_USER), (INT)LONGFROMMR(WinSendDlgItemMsg(hWnd, LB_PRINTERS, LM_QUERYITEMHANDLE, MPFROMLONG(WinSendDlgItemMsg(hWnd, LB_PRINTERS, LM_QUERYSELECTION, 0L, 0L)), 0L))); break; case DID_CANCEL : WinDismissDlg(hWnd, FALSE); break; } break; /* Close received, exit dialog */ case WM_CLOSE : WinDismissDlg(hWnd, FALSE); break; default : return(WinDefDlgProc(hWnd, msg, mp1, mp2)); } /* Pass through unhandled messages */ return(0L); }
INT_PTR CALLBACK MainDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_COMMAND: { switch(LOWORD(wParam)) { case IDCANCEL: if(g_bSuccess) RunLaunch(); PostQuitMessage(0); break; case IDOK: HMENU hMenu = ::GetSystemMenu(hwndDlg, FALSE); ::EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED); ::EnableWindow(::GetDlgItem(hwndDlg, IDOK), FALSE); ::EnableWindow(::GetDlgItem(hwndDlg, IDCANCEL), FALSE); if(g_hBeginHandle) SetEvent(g_hBeginHandle); break; } } break; case WM_MSG_ENTERFAULT: _enterFaultMode(); break; case WM_MSG_SETPROGRESS: { UINT nPosOld = (UINT)::SendDlgItemMessage(hwndDlg, IDC_PROGRESS_MAIN, PBM_GETPOS, 0, 0); UINT nPosNow = (UINT)wParam; if(nPosNow != nPosOld) { ::SendDlgItemMessage(hwndDlg, IDC_PROGRESS_MAIN, PBM_SETPOS, nPosNow, 0); } } break; case WM_MSG_SUCCESS: { HMENU hMenu = ::GetSystemMenu(hwndDlg, FALSE); ::EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND|MF_ENABLED); ::EnableWindow(::GetDlgItem(hwndDlg, IDOK), FALSE); ::EnableWindow(::GetDlgItem(hwndDlg, IDCANCEL), TRUE); ::SetDlgItemText(hwndDlg, IDCANCEL, "确定"); ::CloseHandle(g_hBeginHandle); g_hBeginHandle=0; ::SendDlgItemMessage(hwndDlg, IDC_PROGRESS_MAIN, PBM_SETPOS, 100, 0); char szTemp[MAX_PATH] = {0}; _snprintf(szTemp, MAX_PATH, "《天龙八部》成功更新到%s!", g_szVersionTo); MessageBox(g_hMainWnd, szTemp, "《天龙八部》", MB_OK|MB_ICONINFORMATION); g_bSuccess = TRUE; } break; case WM_INITDIALOG: { g_hMainWnd = hwndDlg; //Center main window CenterDlg(hwndDlg); //设置图标 HICON hMainIcon = LoadIcon(g_hInst, (LPCTSTR)IDD_DIALOG_MAIN); ::SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hMainIcon); ::SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)hMainIcon); //set status ::SetDlgItemText(hwndDlg, IDC_STATIC_STATUS, "读取版本信息..."); ::SendDlgItemMessage(hwndDlg, IDC_PROGRESS_MAIN, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); g_hBeginHandle = ::CreateEvent(0, TRUE, FALSE, 0); ::ResetEvent(g_hBeginHandle); //create work thread UINT nThreadID; g_hWorkThread = (HANDLE)::_beginthreadex(NULL, 0, _WorkThread, 0, CREATE_SUSPENDED|THREAD_QUERY_INFORMATION, &nThreadID ); if(g_hWorkThread == NULL) { ::SetDlgItemText(hwndDlg, IDC_STATIC_STATUS, "创建线程失败"); _enterFaultMode(); break; } //go! ::ResumeThread(g_hWorkThread); //not care ::CloseHandle(g_hWorkThread); g_hWorkThread=0; } break; case WM_CTLCOLORSTATIC: { HWND hStatic = (HWND)lParam; if(g_bFaultMode && hStatic == GetDlgItem(hwndDlg, IDC_STATIC_STATUS)) { HBRUSH hBrush = (HBRUSH)(INT_PTR)::DefWindowProc(hwndDlg, WM_CTLCOLORSTATIC, wParam, lParam); SetTextColor((HDC)wParam, RGB(255, 0, 0)); return (BOOL)(INT)(INT_PTR)hBrush; } else return FALSE; } break; case WM_CLOSE: PostQuitMessage(0); break; default: break; } return FALSE; }