//Simple plugin About box INT_PTR WINAPI AboutDlgProcIntel(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM /*lParam*/) { switch (wMsg) { case WM_INITDIALOG: { //Set window name string windowTitle = DDSExporterPluginName; windowTitle += DDSExporterPluginVersion; SetWindowText(hDlg, windowTitle.c_str()); CenterDialog(hDlg); } break; case WM_CHAR: { TCHAR chCharCode = TCHAR(wParam); if (chCharCode == VK_ESCAPE || chCharCode == VK_RETURN) EndDialog(hDlg, 0); } break; case WM_LBUTTONDOWN: EndDialog(hDlg, 0); break; case WM_COMMAND: switch (COMMANDID(wParam)) { case OK: EndDialog(hDlg, 0); break; case CANCEL: EndDialog(hDlg, 0); break; default: return FALSE; } break; default: return FALSE; } // switch (wMsg) return TRUE; }
//Get name dialog INT_PTR WINAPI DlgGetNameProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam) { static string * str; switch (wMsg) { case WM_INITDIALOG: { if (lParam) { str = reinterpret_cast<string*>(lParam); SetDlgItemTextA(hDlg, IDC_NAME_EDIT, str->c_str()); } CenterDialog(hDlg); } break; case WM_COMMAND: switch (COMMANDID(wParam)) { case IDOK: { char buf[MAX_PATH+1] = {}; GetDlgItemTextA(hDlg, IDC_NAME_EDIT, buf, MAX_PATH); *str = buf; str = NULL; EndDialog(hDlg, IDOK); } break; case IDCANCEL: str = NULL; EndDialog(hDlg, IDCANCEL); break; default: return FALSE; } break; default: return FALSE; } // switch (wMsg) return TRUE; }
BOOL WINAPI UIProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam) { static GPtr globals = NULL; // need to be static switch (wMsg) { case WM_INITDIALOG: { LV_ITEM LvItem; LV_COLUMN LstColVal, LstColProp; int i; CenterDialog(hDlg); // set up globals globals = (GPtr) lParam; gList = GetDlgItem(hDlg,1011); // get the ID of the ListView LVProcPrev = (WNDPROC)SetWindowLong(gList, GWL_WNDPROC, (DWORD)LVProc); // Here we put the info on the Column headers // this is not data, only name of each header we like memset(&LstColVal,0,sizeof(LstColVal)); // Reset Column LstColVal.mask = LVCF_TEXT|LVCF_WIDTH|LVCF_SUBITEM|LVCF_ORDER; // Type of mask LstColVal.cx = 0x64; // width between each coloum LstColVal.pszText = "Value"; // LstColVal.iOrder = 1; // put editable field on right side LstColProp = LstColVal; LstColProp.pszText = "Property"; LstColProp.iOrder = 0; // Inserting Columns as much as we want ListView_InsertColumn(gList, 0, &LstColVal); ListView_InsertColumn(gList, 1, &LstColProp); // Setting common properties Of Items: memset(&LvItem,0,sizeof(LvItem)); // Reset Item Struct LvItem.mask = LVIF_TEXT|LVCF_WIDTH|LVCF_SUBITEM; // Text Style LvItem.cchTextMax = 256; // Max size of test // allocate mem for items ListView_SetItemCount(gList, PI_MAX); // insert items for(i=0; i<PI_MAX; i++) { ListView_SetPair(gList, LvItem, i,its(gIntProps[i].value), gIntProps[i].name ); } ShowWindow(hDlg,SW_NORMAL); UpdateWindow(hDlg); return FALSE; } case WM_NOTIFY: { switch( ((LPNMHDR)lParam)->code ) { case LVN_BEGINLABELEDIT: { break; } case LVN_ENDLABELEDIT: { int iIndex; char tempstr[255]=""; HWND hEdit; iIndex = ListView_GetNextItem(gList,-1,LVNI_FOCUSED); if( iIndex != - 1 ) { //save to list hEdit = ListView_GetEditControl(gList); GetWindowText(hEdit, tempstr, sizeof(tempstr)); ListView_SetItemText(gList, iIndex,0,tempstr); //save to globals gIntProps[iIndex].value = ListView_ReadInt(gList, iIndex, 0); } break; } } break; } case WM_COMMAND: { int item; int cmd; item = COMMANDID (wParam); // WIN32 Change cmd = HIWORD(wParam); switch (item) { case ok: if (cmd == BN_CLICKED) state = STATE_AGAIN; break; case cancel: if (cmd == BN_CLICKED) state = STATE_CANCEL; break; } return FALSE; } } return FALSE; }
DLLExport BOOL WINAPI FilterProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam) // Win32 Change { long x = 1; double dx = 0; short numberErr = noErr; short item; static short lastItem = 0, lastTitem = 0; static short cColor; static int16 cSourceColor[4]; static short cColorize; static int16 cTargetColor[4]; static short gotErr = 0; PIType key = NULLID; static ColorServicesInfo csinfo; int cmd; static GPtr globals = NULL; /* need to be static */ switch (wMsg) { case WM_INITDIALOG: /* set up globals */ globals = (GPtr) lParam; CenterDialog(hDlg); // save globals in locals for later if user cancels CSCopyColor(cSourceColor, gSourceColor); CSCopyColor(cTargetColor, gTargetColor); cColor = gColor; cColorize = gColorize; UpdateDialogInfo(globals, hDlg); SelectTextItem(hDlg, dEditSource1); /* drop into PAINT */ case WM_PAINT: // paint here return FALSE; break; case WM_COMMAND: item = COMMANDID (wParam); // WIN32 Change cmd = HIWORD (wParam); switch (item) { case dSourcePicker: if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr) { // didn't have to change focus. Continue. if (cmd == BN_CLICKED) { PopulateColorServicesInfo (globals, &csinfo); csinfo.selector = plugIncolorServicesChooseColor; // change csinfo.resultSpace = plugIncolorServicesChosenSpace; // will return user chosen if (gotErr = ColorServices (&csinfo) == noErr) { // no problems. Do this. gColor = csinfo.resultSpace; CSCopyColor (gSourceColor, csinfo.colorComponents); DoConversion(globals, hDlg, &csinfo); UpdateDialogInfo (globals, hDlg); } SelectTextItem(hDlg, lastTitem); return FALSE; } } break; case dTargetPicker: if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr) { // didn't have to change focus. Continue. if (cmd == BN_CLICKED) { PopulateColorServicesInfo (globals, &csinfo); csinfo.selector = plugIncolorServicesChooseColor; // picker if (gotErr = ColorServices (&csinfo) == noErr) { // no problems. Do this. // move old target to source space CSCopyColor (gSourceColor, gTargetColor); gColor = gColorize; // now pull results to target gColorize = csinfo.resultSpace; // should be the same CSCopyColor (gTargetColor, csinfo.colorComponents); UpdateDialogInfo (globals, hDlg); } SelectTextItem(hDlg, lastTitem); return FALSE; } } break; case OK: if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr) { // validated fine if (cmd == BN_CLICKED) { // wants to dismiss. End dialog. EndDialog(hDlg, item); return TRUE; } } break; case CANCEL: if (cmd == BN_CLICKED) { // return all globals from saved locals CSCopyColor(gSourceColor, cSourceColor); CSCopyColor(gTargetColor, cTargetColor); gColor = cColor; gColorize = cColorize; gResult = userCanceledErr; EndDialog(hDlg, item); // WIN32 change return TRUE; } // don't ever validate during cancel break; default: if (item >= dSource1 && item <= dSourceEnd) { if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr) { // validated fine if (cmd == BN_CLICKED) { // process button SetRadioGroupState (hDlg, dSource1, dSourceEnd, item); gColor = item - dSource1; DoConversion (globals, hDlg, &csinfo); SelectTextItem(hDlg, lastTitem); return FALSE; } } } else if (item >= dTarget1 && item <= dTargetEnd) { // set group then do conversion if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr) { // validated fine if (cmd == BN_CLICKED) { // process SetRadioGroupState (hDlg, dTarget1, dTargetEnd, item); gColorize = item - dTarget1; DoConversion (globals, hDlg, &csinfo); SelectTextItem(hDlg, lastTitem); return FALSE; } } } else if (item >= dEditSource1 && item <= dEditSourceEnd) { if ((numberErr = Validate(hDlg, &lastItem, &dx, true)) == noErr) { if (cmd == EN_KILLFOCUS) lastItem = item; // validate will get this else if (cmd == EN_CHANGE) { // do me numberErr = Validate(hDlg, &item, &dx, false); gSourceColor[item - dEditSource1] = (int16)dx; lastTitem = item; DoConversion (globals, hDlg, &csinfo); return FALSE; } } } break; } // switch (item) break; // case WM_COMMAND default: return FALSE; break; } // switch return TRUE; }
//Load Dialog box INT_PTR WINAPI DlgLoadProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam) { static unsigned8* result; switch (wMsg) { case WM_INITDIALOG: { if (lParam) { result = reinterpret_cast<unsigned8*>(lParam); //If no mip maps hide controls if (!(*result & LoadInfoEnum::USE_MIPMAPS)) { ShowWindow(GetDlgItem(hDlg, IDC_LOADDIALOG_MIPMAPGROUP), SW_HIDE); ShowWindow(GetDlgItem(hDlg, IDC_LOADDIALOG_MIPMAPCHECK), SW_HIDE); } //If no alpha hide controls if (!(*result & LoadInfoEnum::USE_SEPARATEALPHA)) { ShowWindow(GetDlgItem(hDlg, IDC_LOADDIALOG_ALPHAGROUP), SW_HIDE); ShowWindow(GetDlgItem(hDlg, IDC_LOADDIALOG_ALPHACHECK), SW_HIDE); //move mipmap controls up RECT rcGroup = {}; RECT rcCheckbox = {}; HWND group = GetDlgItem(hDlg, IDC_LOADDIALOG_MIPMAPGROUP); HWND checkbox = GetDlgItem(hDlg, IDC_LOADDIALOG_MIPMAPCHECK); //Get alpha rectangles in client coordinates and set them to mip map controls GetWindowRect(GetDlgItem(hDlg, IDC_LOADDIALOG_ALPHAGROUP), &rcGroup); MapWindowRect(NULL, hDlg, &rcGroup); MoveWindow(group, rcGroup.left, rcGroup.top, rcGroup.right - rcGroup.left, rcGroup.bottom - rcGroup.top, TRUE); GetWindowRect(GetDlgItem(hDlg, IDC_LOADDIALOG_ALPHACHECK), &rcCheckbox); MapWindowRect(NULL, hDlg, &rcCheckbox); MoveWindow(checkbox, rcCheckbox.left, rcCheckbox.top, rcCheckbox.right - rcCheckbox.left, rcCheckbox.bottom - rcCheckbox.top, TRUE); } //Reset result to pass back info *result = LoadInfoEnum::USE_NONE; } CenterDialog(hDlg); } break; case WM_COMMAND: switch (COMMANDID(wParam)) { case IDOK: { EndDialog(hDlg, IDOK); } break; case IDCANCEL: { *result = LoadInfoEnum::USE_NONE; EndDialog(hDlg, IDCANCEL); } break; case IDC_LOADDIALOG_MIPMAPCHECK: { HWND alphachkbox = GetDlgItem(hDlg, IDC_LOADDIALOG_ALPHACHECK); bool checked = (SendMessage(GetDlgItem(hDlg, IDC_LOADDIALOG_MIPMAPCHECK), BM_GETCHECK, 0, 0) == BST_CHECKED); //Set the flag depending on the checked state if (checked) { *result |= LoadInfoEnum::USE_MIPMAPS; //uncheck and disable separate alpha setting on mip maps; if (GetWindowLong(alphachkbox, GWL_STYLE) | WS_VISIBLE) { SendMessage(alphachkbox, BM_SETCHECK, 0, 0); ::EnableWindow(alphachkbox, false); } } else { *result &= ~LoadInfoEnum::USE_MIPMAPS; //reenable alpha checkbox if (GetWindowLong(alphachkbox, GWL_STYLE) | WS_VISIBLE) { ::EnableWindow(alphachkbox, true); } } } break; case IDC_LOADDIALOG_ALPHACHECK: { bool checked = (SendMessage(GetDlgItem(hDlg, IDC_LOADDIALOG_ALPHACHECK), BM_GETCHECK, 0, 0) == BST_CHECKED); //set the flag depending on the checked state if (checked) *result |= LoadInfoEnum::USE_SEPARATEALPHA; else *result &= ~LoadInfoEnum::USE_SEPARATEALPHA; } break; default: return FALSE; } break; case WM_CTLCOLORSTATIC: { //set the background color of the chackbox controls static HBRUSH hBrushColor; if (!hBrushColor) { hBrushColor = CreateSolidBrush(RGB(255, 255, 255)); SetBkColor((HDC)wParam, RGB(255, 255, 255)); } return (LRESULT)hBrushColor; } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hDC; hDC = BeginPaint(hDlg, &ps); RECT rcParent = {5, 5, 295, 115}; //Paint the white rectabgle where the checkboxes are positioned FillRect(hDC, &rcParent, static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH))); EndPaint(hDlg, &ps); return FALSE; } break; default: return FALSE; } // switch (wMsg) return TRUE; }
//------------------------------------------------------------------------------- // // DissolveProc // // The Windows callback to manage our dialog box. This is a very simple // implementation. I didn't add much error checking. There is no zooming in or // out on the Proxy. Just a simple dialog to get some simple parameters. // // NOTE: // You must use the DLLExport macro so Windows can find this procedures address. // //------------------------------------------------------------------------------- DLLExport BOOL WINAPI DissolveProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM /*lParam*/) { BOOL returnValue = TRUE; int item, cmd; switch (wMsg) { case WM_INITDIALOG: CenterDialog(hDlg); // recalculate the proxy and update the pixel data in inData GetProxyItemRect(hDlg); SetupFilterRecordForProxy(); CreateProxyBuffer(); CreateDissolveBuffer(gData->proxyWidth, gData->proxyHeight); UpdateProxyItem(hDlg); // set the dialog items based on the last values used SetDlgItemInt(hDlg, kDEditText, gParams->percent, TRUE); CheckRadioButton(hDlg, kDFirstRadio, kDLastRadio, kDFirstRadio + gParams->disposition); CheckDlgButton(hDlg, kDEntireImage, gParams->ignoreSelection); ShowWindow(GetDlgItem(hDlg, kDEntireImage), gFilterRecord->haveMask ? SW_SHOW : SW_HIDE ); SendDlgItemMessage(hDlg, kDEditText, EM_SETSEL, 0, (LPARAM)-1); SetFocus(GetDlgItem(hDlg, kDEditText)); // intentional fall through to the WM_PAINT message case WM_PAINT: if (*gResult == noErr) PaintProxy(hDlg); returnValue = FALSE; break; case WM_COMMAND: item = LOWORD (wParam); cmd = HIWORD (wParam); switch (item) { case kDOK: case kDCancel: if (cmd == BN_CLICKED) { DeleteProxyBuffer(); DeleteDissolveBuffer(); EndDialog(hDlg, item); returnValue = TRUE; } break; case kDEditText: if (cmd == EN_CHANGE) { gParams->percent = (short)GetDlgItemInt(hDlg, kDEditText, NULL, TRUE); UpdateProxyItem(hDlg); } break; case kDEntireImage: if (cmd == BN_CLICKED) { gParams->ignoreSelection = !gParams->ignoreSelection; CheckDlgButton(hDlg, kDEntireImage, gParams->ignoreSelection); UpdateProxyItem(hDlg); } break; default: if (item >= kDFirstRadio && item <= kDLastRadio) { if (cmd == BN_CLICKED) { CheckRadioButton(hDlg, kDFirstRadio, kDLastRadio, COMMANDID(wParam)); CopyColor(gData->color, gData->colorArray[item - kDFirstRadio]); gParams->disposition = (short)(wParam - kDFirstRadio); UpdateProxyItem(hDlg); } } break; } returnValue = TRUE; break; default: returnValue = FALSE; break; } return returnValue; }
DLLExport BOOL WINAPI PoorMansTypeToolProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam) { // set up some local variables, use these until OK is pressed and then // copy in to global data static short lastV = 0; static short lastH = 0; static int32 lastXFactor = 4; static BOOL lastGaussianBlurData = FALSE; static bool lastAllLayerData = FALSE; static BOOL lastDiffLayerData = FALSE; static int16 lastLayerIndex = 0; RECT imageRect; int item, cmd; short numberErr = 0; int32 x = 0; static int lastItem = 0; static GPtr globals = NULL; /* need to be static */ switch (wMsg) { case WM_INITDIALOG: /* set up globals */ globals = (GPtr) lParam; CenterDialog(hDlg); lastV = gPointV; lastH = gPointH; lastXFactor = gXFactor; lastGaussianBlurData = gGaussianBlurData; lastAllLayerData = gViewAllLayerData; lastLayerIndex = gViewLayerIndex; GetProxyItemRect(hDlg, &gProxyRect); CalcProxyScaleFactor(&gDocDesc->bounds, &gProxyRect, &gScaleFactor); UpdateProxyView(globals); StuffNumber(hDlg, kDVertical,(int32)lastV); StuffNumber(hDlg, kDHorizontal,(int32)lastH); InitializeMenu(globals, hDlg, kDSize); SetSizePopUpMenu(hDlg, lastXFactor); InitializeMenu(globals, hDlg, kDLayersPopUp); SendMessage(GetDlgItem(hDlg, kDLayersPopUp), CB_SETCURSEL, 0, 0); InitializeMenu(globals, hDlg, kDDocPopUp); SendMessage(GetDlgItem(hDlg, kDDocPopUp), CB_SETCURSEL, 0, 0); SetCheckBoxState(hDlg, kDAllLayers, lastAllLayerData); SetCheckBoxState(hDlg, kDGaussianBlurData, lastGaussianBlurData); ShowHideItem(hDlg, kDWarningText, false); SelectTextItem(hDlg, kDVertical); /* drop into PAINT missing break is intentional */ case WM_PAINT: ShowOutputBuffer(globals, hDlg); // Draw Proxy Item return FALSE; break; case WM_COMMAND: item = COMMANDID (wParam); // WIN32 Change cmd = HIWORD (wParam); switch (item) { case kDVertical: if (Validate(globals, hDlg, &lastItem)) { if (cmd == EN_KILLFOCUS) lastItem = kDVertical; // validate will get this else if (cmd == EN_CHANGE) { numberErr = FetchNumber(hDlg, kDVertical, gDocDesc->bounds.top, gDocDesc->bounds.bottom, &x); if (numberErr == noErr && x != gPointV) { // different number, update gPointV = (short)x; // Do Filtering operation UpdateProxyView(globals); // Invalidate Proxy Item GetWindowRect(GetDlgItem(hDlg, kDProxyItem), &imageRect); ScreenToClient (hDlg, (LPPOINT)&imageRect); ScreenToClient (hDlg, (LPPOINT)&(imageRect.right)); InvalidateRect (hDlg, &imageRect, FALSE); } } } break; case kDHorizontal: if (Validate(globals, hDlg, &lastItem)) { if (cmd == EN_KILLFOCUS) lastItem = kDHorizontal; // validate will get this else if (cmd == EN_CHANGE) { numberErr = FetchNumber(hDlg, kDHorizontal, gDocDesc->bounds.left, gDocDesc->bounds.right, &x); if (numberErr == noErr && x != gPointH) { // different number, update gPointH = (short)x; // Do Filtering operation UpdateProxyView(globals); // Invalidate Proxy Item GetWindowRect(GetDlgItem(hDlg, kDProxyItem), &imageRect); ScreenToClient (hDlg, (LPPOINT)&imageRect); ScreenToClient (hDlg, (LPPOINT)&(imageRect.right)); InvalidateRect (hDlg, &imageRect, FALSE); } } } break; case kDSize: if (Validate(globals, hDlg, &lastItem)) { if (cmd == CBN_SELENDOK) { gXFactor = GetSizePopUpMenu(hDlg); // Do Filtering operation UpdateProxyView(globals); // Invalidate Proxy Item GetWindowRect(GetDlgItem(hDlg, kDProxyItem), &imageRect); ScreenToClient (hDlg, (LPPOINT)&imageRect); ScreenToClient (hDlg, (LPPOINT)&(imageRect.right)); InvalidateRect (hDlg, &imageRect, FALSE); return FALSE; } } break; case kDGaussianBlurData: if (Validate(globals, hDlg, &lastItem)) { if (cmd == BN_CLICKED) { gGaussianBlurData = !gGaussianBlurData; SetCheckBoxState (hDlg, kDGaussianBlurData, gGaussianBlurData); // Do Filtering operation UpdateProxyView(globals); // Invalidate Proxy Item GetWindowRect(GetDlgItem(hDlg, kDProxyItem), &imageRect); ScreenToClient (hDlg, (LPPOINT)&imageRect); ScreenToClient (hDlg, (LPPOINT)&(imageRect.right)); InvalidateRect (hDlg, &imageRect, FALSE); return FALSE; } } break; case kDAllLayers: if (Validate(globals, hDlg, &lastItem)) { if (cmd == BN_CLICKED) { gViewAllLayerData = !gViewAllLayerData; SetCheckBoxState (hDlg, kDAllLayers, gViewAllLayerData); ShowHideItem(hDlg, kDWarningText, gViewAllLayerData); // Do Filtering operation UpdateProxyView(globals); // Invalidate Proxy Item GetWindowRect(GetDlgItem(hDlg, kDProxyItem), &imageRect); ScreenToClient (hDlg, (LPPOINT)&imageRect); ScreenToClient (hDlg, (LPPOINT)&(imageRect.right)); InvalidateRect (hDlg, &imageRect, FALSE); return FALSE; } } break; case kDLayersPopUp: if (Validate(globals, hDlg, &lastItem)) { if (cmd == CBN_SELENDOK) { HWND hWnd = GetDlgItem(hDlg, kDLayersPopUp); if (hWnd == NULL) break; gViewLayerIndex = (int16)SendMessage(hWnd, CB_GETCURSEL, 0, 0); if (gViewLayerIndex == 0) { SetCheckBoxState(hDlg, kDAllLayers, gViewAllLayerData); PIEnableControl(hDlg, kDAllLayers); } else { gViewAllLayerData = false; SetCheckBoxState(hDlg, kDAllLayers, false); PIDisableControl(hDlg, kDAllLayers); } // Do Filtering operation UpdateProxyView(globals); // Invalidate Proxy Item GetWindowRect(GetDlgItem(hDlg, kDProxyItem), &imageRect); ScreenToClient (hDlg, (LPPOINT)&imageRect); ScreenToClient (hDlg, (LPPOINT)&(imageRect.right)); InvalidateRect (hDlg, &imageRect, FALSE); return FALSE; } } break; case kDDocPopUp: if (Validate(globals, hDlg, &lastItem)) { if (cmd == CBN_SELENDOK) { HWND hWnd = GetDlgItem(hDlg, kDDocPopUp); if (hWnd == NULL) break; int16 docIndex = (int16)SendMessage(hWnd, CB_GETCURSEL, 0, 0); // point the global doc desc at the selected doc desc gDocDesc = gDocInfo; while (docIndex-- > 0 && gDocDesc != NULL) gDocDesc = gDocDesc->next; gViewLayerIndex = 0; gViewAllLayerData = 0; SetCheckBoxState(hDlg, kDAllLayers, gViewAllLayerData); PIEnableControl(hDlg, kDAllLayers); InitializeMenu(globals, hDlg, kDLayersPopUp); SendMessage(GetDlgItem(hDlg, kDLayersPopUp), CB_SETCURSEL, 0, 0); // reset the proxy stuff to use the new doc desc ReleaseProxyMemory(globals); GetProxyItemRect(hDlg, &gProxyRect); CalcProxyScaleFactor(&gDocDesc->bounds, &gProxyRect, &gScaleFactor); UpdateProxyView(globals); // Invalidate Proxy Item GetWindowRect(GetDlgItem(hDlg, kDProxyItem), &imageRect); ScreenToClient (hDlg, (LPPOINT)&imageRect); ScreenToClient (hDlg, (LPPOINT)&(imageRect.right)); InvalidateRect (hDlg, &imageRect, FALSE); return FALSE; } } break; case OK: if (cmd == BN_CLICKED) { lastItem = kDVertical; // force validate if (Validate(globals, hDlg, &lastItem)) { lastItem = kDHorizontal; if (Validate(globals, hDlg, &lastItem)) { EndDialog(hDlg, item); return TRUE; } } } else { (void) Validate(globals, hDlg, &lastItem); } break; case CANCEL: if (cmd == BN_CLICKED) { gPointV = lastV; gPointH = lastH; gXFactor = lastXFactor; gGaussianBlurData = lastGaussianBlurData; gViewAllLayerData = lastAllLayerData; gViewLayerIndex = lastLayerIndex; gResult = userCanceledErr; EndDialog(hDlg, item); // WIN32 change return TRUE; } // don't ever validate during cancel break; default: break; } // switch (item) break; // case WM_COMMAND default: return FALSE; break; } // switch return TRUE; }