void Server_Salvage_OnAdvanced (HWND hDlg) { HWND hGroup = GetDlgItem (hDlg, IDC_ADVANCED_GROUP); RECT rWindow; RECT rClient; RECT rGroup; GetWindowRect (hDlg, &rWindow); GetClientRect (hDlg, &rClient); GetRectInParent (hGroup, &rGroup); if (!IsWindowEnabled (GetDlgItem (hDlg, IDC_SALVAGE_TEMPDIR))) { EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_TEMPDIR), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_SIMUL), TRUE); Server_Salvage_OnSimultaneous (hDlg); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_READONLY), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_BLOCK), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_FORCE), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_FIXDIRS), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_LOG_FILE), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_LOG_INODES), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_LOG_ROOT), TRUE); SetWindowPos (hDlg, NULL, 0, 0, cxRECT(rWindow), cyRECT(rWindow) + cyRECT(rGroup) + 14, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); TCHAR szText[ cchRESOURCE ]; GetString (szText, IDS_ADVANCEDIN_BUTTON); SetDlgItemText (hDlg, IDC_ADVANCED, szText); } else // open now? { SetWindowPos (hDlg, NULL, 0, 0, cxRECT(rWindow), cyRECT(rWindow) - cyRECT(rGroup) - 14, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); TCHAR szText[ cchRESOURCE ]; GetString (szText, IDS_ADVANCEDOUT_BUTTON); SetDlgItemText (hDlg, IDC_ADVANCED, szText); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_TEMPDIR), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_SIMUL), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_NUM), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_READONLY), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_BLOCK), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_FORCE), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_FIXDIRS), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_LOG_FILE), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_LOG_INODES), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SALVAGE_LOG_ROOT), FALSE); } }
void WIZARD::Refresh (DWORD dwRefFlags) { if (dwRefFlags & REFRESH_LEFT_PANE) { HWND hLHS; if ((hLHS = GetDlgItem (m_hWnd, m_idcLeftPane)) != NULL) { RECT rr; GetClientRect (hLHS, &rr); InvalidateRect (hLHS, &rr, TRUE); UpdateWindow (hLHS); } } if (dwRefFlags & REFRESH_RIGHT_PANE) { HWND hRHS; if ((hRHS = GetDlgItem (m_hWnd, m_idcRightPane)) != NULL) { HWND hOld = GetRightHandWindow(); LPWIZARD_STATE pState; if ((pState = FindState (m_stCurrent)) != NULL) { int stCurrent = m_stCurrent; HWND hNew; if ((hNew = ModelessDialogParam (pState->idd, m_hWnd, pState->dlgproc, pState->lp)) != NULL) { if (stCurrent != m_stCurrent) DestroyWindow (hNew); else { RECT rRHS; GetRectInParent (hRHS, &rRHS); SetWindowPos (hNew, NULL, rRHS.left, rRHS.top, cxRECT(rRHS), cyRECT(rRHS), SWP_NOZORDER | SWP_NOACTIVATE); SetWindowLong (hNew, GWL_ID, pState->idd); ShowWindow (hNew, SW_SHOW); ShowWindow (hRHS, SW_HIDE); } } } if (hOld != NULL) DestroyWindow (hOld); } } }
void Server_Open (LPIDENT lpiServer, LPRECT prWindow) { HWND hServer; if ((hServer = PropCache_Search (pcSERVER, lpiServer)) != NULL) { SetFocus (hServer); } else { // First off, if this server isn't being monitored, we have // to start monitoring it or we can't open a window (nothing to // show otherwise). // LPSERVER_PREF lpsp; if ((lpsp = (LPSERVER_PREF)lpiServer->GetUserParam()) != NULL) { BOOL fCanShowWindow = (gr.fOpenMonitors || lpsp->fIsMonitored); if (gr.fOpenMonitors && !lpsp->fIsMonitored) { StartTask (taskSVR_MONITOR_ONOFF, NULL, lpiServer); } if (fCanShowWindow) { hServer = ModelessDialogParam (IDD_SERVER, NULL, (DLGPROC)Server_DlgProc, (LPARAM)lpiServer); Server_SelectServer (hServer, lpiServer); if (prWindow->right != 0) { SetWindowPos (hServer, NULL, prWindow->left, prWindow->top, cxRECT(*prWindow), cyRECT(*prWindow), SWP_NOZORDER | SWP_NOACTIVATE); } ShowWindow (hServer, SW_NORMAL); } } } }
void Elapsed_OnCreate (ElapsedInfo *pei) { Subclass_AddHook (GetParent(pei->hElapsed), ElapsedDlgProc); TCHAR szTimeSep[ cchRESOURCE ]; if (!GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STIME, szTimeSep, cchRESOURCE)) lstrcpy (szTimeSep, TEXT(":")); RECT rElapsed; GetClientRect (pei->hElapsed, &rElapsed); POINT ptElapsed = {0,0}; ClientToScreen (pei->hElapsed, &ptElapsed); ScreenToClient (GetParent (pei->hElapsed), &ptElapsed); SIZE s88; // size of widest likely double-digit number SIZE s888; // maximum width to which we'll go for second- and minute- fields SIZE sTimeSep; // size of ":" HDC hdc = GetDC (GetParent (pei->hElapsed)); GetTextExtentPoint (hdc, TEXT("88"), lstrlen(TEXT("88")), &s88); GetTextExtentPoint (hdc, szTimeSep, lstrlen(szTimeSep), &sTimeSep); ReleaseDC (GetParent (pei->hElapsed), hdc); s888 = s88; s888.cx = (LONG)( (double)(s88.cx) * 1.2 ); LONG cxNumbers = cxRECT(rElapsed) - (2 * sTimeSep.cx) - GetSystemMetrics (SM_CXVSCROLL); LONG cxSeconds = min( max( cxNumbers/3, s88.cx ), s888.cx ); LONG cxMinutes = min( max( cxNumbers/3, s88.cx ), s888.cx ); LONG cxHours = cxNumbers - cxSeconds - cxMinutes; LONG yy = ptElapsed.y; LONG cy = cyRECT(rElapsed); pei->idHours = 100+NextControlID (GetParent (pei->hElapsed)); pei->hHours = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_RIGHT | ES_NUMBER, ptElapsed.x, yy, cxHours, cy, GetParent(pei->hElapsed), (HMENU)pei->idHours, THIS_HINST, 0); pei->hSep1 = CreateWindow ( TEXT("STATIC"), szTimeSep, WS_CHILD, ptElapsed.x + cxHours, yy, sTimeSep.cx, cy, GetParent(pei->hElapsed), (HMENU)-1, THIS_HINST, 0); pei->idMinutes = 100+NextControlID (GetParent (pei->hElapsed)); pei->hMinutes = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_RIGHT | ES_NUMBER, ptElapsed.x + cxHours + sTimeSep.cx, yy, cxMinutes, cy, GetParent(pei->hElapsed), (HMENU)pei->idMinutes, THIS_HINST, 0); pei->hSep2 = CreateWindow ( TEXT("STATIC"), szTimeSep, WS_CHILD, ptElapsed.x + cxHours + cxMinutes + sTimeSep.cx, yy, sTimeSep.cx, cy, GetParent(pei->hElapsed), (HMENU)-1, THIS_HINST, 0); pei->idSeconds = 100+NextControlID (GetParent (pei->hElapsed)); pei->hSeconds = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_RIGHT | ES_NUMBER, ptElapsed.x + cxHours + cxMinutes + 2 * sTimeSep.cx, yy, cxSeconds, cy, GetParent(pei->hElapsed), (HMENU)pei->idSeconds, THIS_HINST, 0); Subclass_AddHook (pei->hHours, ElapsedEditProc); Subclass_AddHook (pei->hMinutes, ElapsedEditProc); Subclass_AddHook (pei->hSeconds, ElapsedEditProc); HFONT hf = (HFONT)SendMessage (GetParent (pei->hElapsed), WM_GETFONT, 0, 0); SendMessage (pei->hHours, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (pei->hSep1, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (pei->hMinutes, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (pei->hSep2, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (pei->hSeconds, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); EnableWindow (pei->hHours, IsWindowEnabled (pei->hElapsed)); EnableWindow (pei->hSep1, IsWindowEnabled (pei->hElapsed)); EnableWindow (pei->hMinutes, IsWindowEnabled (pei->hElapsed)); EnableWindow (pei->hSep2, IsWindowEnabled (pei->hElapsed)); EnableWindow (pei->hSeconds, IsWindowEnabled (pei->hElapsed)); ShowWindow (pei->hHours, TRUE); ShowWindow (pei->hSep1, TRUE); ShowWindow (pei->hMinutes, TRUE); ShowWindow (pei->hSep2, TRUE); ShowWindow (pei->hSeconds, TRUE); RECT rWindow; GetWindowRect (pei->hElapsed, &rWindow); rWindow.right += (cxHours + cxMinutes + cxSeconds + 2 * sTimeSep.cx) - cxRECT(rElapsed); SetWindowPos (pei->hElapsed, NULL, 0, 0, cxRECT(rWindow), cyRECT(rWindow), SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); SET_ELAPSED_TIME(&pei->timeMin, 0, 0, 0); SET_ELAPSED_TIME(&pei->timeMax, 24, 0, 0); Elapsed_Edit_OnEnforceRange (pei, pei->hHours); Elapsed_Edit_OnEnforceRange (pei, pei->hMinutes); Elapsed_Edit_OnEnforceRange (pei, pei->hSeconds); Elapsed_Edit_OnSetFocus (pei, pei->hHours); pei->fCanCallBack = TRUE; }
void Filesets_General_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp, LPIDENT lpi) { LPTSTR pszText; TCHAR szUnknown[ cchRESOURCE ]; GetString (szUnknown, IDS_UNKNOWN); if (!ptp->rc) { SetDlgItemText (hDlg, IDC_SET_CREATEDATE, szUnknown); SetDlgItemText (hDlg, IDC_SET_UPDATEDATE, szUnknown); SetDlgItemText (hDlg, IDC_SET_ACCESSDATE, szUnknown); SetDlgItemText (hDlg, IDC_SET_BACKUPDATE, szUnknown); SetDlgItemText (hDlg, IDC_SET_USAGE, szUnknown); SetDlgItemText (hDlg, IDC_SET_STATUS, szUnknown); SetDlgItemText (hDlg, IDC_SET_FILES, szUnknown); TCHAR szSvrName[ cchNAME ]; TCHAR szAggName[ cchNAME ]; TCHAR szSetName[ cchNAME ]; lpi->GetServerName (szSvrName); lpi->GetAggregateName (szAggName); lpi->GetFilesetName (szSetName); ErrorDialog (ptp->status, IDS_ERROR_REFRESH_FILESET_STATUS, TEXT("%s%s%s"), szSvrName, szAggName, szSetName); } else { TCHAR szText[ cchRESOURCE ]; EnableWindow (GetDlgItem (hDlg, IDC_SET_LOCK), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SET_UNLOCK), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SET_QUOTA), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL_DEF), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL_PERCENT), TRUE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL_DESC), TRUE); if (!FormatTime (szText, TEXT("%s"), &TASKDATA(ptp)->fs.timeCreation)) SetDlgItemText (hDlg, IDC_SET_CREATEDATE, szUnknown); else SetDlgItemText (hDlg, IDC_SET_CREATEDATE, szText); if (!FormatTime (szText, TEXT("%s"), &TASKDATA(ptp)->fs.timeLastUpdate)) SetDlgItemText (hDlg, IDC_SET_UPDATEDATE, szUnknown); else SetDlgItemText (hDlg, IDC_SET_UPDATEDATE, szText); if (!FormatTime (szText, TEXT("%s"), &TASKDATA(ptp)->fs.timeLastAccess)) SetDlgItemText (hDlg, IDC_SET_ACCESSDATE, szUnknown); else SetDlgItemText (hDlg, IDC_SET_ACCESSDATE, szText); if (!FormatTime (szText, TEXT("%s"), &TASKDATA(ptp)->fs.timeLastBackup)) SetDlgItemText (hDlg, IDC_SET_BACKUPDATE, szUnknown); else SetDlgItemText (hDlg, IDC_SET_BACKUPDATE, szText); wsprintf (szText, TEXT("%lu"), TASKDATA(ptp)->fs.nFiles); SetDlgItemText (hDlg, IDC_SET_FILES, szText); size_t nAlerts = Alert_GetCount (lpi); if (nAlerts == 1) { GetString (szText, IDS_SETSTATUS_1ALERT); SetDlgItemText (hDlg, IDC_SET_STATUS, szText); } else if (nAlerts > 1) { pszText = FormatString (IDS_SETSTATUS_2ALERT, TEXT("%lu"), nAlerts); SetDlgItemText (hDlg, IDC_SET_STATUS, pszText); FreeString (pszText); } else // (nAlerts == 0) { if (TASKDATA(ptp)->fs.State & fsBUSY) GetString (szText, IDS_SETSTATUS_BUSY); else if (TASKDATA(ptp)->fs.State & fsSALVAGE) GetString (szText, IDS_SETSTATUS_SALVAGE); else if (TASKDATA(ptp)->fs.State & fsMOVED) GetString (szText, IDS_SETSTATUS_MOVED); else if (TASKDATA(ptp)->fs.State & fsLOCKED) GetString (szText, IDS_SETSTATUS_LOCKED); else if (TASKDATA(ptp)->fs.State & fsNO_VOL) GetString (szText, IDS_SETSTATUS_NO_VOL); else GetString (szText, IDS_STATUS_NOALERTS); SetDlgItemText (hDlg, IDC_SET_STATUS, szText); } if (TASKDATA(ptp)->fs.Type == ftREADWRITE) { Filesets_DisplayQuota (hDlg, &TASKDATA(ptp)->fs); } else { if (TASKDATA(ptp)->fs.Type == ftREPLICA) GetString (szText, IDS_USAGE_REPLICA); else // (TASKDATA(ptp)->fs.Type == ftCLONE) GetString (szText, IDS_USAGE_CLONE); pszText = FormatString (szText, TEXT("%.1B"), (double)TASKDATA(ptp)->fs.ckUsed * cb1KB); SetDlgItemText (hDlg, IDC_SET_USAGE, pszText); FreeString (pszText); if (GetDlgItem (hDlg, IDC_SET_USAGEBAR)) { RECT rUsagebar; GetRectInParent (GetDlgItem (hDlg, IDC_SET_USAGEBAR), &rUsagebar); HFONT hf = (HFONT)SendMessage (GetDlgItem (hDlg, IDC_SET_USAGEBAR), WM_GETFONT, 0, 0); DestroyWindow (GetDlgItem (hDlg, IDC_SET_USAGEBAR)); if (TASKDATA(ptp)->fs.Type == ftREPLICA) GetString (szText, IDS_NO_QUOTA_REPLICA); else // (TASKDATA(ptp)->fs.Type == ftCLONE) GetString (szText, IDS_NO_QUOTA_CLONE); HWND hDesc = CreateWindow (TEXT("static"), szText, WS_CHILD | SS_SIMPLE, rUsagebar.left, rUsagebar.top, cxRECT(rUsagebar), cyRECT(rUsagebar), hDlg, (HMENU)-1, THIS_HINST, 0); SendMessage (hDesc, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); ShowWindow (hDesc, SW_SHOW); } EnableWindow (GetDlgItem (hDlg, IDC_SET_QUOTA), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL_DEF), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL_PERCENT), FALSE); EnableWindow (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL_DESC), FALSE); } if (TASKDATA(ptp)->lpsp->perWarnSetFull == 0) { GetString (szText, IDS_SETFULL_WARN_OFF); SetDlgItemText (hDlg, IDC_SET_WARN_SETFULL_DEF, szText); } else { GetString (szText, IDS_SETFULL_WARN_ON); pszText = FormatString (szText, TEXT("%lu"), TASKDATA(ptp)->lpsp->perWarnSetFull); SetDlgItemText (hDlg, IDC_SET_WARN_SETFULL_DEF, pszText); FreeString (pszText); } CheckDlgButton (hDlg, IDC_SET_WARN, (TASKDATA(ptp)->lpfp->perWarnSetFull != 0)); if (TASKDATA(ptp)->lpfp->perWarnSetFull != 0) { if (TASKDATA(ptp)->lpfp->perWarnSetFull != -1) CheckDlgButton (hDlg, IDC_SET_WARN_SETFULL, TRUE); else CheckDlgButton (hDlg, IDC_SET_WARN_SETFULL_DEF, TRUE); } CreateSpinner (GetDlgItem (hDlg, IDC_SET_WARN_SETFULL_PERCENT), 10, FALSE, // base, signed 1, (TASKDATA(ptp)->lpfp->perWarnSetFull == 0 || TASKDATA(ptp)->lpfp->perWarnSetFull == -1) ? perDEFAULT_SETFULL_WARNING : TASKDATA(ptp)->lpfp->perWarnSetFull, 100); // min, default, max Filesets_General_OnWarnings (hDlg, lpi); } }
void FindResizeLimits (HWND hWnd, LONG *pcxMin, LONG *pcxMax, LONG *pcyMin, LONG *pcyMax, rwWindowData *awd) { *pcxMin = 0; *pcxMax = 0; *pcyMin = 0; *pcyMax = 0; if (awd == NULL) { int iwl; if ((iwl = rwFindOrAddWnd (hWnd)) == -1) return; if ((awd = awl[ iwl ].awdLast) == NULL) return; } RECT rNow; GetWindowRect (hWnd, &rNow); for (DWORD ii = 0; awd[ ii ].id != idENDLIST; ++ii) { HWND hControl; if ((hControl = GetDlgItem (hWnd, awd[ ii ].id)) != NULL) { RECT rControl; GetRectInParent (hControl, &rControl); LONG cxMin = 0; LONG cyMin = 0; LONG cxMax = 0; LONG cyMax = 0; if (LOWORD(awd[ ii ].cMinimum)) // X minimum? { if (awd[ ii ].ra & raSizeX) cxMin = cxRECT(rNow) - cxRECT(rControl) + LOWORD(awd[ ii ].cMinimum); else if (awd[ ii ].ra & raSizeXB) cxMax = cxRECT(rNow) + cxRECT(rControl) - LOWORD(awd[ ii ].cMinimum); else if (awd[ ii ].ra & raSizeXC) cxMin = cxRECT(rNow) - (cxRECT(rControl) - LOWORD(awd[ ii ].cMinimum))*2; } if (LOWORD(awd[ ii ].cMaximum)) // X maximum? { if (awd[ ii ].ra & raSizeX) cxMax = cxRECT(rNow) - cxRECT(rControl) + LOWORD(awd[ ii ].cMaximum); else if (awd[ ii ].ra & raSizeXB) cxMin = cxRECT(rNow) + cxRECT(rControl) - LOWORD(awd[ ii ].cMaximum); else if (awd[ ii ].ra & raSizeXC) cxMax = cxRECT(rNow) - (cxRECT(rControl) - LOWORD(awd[ ii ].cMaximum))*2; } if (HIWORD(awd[ ii ].cMinimum)) // Y minimum? { if (awd[ ii ].ra & raSizeY) cyMin = cyRECT(rNow) - cyRECT(rControl) + HIWORD(awd[ ii ].cMinimum); else if (awd[ ii ].ra & raSizeYB) cyMax = cyRECT(rNow) + cyRECT(rControl) - HIWORD(awd[ ii ].cMinimum); else if (awd[ ii ].ra & raSizeYC) cyMin = cyRECT(rNow) - (cyRECT(rControl) - HIWORD(awd[ ii ].cMinimum))*2; } if (HIWORD(awd[ ii ].cMaximum)) // Y maximum? { if (awd[ ii ].ra & raSizeY) cyMax = cyRECT(rNow) - cyRECT(rControl) + HIWORD(awd[ ii ].cMaximum); else if (awd[ ii ].ra & raSizeYB) cyMin = cyRECT(rNow) + cyRECT(rControl) - HIWORD(awd[ ii ].cMaximum); else if (awd[ ii ].ra & raSizeYC) cyMax = cyRECT(rNow) - (cyRECT(rControl) - HIWORD(awd[ ii ].cMaximum))*2; } if (cxMin) *pcxMin = (*pcxMin) ? max( *pcxMin, cxMin ) : cxMin; if (cyMin) *pcyMin = (*pcyMin) ? max( *pcyMin, cyMin ) : cyMin; if (cxMax) *pcxMax = (*pcxMax) ? min( *pcxMax, cxMax ) : cxMax; if (cyMax) *pcyMax = (*pcyMax) ? min( *pcyMax, cyMax ) : cyMax; } } }
void FindSplitterMinMax (HWND hWnd, SplitterData *psd, LONG cOld, LONG *pcdMin, LONG *pcdMax) { *pcdMin = 0; *pcdMax = 0; for (int ii = 0; psd->awd[ ii ].id != idENDLIST; ++ii) { HWND hControl; if ((hControl = GetDlgItem (hWnd, psd->awd[ ii ].id)) != NULL) { RECT rControl; GetRectInParent (hControl, &rControl); if (psd->fX) { LONG cxMin = 0; LONG cxMax = 0; if (LOWORD(psd->awd[ ii ].cMinimum)) // X minimum? { if (psd->awd[ ii ].ra & raSizeX) cxMin = cOld - cxRECT(rControl) + LOWORD(psd->awd[ ii ].cMinimum); else if (psd->awd[ ii ].ra & raSizeXB) cxMax = cOld + cxRECT(rControl) - LOWORD(psd->awd[ ii ].cMinimum); else if (psd->awd[ ii ].ra & raSizeXC) cxMin = cOld - (cxRECT(rControl) - LOWORD(psd->awd[ ii ].cMinimum))*2; } if (LOWORD(psd->awd[ ii ].cMaximum)) // X maximum? { if (psd->awd[ ii ].ra & raSizeX) cxMax = cOld - cxRECT(rControl) + LOWORD(psd->awd[ ii ].cMaximum); else if (psd->awd[ ii ].ra & raSizeXB) cxMin = cOld + cxRECT(rControl) - LOWORD(psd->awd[ ii ].cMaximum); else if (psd->awd[ ii ].ra & raSizeXC) cxMin = cOld - (cxRECT(rControl) - LOWORD(psd->awd[ ii ].cMaximum))*2; } if (cxMin) *pcdMin = (*pcdMin) ? max( *pcdMin, cxMin ) : cxMin; if (cxMax) *pcdMax = (*pcdMax) ? min( *pcdMax, cxMax ) : cxMax; } else { LONG cyMin = 0; LONG cyMax = 0; if (HIWORD(psd->awd[ ii ].cMinimum)) // Y minimum? { if (psd->awd[ ii ].ra & raSizeY) cyMin = cOld - cyRECT(rControl) + HIWORD(psd->awd[ ii ].cMinimum); else if (psd->awd[ ii ].ra & raSizeYB) cyMax = cOld + cyRECT(rControl) - HIWORD(psd->awd[ ii ].cMinimum); else if (psd->awd[ ii ].ra & raSizeYC) cyMin = cOld - (cyRECT(rControl) - HIWORD(psd->awd[ ii ].cMinimum))*2; } if (HIWORD(psd->awd[ ii ].cMaximum)) // Y maximum? { if (psd->awd[ ii ].ra & raSizeY) cyMax = cOld - cyRECT(rControl) + HIWORD(psd->awd[ ii ].cMaximum); else if (psd->awd[ ii ].ra & raSizeYB) cyMin = cOld + cyRECT(rControl) - HIWORD(psd->awd[ ii ].cMaximum); else if (psd->awd[ ii ].ra & raSizeYC) cyMin = cOld - (cyRECT(rControl) - HIWORD(psd->awd[ ii ].cMaximum))*2; } if (cyMin) *pcdMin = (*pcdMin) ? max( *pcdMin, cyMin ) : cyMin; if (cyMax) *pcdMax = (*pcdMax) ? min( *pcdMax, cyMax ) : cyMax; } } } }
void Time_OnCreate (TimeInfo *pti) { Subclass_AddHook (GetParent(pti->hTime), TimeDlgProc); TCHAR szTimeSep[ cchRESOURCE ]; if (!GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_STIME, szTimeSep, cchRESOURCE)) lstrcpy (szTimeSep, TEXT(":")); TCHAR sz24Hour[ cchRESOURCE ]; if (!GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, sz24Hour, cchRESOURCE)) pti->f24Hour = FALSE; else pti->f24Hour = (sz24Hour[0] == TEXT('1')) ? TRUE : FALSE; TCHAR sz0Hour[ cchRESOURCE ]; if (!GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITLZERO, sz0Hour, cchRESOURCE)) pti->f0Hours = FALSE; else pti->f0Hours = (sz0Hour[0] == TEXT('1')) ? TRUE : FALSE; RECT rTime; GetClientRect (pti->hTime, &rTime); POINT ptTime = {0,0}; ClientToScreen (pti->hTime, &ptTime); ScreenToClient (GetParent (pti->hTime), &ptTime); SIZE s88; // size of widest likely double-digit number SIZE sTimeSep; // size of ":" SIZE sAMPM; // size of "AM/PM" listbox TCHAR szAM[ cchRESOURCE ]; TCHAR szPM[ cchRESOURCE ]; HDC hdc = GetDC (GetParent (pti->hTime)); GetTextExtentPoint (hdc, TEXT("88"), lstrlen(TEXT("88")), &s88); GetTextExtentPoint (hdc, szTimeSep, lstrlen(szTimeSep), &sTimeSep); if (!pti->f24Hour) Time_GetAMPMSize (hdc, &sAMPM, szAM, szPM); ReleaseDC (GetParent (pti->hTime), hdc); LONG cxNumbers = cxRECT(rTime) - GetSystemMetrics (SM_CXVSCROLL) - (sTimeSep.cx); if (!pti->f24Hour) cxNumbers -= sTimeSep.cx + sAMPM.cx; LONG cxMinutes = max( cxNumbers/2, s88.cx ); LONG cxHours = cxNumbers - cxMinutes; cxMinutes = min (cxMinutes, (LONG)( 1.2 * s88.cx )); cxHours = min (cxHours, (LONG)( 1.2 * s88.cx )); // don't be TOO wide. LONG cy = cyRECT(rTime); LONG yy = ptTime.y; pti->idHours = 100+NextControlID (GetParent (pti->hTime)); pti->hHours = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_MULTILINE | ES_RIGHT | ES_NUMBER, ptTime.x, yy, cxHours, cy, GetParent(pti->hTime), (HMENU)pti->idHours, THIS_HINST, 0); pti->hSep1 = CreateWindow ( TEXT("STATIC"), szTimeSep, WS_CHILD | SS_CENTER, ptTime.x + cxHours, yy, sTimeSep.cx, cy, GetParent(pti->hTime), (HMENU)-1, THIS_HINST, 0); pti->idMinutes = 100+NextControlID (GetParent (pti->hTime)); pti->hMinutes = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_MULTILINE | ES_RIGHT | ES_NUMBER, ptTime.x + cxHours + sTimeSep.cx, yy, cxMinutes, cy, GetParent(pti->hTime), (HMENU)pti->idMinutes, THIS_HINST, 0); if (!pti->f24Hour) { pti->hSep2 = CreateWindow ( TEXT("STATIC"), TEXT(""), WS_CHILD | SS_CENTER, ptTime.x + cxHours + cxMinutes + sTimeSep.cx, yy, sTimeSep.cx, cy, GetParent(pti->hTime), (HMENU)-1, THIS_HINST, 0); pti->idAMPM = 100+NextControlID (GetParent (pti->hTime)); pti->hAMPM = CreateWindow ( TEXT("LISTBOX"), TEXT(""), WS_CHILD | WS_TABSTOP | LBS_NOINTEGRALHEIGHT | LBS_HASSTRINGS | LBS_OWNERDRAWFIXED | LBS_NOTIFY, ptTime.x + cxHours + cxMinutes + 2 * sTimeSep.cx, yy, sAMPM.cx, cy, GetParent(pti->hTime), (HMENU)pti->idAMPM, THIS_HINST, 0); } Subclass_AddHook (pti->hHours, TimeEditProc); Subclass_AddHook (pti->hMinutes, TimeEditProc); if (!pti->f24Hour) Subclass_AddHook (pti->hAMPM, TimeEditProc); HFONT hf = (HFONT)SendMessage (GetParent (pti->hTime), WM_GETFONT, 0, 0); SendMessage (pti->hHours, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (pti->hSep1, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (pti->hMinutes, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); if (!pti->f24Hour) { SendMessage (pti->hSep2, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (pti->hAMPM, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); } EnableWindow (pti->hHours, IsWindowEnabled (pti->hTime)); EnableWindow (pti->hSep1, IsWindowEnabled (pti->hTime)); EnableWindow (pti->hMinutes, IsWindowEnabled (pti->hTime)); if (!pti->f24Hour) { EnableWindow (pti->hSep2, IsWindowEnabled (pti->hTime)); EnableWindow (pti->hAMPM, IsWindowEnabled (pti->hTime)); LB_StartChange (pti->hAMPM, TRUE); LB_AddItem (pti->hAMPM, szAM, 0); LB_AddItem (pti->hAMPM, szPM, 1); LB_EndChange (pti->hAMPM); LB_SetSelected (pti->hAMPM, 1); } ShowWindow (pti->hHours, TRUE); ShowWindow (pti->hSep1, TRUE); ShowWindow (pti->hMinutes, TRUE); if (!pti->f24Hour) { ShowWindow (pti->hSep2, TRUE); ShowWindow (pti->hAMPM, TRUE); } RECT rWindow; GetWindowRect (pti->hTime, &rWindow); rWindow.right += (cxHours + cxMinutes + sTimeSep.cx) - cxRECT(rTime); if (!pti->f24Hour) rWindow.right += sTimeSep.cx + sAMPM.cx; SetWindowPos (pti->hTime, NULL, 0, 0, cxRECT(rWindow), cyRECT(rWindow), SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); RECT rSpinner; GetRectInParent (pti->hTime, &rSpinner); rSpinner.left = rSpinner.right; rSpinner.right = rSpinner.left + GetSystemMetrics (SM_CXVSCROLL); rSpinner.bottom -= 2; // just like Win95 does CreateSpinner (pti->hHours, 10, FALSE, 0, pti->timeNow.wHour, 24, &rSpinner); pti->hSpinner = SP_GetSpinner (pti->hHours); pti->hSpinnerBuddy = pti->hHours; Time_Edit_SetText (pti, pti->hHours); Time_Edit_SetText (pti, pti->hMinutes); Time_Edit_OnSetFocus (pti, pti->hHours); pti->fCanCallBack = TRUE; }
BOOL WIZARD::Template_OnPaintLHS (HWND hLHS) { BOOL fShow16 = FALSE; BOOL fShow256 = FALSE; HDC hdc = GetDC (NULL); WORD wDepthDisplay = (WORD)GetDeviceCaps (hdc, BITSPIXEL); ReleaseDC (NULL, hdc); if ( (m_bmpGraphic256 != NULL) && (wDepthDisplay >= 8) ) fShow256 = TRUE; else if (m_bmpGraphic16 != NULL) fShow16 = TRUE; else return FALSE; PAINTSTRUCT ps; HDC hdcTarget; if ((hdcTarget = BeginPaint (hLHS, &ps)) != NULL) { HBITMAP bmpSource = (fShow256) ? m_bmpGraphic256 : m_bmpGraphic16; BITMAP bm; GetObject (bmpSource, sizeof(BITMAP), &bm); RECT rWindow; GetClientRect (hLHS, &rWindow); RECT rSource = { 0, 0, bm.bmWidth, bm.bmHeight }; RECT rTarget = rWindow; if (cxRECT(rSource) > cxRECT(rTarget)) { MoveRect (&rSource, (cxRECT(rSource) - cxRECT(rTarget)) / 2, 0); rSource.right = rSource.left + cxRECT(rTarget); } else if (cxRECT(rSource) < cxRECT(rTarget)) { MoveRect (&rTarget, (cxRECT(rTarget) - cxRECT(rSource)) / 2, 0); } if (cyRECT(rSource) > cyRECT(rTarget)) { MoveRect (&rSource, 0, (cyRECT(rSource) - cyRECT(rTarget)) / 2); rSource.bottom = rSource.top + cyRECT(rTarget); } else if (cyRECT(rSource) < cyRECT(rTarget)) { MoveRect (&rTarget, 0, (cyRECT(rTarget) - cyRECT(rSource)) / 2); } rTarget.right = rTarget.left + cxRECT(rSource); rTarget.bottom = rTarget.top + cyRECT(rSource); // If the user has supplied a custom draw-proc, then we should // do our rendering to an off-screen bitmap. // HDC hdcFinalTarget = NULL; HBITMAP bmpTempTarget = NULL; if (m_pfnCallback) { // First make sure our offscreen buffer is large enough // if (!m_bmpBuffer || (cxRECT(m_rBuffer) < cxRECT(rWindow)) || (cyRECT(m_rBuffer) < cyRECT(rWindow))) { if (m_bmpBuffer != NULL) DeleteObject (m_bmpBuffer); if ((m_bmpBuffer = CreateCompatibleBitmap (hdcTarget, cxRECT(rWindow), cyRECT(rWindow))) != NULL) { m_rBuffer.right = cxRECT(rWindow); // m_rBuffer.left=already 0 m_rBuffer.bottom = cyRECT(rWindow); // m_rBuffer.top=already 0 } } // Then set up to double-buffer, if possible // if (m_bmpBuffer) { hdcFinalTarget = hdcTarget; hdcTarget = CreateCompatibleDC (hdcFinalTarget); bmpTempTarget = (HBITMAP)SelectObject (hdcTarget, m_bmpBuffer); } } HDC hdcSource = CreateCompatibleDC (hdcTarget); HBITMAP bmpOld = (HBITMAP)SelectObject (hdcSource, bmpSource); HPALETTE palOld = NULL; if ((wDepthDisplay == 8) && (m_palGraphic != NULL) && (fShow256)) { palOld = SelectPalette (hdcTarget, m_palGraphic, FALSE); RealizePalette (hdcTarget); } if ( (bm.bmWidth < cxRECT(rWindow)) || (bm.bmHeight < cyRECT(rWindow)) ) { COLORREF clrFill = GetPixel (hdcSource, 0, rSource.bottom -1); clrFill = ToPALETTERGB(clrFill); HBRUSH hbrFill = CreateSolidBrush (clrFill); if (bm.bmWidth < cxRECT(rWindow)) { RECT rr; rr = rWindow; rr.right = rTarget.left; FillRect (hdcTarget, &rr, hbrFill); rr = rWindow; rr.left = rTarget.right; FillRect (hdcTarget, &rr, hbrFill); } if (bm.bmHeight < cyRECT(rWindow)) { RECT rr; rr = rWindow; rr.bottom = rTarget.top; FillRect (hdcTarget, &rr, hbrFill); rr = rWindow; rr.top = rTarget.bottom; FillRect (hdcTarget, &rr, hbrFill); } DeleteObject (hbrFill); } BitBlt (hdcTarget, rTarget.left, rTarget.top, cxRECT(rTarget), cyRECT(rTarget), hdcSource, rSource.left, rSource.top, SRCCOPY); // Call the user-supplied callback function (if there is one) // if (m_pfnCallback) { (*m_pfnCallback)(this, hdcTarget, &rWindow, (palOld) ? m_palGraphic : NULL); } if (palOld != NULL) SelectPalette (hdcTarget, palOld, FALSE); // If we've been drawing to an off-screen bitmap, blit the result to // the display. // if (hdcFinalTarget) { BitBlt (hdcFinalTarget, rWindow.left, rWindow.top, cxRECT(rWindow), cyRECT(rWindow), hdcTarget, 0, 0, SRCCOPY); SelectObject (hdcTarget, bmpTempTarget); DeleteDC (hdcTarget); hdcTarget = hdcFinalTarget; } SelectObject (hdcSource, bmpOld); DeleteDC (hdcSource); EndPaint (hLHS, &ps); } return TRUE; }
void WIZARD::Background_OnSize (void) { if (m_bmpBackground) { DeleteObject (m_bmpBackground); m_bmpBackground = NULL; } RECT rr; GetClientRect (m_hBkg, &rr); if (m_fBlue) { HDC hdc = GetDC (NULL); WORD wDepthDisplay = (WORD)GetDeviceCaps (hdc, BITSPIXEL); ReleaseDC (NULL, hdc); hdc = GetDC (m_hBkg); HDC hdcTarget = CreateCompatibleDC (hdc); if ((m_bmpBackground = CreateCompatibleBitmap (hdc, cxRECT(rr), cyRECT(rr))) != NULL) { HBITMAP bmpOld = (HBITMAP)SelectObject (hdcTarget, m_bmpBackground); HPALETTE palOld = NULL; if (m_palGraphic) { palOld = SelectPalette (hdcTarget, m_palGraphic, FALSE); RealizePalette (hdcTarget); } size_t yy = 0; size_t cy = cyRECT(rr) / ((clrWASH_BRIGHTEST - clrWASH_DARKEST) / clrWASH_INCREMENT); for (COLORREF clr = clrWASH_BRIGHTEST; clr >= clrWASH_DARKEST; clr -= clrWASH_INCREMENT) { RECT rSection = rr; rSection.top = (LONG)yy; rSection.bottom = (LONG)(yy +cy); HBRUSH hbr = CreateSolidBrush (ToPALETTERGB(clr)); FillRect (hdcTarget, &rSection, hbr); DeleteObject (hbr); yy += cy; } if (m_szBackground[0] != TEXT('\0')) { HFONT hfOld = (HFONT)SelectObject (hdcTarget, m_hfBackground); COLORREF clrOld = SetTextColor (hdcTarget, clrWASH_TEXT_BG); SetBkMode (hdcTarget, TRANSPARENT); RECT rText = rr; rText.left += xTEXT + cxSHADOW; rText.top += yTEXT + cySHADOW; DrawTextEx (hdcTarget, m_szBackground, lstrlen(m_szBackground), &rText, DT_NOPREFIX | DT_LEFT, NULL); rText.left -= cxSHADOW; rText.top -= cySHADOW; SetTextColor (hdcTarget, clrWASH_TEXT_FG); DrawTextEx (hdcTarget, m_szBackground, lstrlen(m_szBackground), &rText, DT_NOPREFIX | DT_LEFT, NULL); SetTextColor (hdcTarget, clrOld); SelectObject (hdcTarget, hfOld); } if (palOld) SelectPalette (hdcTarget, palOld, FALSE); SelectObject (hdcTarget, bmpOld); } DeleteDC (hdcTarget); ReleaseDC (m_hBkg, hdc); } InvalidateRect (m_hBkg, &rr, TRUE); UpdateWindow (m_hBkg); }
void SockAddr_OnCreate (SockAddrInfo *psai) { Subclass_AddHook (GetParent(psai->hSockAddr), SockAddrDlgProc); RECT rSockAddr; GetClientRect (psai->hSockAddr, &rSockAddr); POINT ptSockAddr = {0,0}; ClientToScreen (psai->hSockAddr, &ptSockAddr); ScreenToClient (GetParent (psai->hSockAddr), &ptSockAddr); SIZE s888; // size of widest likely triple-digit number SIZE sSockSep; // size of "." HDC hdc = GetDC (GetParent (psai->hSockAddr)); GetTextExtentPoint (hdc, TEXT("888"), lstrlen(TEXT("888")), &s888); GetTextExtentPoint (hdc, cszSOCKSEP, lstrlen(cszSOCKSEP), &sSockSep); ReleaseDC (GetParent (psai->hSockAddr), hdc); LONG cxNumbers = cxRECT(rSockAddr) - (3 * sSockSep.cx); LONG cxE2 = cxNumbers/4; LONG cxE1 = cxNumbers - cxE2 * 3; LONG yy = ptSockAddr.y; LONG cy = cyRECT(rSockAddr); cxE2 = min (cxE2, (LONG)( 1.4 * s888.cx )); cxE1 = min (cxE1, (LONG)( 1.4 * s888.cx )); // don't be TOO wide. psai->idE1 = 100+NextControlID (GetParent (psai->hSockAddr)); psai->hE1 = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_RIGHT | ES_NUMBER | ES_MULTILINE, ptSockAddr.x, yy, cxE1, cy, GetParent(psai->hSockAddr), (HMENU)psai->idE1, THIS_HINST, 0); psai->hSep1 = CreateWindow ( TEXT("STATIC"), cszSOCKSEP, WS_CHILD | SS_CENTER, ptSockAddr.x + cxE1, yy, sSockSep.cx, cy, GetParent(psai->hSockAddr), (HMENU)-1, THIS_HINST, 0); psai->idE2 = 1 + psai->idE1; psai->hE2 = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_RIGHT | ES_NUMBER | ES_MULTILINE, ptSockAddr.x + cxE1 + sSockSep.cx, yy, cxE2, cy, GetParent(psai->hSockAddr), (HMENU)psai->idE2, THIS_HINST, 0); psai->hSep2 = CreateWindow ( TEXT("STATIC"), cszSOCKSEP, WS_CHILD | SS_CENTER, ptSockAddr.x + cxE1 + sSockSep.cx + cxE2, yy, sSockSep.cx, cy, GetParent(psai->hSockAddr), (HMENU)-1, THIS_HINST, 0); psai->idE3 = 1 + psai->idE2; psai->hE3 = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_RIGHT | ES_NUMBER | ES_MULTILINE, ptSockAddr.x + cxE1 + sSockSep.cx*2 + cxE2, yy, cxE2, cy, GetParent(psai->hSockAddr), (HMENU)psai->idE3, THIS_HINST, 0); psai->hSep3 = CreateWindow ( TEXT("STATIC"), cszSOCKSEP, WS_CHILD | SS_CENTER, ptSockAddr.x + cxE1 + sSockSep.cx*2 + cxE2*2, yy, sSockSep.cx, cy, GetParent(psai->hSockAddr), (HMENU)-1, THIS_HINST, 0); psai->idE4 = 1 + psai->idE3; psai->hE4 = CreateWindow ( TEXT("EDIT"), TEXT(""), WS_CHILD | WS_TABSTOP | ES_RIGHT | ES_NUMBER | ES_MULTILINE, ptSockAddr.x + cxE1 + sSockSep.cx*3 + cxE2*2, yy, cxE2, cy, GetParent(psai->hSockAddr), (HMENU)psai->idE4, THIS_HINST, 0); Subclass_AddHook (psai->hE1, SockAddrEditProc); Subclass_AddHook (psai->hE2, SockAddrEditProc); Subclass_AddHook (psai->hE3, SockAddrEditProc); Subclass_AddHook (psai->hE4, SockAddrEditProc); HFONT hf = (HFONT)SendMessage (GetParent (psai->hSockAddr), WM_GETFONT, 0, 0); SendMessage (psai->hE1, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (psai->hSep1, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (psai->hE2, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (psai->hSep2, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (psai->hE3, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (psai->hSep3, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); SendMessage (psai->hE4, WM_SETFONT, (WPARAM)hf, MAKELPARAM(TRUE,0)); EnableWindow (psai->hE1, IsWindowEnabled (psai->hSockAddr)); EnableWindow (psai->hSep1, IsWindowEnabled (psai->hSockAddr)); EnableWindow (psai->hE2, IsWindowEnabled (psai->hSockAddr)); EnableWindow (psai->hSep2, IsWindowEnabled (psai->hSockAddr)); EnableWindow (psai->hE3, IsWindowEnabled (psai->hSockAddr)); EnableWindow (psai->hSep3, IsWindowEnabled (psai->hSockAddr)); EnableWindow (psai->hE4, IsWindowEnabled (psai->hSockAddr)); ShowWindow (psai->hE1, TRUE); ShowWindow (psai->hSep1, TRUE); ShowWindow (psai->hE2, TRUE); ShowWindow (psai->hSep2, TRUE); ShowWindow (psai->hE3, TRUE); ShowWindow (psai->hSep3, TRUE); ShowWindow (psai->hE4, TRUE); RECT rWindow; GetWindowRect (psai->hSockAddr, &rWindow); rWindow.right += (cxE1 + cxE2*3 + sSockSep.cx*3) - cxRECT(rSockAddr); SetWindowPos (psai->hSockAddr, NULL, 0, 0, cxRECT(rWindow), cyRECT(rWindow), SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); SOCKADDR_IN addrNew; memset (&addrNew, 0x00, sizeof(addrNew)); SockAddr_OnSetAddr (psai, 0, (LPARAM)&addrNew); }