//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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}
Esempio n. 6
0
//-------------------------------------------------------------------------------
//
// 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;
}