1 //#**************************************************************
2 //# filename:             GeneralOptions.cpp
3 //#
4 //# author:               Gerstmayr, Vetyukov
5 //#
6 //# generated:
7 //# description:
8 //# comments:
9 //#
10 //# Copyright (c) 2003-2013 Johannes Gerstmayr, Linz Center of Mechatronics GmbH, Austrian
11 //# Center of Competence in Mechatronics GmbH, Institute of Technical Mechanics at the
12 //# Johannes Kepler Universitaet Linz, Austria. All rights reserved.
13 //#
14 //# This file is part of HotInt.
15 //# HotInt is free software: you can redistribute it and/or modify it under the terms of
16 //# the HOTINT license. See folder 'licenses' for more details.
17 //#
18 //# bug reports are welcome!!!
19 //# WWW:		www.hotint.org
20 //# email:	bug_reports@hotint.org or support@hotint.org
21 //#***************************************************************************************
22 
23 
24 
25 #include "stdafx.h"
26 #include "WCDriver3DDlg.h"
27 #include "WCDriver3D.h"
28 #include "FEdrawingOptions.h"
29 #include "fieldvariabledescriptor.h"
30 
31 
32 // GeneralOptions-Dialogfeld
33 
34 //IMPLEMENT_DYNAMIC(FEDrawingOptions, CDialog)
FEDrawingOptions()35 FEDrawingOptions::FEDrawingOptions(/*CWnd* pParent*/)
36 	: CDialog(FEDrawingOptions::IDD, NULL)
37 	, m_maxstress(0), m_minstress(0)
38 	, m_check_maxstress(FALSE)
39 	, m_check_minstress(FALSE)
40 	, m_colortiling(0)
41 	, m_check_greymode(FALSE)
42 	, m_check_invertcolors(FALSE)
43 	, m_check_nonlinearscale(FALSE)
44 	, m_check_hidelegend(FALSE)
45 	, m_check_showmesh(TRUE)
46 	, m_check_showsolution(FALSE)
47 	, m_check_chladni_isolines(FALSE)
48 	, m_check_draw_flat_elements(FALSE)
49 	, m_elem_line_thickness(1)
50 	, m_shrinking_factor(0)
51 	, m_axis_tiling(0)
52 	, m_axis_tiling_text(0)
53 	, m_axis_resolution(0)
54 	, m_axis_resolution_text(0)
55 	, m_crosssection_res(0)
56 	, m_crosssection_res_text(0)
57 	, m_solidFE_resolution(0)
58 	, m_solidFE_resolution_text(0)
59 	, m_colortilingtext(_T(""))
60 	, m_deformation_scale_factor(0)
61 	, m_check_plot_interpolated(FALSE)
62 	, m_combo_units(0)
63 	, m_check_shownodes(FALSE)
64 	, m_node_draw_size(0)
65 	, m_check_shownodenumbers(FALSE)
66 	, m_check_surface_elements_only(FALSE)
67 	, m_check_animate_scaling_factor(FALSE)
68 	, m_check_scale_rigid_body_disp(FALSE)
69 	, m_check_auto_adjust_range(FALSE)
70 {
71 }
72 
73 
Create(CWnd * pParent)74 void FEDrawingOptions::Create(CWnd * pParent)
75 {
76 	LoadData();
77 
78 	CDialog::Create(IDD,pParent);
79 
80 	// we populate the combo box with the types for the post-processing
81 	const TArray<FieldVariableDescriptor> & variables = pWCDI->GetAvailableFieldVariables();
82 	m_comboFieldVariableTypes.AddString("body color");
83 	for(int i = 1; i <= variables.Length(); i++)
84 	{
85 		const FieldVariableDescriptor & fvd = variables(i);
86 		if(!fvd.IsNotForPlotting())
87 			if(m_comboFieldVariableTypes.FindString(0, fvd.GetTextualIdentifierWithoutComponents()) == CB_ERR)
88 				m_comboFieldVariableTypes.AddString(fvd.GetTextualIdentifierWithoutComponents());
89 	}
90 
91 	control_combo_units.Clear();
92 	control_combo_units.AddString("N, m");
93 	control_combo_units.AddString("N, mm");
94 
95 	control_slider_colortiling.SetRange(1,33); //needs to be done before LoadData!
96 	slider_axis_tiling.SetRange(1,32);
97 	slider_axis_resolution.SetRange(1,32);
98 	slider_crosssection_res.SetRange(1,8);
99 	slider_solidFE_resolution.SetRange(1,8);
100 
101 	slider_axis_tiling.SetTicFreq(2); //draw less ticks than 32, otherwise it looks very dense
102 	slider_axis_resolution.SetTicFreq(2);
103 
104 	//these commands help that the sliders are correctly refreshed when dialog is opened the second time
105 	slider_axis_tiling.SetPos(m_axis_tiling+100);
106 	slider_axis_resolution.SetPos(m_axis_resolution+100);
107 	slider_crosssection_res.SetPos(m_crosssection_res+100);
108 	slider_solidFE_resolution.SetPos(m_solidFE_resolution+100);
109 	control_slider_colortiling.SetPos(m_colortiling+100);
110 
111 	if (pWCDI->GetIOption(103) != 33)
112 	{
113 		char str[20];
114 		sprintf(str, "%d", pWCDI->GetIOption(103));
115 		m_colortilingtext = CString(str);
116 	}
117 	else
118 		m_colortilingtext = CString("no color tiling");
119 
120 	UpdateData(FALSE);
121 
122 	CRect r;
123 	pParent->GetWindowRect(&r);
124 	CPoint p(r.right - 400,r.bottom - 0);
125 	GetWindowRect(&r);
126 //	ClientToScreen(&r);
127 	r.top = p.y - r.Height();
128 	r.left = p.x - r.Width();
129 	r.right = p.x;
130 	r.bottom = p.y;
131 	MoveWindow(r,FALSE);
132 	ShowWindow(SW_SHOW);
133 
134 	RedrawWindow();
135 
136 }
137 
LoadData()138 void FEDrawingOptions::LoadData()
139 {
140 	//+++++++++++++++++++++++++++++++++++++++++++++++
141 	//graphics/postprocessing:
142 	m_check_maxstress          = pWCDI->GetIOption(100);
143 	m_check_minstress          = pWCDI->GetIOption(101);
144 	m_maxstress                = pWCDI->GetDOption(100);
145 	m_minstress                = pWCDI->GetDOption(101);
146 	m_current_field_variable_index = pWCDI->GetIndexOfActualPostProcessingFieldVariable();
147 	m_colortiling              = pWCDI->GetIOption(103);
148 	m_check_greymode           = pWCDI->GetIOption(105);
149 	m_check_invertcolors       = pWCDI->GetIOption(107);
150 	m_check_nonlinearscale     = pWCDI->GetIOption(108);
151 	m_check_hidelegend         = pWCDI->GetIOption(141);
152 	m_check_auto_adjust_range	 = pWCDI->GetIOption(102);
153 
154 	m_check_showmesh           = pWCDI->GetIOption(110);
155 	m_check_showsolution       = pWCDI->GetIOption(111);
156 	m_check_chladni_isolines   = pWCDI->GetIOption(116);
157 	m_check_plot_interpolated  = pWCDI->GetIOption(118);
158 
159 	m_check_draw_flat_elements = pWCDI->GetIOption(117);
160 	m_elem_line_thickness		   = pWCDI->GetDOption(102);
161 	m_shrinking_factor		     = pWCDI->GetDOption(106);
162 	m_deformation_scale_factor = pWCDI->GetDOption(105);
163 
164 	//tiling:
165 	m_axis_tiling						= pWCDI->GetIOption(136)/2;
166 	m_axis_resolution				= pWCDI->GetIOption(137);
167 	m_crosssection_res			= pWCDI->GetIOption(138);
168 	m_solidFE_resolution		= pWCDI->GetIOption(139);
169 
170 	m_combo_units						= pWCDI->GetIOption(143);
171 
172 	m_check_shownodes       = pWCDI->GetIOption(145);
173 	m_node_draw_size				= pWCDI->GetDOption(124);
174 	m_check_shownodenumbers = pWCDI->GetIOption(148);
175 	m_check_surface_elements_only = pWCDI->GetIOption(146);
176 
177 	m_check_animate_scaling_factor = pWCDI->GetIOption(150);
178 	m_check_scale_rigid_body_disp = pWCDI->GetIOption(151);
179 }
180 
WriteData()181 void FEDrawingOptions::WriteData()
182 {
183 	//graphics/postprocessing:
184 	//integer/bool:
185 	pWCDI->SetIOption(100, (int)m_check_maxstress);
186 	pWCDI->SetIOption(101, (int)m_check_minstress);
187 	pWCDI->SetIOption(103, m_colortiling);
188 	pWCDI->SetIOption(105, (int)m_check_greymode);
189 	pWCDI->SetIOption(107, (int)m_check_invertcolors);
190 	pWCDI->SetIOption(108, (int)m_check_nonlinearscale);
191 	pWCDI->SetIOption(141, (int)m_check_hidelegend);
192 	pWCDI->SetIOption(102, (int)m_check_auto_adjust_range);
193 
194 	pWCDI->SetIOption(110, m_check_showmesh       );
195 	pWCDI->SetIOption(111, m_check_showsolution   );
196 	pWCDI->SetIOption(116, m_check_chladni_isolines);
197 	pWCDI->SetIOption(117, m_check_draw_flat_elements);
198 	pWCDI->SetIOption(118, m_check_plot_interpolated);
199 	pWCDI->SetIndexOfActualPostProcessingFieldVariable(m_current_field_variable_index);
200 
201 	// double values:
202 	pWCDI->SetDOption(100, m_maxstress);
203 	pWCDI->SetDOption(101, m_minstress);
204 	pWCDI->SetDOption(102, m_elem_line_thickness);
205 	pWCDI->SetDOption(106, m_shrinking_factor);
206 	pWCDI->SetDOption(105, m_deformation_scale_factor);
207 
208 	//tiling:
209 	pWCDI->GetIOption(136)	= 2*m_axis_tiling					;
210 	pWCDI->GetIOption(137)	= m_axis_resolution			;
211 	pWCDI->GetIOption(138)	= m_crosssection_res		;
212 	pWCDI->GetIOption(139)	= m_solidFE_resolution	;
213 
214 	pWCDI->GetIOption(143) = 	m_combo_units;
215 	pWCDI->GetIOption(145) =  m_check_shownodes;
216 	pWCDI->GetIOption(147) =  3;
217 	pWCDI->GetIOption(148) = m_check_shownodenumbers;
218 	pWCDI->GetDOption(124) =  m_node_draw_size;
219 
220 	pWCDI->GetIOption(146) = m_check_surface_elements_only;
221 
222 	pWCDI->GetIOption(150) = m_check_animate_scaling_factor;
223 	pWCDI->GetIOption(151) = m_check_scale_rigid_body_disp;
224 
225 	pGLDrawWnd->SetAnimateScalingTimer(m_check_animate_scaling_factor);
226 }
227 
DoDataExchange(CDataExchange * pDX)228 void FEDrawingOptions::DoDataExchange(CDataExchange* pDX)
229 {
230 	CDialog::DoDataExchange(pDX);
231 
232 	DDX_Text(pDX, IDC_MAXSTRESS, m_maxstress);
233 	DDX_Text(pDX, IDC_MINSTRESS, m_minstress);
234 	DDX_Check(pDX, IDC_CHECK_MAXSTRESS, m_check_maxstress);
235 	DDX_Check(pDX, IDC_CHECK_MINSTRESS, m_check_minstress);
236 	DDX_Slider(pDX, IDC_SLIDER_COLORTILING, m_colortiling);
237 	DDX_Control(pDX, IDC_SLIDER_COLORTILING, control_slider_colortiling);
238 	DDX_Check(pDX, IDC_CHECK_GREYMODE, m_check_greymode);
239 	DDX_Check(pDX, IDC_CHECK_INVERTCOLORS, m_check_invertcolors);
240 	DDX_Check(pDX, IDC_CHECK_NONLINEARSCALE, m_check_nonlinearscale);
241 	DDX_Check(pDX, IDC_CHECK_HIDELEGEND, m_check_hidelegend);
242 	DDX_Check(pDX, IDC_CHECK_SHOWMESH, m_check_showmesh);
243 	DDX_Check(pDX, IDC_SHOWSOLUTION, m_check_showsolution);
244 	DDX_Check(pDX, IDC_CHECK_CHLADNI_ISOLINES, m_check_chladni_isolines);
245 	DDX_Check(pDX, IDC_DRAW_FLAT_ELEMENTS, m_check_draw_flat_elements);
246 	DDX_Text(pDX, IDC_ELEM_LINE_THICKNESS, m_elem_line_thickness);
247 	DDV_MinMaxDouble(pDX, m_elem_line_thickness, 0.01, 100);
248 	DDX_Text(pDX, IDC_EDIT_SHRINKING_FACTOR, m_shrinking_factor);
249 	DDX_Slider(pDX, IDC_SLIDER_AXISTILING, m_axis_tiling);
250 	DDX_Text(pDX, IDC_STATIC_AXISTILING, m_axis_tiling_text);
251 	DDX_Control(pDX, IDC_SLIDER_AXISTILING, slider_axis_tiling);
252 	DDX_Control(pDX, IDC_SLIDER_AXISRESOLUTION, slider_axis_resolution);
253 	DDX_Slider(pDX, IDC_SLIDER_AXISRESOLUTION, m_axis_resolution);
254 	DDX_Text(pDX, IDC_STATIC_AXISRESOLUTION, m_axis_resolution_text);
255 	DDX_Control(pDX, IDC_SLIDER_CROSSSECTION_RES, slider_crosssection_res);
256 	DDX_Slider(pDX, IDC_SLIDER_CROSSSECTION_RES, m_crosssection_res);
257 	DDX_Text(pDX, IDC_STATIC_CROSSSECTION_RES, m_crosssection_res_text);
258 	DDX_Control(pDX, IDC_SLIDER_FERESOLUTION, slider_solidFE_resolution);
259 	DDX_Slider(pDX, IDC_SLIDER_FERESOLUTION, m_solidFE_resolution);
260 	DDX_Text(pDX, IDC_STATIC_FERESOLUTION, m_solidFE_resolution_text);
261 	DDX_Text(pDX, IDC_STATIC_COLORTILINGTEXT, m_colortilingtext);
262 
263 	DDX_Text(pDX, IDC_EDIT_DEFORMATION_SCALE_FACTOR, m_deformation_scale_factor);
264 	//DDV_MinMaxDouble(pDX, m_deformation_scale_factor, 0, 1e30);
265 	DDX_Check(pDX, IDC_PLOT_INTERPOLATED, m_check_plot_interpolated);
266 	DDX_CBIndex(pDX, IDC_COMBO_UNITS, m_combo_units);
267 	DDX_Control(pDX, IDC_COMBO_UNITS, control_combo_units);
268 	DDX_Check(pDX, IDC_CHECK_SHOWNODES, m_check_shownodes);
269 	DDX_Text(pDX, IDC_NODE_SIZE, m_node_draw_size);
270 	DDV_MinMaxDouble(pDX, m_node_draw_size, 0, 1e30);
271 	DDX_Check(pDX, IDC_CHECK_SHOWNODES_NUMBERS, m_check_shownodenumbers);
272 	DDX_Check(pDX, IDC_PLOT_SURFACEONLY, m_check_surface_elements_only);
273 	DDX_Check(pDX, IDC_CHECK_ANIMATE_SCALING_FACTOR, m_check_animate_scaling_factor);
274 	DDX_Check(pDX, IDC_CHECK_SCALE_RIGID_BODY_DISP, m_check_scale_rigid_body_disp);
275 	DDX_Control(pDX, IDC_COMBO_FIELD_VARIABLE_TYPE, m_comboFieldVariableTypes);
276 	DDX_Control(pDX, IDC_COMBO_FIELD_VARIABLE_COMPONENTS, m_comboFieldVariableComponents);
277 
278 	DDX_Check(pDX, IDC_CHECK_AUTO_ADJUST_RANGE, m_check_auto_adjust_range);
279 	GetDlgItem(IDC_BUTTON_ADJUST_RANGE)->EnableWindow(!m_check_auto_adjust_range);
280 
281 	// special treatment of the selector of the field variable:
282 	// the result is determined by the state of the two combo-boxes
283 	const TArray<FieldVariableDescriptor> & variables = pWCDI->GetAvailableFieldVariables();
284 	if(pDX->m_bSaveAndValidate)
285 	{
286 		// reading the data from the dialog
287 		if(m_comboFieldVariableTypes.GetCurSel() == 0)
288 			m_current_field_variable_index = 0;		// body color
289 		else
290 		{
291 			CString textType;
292 			m_comboFieldVariableTypes.GetLBText(m_comboFieldVariableTypes.GetCurSel(), textType);
293 			CString textComponents;
294 			if(m_comboFieldVariableComponents.GetCurSel() != CB_ERR)
295 				m_comboFieldVariableComponents.GetLBText(m_comboFieldVariableComponents.GetCurSel(), textComponents);
296 			int firstTypeMatchingIndex = 0;
297 			for(int i = 1; i <= variables.Length(); i++)
298 			{
299 				const FieldVariableDescriptor & fvd = variables(i);
300 				if(textType.Compare(fvd.GetTextualIdentifierWithoutComponents()) == 0)
301 				{
302 					// the type is the same - let's check the components
303 					if(firstTypeMatchingIndex == 0)
304 						firstTypeMatchingIndex = i;
305 					if(textComponents.Compare(fvd.GetTextualIdentifierComponentsOnly()) == 0)
306 					{
307 						// found a matching entry
308 						m_current_field_variable_index = i;
309 						firstTypeMatchingIndex = 0;
310 						break;
311 					}
312 				}
313 			}
314 			// did not find an exact matching entry - let's select the first entry with the matching type;
315 			// this behavior is suitable for the selection change in m_comboFieldVariableTypes
316 			if(firstTypeMatchingIndex != 0)
317 				m_current_field_variable_index = firstTypeMatchingIndex;
318 		}
319 	}
320 	else
321 	{
322 		// writing the data to the dialog
323 		m_comboFieldVariableComponents.ResetContent();
324 		m_comboFieldVariableComponents.EnableWindow(FALSE);
325 		if(m_current_field_variable_index == 0 || m_current_field_variable_index > variables.Length())
326 			m_comboFieldVariableTypes.SetCurSel(0);		// body color
327 		else
328 		{
329 			const FieldVariableDescriptor & fvd = variables(m_current_field_variable_index);
330 			CString textType = fvd.GetTextualIdentifierWithoutComponents();
331 			CString textComponents = fvd.GetTextualIdentifierComponentsOnly();
332 			m_comboFieldVariableTypes.SelectString(0, textType);
333 			// the combo with the components needs to be populated and set to the right position
334 			// we browse thru all variables with the same type name
335 			for(int i = 1; i <= variables.Length(); i++)
336 			{
337 				const FieldVariableDescriptor & fvd1 = variables(i);
338 				if(*fvd1.GetTextualIdentifierComponentsOnly() != '\0')		// there are some components
339 					if(textType.Compare(fvd1.GetTextualIdentifierWithoutComponents()) == 0)		// and the type is the same
340 					{
341 						m_comboFieldVariableComponents.EnableWindow(TRUE);
342 						m_comboFieldVariableComponents.AddString(fvd1.GetTextualIdentifierComponentsOnly());
343 					}
344 			}
345 			// and finally we select the corresponding string in the combo with components
346 			m_comboFieldVariableComponents.SelectString(-1, fvd.GetTextualIdentifierComponentsOnly());
347 		}
348 	}
349 }
350 
351 
BEGIN_MESSAGE_MAP(FEDrawingOptions,CDialog)352 BEGIN_MESSAGE_MAP(FEDrawingOptions, CDialog)
353 	ON_BN_CLICKED(IDOK, OnBnClickedOk)
354 	ON_EN_KILLFOCUS(IDC_MAXSTRESS, OnEnKillfocusMaxstress)
355 	ON_EN_KILLFOCUS(IDC_MINSTRESS, OnEnKillfocusMinstress)
356 	ON_BN_CLICKED(IDC_CHECK_MINSTRESS, OnBnClickedCheckMinstress)
357 	ON_BN_CLICKED(IDC_CHECK_MAXSTRESS, OnBnClickedCheckMaxstress)
358 	ON_BN_CLICKED(IDC_BUTTON_UPDATEOPTIONS, OnBnClickedButtonUpdateoptions)
359 	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_COLORTILING, OnNMCustomdrawSliderColortiling)
360 	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_AXISTILING, OnNMCustomdrawSliderAxistiling)
361 	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_AXISRESOLUTION, OnNMCustomdrawSliderAxisresolution)
362 	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_CROSSSECTION_RES, OnNMCustomdrawSliderCrosssectionRes)
363 	ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_FERESOLUTION, OnNMCustomdrawSliderFeresolution)
364 	ON_CBN_SELCHANGE(IDC_COMBO_FIELD_VARIABLE_TYPE, &FEDrawingOptions::OnCbnSelchangeComboFieldVariableType)
365 	ON_BN_CLICKED(IDC_CHECK_AUTO_ADJUST_RANGE, &FEDrawingOptions::OnBnClickedCheckAutoAdjustRange)
366 	ON_BN_CLICKED(IDC_BUTTON_ADJUST_RANGE, &FEDrawingOptions::OnBnClickedButtonAdjustRange)
367 END_MESSAGE_MAP()
368 
369 
370 // FEDrawingOptions-Meldungshandler
371 
372 void FEDrawingOptions::OnBnClickedOk()
373 {
374 	OnBnClickedButtonUpdateoptions();
375 
376 	OnOK();
377 }
378 
OnOK()379 void FEDrawingOptions::OnOK()
380 {
381 	DestroyWindow();
382 }
383 
OnClose()384 void FEDrawingOptions::OnClose()
385 {
386 	DestroyWindow();
387 }
388 
OnCancel()389 void FEDrawingOptions::OnCancel()
390 {
391 	DestroyWindow();
392 }
393 
OnEnKillfocusMaxstress()394 void FEDrawingOptions::OnEnKillfocusMaxstress()
395 {
396 
397 }
398 
OnEnKillfocusMinstress()399 void FEDrawingOptions::OnEnKillfocusMinstress()
400 {
401 }
402 
OnBnClickedCheckMaxstress()403 void FEDrawingOptions::OnBnClickedCheckMaxstress()
404 {
405 }
406 
OnBnClickedCheckMinstress()407 void FEDrawingOptions::OnBnClickedCheckMinstress()
408 {
409 }
410 
411 
OnBnClickedButtonUpdateoptions()412 void FEDrawingOptions::OnBnClickedButtonUpdateoptions()
413 {
414 	UpdateData(TRUE);
415 	WriteData();
416 
417 	pGLDrawWnd->Redraw();
418 }
419 
OnNMCustomdrawSliderColortiling(NMHDR * pNMHDR,LRESULT * pResult)420 void FEDrawingOptions::OnNMCustomdrawSliderColortiling(NMHDR *pNMHDR, LRESULT *pResult)
421 {
422 	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
423 
424 	UpdateData(TRUE);
425 	if (m_colortiling != 33)
426 	{
427 		char str[20];
428 		sprintf(str, "%d", m_colortiling);
429 		m_colortilingtext = CString(str);
430 	}
431 	else
432 		m_colortilingtext = CString("no color tiling");
433 
434 	UpdateData(FALSE);
435 
436 	*pResult = 0;
437 }
438 
439 
OnNMCustomdrawSliderAxistiling(NMHDR * pNMHDR,LRESULT * pResult)440 void FEDrawingOptions::OnNMCustomdrawSliderAxistiling(NMHDR *pNMHDR, LRESULT *pResult)
441 {
442 	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
443 
444 	UpdateData(TRUE);
445 	m_axis_tiling_text = 2*m_axis_tiling;
446 	UpdateData(FALSE);
447 
448 	*pResult = 0;
449 
450 }
451 
452 
OnNMCustomdrawSliderAxisresolution(NMHDR * pNMHDR,LRESULT * pResult)453 void FEDrawingOptions::OnNMCustomdrawSliderAxisresolution(NMHDR *pNMHDR, LRESULT *pResult)
454 {
455 	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
456 
457 	UpdateData(TRUE);
458 	m_axis_resolution_text = m_axis_resolution;
459 	UpdateData(FALSE);
460 
461 	*pResult = 0;
462 }
463 
OnNMCustomdrawSliderCrosssectionRes(NMHDR * pNMHDR,LRESULT * pResult)464 void FEDrawingOptions::OnNMCustomdrawSliderCrosssectionRes(NMHDR *pNMHDR, LRESULT *pResult)
465 {
466 	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
467 
468 	UpdateData(TRUE);
469 	m_crosssection_res_text = m_crosssection_res;
470 	UpdateData(FALSE);
471 
472 	*pResult = 0;
473 }
474 
OnNMCustomdrawSliderFeresolution(NMHDR * pNMHDR,LRESULT * pResult)475 void FEDrawingOptions::OnNMCustomdrawSliderFeresolution(NMHDR *pNMHDR, LRESULT *pResult)
476 {
477 	LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
478 
479 	UpdateData(TRUE);
480 	m_solidFE_resolution_text = m_solidFE_resolution;
481 	UpdateData(FALSE);
482 
483 	*pResult = 0;
484 }
485 
486 
OnCbnSelchangeComboFieldVariableType()487 void FEDrawingOptions::OnCbnSelchangeComboFieldVariableType()
488 {
489 	UpdateData(TRUE);
490 	UpdateData(FALSE);
491 }
492 
OnBnClickedCheckAutoAdjustRange()493 void FEDrawingOptions::OnBnClickedCheckAutoAdjustRange()
494 {
495 	UpdateData(TRUE);
496 	GetDlgItem(IDC_BUTTON_ADJUST_RANGE)->EnableWindow(!m_check_auto_adjust_range);
497 	m_check_auto_adjust_range	 = pWCDI->GetIOption(102);
498 }
499 
OnBnClickedButtonAdjustRange()500 void FEDrawingOptions::OnBnClickedButtonAdjustRange()
501 {
502 	pWCDI->SetIOption(102, 1);
503 	pGLDrawWnd->Redraw();
504 	pWCDI->SetIOption(102, 0);
505 }
506