Click here to Skip to main content
15,884,176 members
Articles / Desktop Programming / WTL

AutoSizeDlg - an autoresizing class for ATL/WTL

Rate me:
Please Sign up or sign in to vote.
3.88/5 (5 votes)
16 Jul 2006MIT12 min read 46.4K   1.9K   31  
AutoSizeDlg - an autoresizing class for ATL/WTL
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>autosizedlg: atlautosizedlg.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="annotated.html"><span>Classes</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
  </ul></div>
<h1>atlautosizedlg.h</h1><a href="atlautosizedlg_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00041"></a>00041 <span class="preprocessor">#pragma once</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span>
<a name="l00043"></a>00043 <span class="preprocessor">#ifndef __ATLAUTOSIZEDLG_H__</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span><span class="preprocessor">#define __ATLAUTOSIZEDLG_H__</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span>
<a name="l00046"></a>00046 <span class="preprocessor">#ifndef __ATLWIN_H__</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#error atlautosizedlg.h requires atlwin.h to be included first</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00049"></a>00049 <span class="preprocessor"></span>
<a name="l00050"></a>00050 <span class="comment">//</span>
<a name="l00051"></a>00051 
<a name="l00052"></a><a class="code" href="namespace_a_t_l.html">00052</a> <span class="keyword">namespace </span>ATL
<a name="l00053"></a>00053 {
<a name="l00054"></a>00054 
<a name="l00055"></a>00055 <span class="comment">//</span>
<a name="l00056"></a>00056 
<a name="l00057"></a>00057 <span class="comment">// #define TRACEAUTOSIZE ///&lt; Define this to see in the Output window the tracing of the base size of the cols and rows</span>
<a name="l00058"></a>00058 <span class="comment">// #define TRACEAUTOSIZE2 ///&lt; Define this to see in the Output window the tracing of the calced size of the cols and rows</span>
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 <span class="comment">//</span>
<a name="l00061"></a>00061 
<a name="l00063"></a>00063 
<a name="l00065"></a>00065 
<a name="l00066"></a>00066 
<a name="l00070"></a><a class="code" href="atlautosizedlg_8h.html#7e4694134bbcb4dcc96d68d495b64630">00070</a> <span class="preprocessor">#define TRANSPARENT_LIST(theClass, ...) \</span>
<a name="l00071"></a>00071 <span class="preprocessor">        BOOL HandleTransparentMap(CDCHandle dc = NULL) \</span>
<a name="l00072"></a>00072 <span class="preprocessor">        { \</span>
<a name="l00073"></a>00073 <span class="preprocessor">                int tcCtrls[] = {0, __VA_ARGS__, INT_MAX}; \</span>
<a name="l00074"></a>00074 <span class="preprocessor">                if (dc) { \</span>
<a name="l00075"></a>00075 <span class="preprocessor">                        int *ptcCtrl = tcCtrls + 1; \</span>
<a name="l00076"></a>00076 <span class="preprocessor">                        while (*ptcCtrl != INT_MAX) { \</span>
<a name="l00077"></a>00077 <span class="preprocessor">                                DrawTransparentCtrl(dc, *ptcCtrl); \</span>
<a name="l00078"></a>00078 <span class="preprocessor">                                ptcCtrl++; \</span>
<a name="l00079"></a>00079 <span class="preprocessor">                        } \</span>
<a name="l00080"></a>00080 <span class="preprocessor">                } else { \</span>
<a name="l00081"></a>00081 <span class="preprocessor">                        int *ptcCtrl = tcCtrls + 1; \</span>
<a name="l00082"></a>00082 <span class="preprocessor">                        while (*ptcCtrl != INT_MAX) { \</span>
<a name="l00083"></a>00083 <span class="preprocessor">                                InitializeTransparentCtrl(*ptcCtrl); \</span>
<a name="l00084"></a>00084 <span class="preprocessor">                                ptcCtrl++; \</span>
<a name="l00085"></a>00085 <span class="preprocessor">                        } \</span>
<a name="l00086"></a>00086 <span class="preprocessor">                } \</span>
<a name="l00087"></a>00087 <span class="preprocessor">                return TRUE; \</span>
<a name="l00088"></a>00088 <span class="preprocessor">        }</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span>        
<a name="l00091"></a>00091 
<a name="l00095"></a><a class="code" href="atlautosizedlg_8h.html#b099ea593856c521ab92e8ba73677e5f">00095</a> <span class="preprocessor">#define BEGIN_WINDOW_MAP(theClass, </span><span class="comment">/*LeftRightBorder, TopBottomBorder, HGap, VGap*/</span>...) \
<a name="l00096"></a>00096         static CWindowMapStruct* GetWindowMap() \
<a name="l00097"></a>00097         { \
<a name="l00098"></a>00098                 ATLASSERT(sizeof(int) == sizeof(CCtrlCounter) &amp;&amp; "\"Strange\" compiler. The library is not compatible"); \
<a name="l00099"></a>00099                 CRowsIndex *p = NULL; p; \
<a name="l00100"></a>00100                 const int _auto = WMSRC_AUTO, _exp = WMSRC_EXPANDABLE, _contr = WMSRC_CONTRACTABLE, _eq = WMSRC_EQUAL, _gap = WMSRC_GAP, _gapm = WMSRC_GAPM, _nog = WMSRC_NOGAP, _ = WMSCTRL_EMPTY, __ = WMSCTRL_EMPTY, _r = WMSCTRL_EXPRIGHT, _d = WMSCTRL_EXPDOWN; \
<a name="l00101"></a>00101                 _auto; _exp; _contr; _eq; _gap, _gapm, _nog; _; __; _r; _d; \
<a name="l00102"></a>00102                 static CCtrlCounter s_iCtrls[] = {0, _FirstParam(__VA_ARGS__), _SecondParam(__VA_ARGS__), _ThirdParam(__VA_ARGS__), _FourthParam(__VA_ARGS__), 
<a name="l00103"></a>00103 
<a name="l00105"></a><a class="code" href="atlautosizedlg_8h.html#a687c84c6c79b8444d9c7aa17935317a">00105</a> <span class="preprocessor">#define END_WINDOW_MAP() \</span>
<a name="l00106"></a>00106 <span class="preprocessor">                }; ATLASSERT(!p); \</span>
<a name="l00107"></a>00107 <span class="preprocessor">                return (CWindowMapStruct*)s_iCtrls; \</span>
<a name="l00108"></a>00108 <span class="preprocessor">        }</span>
<a name="l00109"></a>00109 <span class="preprocessor"></span>
<a name="l00112"></a>00112 <span class="comment">//</span>
<a name="l00113"></a>00113 
<a name="l00115"></a>00115 
<a name="l00117"></a>00117 
<a name="l00118"></a>00118 
<a name="l00120"></a><a class="code" href="atlautosizedlg_8h.html#2d146a008903c66099978f35fdec09e8">00120</a> <span class="preprocessor">#define WMB_HEAD(...)   (_Init(p, (CRowsIndex*)_alloca(sizeof(CRowsIndex))), _Init(p, (CRowsIndex*)_alloca(sizeof(CRowsIndex))), _Init(p, (CRowsIndex*)_alloca(sizeof(CRowsIndex))), WMH_BEGIN), \</span>
<a name="l00121"></a>00121 <span class="preprocessor">                                                        CCtrlCounter(p-&gt;m_pPrev-&gt;m_pPrev) </span><span class="comment">/* Size */</span>, CCtrlCounter(p-&gt;m_pPrev) <span class="comment">/* NumRows */</span>, 0 <span class="comment">/*NumCtrls*/</span>, \
<a name="l00122"></a>00122                                                         0 <span class="comment">/*ColWidthFixed*/</span>, 0 <span class="comment">/*ColWidthMin*/</span>, 0 <span class="comment">/*ColWidthMax*/</span>, 0 <span class="comment">/*ColExpand*/</span>, 0 <span class="comment">/*ColContract*/</span>, \
<a name="l00123"></a>00123                                                         0 <span class="comment">/*RowHeightFixed*/</span>, 0 <span class="comment">/*RowHeightMin*/</span>, 0 <span class="comment">/*RowHeightMax*/</span>, 0 <span class="comment">/*RowExpand*/</span>, 0 <span class="comment">/*RowContract*/</span>, \
<a name="l00124"></a>00124                                                         CCtrlCounter(p) <span class="comment">/* NumCols */</span>, __VA_ARGS__, CCtrlCounter(p, 1, 3, WMH_END)
<a name="l00125"></a>00125 
<a name="l00127"></a><a class="code" href="atlautosizedlg_8h.html#bc1a8ec39a0b53476d6d6ecb20abad50">00127</a> <span class="preprocessor">#define WMB_END()               CCtrlCounter(p, -1, 1, _DeInit(p, WM_END))</span>
<a name="l00128"></a>00128 <span class="preprocessor"></span>
<a name="l00131"></a>00131 <span class="comment">//</span>
<a name="l00132"></a>00132 
<a name="l00134"></a>00134 
<a name="l00136"></a>00136 
<a name="l00137"></a>00137 
<a name="l00139"></a><a class="code" href="atlautosizedlg_8h.html#5fef604d8d22a817bea9475c71dcbace">00139</a> <span class="preprocessor">#define WMB_COL(_size)                                                  _size, WMSRCMM_SIZECALC, WMSRCMM_SIZECALC</span>
<a name="l00140"></a>00140 <span class="preprocessor"></span>
<a name="l00142"></a>00142 
<a name="l00145"></a><a class="code" href="atlautosizedlg_8h.html#ad8820a60bd898a58797c19393ba642e">00145</a> <span class="preprocessor">#define WMB_COLMIN(_size, _min)                                 _size, _min, WMSRCMM_SIZECALC</span>
<a name="l00146"></a>00146 <span class="preprocessor"></span>
<a name="l00148"></a>00148 
<a name="l00151"></a><a class="code" href="atlautosizedlg_8h.html#c99a190dce1172bc0becc4c4a237abf7">00151</a> <span class="preprocessor">#define WMB_COLMAX(_size, _max)                                 _size, WMSRCMM_SIZECALC, _max</span>
<a name="l00152"></a>00152 <span class="preprocessor"></span>
<a name="l00154"></a>00154 
<a name="l00158"></a><a class="code" href="atlautosizedlg_8h.html#c9a74d29308e2c3736601ff90aa23a2e">00158</a> <span class="preprocessor">#define WMB_COLMINMAX(_size, _min, _max)                _size, _min, _max</span>
<a name="l00159"></a>00159 <span class="preprocessor"></span>
<a name="l00161"></a>00161 
<a name="l00163"></a><a class="code" href="atlautosizedlg_8h.html#5a13555ab0c56c0ce9557eca70f37e5c">00163</a> <span class="preprocessor">#define WMB_COLNOMIN(_size)                                             _size, 0, WMSRCMM_SIZECALC</span>
<a name="l00164"></a>00164 <span class="preprocessor"></span>
<a name="l00166"></a>00166 
<a name="l00168"></a><a class="code" href="atlautosizedlg_8h.html#fd5833b41244b2f4f2224d1c7fdb975c">00168</a> <span class="preprocessor">#define WMB_COLNOMAX(_size)                                             _size, WMSRCMM_SIZECALC, WMSRCMM_MAXVAL</span>
<a name="l00169"></a>00169 <span class="preprocessor"></span>
<a name="l00171"></a>00171 
<a name="l00173"></a><a class="code" href="atlautosizedlg_8h.html#8abafc11a552a33b132e6b27be0b7331">00173</a> <span class="preprocessor">#define WMB_COLNOMINNOMAX(_size)                                _size, 0, WMSRCMM_MAXVAL</span>
<a name="l00174"></a>00174 <span class="preprocessor"></span>
<a name="l00176"></a>00176 
<a name="l00179"></a><a class="code" href="atlautosizedlg_8h.html#b29ec87eeaa11e02b20275a8319682fd">00179</a> <span class="preprocessor">#define WMB_COLMINNOMAX(_size, _min)                    _size, _min, WMSRCMM_MAXVAL</span>
<a name="l00180"></a>00180 <span class="preprocessor"></span>
<a name="l00182"></a>00182 
<a name="l00185"></a><a class="code" href="atlautosizedlg_8h.html#f6989dc902e3ca1323fc1c170b2172d3">00185</a> <span class="preprocessor">#define WMB_COLNOMINMAX(_size, _max)                    _size, 0, _max</span>
<a name="l00186"></a>00186 <span class="preprocessor"></span>
<a name="l00188"></a>00188 <span class="comment">//</span>
<a name="l00189"></a>00189 
<a name="l00191"></a>00191 
<a name="l00193"></a>00193 
<a name="l00194"></a>00194 
<a name="l00197"></a><a class="code" href="atlautosizedlg_8h.html#f7d624b5807ce8f3c96f75eb81edc58a">00197</a> <span class="preprocessor">#define WMB_ROW(_size, ...)                                             (_IncRow(p), WMR_BEGIN), _size, WMSRCMM_SIZECALC, WMSRCMM_SIZECALC, __VA_ARGS__, WMR_END</span>
<a name="l00198"></a>00198 <span class="preprocessor"></span>
<a name="l00200"></a>00200 
<a name="l00204"></a><a class="code" href="atlautosizedlg_8h.html#73b6393f0f542dc355b62961ca229f3b">00204</a> <span class="preprocessor">#define WMB_ROWMIN(_size, _min, ...)                    (_IncRow(p), WMR_BEGIN), _size, _min, WMSRCMM_SIZECALC, __VA_ARGS__, WMR_END</span>
<a name="l00205"></a>00205 <span class="preprocessor"></span>
<a name="l00207"></a>00207 
<a name="l00211"></a><a class="code" href="atlautosizedlg_8h.html#6f91bc8ebb02e5dc8648ab936a3c06b8">00211</a> <span class="preprocessor">#define WMB_ROWMAX(_size, _max, ...)                    (_IncRow(p), WMR_BEGIN), _size, WMSRCMM_SIZECALC, _max, __VA_ARGS__, WMR_END</span>
<a name="l00212"></a>00212 <span class="preprocessor"></span>
<a name="l00214"></a>00214 
<a name="l00219"></a><a class="code" href="atlautosizedlg_8h.html#c09fcca1af56a3718fe7c5dd892f1372">00219</a> <span class="preprocessor">#define WMB_ROWMINMAX(_size, _min, _max, ...)   (_IncRow(p), WMR_BEGIN), _size, _min, _max, __VA_ARGS__, WMR_END</span>
<a name="l00220"></a>00220 <span class="preprocessor"></span>
<a name="l00222"></a>00222 
<a name="l00225"></a><a class="code" href="atlautosizedlg_8h.html#13c7320d2f082bb8d773fa0ee66466de">00225</a> <span class="preprocessor">#define WMB_ROWNOMIN(_size)                                             (_IncRow(p), WMR_BEGIN), _size, 0, WMSRCMM_SIZECALC, __VA_ARGS__, WMR_END</span>
<a name="l00226"></a>00226 <span class="preprocessor"></span>
<a name="l00228"></a>00228 
<a name="l00231"></a><a class="code" href="atlautosizedlg_8h.html#f19421180abfeb7715da5ee164ccb133">00231</a> <span class="preprocessor">#define WMB_ROWNOMAX(_size)                                             (_IncRow(p), WMR_BEGIN), _size, WMSRCMM_SIZECALC, WMSRCMM_MAXVAL, __VA_ARGS__, WMR_END</span>
<a name="l00232"></a>00232 <span class="preprocessor"></span>
<a name="l00234"></a>00234 
<a name="l00237"></a><a class="code" href="atlautosizedlg_8h.html#152ab449f703ad55d962ca5d6e10fb62">00237</a> <span class="preprocessor">#define WMB_ROWNOMINNOMAX(_size)                                (_IncRow(p), WMR_BEGIN), _size, 0, WMSRCMM_MAXVAL, __VA_ARGS__, WMR_END</span>
<a name="l00238"></a>00238 <span class="preprocessor"></span>
<a name="l00240"></a>00240 
<a name="l00244"></a><a class="code" href="atlautosizedlg_8h.html#f5c1af9476b7aafc51f5b5e9feec1ef8">00244</a> <span class="preprocessor">#define WMB_ROWMINNOMAX(_size, _min)                    (_IncRow(p), WMR_BEGIN), _size, _min, WMSRCMM_MAXVAL, __VA_ARGS__, WMR_END</span>
<a name="l00245"></a>00245 <span class="preprocessor"></span>
<a name="l00247"></a>00247 
<a name="l00251"></a><a class="code" href="atlautosizedlg_8h.html#746d2e5aab629fbaec791ae6605f8376">00251</a> <span class="preprocessor">#define WMB_ROWNOMINMAX(_size, _max)                    (_IncRow(p), WMR_BEGIN), _size, 0, _max, __VA_ARGS__, WMR_END</span>
<a name="l00252"></a>00252 <span class="preprocessor"></span>
<a name="l00255"></a>00255 <span class="comment">//</span>
<a name="l00256"></a>00256 
<a name="l00258"></a>00258 
<a name="l00259"></a><a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">00259</a> <span class="preprocessor">#define WMSRC_AUTO                              0x40000000L             </span>
<a name="l00260"></a><a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">00260</a> <span class="preprocessor">#define WMSRC_EXPANDABLE                0x30000000L             </span>
<a name="l00261"></a><a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">00261</a> <span class="preprocessor">#define WMSRC_CONTRACTABLE              0x20000000L             </span>
<a name="l00262"></a><a class="code" href="atlautosizedlg_8h.html#13c4321ce4c439e138b3d1d980e285cc">00262</a> <span class="preprocessor">#define WMSRC_EQUAL                             0x10000000L             </span>
<a name="l00263"></a><a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">00263</a> <span class="preprocessor">#define WMSRC_GAP                               0x07000000L             </span>
<a name="l00264"></a><a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">00264</a> <span class="preprocessor">#define WMSRC_GAPM                              0x06000000L             </span>
<a name="l00265"></a><a class="code" href="atlautosizedlg_8h.html#843b9ddd8225b8943ec91a3666caaf55">00265</a> <span class="preprocessor">#define WMSRC_FIXED                             0x00000000L             </span>
<a name="l00266"></a>00266 <span class="preprocessor"></span>
<a name="l00267"></a><a class="code" href="atlautosizedlg_8h.html#d93326ed7691787d9908bea267510752">00267</a> <span class="preprocessor"></span><span class="preprocessor">#define WMSRC_NOGAP                             0x08000000L             </span>
<a name="l00268"></a>00268 <span class="preprocessor"></span>
<a name="l00270"></a>00270 <span class="preprocessor"></span>
<a name="l00271"></a>00271 <span class="preprocessor"></span>
<a name="l00272"></a><a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">00272</a> <span class="preprocessor">#define WMSRC_TYPEMASK                  0x77000000L             </span>
<a name="l00273"></a><a class="code" href="atlautosizedlg_8h.html#fef4b038d585698faf24658ca2d0712c">00273</a> <span class="preprocessor">#define WMSRC_EXSTYLEMASK               0x08000000L             </span>
<a name="l00274"></a><a class="code" href="atlautosizedlg_8h.html#1d4e7fc4a851a02b5223c3cb332b1385">00274</a> <span class="preprocessor">#define WMSRC_VALMASK                   0x80FFFFFFL             </span>
<a name="l00275"></a>00275 <span class="preprocessor"></span>
<a name="l00276"></a>00276 <span class="preprocessor"></span><span class="comment">//</span>
<a name="l00277"></a>00277 
<a name="l00278"></a><a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">00278</a> <span class="preprocessor">#define WMSRCMM_SIZECALC                        0x40000000L             </span>
<a name="l00279"></a><a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">00279</a> <span class="preprocessor">#define WMSRCMM_NEEDCALC                        0x20000000L             </span>
<a name="l00280"></a>00280 <span class="preprocessor"></span>
<a name="l00281"></a><a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">00281</a> <span class="preprocessor"></span><span class="preprocessor">#define WMSRCMM_TYPEMASK                        0x70000000L             </span>
<a name="l00282"></a><a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">00282</a> <span class="preprocessor">#define WMSRCMM_VALMASK                         0x8FFFFFFFL             </span>
<a name="l00283"></a>00283 <span class="preprocessor"></span>
<a name="l00284"></a><a class="code" href="atlautosizedlg_8h.html#81eace22636aeca9819e864669bf2825">00284</a> <span class="preprocessor"></span><span class="preprocessor">#define WMSRCMM_MAXVAL                          0x0FFFFFFFL             </span>
<a name="l00285"></a>00285 <span class="preprocessor"></span>
<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="comment">//</span>
<a name="l00287"></a>00287 
<a name="l00288"></a><a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">00288</a> <span class="preprocessor">#define WMSRC_DEFEXPANDABLEVAL          100                     </span>
<a name="l00289"></a><a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">00289</a> <span class="preprocessor">#define WMSRC_DEFCONTRACTABLEVAL        100                     </span>
<a name="l00290"></a>00290 <span class="preprocessor"></span>
<a name="l00292"></a>00292 <span class="preprocessor">//</span>
<a name="l00293"></a>00293 <span class="preprocessor"></span>
<a name="l00295"></a>00295 
<a name="l00296"></a><a class="code" href="atlautosizedlg_8h.html#1abcfa932fc6ecb0af35e8f33d51163c">00296</a> <span class="preprocessor">#define WMH_BEGIN                       0xFFFFFFFFL             </span>
<a name="l00297"></a><a class="code" href="atlautosizedlg_8h.html#27e8642ba5c72295e01ccae01467a8b3">00297</a> <span class="preprocessor">#define WMH_END                         0xFFFFFFFEL             </span>
<a name="l00298"></a>00298 <span class="preprocessor"></span>
<a name="l00299"></a><a class="code" href="atlautosizedlg_8h.html#22c1cd4576577f9718790894b91d98b9">00299</a> <span class="preprocessor"></span><span class="preprocessor">#define WMR_BEGIN                       0xFFFFFFFDL             </span>
<a name="l00300"></a><a class="code" href="atlautosizedlg_8h.html#dc65912d32b23c3d1e46fbf5d056a24f">00300</a> <span class="preprocessor">#define WMR_END                         0xFFFFFFFCL             </span>
<a name="l00301"></a>00301 <span class="preprocessor"></span>
<a name="l00302"></a><a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">00302</a> <span class="preprocessor"></span><span class="preprocessor">#define WM_END                          0xFFFFFFFBL             </span>
<a name="l00303"></a>00303 <span class="preprocessor"></span>
<a name="l00305"></a>00305 <span class="preprocessor">//</span>
<a name="l00306"></a>00306 <span class="preprocessor"></span>
<a name="l00308"></a>00308 
<a name="l00309"></a><a class="code" href="atlautosizedlg_8h.html#8db6b604e1ceb9d79ed91acb7d5d5c80">00309</a> <span class="preprocessor">#define WMSCTRL_EXPRIGHT                0x40000001L             </span>
<a name="l00310"></a><a class="code" href="atlautosizedlg_8h.html#07c573d5dd3e01289cae2d1323327599">00310</a> <span class="preprocessor">#define WMSCTRL_EXPDOWN                 0x40000002L             </span>
<a name="l00311"></a>00311 <span class="preprocessor"></span>
<a name="l00312"></a><a class="code" href="atlautosizedlg_8h.html#856ceeabc8e3837396b1994794db6b38">00312</a> <span class="preprocessor"></span><span class="preprocessor">#define WMSCTRL_EMPTY                   0x00000000L             </span>
<a name="l00313"></a>00313 <span class="preprocessor"></span>
<a name="l00315"></a>00315 <span class="preprocessor"></span>
<a name="l00316"></a>00316 <span class="preprocessor"></span>
<a name="l00317"></a><a class="code" href="atlautosizedlg_8h.html#84059884f67d9a1692c4767daf9c14da">00317</a> <span class="preprocessor">#define WMSCTRL_CONTINUEMASK    0x40000000L             </span>
<a name="l00318"></a>00318 <span class="preprocessor"></span>
<a name="l00319"></a><a class="code" href="atlautosizedlg_8h.html#0ee4a15f5cae25d9e34156f01a3376df">00319</a> <span class="preprocessor"></span><span class="preprocessor">#define WMSCTRL_TYPEMASK                0x70000000L             </span>
<a name="l00320"></a><a class="code" href="atlautosizedlg_8h.html#62349dec64fd39960dffbbb42b9c9c08">00320</a> <span class="preprocessor">#define WMSCTRL_VALMASK                 0x8FFFFFFFL             </span>
<a name="l00321"></a>00321 <span class="preprocessor"></span>
<a name="l00323"></a>00323 <span class="preprocessor">//</span>
<a name="l00324"></a>00324 <span class="preprocessor"></span>
<a name="l00326"></a>00326 
<a name="l00332"></a><a class="code" href="class_a_t_l_1_1int__no.html">00332</a> <span class="keyword">class </span><a class="code" href="class_a_t_l_1_1int__no.html">int_no</a>
<a name="l00333"></a>00333 {
<a name="l00334"></a>00334 <span class="keyword">public</span>:
<a name="l00335"></a><a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">00335</a>         <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a>;             
<a name="l00336"></a>00336 
<a name="l00337"></a>00337 <span class="keyword">public</span>:
<a name="l00339"></a>00339 
<a name="l00341"></a><a class="code" href="class_a_t_l_1_1int__no.html#f94ac106a7d763d903e78bf9e0d9a58c">00341</a>         <a class="code" href="class_a_t_l_1_1int__no.html#f94ac106a7d763d903e78bf9e0d9a58c">int_no</a>(<span class="keywordtype">int</span> iVal = 0) : <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a>(iVal)
<a name="l00342"></a>00342         {
<a name="l00343"></a>00343         }
<a name="l00344"></a>00344 
<a name="l00346"></a><a class="code" href="class_a_t_l_1_1int__no.html#9d7e7500d5c77f5cd22dfcac4aa695f6">00346</a>         <a class="code" href="class_a_t_l_1_1int__no.html#9d7e7500d5c77f5cd22dfcac4aa695f6">operator int*</a>()
<a name="l00347"></a>00347         {
<a name="l00348"></a>00348                 <span class="keywordflow">return</span> &amp;<a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a>;
<a name="l00349"></a>00349         }
<a name="l00350"></a>00350 
<a name="l00352"></a><a class="code" href="class_a_t_l_1_1int__no.html#f68fc380b42a9f0801fca297872ec142">00352</a>         <a class="code" href="class_a_t_l_1_1int__no.html#f68fc380b42a9f0801fca297872ec142">operator int&amp;</a>() 
<a name="l00353"></a>00353         {
<a name="l00354"></a>00354                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a>;
<a name="l00355"></a>00355         }
<a name="l00356"></a>00356 
<a name="l00358"></a>00358 
<a name="l00360"></a><a class="code" href="class_a_t_l_1_1int__no.html#feea1e306c1ebbc0a2012daa7d1463c7">00360</a>         <a class="code" href="class_a_t_l_1_1int__no.html">int_no</a>&amp; <a class="code" href="class_a_t_l_1_1int__no.html#feea1e306c1ebbc0a2012daa7d1463c7">operator=</a>(<span class="keywordtype">int</span> iVal)
<a name="l00361"></a>00361         {
<a name="l00362"></a>00362                 <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> = iVal;
<a name="l00363"></a>00363                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00364"></a>00364         }
<a name="l00365"></a>00365 
<a name="l00367"></a>00367 
<a name="l00369"></a><a class="code" href="class_a_t_l_1_1int__no.html#f6f42193e7c996ae4d2e2ed9bb3932a8">00369</a>         <span class="keywordtype">bool</span> <a class="code" href="class_a_t_l_1_1int__no.html#f6f42193e7c996ae4d2e2ed9bb3932a8">operator ==</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00370"></a>00370 <span class="keyword">        </span>{
<a name="l00371"></a>00371                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> == iVal;
<a name="l00372"></a>00372         }
<a name="l00373"></a>00373 
<a name="l00375"></a>00375 
<a name="l00377"></a><a class="code" href="class_a_t_l_1_1int__no.html#24b200309e5d5e3f88c4335bdf0081bf">00377</a>         <span class="keywordtype">bool</span> <a class="code" href="class_a_t_l_1_1int__no.html#24b200309e5d5e3f88c4335bdf0081bf">operator !=</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00378"></a>00378 <span class="keyword">        </span>{
<a name="l00379"></a>00379                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> != iVal;
<a name="l00380"></a>00380         }
<a name="l00381"></a>00381 
<a name="l00383"></a>00383 
<a name="l00385"></a><a class="code" href="class_a_t_l_1_1int__no.html#e27444bb0fb583d4b2eaa884b25e2d28">00385</a>         <span class="keywordtype">bool</span> <a class="code" href="class_a_t_l_1_1int__no.html#e27444bb0fb583d4b2eaa884b25e2d28">operator &gt;</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00386"></a>00386 <span class="keyword">        </span>{
<a name="l00387"></a>00387                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> &gt; iVal;
<a name="l00388"></a>00388         }
<a name="l00389"></a>00389 
<a name="l00391"></a>00391 
<a name="l00393"></a><a class="code" href="class_a_t_l_1_1int__no.html#6c8280c1ec1bba4adf4a8eb81421041e">00393</a>         <span class="keywordtype">bool</span> <a class="code" href="class_a_t_l_1_1int__no.html#6c8280c1ec1bba4adf4a8eb81421041e">operator &gt;=</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00394"></a>00394 <span class="keyword">        </span>{
<a name="l00395"></a>00395                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> &gt;= iVal;
<a name="l00396"></a>00396         }
<a name="l00397"></a>00397 
<a name="l00399"></a>00399 
<a name="l00401"></a><a class="code" href="class_a_t_l_1_1int__no.html#2bd11364501d44205b796b1aa336ae18">00401</a>         <span class="keywordtype">bool</span> <a class="code" href="class_a_t_l_1_1int__no.html#2bd11364501d44205b796b1aa336ae18">operator &lt;</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00402"></a>00402 <span class="keyword">        </span>{
<a name="l00403"></a>00403                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> &lt; iVal;
<a name="l00404"></a>00404         }
<a name="l00405"></a>00405 
<a name="l00407"></a>00407 
<a name="l00409"></a><a class="code" href="class_a_t_l_1_1int__no.html#8afee293d8998e0ae5346134deb0b397">00409</a>         <span class="keywordtype">bool</span> <a class="code" href="class_a_t_l_1_1int__no.html#8afee293d8998e0ae5346134deb0b397">operator &lt;=</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00410"></a>00410 <span class="keyword">        </span>{
<a name="l00411"></a>00411                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> &lt;= iVal;
<a name="l00412"></a>00412         }
<a name="l00413"></a>00413 
<a name="l00415"></a>00415 
<a name="l00417"></a><a class="code" href="class_a_t_l_1_1int__no.html#23836a71133a839d929130348bbd77f5">00417</a>         <a class="code" href="class_a_t_l_1_1int__no.html">int_no</a>&amp; <a class="code" href="class_a_t_l_1_1int__no.html#23836a71133a839d929130348bbd77f5">operator+=</a>(<span class="keywordtype">int</span> iVal)
<a name="l00418"></a>00418         {
<a name="l00419"></a>00419                 __int64 iTmp = (__int64)<a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> + iVal;
<a name="l00420"></a>00420 
<a name="l00421"></a>00421                 <span class="keywordflow">if</span> (iTmp &gt; INT_MAX) {
<a name="l00422"></a>00422                         <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> = INT_MAX;
<a name="l00423"></a>00423                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTmp &lt; INT_MIN) {
<a name="l00424"></a>00424                         <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> = INT_MIN;
<a name="l00425"></a>00425                 } <span class="keywordflow">else</span> {
<a name="l00426"></a>00426                         <a class="code" href="class_a_t_l_1_1int__no.html#98657bec8c8fed8896f63a57945854e5">m_iVal</a> = (int)iTmp;
<a name="l00427"></a>00427                 }
<a name="l00428"></a>00428 
<a name="l00429"></a>00429                 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00430"></a>00430         }
<a name="l00431"></a>00431 
<a name="l00433"></a>00433 
<a name="l00435"></a><a class="code" href="class_a_t_l_1_1int__no.html#39716c0e0b7344ce33b74a08bc0c5f5a">00435</a>         <a class="code" href="class_a_t_l_1_1int__no.html">int_no</a>&amp; <a class="code" href="class_a_t_l_1_1int__no.html#39716c0e0b7344ce33b74a08bc0c5f5a">operator-=</a>(<span class="keywordtype">int</span> iVal)
<a name="l00436"></a>00436         {
<a name="l00437"></a>00437                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#39716c0e0b7344ce33b74a08bc0c5f5a">operator-=</a>(0 - iVal);
<a name="l00438"></a>00438         }       
<a name="l00439"></a>00439 
<a name="l00441"></a>00441 
<a name="l00443"></a><a class="code" href="class_a_t_l_1_1int__no.html#5e4fbf2a0bd15b9827ce62e9aabeb82b">00443</a>         <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1int__no.html#5e4fbf2a0bd15b9827ce62e9aabeb82b">operator+</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00444"></a>00444 <span class="keyword">        </span>{
<a name="l00445"></a>00445                 <a class="code" href="class_a_t_l_1_1int__no.html">int_no</a> iRes = *<span class="keyword">this</span>;
<a name="l00446"></a>00446                 iRes += iVal;
<a name="l00447"></a>00447                 <span class="keywordflow">return</span> iRes;
<a name="l00448"></a>00448         }
<a name="l00449"></a>00449 
<a name="l00451"></a>00451 
<a name="l00453"></a><a class="code" href="class_a_t_l_1_1int__no.html#80d27b21e6ee405e55e2f4c4edad20eb">00453</a>         <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1int__no.html#80d27b21e6ee405e55e2f4c4edad20eb">operator-</a>(<span class="keywordtype">int</span> iVal)<span class="keyword"> const</span>
<a name="l00454"></a>00454 <span class="keyword">        </span>{
<a name="l00455"></a>00455                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1int__no.html#5e4fbf2a0bd15b9827ce62e9aabeb82b">operator+</a>(0 - iVal);
<a name="l00456"></a>00456         }
<a name="l00457"></a>00457 };
<a name="l00458"></a>00458 
<a name="l00459"></a>00459 <span class="comment">//</span>
<a name="l00460"></a>00460 
<a name="l00462"></a>00462 
<a name="l00474"></a>00474 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keywordtype">bool</span> t_bAutoMinSize = true&gt;
<a name="l00475"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html">00475</a> <span class="keyword">class </span><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html">CAutoSizeWindow</a>
<a name="l00476"></a>00476 {
<a name="l00477"></a>00477 <span class="keyword">protected</span>: 
<a name="l00478"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#68c6860962f706c36f72fa5a666e418f">00478</a>         <span class="keyword">typedef</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html">CAutoSizeWindow&lt;T&gt;</a> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html">thisClass</a>; 
<a name="l00479"></a>00479 
<a name="l00480"></a>00480 <span class="keyword">public</span>:
<a name="l00481"></a>00481 <span class="preprocessor">#pragma pack(push, 4)</span>
<a name="l00483"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">00483</a> <span class="preprocessor">        struct CMargins</span>
<a name="l00484"></a>00484 <span class="preprocessor"></span>        {
<a name="l00485"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">00485</a>                 <span class="keywordtype">int</span> m_iLeftRight;
<a name="l00486"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">00486</a>                 <span class="keywordtype">int</span> m_iTopBottom;
<a name="l00487"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">00487</a>                 <span class="keywordtype">int</span> m_iXGap;
<a name="l00488"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">00488</a>                 <span class="keywordtype">int</span> m_iYGap;
<a name="l00489"></a>00489         };
<a name="l00490"></a>00490 
<a name="l00492"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">00492</a>         <span class="keyword">struct </span><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a>
<a name="l00493"></a>00493         {
<a name="l00494"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#a564153f4798892192300f7f96c11f12">00494</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#a564153f4798892192300f7f96c11f12">m_iSignature</a>;
<a name="l00495"></a>00495 
<a name="l00496"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6d8716c016d8337e3b23382e90c434f9">00496</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6d8716c016d8337e3b23382e90c434f9">m_iSize</a>;
<a name="l00497"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">00497</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a>;
<a name="l00498"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7cfa3612955a8117b715c5a19fab10a2">00498</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7cfa3612955a8117b715c5a19fab10a2">m_iNumCtrls</a>;
<a name="l00499"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6fa09759340a9296456dd2d996758ec4">00499</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6fa09759340a9296456dd2d996758ec4">m_iColWidthFixed</a>;
<a name="l00500"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#b712eedcb5a4e47b2fd3337e014b4254">00500</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#b712eedcb5a4e47b2fd3337e014b4254">m_iColWidthMin</a>;
<a name="l00501"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#d4efeb4096fde8d57db2cfd56dda792e">00501</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#d4efeb4096fde8d57db2cfd56dda792e">m_iColWidthMax</a>;
<a name="l00502"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#3d56cac4a4cfe6967d0a5580bccabc74">00502</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#3d56cac4a4cfe6967d0a5580bccabc74">m_iColExpand</a>;
<a name="l00503"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8a4f88db3f329cd2e6ff67c141594924">00503</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8a4f88db3f329cd2e6ff67c141594924">m_iColContract</a>;
<a name="l00504"></a>00504 
<a name="l00505"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#1436037a0a0e80f23fc99c6e4bd342d4">00505</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#1436037a0a0e80f23fc99c6e4bd342d4">m_iRowHeightFixed</a>;
<a name="l00506"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8962ed2ec288cbd0b002c99fd4501eac">00506</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8962ed2ec288cbd0b002c99fd4501eac">m_iRowHeightMin</a>;
<a name="l00507"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#2d0973b9b3eb11a25d576924198e0e44">00507</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#2d0973b9b3eb11a25d576924198e0e44">m_iRowHeightMax</a>;
<a name="l00508"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7eabc008850098e58bf4384668c6d3b2">00508</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7eabc008850098e58bf4384668c6d3b2">m_iRowExpand</a>;
<a name="l00509"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#f3f4c8d1640118f54d8c9d2083ff03b0">00509</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#f3f4c8d1640118f54d8c9d2083ff03b0">m_iRowContract</a>;
<a name="l00510"></a>00510 
<a name="l00511"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">00511</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a>;
<a name="l00512"></a>00512 
<a name="l00513"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6f5ce1843c95768aa1f3c48d9a0904b8">00513</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6f5ce1843c95768aa1f3c48d9a0904b8">m_iCtrls</a>[1];
<a name="l00514"></a>00514         };
<a name="l00515"></a>00515 
<a name="l00517"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html">00517</a>         <span class="keyword">struct </span><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html">CWindowMapStruct</a>
<a name="l00518"></a>00518         {
<a name="l00519"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html#b9f64295695a1be2393c9dc43b74c7e5">00519</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html#b9f64295695a1be2393c9dc43b74c7e5">m_iSignature</a>;
<a name="l00520"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html#f3239c6ee797d6dbff679bbf7278be50">00520</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html#f3239c6ee797d6dbff679bbf7278be50">m_margins</a>;
<a name="l00521"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html#1305a410a5b95fab4a7e9b68bfe1d79e">00521</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html#1305a410a5b95fab4a7e9b68bfe1d79e">m_header</a>;
<a name="l00522"></a>00522         };
<a name="l00523"></a>00523 <span class="preprocessor">#pragma pack(pop)</span>
<a name="l00524"></a>00524 <span class="preprocessor"></span>
<a name="l00525"></a>00525         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#2092ed97d41ca022654938088fb1b3f0">TRANSPARENT_LIST</a>(<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html">CAutoSizeWindow&lt;T&gt;</a>); 
<a name="l00526"></a>00526 
<a name="l00527"></a>00527 <span class="keyword">protected</span>:
<a name="l00528"></a>00528         <span class="keyword">struct </span><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html">CCtrlCounter</a>;
<a name="l00529"></a>00529 
<a name="l00531"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">00531</a>         <span class="keyword">struct </span><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a>
<a name="l00532"></a>00532         {
<a name="l00533"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">00533</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html">CCtrlCounter</a> *<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a>;
<a name="l00534"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#c7555fade62a8f582c7f39baeb548510">00534</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a> *<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#c7555fade62a8f582c7f39baeb548510">m_pPrev</a>;
<a name="l00535"></a>00535         };
<a name="l00536"></a>00536 
<a name="l00538"></a>00538 
<a name="l00540"></a>00540         <span class="keyword">template</span>&lt;<span class="keywordtype">int</span> t_iType&gt;
<a name="l00541"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#0c3fdacdade73a893f1ee1046c3b714d">00541</a>         <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#0c3fdacdade73a893f1ee1046c3b714d">Func</a>()
<a name="l00542"></a>00542         {
<a name="l00543"></a>00543                 <span class="keyword">static</span> <span class="keywordtype">int</span> i = 0;
<a name="l00544"></a>00544                 i++;
<a name="l00545"></a>00545                 
<a name="l00546"></a>00546                 <span class="keywordflow">return</span> i;
<a name="l00547"></a>00547         }
<a name="l00548"></a>00548 
<a name="l00550"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html">00550</a>         <span class="keyword">struct </span><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html">CCtrlCounter</a>
<a name="l00551"></a>00551         {
<a name="l00552"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">00552</a>                 <span class="keywordtype">int</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a>;
<a name="l00553"></a>00553 
<a name="l00554"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#fa127c48dc76b7ca53b3218f9575a11c">00554</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#fa127c48dc76b7ca53b3218f9575a11c">CCtrlCounter</a>(<span class="keywordtype">int</span> iID) : <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a>(iID)
<a name="l00555"></a>00555                 {
<a name="l00556"></a>00556                 }
<a name="l00557"></a>00557 
<a name="l00558"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#defdf89b8ae030603eca067a325eb120">00558</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#fa127c48dc76b7ca53b3218f9575a11c">CCtrlCounter</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a>* pri) : <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a>(0)
<a name="l00559"></a>00559                 {
<a name="l00560"></a>00560                         pri-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a> = <span class="keyword">this</span>;
<a name="l00561"></a>00561                 }
<a name="l00562"></a>00562 
<a name="l00563"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#bf93ef08e67b0098393aeb450ac90165">00563</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#fa127c48dc76b7ca53b3218f9575a11c">CCtrlCounter</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a> *&amp;pcn, <span class="keywordtype">int</span> iAdder, <span class="keywordtype">int</span> iDiv, <span class="keywordtype">int</span> iID) : <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a>(iID)
<a name="l00564"></a>00564                 {
<a name="l00565"></a>00565                         pcn-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a>-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a> = (int)(<span class="keyword">this</span> - pcn-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a>) - iAdder;
<a name="l00566"></a>00566                         ATLASSERT(pcn-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a>-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a> % iDiv == 0 &amp;&amp; _T(<span class="stringliteral">"Are you forgetting a WMB_COL()?"</span>));
<a name="l00567"></a>00567                         pcn-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a>-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a> /= iDiv;
<a name="l00568"></a>00568                         pcn = pcn-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#c7555fade62a8f582c7f39baeb548510">m_pPrev</a>;
<a name="l00569"></a>00569                 }
<a name="l00570"></a>00570 
<a name="l00571"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#3f00188dbfb741607e0d3417bdd720c5">00571</a>                 <span class="keyword">const</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html">CCtrlCounter</a> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#3f00188dbfb741607e0d3417bdd720c5">operator++</a>()
<a name="l00572"></a>00572                 {
<a name="l00573"></a>00573                         <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a>++;
<a name="l00574"></a>00574                         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00575"></a>00575                 }
<a name="l00576"></a>00576 
<a name="l00577"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#0b4d7ff416d5dfce57246ec1a48e501b">00577</a>                 <span class="keyword">const</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html">CCtrlCounter</a> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#3f00188dbfb741607e0d3417bdd720c5">operator++</a>(<span class="keywordtype">int</span>)
<a name="l00578"></a>00578                 {
<a name="l00579"></a>00579                         <span class="keyword">const</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html">CCtrlCounter</a> tmp(*<span class="keyword">this</span>); 
<a name="l00580"></a>00580                         ++(*this); 
<a name="l00581"></a>00581                         <span class="keywordflow">return</span> tmp; 
<a name="l00582"></a>00582                 }
<a name="l00583"></a>00583 
<a name="l00584"></a><a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#3b77c4e48bcb38750a01249d91aeacff">00584</a>                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#3b77c4e48bcb38750a01249d91aeacff">operator int</a>()
<a name="l00585"></a>00585                 {
<a name="l00586"></a>00586                         <span class="keywordflow">return</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_counter.html#02a35a579a960729c570ad49c0cce475">m_iID</a>;
<a name="l00587"></a>00587                 }
<a name="l00588"></a>00588         };
<a name="l00589"></a>00589 
<a name="l00590"></a>00590 <span class="keyword">public</span>:
<a name="l00591"></a>00591         BEGIN_MSG_MAP(<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html">CAutoSizeWindow</a>)
<a name="l00592"></a>00592                 MESSAGE_HANDLER(WM_CREATE, <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#03cf688045137ccd9741e8c64825c6a2">OnCreate</a>)
<a name="l00593"></a>00593                 MESSAGE_HANDLER(WM_INITDIALOG, <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#03cf688045137ccd9741e8c64825c6a2">OnCreate</a>)
<a name="l00594"></a>00594                 if (t_bAutoMinSize) {
<a name="l00595"></a>00595                         MESSAGE_HANDLER(WM_GETMINMAXINFO, <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#d9503156c371293bfb9bf8895c08e79e">OnGetMinMaxInfo</a>)
<a name="l00596"></a>00596                 }
<a name="l00597"></a>00597                 MESSAGE_HANDLER(WM_SIZE, <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#39b35ade8cc588712d7b539c5b7a5aca">OnSize</a>)
<a name="l00598"></a>00598                 MESSAGE_HANDLER(WM_PAINT, <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#486204639e8a0eb3c6a5527a8cab8661">OnPaint</a>)
<a name="l00599"></a>00599         END_MSG_MAP()
<a name="l00600"></a>00600 
<a name="l00601"></a>00601 public:
<a name="l00602"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#03cf688045137ccd9741e8c64825c6a2">00602</a>         LRESULT <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#03cf688045137ccd9741e8c64825c6a2">OnCreate</a>(UINT <span class="comment">/*uMsg*/</span>, WPARAM <span class="comment">/*wParam*/</span>, LPARAM <span class="comment">/*lParam*/</span>, BOOL&amp; bHandled)
<a name="l00603"></a>00603         {
<a name="l00604"></a>00604                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00605"></a>00605                 <span class="keywordflow">if</span> (!pT-&gt;CtrlsInitialize()) {
<a name="l00606"></a>00606                         ATLTRACE(_T(<span class="stringliteral">"Not initialized.\n"</span>));
<a name="l00607"></a>00607                 } 
<a name="l00608"></a>00608 
<a name="l00609"></a>00609                 __if_not_exists(T::GetScrollOffset) {
<a name="l00610"></a>00610                         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t_bAutoMinSize) {
<a name="l00611"></a>00611                                 SIZE sizeMin, sizeMax;
<a name="l00612"></a>00612         
<a name="l00613"></a>00613                                 pT-&gt;GetMinMaxSize(sizeMin, sizeMax);
<a name="l00614"></a>00614         
<a name="l00615"></a>00615                                 RECT rectNew = {0, 0};
<a name="l00616"></a>00616 
<a name="l00617"></a>00617                                 RECT rectClient;
<a name="l00618"></a>00618                                 pT-&gt;GetClientRect(&amp;rectClient);
<a name="l00619"></a>00619 
<a name="l00620"></a>00620                                 <span class="keywordflow">if</span> (rectClient.right &lt; sizeMin.cx) {
<a name="l00621"></a>00621                                         rectNew.right = sizeMin.cx;
<a name="l00622"></a>00622                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rectClient.right &gt; sizeMax.cy) {
<a name="l00623"></a>00623                                         rectNew.right = sizeMax.cx;
<a name="l00624"></a>00624                                 } <span class="keywordflow">else</span> {
<a name="l00625"></a>00625                                         rectNew.right = rectClient.right;
<a name="l00626"></a>00626                                 }
<a name="l00627"></a>00627 
<a name="l00628"></a>00628                                 <span class="keywordflow">if</span> (rectClient.bottom &lt; sizeMin.cy) {
<a name="l00629"></a>00629                                         rectNew.bottom = sizeMin.cy;
<a name="l00630"></a>00630                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rectClient.bottom &gt; sizeMax.cy) {
<a name="l00631"></a>00631                                         rectNew.bottom = sizeMax.cy;
<a name="l00632"></a>00632                                 } <span class="keywordflow">else</span> {
<a name="l00633"></a>00633                                         rectNew.bottom = rectClient.bottom;
<a name="l00634"></a>00634                                 }
<a name="l00635"></a>00635 
<a name="l00636"></a>00636                                 <span class="keywordflow">if</span> (rectNew.right != rectClient.right || rectNew.bottom != rectClient.bottom) {
<a name="l00637"></a>00637                                         RECT rectWindow;
<a name="l00638"></a>00638                                         pT-&gt;GetWindowRect(&amp;rectWindow);
<a name="l00639"></a>00639                                         pT-&gt;MapWindowPoints(NULL, (LPPOINT)&amp;rectNew, 2);
<a name="l00640"></a>00640 
<a name="l00641"></a>00641                                         rectNew.right += rectWindow.right - rectWindow.left - rectNew.right + rectNew.left;
<a name="l00642"></a>00642                                         rectNew.bottom += rectWindow.bottom - rectWindow.top - rectNew.bottom + rectNew.top;
<a name="l00643"></a>00643 
<a name="l00644"></a>00644                                         pT-&gt;SetWindowPos(NULL, 0, 0, rectNew.right - rectNew.left, rectNew.bottom - rectNew.top, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOMOVE);
<a name="l00645"></a>00645                                 }
<a name="l00646"></a>00646                         }
<a name="l00647"></a>00647                 }
<a name="l00648"></a>00648 
<a name="l00649"></a>00649                 bHandled = FALSE;
<a name="l00650"></a>00650                 <span class="keywordflow">return</span> 0;
<a name="l00651"></a>00651         }
<a name="l00652"></a>00652 
<a name="l00653"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#d9503156c371293bfb9bf8895c08e79e">00653</a>         LRESULT <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#d9503156c371293bfb9bf8895c08e79e">OnGetMinMaxInfo</a>(UINT <span class="comment">/*uMsg*/</span>, WPARAM <span class="comment">/*wParam*/</span>, LPARAM lParam, BOOL&amp; <span class="comment">/*bHandled*/</span>)
<a name="l00654"></a>00654         {
<a name="l00655"></a>00655                 MINMAXINFO *pMinMax = (MINMAXINFO*)lParam;
<a name="l00656"></a>00656 
<a name="l00657"></a>00657                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00658"></a>00658 
<a name="l00659"></a>00659                 SIZE sizeMin, sizeMax;
<a name="l00660"></a>00660 
<a name="l00661"></a>00661                 pT-&gt;GetMinMaxSize(sizeMin, sizeMax);
<a name="l00662"></a>00662 
<a name="l00663"></a>00663                 RECT rectWindow, rectClient;
<a name="l00664"></a>00664                 pT-&gt;GetWindowRect(&amp;rectWindow);
<a name="l00665"></a>00665                 pT-&gt;GetClientRect(&amp;rectClient);
<a name="l00666"></a>00666                 pT-&gt;MapWindowPoints(NULL, (LPPOINT)&amp;rectClient, 2);
<a name="l00667"></a>00667 
<a name="l00668"></a>00668                 __if_not_exists(T::GetScrollOffset) {
<a name="l00669"></a>00669                         pMinMax-&gt;ptMinTrackSize.x = sizeMin.cx + rectWindow.right - rectWindow.left - rectClient.right + rectClient.left;
<a name="l00670"></a>00670                         pMinMax-&gt;ptMinTrackSize.y = sizeMin.cy + rectWindow.bottom - rectWindow.top - rectClient.bottom + rectClient.top;
<a name="l00671"></a>00671                 }
<a name="l00672"></a>00672                 
<a name="l00673"></a>00673                 <span class="keywordflow">if</span> (pMinMax-&gt;ptMaxTrackSize.x &gt; sizeMax.cx) {
<a name="l00674"></a>00674                         pMinMax-&gt;ptMaxTrackSize.x = sizeMax.cx;
<a name="l00675"></a>00675                 }
<a name="l00676"></a>00676 
<a name="l00677"></a>00677                 <span class="keywordflow">if</span> (pMinMax-&gt;ptMaxTrackSize.y &gt; sizeMax.cy) {
<a name="l00678"></a>00678                         pMinMax-&gt;ptMaxTrackSize.y = sizeMax.cy;
<a name="l00679"></a>00679                 }
<a name="l00680"></a>00680 
<a name="l00681"></a>00681                 <span class="keywordflow">if</span> (pMinMax-&gt;ptMaxSize.x &gt; sizeMax.cx) {
<a name="l00682"></a>00682                         pMinMax-&gt;ptMaxSize.x = sizeMax.cx;
<a name="l00683"></a>00683                 }
<a name="l00684"></a>00684 
<a name="l00685"></a>00685                 <span class="keywordflow">if</span> (pMinMax-&gt;ptMaxSize.y &gt; sizeMax.cy) {
<a name="l00686"></a>00686                         pMinMax-&gt;ptMaxSize.y = sizeMax.cy;
<a name="l00687"></a>00687                 }
<a name="l00688"></a>00688 
<a name="l00689"></a>00689                 <span class="keywordflow">return</span> 0;
<a name="l00690"></a>00690         }
<a name="l00691"></a>00691 
<a name="l00692"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#39b35ade8cc588712d7b539c5b7a5aca">00692</a>         LRESULT <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#39b35ade8cc588712d7b539c5b7a5aca">OnSize</a>(UINT <span class="comment">/*uMsg*/</span>, WPARAM wParam, LPARAM <span class="comment">/*lParam*/</span>, BOOL&amp; bHandled)
<a name="l00693"></a>00693         {
<a name="l00694"></a>00694                 <span class="keywordflow">if</span> (!wParam) {
<a name="l00695"></a>00695                         T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00696"></a>00696                         pT-&gt;CtrlsArrange();
<a name="l00697"></a>00697                 }
<a name="l00698"></a>00698 
<a name="l00699"></a>00699                 bHandled = FALSE;
<a name="l00700"></a>00700                 <span class="keywordflow">return</span> 0;
<a name="l00701"></a>00701         }
<a name="l00702"></a>00702 
<a name="l00703"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#486204639e8a0eb3c6a5527a8cab8661">00703</a>         LRESULT <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#486204639e8a0eb3c6a5527a8cab8661">OnPaint</a>(UINT <span class="comment">/*uMsg*/</span>, WPARAM wParam, LPARAM <span class="comment">/*lParam*/</span>, BOOL&amp; <span class="comment">/*bHandled*/</span>)
<a name="l00704"></a>00704         {
<a name="l00705"></a>00705                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00706"></a>00706 
<a name="l00707"></a>00707                 POINT pt = {0};
<a name="l00708"></a>00708                 __if_exists(T::GetScrollOffset) {
<a name="l00709"></a>00709                         pT-&gt;GetScrollOffset(pt);
<a name="l00710"></a>00710                 }
<a name="l00711"></a>00711 
<a name="l00712"></a>00712                 <span class="keywordflow">if</span>(wParam != NULL) {
<a name="l00713"></a>00713                         CDCHandle dc = (HDC)wParam;
<a name="l00714"></a>00714                         dc.SetViewportOrg(-pt.x, -pt.y);
<a name="l00715"></a>00715                         pT-&gt;DoPaint(dc);
<a name="l00716"></a>00716                 } <span class="keywordflow">else</span> {
<a name="l00717"></a>00717                         CPaintDC dc(pT-&gt;m_hWnd);
<a name="l00718"></a>00718                         dc.SetViewportOrg(-pt.x, -pt.y);
<a name="l00719"></a>00719                         pT-&gt;DoPaint(dc.m_hDC);
<a name="l00720"></a>00720                 }
<a name="l00721"></a>00721                 
<a name="l00722"></a>00722                 <span class="keywordflow">return</span> 0;
<a name="l00723"></a>00723         }
<a name="l00724"></a>00724         
<a name="l00725"></a>00725         <span class="comment">//</span>
<a name="l00726"></a>00726 
<a name="l00728"></a>00728 
<a name="l00732"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#fe283f3706c1be2f864bd8e8ea21facb">00732</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#fe283f3706c1be2f864bd8e8ea21facb">CtrlsInitialize</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html">CWindowMapStruct</a> *piCtrls = T::GetWindowMap(), BOOL bForce = FALSE)
<a name="l00733"></a>00733         {
<a name="l00734"></a>00734                 <span class="keywordflow">if</span> (piCtrls-&gt;m_iSignature &amp;&amp; !bForce) {
<a name="l00735"></a>00735                         <span class="keywordflow">return</span> TRUE;
<a name="l00736"></a>00736                 }
<a name="l00737"></a>00737 
<a name="l00738"></a>00738                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00739"></a>00739 
<a name="l00740"></a>00740                 <span class="keywordflow">if</span> (!pT-&gt;m_hWnd) {
<a name="l00741"></a>00741                         ATLTRACE(_T(<span class="stringliteral">"Window not initialized.\n"</span>));
<a name="l00742"></a>00742                         <span class="keywordflow">return</span> FALSE;
<a name="l00743"></a>00743                 }
<a name="l00744"></a>00744 
<a name="l00745"></a>00745 <span class="preprocessor">#ifdef DEBUG</span>
<a name="l00746"></a>00746 <span class="preprocessor"></span>                <span class="keywordflow">if</span> (!pT-&gt;IsWindow()) {
<a name="l00747"></a>00747                         ATLTRACE(_T(<span class="stringliteral">"Window not initialized.\n"</span>));
<a name="l00748"></a>00748                         <span class="keywordflow">return</span> FALSE;
<a name="l00749"></a>00749                 }
<a name="l00750"></a>00750 <span class="preprocessor">#endif</span>
<a name="l00751"></a>00751 <span class="preprocessor"></span>
<a name="l00752"></a>00752                 <span class="keywordflow">if</span> (!piCtrls-&gt;m_iSignature) {
<a name="l00753"></a>00753                         pT-&gt;HandleTransparentMap();
<a name="l00754"></a>00754                 }
<a name="l00755"></a>00755 
<a name="l00756"></a>00756                 RECT rectUnits = {4, 8, 0, 0};
<a name="l00757"></a>00757                 ATLVERIFY(pT-&gt;MapDialogRect(&amp;rectUnits));
<a name="l00758"></a>00758                 LONG lXUnits = rectUnits.left, lYUnits = rectUnits.top;
<a name="l00759"></a>00759 
<a name="l00760"></a>00760                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> marginsPix;
<a name="l00761"></a>00761                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#f5402053a352b8d4b1d2fdb3e94ad564">_CheckMargins</a>(lXUnits, 4, lYUnits, 8, &amp;piCtrls-&gt;m_margins, &amp;marginsPix);
<a name="l00762"></a>00762 
<a name="l00763"></a>00763                 BOOL bRes;
<a name="l00764"></a>00764                 ATLVERIFY((bRes = pT-&gt;_CtrlsInitialize(&amp;piCtrls-&gt;m_header, &amp;marginsPix, lXUnits, lYUnits)) != FALSE);
<a name="l00765"></a>00765                 <span class="keywordflow">if</span> (bRes) {
<a name="l00766"></a>00766                         piCtrls-&gt;m_iSignature = 1;
<a name="l00767"></a>00767                         <span class="keywordflow">return</span> TRUE;
<a name="l00768"></a>00768                 } <span class="keywordflow">else</span> {
<a name="l00769"></a>00769                         <span class="keywordflow">return</span> FALSE;
<a name="l00770"></a>00770                 }
<a name="l00771"></a>00771         }
<a name="l00772"></a>00772 
<a name="l00774"></a>00774 
<a name="l00777"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#67375c2dede4f22a16bcf69807fb918d">00777</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#67375c2dede4f22a16bcf69807fb918d">CtrlsArrange</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html">CWindowMapStruct</a> *piCtrls = T::GetWindowMap())
<a name="l00778"></a>00778         {
<a name="l00779"></a>00779                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00780"></a>00780 
<a name="l00781"></a>00781                 <span class="keywordflow">if</span> (!pT-&gt;CtrlsInitialize(piCtrls)) {
<a name="l00782"></a>00782                         ATLTRACE(_T(<span class="stringliteral">"Not initialized.\n"</span>));
<a name="l00783"></a>00783                         <span class="keywordflow">return</span> FALSE;
<a name="l00784"></a>00784                 }
<a name="l00785"></a>00785 
<a name="l00786"></a>00786                 RECT rectUnits = {4, 8, 0, 0};
<a name="l00787"></a>00787                 ATLVERIFY(pT-&gt;MapDialogRect(&amp;rectUnits));
<a name="l00788"></a>00788                 LONG lXUnits = rectUnits.left, lYUnits = rectUnits.top;
<a name="l00789"></a>00789 
<a name="l00790"></a>00790                 RECT rect;
<a name="l00791"></a>00791                 ATLVERIFY(pT-&gt;GetClientRect(&amp;rect));
<a name="l00792"></a>00792 
<a name="l00793"></a>00793                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> marginsPix;
<a name="l00794"></a>00794                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#f5402053a352b8d4b1d2fdb3e94ad564">_CheckMargins</a>(lXUnits, 4, lYUnits, 8, &amp;piCtrls-&gt;m_margins, &amp;marginsPix);
<a name="l00795"></a>00795 
<a name="l00796"></a>00796                 rect.right = (rect.right &gt; marginsPix.m_iLeftRight ? rect.right - marginsPix.m_iLeftRight : 0);
<a name="l00797"></a>00797                 rect.bottom = (rect.bottom &gt; marginsPix.m_iTopBottom ? rect.bottom - marginsPix.m_iTopBottom : 0);
<a name="l00798"></a>00798 
<a name="l00799"></a>00799                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a> *pheader = &amp;piCtrls-&gt;m_header;
<a name="l00800"></a>00800 
<a name="l00801"></a>00801                 <span class="keywordflow">if</span> (rect.right &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#b712eedcb5a4e47b2fd3337e014b4254">m_iColWidthMin</a>) {
<a name="l00802"></a>00802                         rect.right = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#b712eedcb5a4e47b2fd3337e014b4254">m_iColWidthMin</a>;
<a name="l00803"></a>00803                 }
<a name="l00804"></a>00804 
<a name="l00805"></a>00805                 <span class="keywordflow">if</span> (rect.bottom &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8962ed2ec288cbd0b002c99fd4501eac">m_iRowHeightMin</a>) {
<a name="l00806"></a>00806                         rect.bottom = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8962ed2ec288cbd0b002c99fd4501eac">m_iRowHeightMin</a>;
<a name="l00807"></a>00807                 }
<a name="l00808"></a>00808 
<a name="l00809"></a>00809                 HDWP hdwp;
<a name="l00810"></a>00810                 ATLVERIFY((hdwp = ::BeginDeferWindowPos(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7cfa3612955a8117b715c5a19fab10a2">m_iNumCtrls</a>)) != NULL);
<a name="l00811"></a>00811                 <span class="keywordflow">if</span> (!hdwp) {
<a name="l00812"></a>00812                         <span class="keywordflow">return</span> FALSE;
<a name="l00813"></a>00813                 }
<a name="l00814"></a>00814 
<a name="l00815"></a>00815                 BOOL bRes;
<a name="l00816"></a>00816                 ATLVERIFY((bRes = <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#06c0fc5cd54035e64c9039bfefdbe6b5">_CtrlsArrange</a>(hdwp, pheader, &amp;marginsPix, lXUnits, lYUnits, &amp;rect)) != FALSE);
<a name="l00817"></a>00817 
<a name="l00818"></a>00818                 ATLVERIFY(::EndDeferWindowPos(hdwp));
<a name="l00819"></a>00819 
<a name="l00820"></a>00820                 <span class="keywordflow">return</span> bRes;
<a name="l00821"></a>00821         }
<a name="l00822"></a>00822 
<a name="l00824"></a>00824 
<a name="l00828"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#31ea8a0c50542464734842baf247615d">00828</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#31ea8a0c50542464734842baf247615d">GetMinSize</a>(SIZE &amp;sizeMin, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html">CWindowMapStruct</a> *piCtrls = T::GetWindowMap())
<a name="l00829"></a>00829         {
<a name="l00830"></a>00830                 SIZE sz;
<a name="l00831"></a>00831                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#3bb85cee72c06a185c3c8ade76d3fed0">GetMinMaxSize</a>(sizeMin, sz, piCtrls);
<a name="l00832"></a>00832         }
<a name="l00833"></a>00833 
<a name="l00835"></a>00835 
<a name="l00839"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#9fe1d486cba9c17317eeb97a3487596b">00839</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#9fe1d486cba9c17317eeb97a3487596b">GetMaxSize</a>(SIZE &amp;sizeMax, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html">CWindowMapStruct</a> *piCtrls = T::GetWindowMap())
<a name="l00840"></a>00840         {
<a name="l00841"></a>00841                 SIZE sz;
<a name="l00842"></a>00842                 <span class="keywordflow">return</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#3bb85cee72c06a185c3c8ade76d3fed0">GetMinMaxSize</a>(sz, sizeMax, piCtrls);
<a name="l00843"></a>00843         }
<a name="l00844"></a>00844 
<a name="l00846"></a>00846 
<a name="l00851"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#3bb85cee72c06a185c3c8ade76d3fed0">00851</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#3bb85cee72c06a185c3c8ade76d3fed0">GetMinMaxSize</a>(SIZE &amp;sizeMin, SIZE &amp;sizeMax, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_window_map_struct.html">CWindowMapStruct</a> *piCtrls = T::GetWindowMap())
<a name="l00852"></a>00852         {
<a name="l00853"></a>00853                 <span class="keywordflow">if</span> (!<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#fe283f3706c1be2f864bd8e8ea21facb">CtrlsInitialize</a>(piCtrls)) {
<a name="l00854"></a>00854                         ATLTRACE(_T(<span class="stringliteral">"Not initialized.\n"</span>));
<a name="l00855"></a>00855                         <span class="keywordflow">return</span> FALSE;
<a name="l00856"></a>00856                 }
<a name="l00857"></a>00857 
<a name="l00858"></a>00858                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00859"></a>00859 
<a name="l00860"></a>00860                 RECT rectUnits = {4, 8, 0, 0};
<a name="l00861"></a>00861                 ATLVERIFY(pT-&gt;MapDialogRect(&amp;rectUnits));
<a name="l00862"></a>00862                 LONG lXUnits = rectUnits.left, lYUnits = rectUnits.top;
<a name="l00863"></a>00863 
<a name="l00864"></a>00864                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> marginsPix;
<a name="l00865"></a>00865                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#f5402053a352b8d4b1d2fdb3e94ad564">_CheckMargins</a>(lXUnits, 4, lYUnits, 8, &amp;piCtrls-&gt;m_margins, &amp;marginsPix);
<a name="l00866"></a>00866 
<a name="l00867"></a>00867                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a> *pheader = &amp;piCtrls-&gt;m_header;
<a name="l00868"></a>00868                 sizeMin.cx = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#b712eedcb5a4e47b2fd3337e014b4254">m_iColWidthMin</a> + marginsPix.<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>;
<a name="l00869"></a>00869                 sizeMin.cy = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8962ed2ec288cbd0b002c99fd4501eac">m_iRowHeightMin</a> + marginsPix.<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>;
<a name="l00870"></a>00870 
<a name="l00871"></a>00871                 <span class="keywordflow">if</span> (pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#d4efeb4096fde8d57db2cfd56dda792e">m_iColWidthMax</a> != INT_MAX) {
<a name="l00872"></a>00872                         sizeMax.cx = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#d4efeb4096fde8d57db2cfd56dda792e">m_iColWidthMax</a> + marginsPix.<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>;
<a name="l00873"></a>00873                 } <span class="keywordflow">else</span> {
<a name="l00874"></a>00874                         sizeMax.cx = INT_MAX;
<a name="l00875"></a>00875                 }
<a name="l00876"></a>00876 
<a name="l00877"></a>00877                 <span class="keywordflow">if</span> (pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#2d0973b9b3eb11a25d576924198e0e44">m_iRowHeightMax</a> != INT_MAX) {
<a name="l00878"></a>00878                         sizeMax.cy = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#2d0973b9b3eb11a25d576924198e0e44">m_iRowHeightMax</a> + marginsPix.<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>;
<a name="l00879"></a>00879                 } <span class="keywordflow">else</span> {
<a name="l00880"></a>00880                         sizeMax.cy = INT_MAX;
<a name="l00881"></a>00881                 }
<a name="l00882"></a>00882 
<a name="l00883"></a>00883                 <span class="keywordflow">return</span> TRUE;
<a name="l00884"></a>00884         }
<a name="l00885"></a>00885 
<a name="l00887"></a>00887 
<a name="l00889"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6875642a94433fefe953b9bc348e0df3">00889</a>         <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6875642a94433fefe953b9bc348e0df3">DoPaint</a>(CDCHandle dc)
<a name="l00890"></a>00890         {
<a name="l00891"></a>00891                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00892"></a>00892                 ATLVERIFY(pT-&gt;HandleTransparentMap(dc));
<a name="l00893"></a>00893         }
<a name="l00894"></a>00894 
<a name="l00895"></a>00895 <span class="keyword">protected</span>:
<a name="l00896"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#9783effb9f6becebad5fba91d45142db">00896</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#9783effb9f6becebad5fba91d45142db">_CtrlsInitialize</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a> *pheader, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> *pmargins, LONG lXUnits, LONG lYUnits, BOOL bMain = TRUE)
<a name="l00897"></a>00897         {
<a name="l00898"></a>00898                 <span class="keywordflow">if</span> (pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#a564153f4798892192300f7f96c11f12">m_iSignature</a> != <a class="code" href="atlautosizedlg_8h.html#1abcfa932fc6ecb0af35e8f33d51163c">WMH_BEGIN</a>) {
<a name="l00899"></a>00899                         ATLTRACE(_T(<span class="stringliteral">"Wrong header format. Aborted.\n"</span>));
<a name="l00900"></a>00900                         <span class="keywordflow">return</span> FALSE;
<a name="l00901"></a>00901                 }
<a name="l00902"></a>00902 
<a name="l00903"></a>00903                 <span class="keywordtype">int</span> *piHeadCols = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6f5ce1843c95768aa1f3c48d9a0904b8">m_iCtrls</a>;
<a name="l00904"></a>00904 
<a name="l00905"></a>00905                 <span class="keywordflow">if</span> (piHeadCols[pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * 3] != <a class="code" href="atlautosizedlg_8h.html#27e8642ba5c72295e01ccae01467a8b3">WMH_END</a>) {
<a name="l00906"></a>00906                         ATLTRACE(_T(<span class="stringliteral">"Wrong header format. Aborted.\n"</span>));
<a name="l00907"></a>00907                         <span class="keywordflow">return</span> FALSE;
<a name="l00908"></a>00908                 }
<a name="l00909"></a>00909 
<a name="l00910"></a>00910                 <span class="keywordflow">if</span> (*((<span class="keywordtype">int</span>*)pheader + pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6d8716c016d8337e3b23382e90c434f9">m_iSize</a>) != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l00911"></a>00911                         ATLTRACE(_T(<span class="stringliteral">"Wrong header format. Aborted.\n"</span>));
<a name="l00912"></a>00912                         <span class="keywordflow">return</span> FALSE;
<a name="l00913"></a>00913                 }
<a name="l00914"></a>00914 
<a name="l00915"></a>00915                 <span class="keywordtype">int</span> *piCell = piHeadCols + pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * 3 + 1;
<a name="l00916"></a>00916 
<a name="l00917"></a>00917                 <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#22c1cd4576577f9718790894b91d98b9">WMR_BEGIN</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l00918"></a>00918                         ATLTRACE(_T(<span class="stringliteral">"Malformed endrow in header.\n"</span>));
<a name="l00919"></a>00919                         <span class="keywordflow">return</span> FALSE;
<a name="l00920"></a>00920                 }
<a name="l00921"></a>00921 
<a name="l00922"></a>00922                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l00923"></a>00923 
<a name="l00924"></a>00924                 <span class="keywordtype">int</span> iColWidthFixed = 0;
<a name="l00925"></a>00925                 <span class="keywordtype">int</span> iColWidthMin = 0;
<a name="l00926"></a>00926                 <a class="code" href="class_a_t_l_1_1int__no.html">int_no</a> iColWidthMax = 0;
<a name="l00927"></a>00927                 <span class="keywordtype">int</span> iColExpand = 0;
<a name="l00928"></a>00928                 <span class="keywordtype">int</span> iColContract = 0;
<a name="l00929"></a>00929 
<a name="l00930"></a>00930                 <span class="keywordtype">int</span> *piColAuto = (<span class="keywordtype">int</span>*)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));
<a name="l00931"></a>00931 
<a name="l00932"></a>00932                 <span class="keywordflow">if</span> (bMain) {
<a name="l00933"></a>00933                         iColWidthFixed += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>;
<a name="l00934"></a>00934                         iColWidthMin += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>;
<a name="l00935"></a>00935                         iColWidthMax += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>;
<a name="l00936"></a>00936                 }
<a name="l00937"></a>00937 
<a name="l00938"></a>00938                 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a>; i++) {
<a name="l00939"></a>00939                         <span class="keywordtype">int</span> iType, iStyle, iVal;
<a name="l00940"></a>00940                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(piHeadCols[i * 3], iType, iStyle, iVal);
<a name="l00941"></a>00941 
<a name="l00942"></a>00942                         <span class="keywordflow">if</span> (i &amp;&amp; !(iStyle &amp; <a class="code" href="atlautosizedlg_8h.html#d93326ed7691787d9908bea267510752">WMSRC_NOGAP</a>)) {
<a name="l00943"></a>00943                                 iColWidthFixed += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l00944"></a>00944                                 iColWidthMin += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l00945"></a>00945                                 iColWidthMax += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l00946"></a>00946                         }
<a name="l00947"></a>00947 
<a name="l00948"></a>00948                         <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l00949"></a>00949                                 piColAuto[i] = 0;
<a name="l00950"></a>00950 
<a name="l00951"></a>00951                                 piHeadCols[i * 3] = iType|iStyle;
<a name="l00952"></a>00952 
<a name="l00953"></a>00953                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(i, piHeadCols + i * 3);
<a name="l00954"></a>00954                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l00955"></a>00955                                 piColAuto[i] = INT_MIN;
<a name="l00956"></a>00956 
<a name="l00957"></a>00957                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l00958"></a>00958                                         iColExpand += iVal;
<a name="l00959"></a>00959                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iVal == 0) {
<a name="l00960"></a>00960                                         piHeadCols[i * 3] |= <a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l00961"></a>00961                                         iColExpand += <a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l00962"></a>00962                                 } <span class="keywordflow">else</span> {
<a name="l00963"></a>00963                                         ATLTRACE(_T(<span class="stringliteral">"Wrong value in column: %d. Ignored.\n"</span>), i);
<a name="l00964"></a>00964                                         piHeadCols[i * 3] = iType|iStyle|<a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l00965"></a>00965                                         iColExpand += <a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l00966"></a>00966                                 }
<a name="l00967"></a>00967 
<a name="l00968"></a>00968                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(i, piHeadCols + i * 3);
<a name="l00969"></a>00969                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l00970"></a>00970                                 piColAuto[i] = INT_MIN;
<a name="l00971"></a>00971 
<a name="l00972"></a>00972                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l00973"></a>00973                                         iColContract += iVal;
<a name="l00974"></a>00974                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iVal == 0) {
<a name="l00975"></a>00975                                         piHeadCols[i * 3] |= <a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l00976"></a>00976                                         iColContract += <a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l00977"></a>00977                                 } <span class="keywordflow">else</span> {
<a name="l00978"></a>00978                                         ATLTRACE(_T(<span class="stringliteral">"Wrong value in column: %d. Ignored.\n"</span>), i);
<a name="l00979"></a>00979                                         piHeadCols[i * 3] = iType|iStyle|<a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l00980"></a>00980                                         iColContract += <a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l00981"></a>00981                                 }
<a name="l00982"></a>00982 
<a name="l00983"></a>00983                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(i, piHeadCols + i * 3);
<a name="l00984"></a>00984                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#13c4321ce4c439e138b3d1d980e285cc">WMSRC_EQUAL</a>) {
<a name="l00985"></a>00985                                 <span class="keywordflow">if</span> (iVal &gt;= i || iVal &lt; 0) {
<a name="l00986"></a>00986                                         ATLTRACE(_T(<span class="stringliteral">"Columns can be equal only to preceeding columns. Flag in column: %d ignored. Auto-column set.\n"</span>), i);
<a name="l00987"></a>00987                                         piHeadCols[i * 3] = <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>|iStyle;
<a name="l00988"></a>00988                                         piColAuto[i] = 0;
<a name="l00989"></a>00989 
<a name="l00990"></a>00990                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(i, piHeadCols + i * 3);
<a name="l00991"></a>00991                                 } <span class="keywordflow">else</span> {
<a name="l00992"></a>00992                                         <span class="keywordtype">int</span> iColDef = iVal;
<a name="l00993"></a>00993                                         <span class="keywordflow">while</span> (piColAuto[iColDef] &lt; 0 &amp;&amp; piColAuto[iColDef] != INT_MIN) {
<a name="l00994"></a>00994                                                 iColDef = -piColAuto[iColDef] - 1;
<a name="l00995"></a>00995                                         }
<a name="l00996"></a>00996 
<a name="l00997"></a>00997                                         <span class="keywordtype">int</span> iTypeDef, iStyleDef, iValDef;
<a name="l00998"></a>00998                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(piHeadCols[iColDef * 3], iTypeDef, iStyleDef, iValDef);
<a name="l00999"></a>00999 
<a name="l01000"></a>01000                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#aa686d4d06242c5f05eba7d9ce2c9018">_CheckEqualMinMax</a>(i, piHeadCols + i * 3);
<a name="l01001"></a>01001 
<a name="l01002"></a>01002                                         piColAuto[i] = -(iColDef + 1);
<a name="l01003"></a>01003 
<a name="l01004"></a>01004                                         <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l01005"></a>01005                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l01006"></a>01006                                                 iColExpand += iValDef;
<a name="l01007"></a>01007                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l01008"></a>01008                                                 iColContract += iValDef;
<a name="l01009"></a>01009                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01010"></a>01010                                                 <span class="keywordtype">int</span> iWidth = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l01011"></a>01011                                                 <span class="keywordflow">if</span> (iValDef &gt; 0) {
<a name="l01012"></a>01012                                                         iWidth += ::MulDiv(iValDef, lXUnits, 4);
<a name="l01013"></a>01013                                                 } <span class="keywordflow">else</span> {
<a name="l01014"></a>01014                                                         iWidth += (-iValDef);
<a name="l01015"></a>01015                                                 }
<a name="l01016"></a>01016                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01017"></a>01017                                                 <span class="keywordtype">int</span> iWidth = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l01018"></a>01018                                                 <span class="keywordflow">if</span> (iValDef &gt; 0) {
<a name="l01019"></a>01019                                                         iWidth -= ::MulDiv(iValDef, lXUnits, 4);
<a name="l01020"></a>01020                                                 } <span class="keywordflow">else</span> {
<a name="l01021"></a>01021                                                         iWidth -= (-iValDef);
<a name="l01022"></a>01022                                                 }
<a name="l01023"></a>01023 
<a name="l01024"></a>01024                                                 <span class="keywordflow">if</span> (iWidth &lt; 0) {
<a name="l01025"></a>01025                                                         iWidth = 0;
<a name="l01026"></a>01026                                                 }
<a name="l01027"></a>01027                                         } <span class="keywordflow">else</span> {
<a name="l01028"></a>01028                                                 <span class="keywordtype">int</span> iWidth;
<a name="l01029"></a>01029                                                 <span class="keywordflow">if</span> (iValDef &gt; 0) {
<a name="l01030"></a>01030                                                         iWidth = ::MulDiv(iValDef, lXUnits, 4);
<a name="l01031"></a>01031                                                 } <span class="keywordflow">else</span> {
<a name="l01032"></a>01032                                                         iWidth = -iValDef;
<a name="l01033"></a>01033                                                 }
<a name="l01034"></a>01034                                         }
<a name="l01035"></a>01035                                 }
<a name="l01036"></a>01036                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01037"></a>01037                                 piColAuto[i] = INT_MIN;
<a name="l01038"></a>01038 
<a name="l01039"></a>01039                                 <span class="keywordtype">int</span> iWidth = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l01040"></a>01040                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01041"></a>01041                                         iWidth += ::MulDiv(iVal, lXUnits, 4);
<a name="l01042"></a>01042                                 } <span class="keywordflow">else</span> {
<a name="l01043"></a>01043                                         iWidth += (-iVal);
<a name="l01044"></a>01044                                 }
<a name="l01045"></a>01045 
<a name="l01046"></a>01046                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(i, piHeadCols + i * 3, lXUnits, 4, iWidth);
<a name="l01047"></a>01047                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01048"></a>01048                                 piColAuto[i] = INT_MIN;
<a name="l01049"></a>01049 
<a name="l01050"></a>01050                                 <span class="keywordtype">int</span> iWidth = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l01051"></a>01051                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01052"></a>01052                                         iWidth -= ::MulDiv(iVal, lXUnits, 4);
<a name="l01053"></a>01053                                 } <span class="keywordflow">else</span> {
<a name="l01054"></a>01054                                         iWidth -= (-iVal);
<a name="l01055"></a>01055                                 }
<a name="l01056"></a>01056 
<a name="l01057"></a>01057                                 <span class="keywordflow">if</span> (iWidth &lt; 0) {
<a name="l01058"></a>01058                                         iWidth = 0;
<a name="l01059"></a>01059                                 }
<a name="l01060"></a>01060 
<a name="l01061"></a>01061                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(i, piHeadCols + i * 3, lXUnits, 4, iWidth);
<a name="l01062"></a>01062                         } <span class="keywordflow">else</span> {
<a name="l01063"></a>01063                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01064"></a>01064                                         <span class="keywordflow">if</span> (iType) {
<a name="l01065"></a>01065                                                 ATLTRACE(_T(<span class="stringliteral">"Wrong flag in column: %d. Ignored. Auto-column set.\n"</span>), i);
<a name="l01066"></a>01066                                                 piHeadCols[i * 3] = <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>|iStyle;
<a name="l01067"></a>01067                                                 piColAuto[i] = 0;
<a name="l01068"></a>01068 
<a name="l01069"></a>01069                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(i, piHeadCols + i * 3);
<a name="l01070"></a>01070                                         } <span class="keywordflow">else</span> {
<a name="l01071"></a>01071                                                 piColAuto[i] = INT_MIN;
<a name="l01072"></a>01072 
<a name="l01073"></a>01073                                                 <span class="keywordtype">int</span> iWidth = ::MulDiv(iVal, lXUnits, 4);
<a name="l01074"></a>01074 
<a name="l01075"></a>01075                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(i, piHeadCols + i * 3, lXUnits, 4, iWidth);
<a name="l01076"></a>01076                                         }
<a name="l01077"></a>01077                                 } <span class="keywordflow">else</span> {
<a name="l01078"></a>01078                                         piColAuto[i] = INT_MIN;
<a name="l01079"></a>01079 
<a name="l01080"></a>01080                                         <span class="keywordtype">int</span> iWidth = -iVal;
<a name="l01081"></a>01081 
<a name="l01082"></a>01082                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(i, piHeadCols + i * 3, lXUnits, 4, iWidth);
<a name="l01083"></a>01083                                 }
<a name="l01084"></a>01084                         }
<a name="l01085"></a>01085                 }
<a name="l01086"></a>01086 
<a name="l01087"></a>01087                 <span class="keywordtype">int</span> iNumCtrls = 0;
<a name="l01088"></a>01088 
<a name="l01089"></a>01089                 <span class="keywordtype">int</span> iRow = 0, iRowDef = 0;
<a name="l01090"></a>01090                 <span class="keywordtype">int</span> iRowHeightFixed = 0;
<a name="l01091"></a>01091                 <span class="keywordtype">int</span> iRowHeightMin = 0;
<a name="l01092"></a>01092                 <a class="code" href="class_a_t_l_1_1int__no.html">int_no</a> iRowHeightMax = 0;
<a name="l01093"></a>01093                 <span class="keywordtype">int</span> iRowExpand = 0;
<a name="l01094"></a>01094                 <span class="keywordtype">int</span> iRowContract = 0;
<a name="l01095"></a>01095 
<a name="l01096"></a>01096                 <span class="keywordflow">if</span> (pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a>) {
<a name="l01097"></a>01097                         <span class="keywordtype">int</span> *piRowAuto = (<span class="keywordtype">int</span>*)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));
<a name="l01098"></a>01098                         <span class="keywordtype">int</span> **ppiRowBegin = (<span class="keywordtype">int</span>**)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>*));
<a name="l01099"></a>01099 
<a name="l01100"></a>01100                         <span class="keywordflow">if</span> (bMain) {
<a name="l01101"></a>01101                                 iRowHeightFixed += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>;
<a name="l01102"></a>01102                                 iRowHeightMin += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>;
<a name="l01103"></a>01103                                 iRowHeightMax += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>;
<a name="l01104"></a>01104                         }
<a name="l01105"></a>01105 
<a name="l01106"></a>01106                         <span class="keywordflow">while</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01107"></a>01107                                 ppiRowBegin[iRow] = piCell;
<a name="l01108"></a>01108 
<a name="l01109"></a>01109                                 <span class="keywordflow">if</span> (ppiRowBegin[iRow][0] == <a class="code" href="atlautosizedlg_8h.html#22c1cd4576577f9718790894b91d98b9">WMR_BEGIN</a>) {
<a name="l01110"></a>01110                                         <span class="keywordtype">int</span> iType, iStyle, iVal;
<a name="l01111"></a>01111                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(ppiRowBegin[iRow][1], iType, iStyle, iVal);
<a name="l01112"></a>01112 
<a name="l01113"></a>01113                                         <span class="keywordflow">if</span> (iRow &amp;&amp; !(iStyle &amp; <a class="code" href="atlautosizedlg_8h.html#d93326ed7691787d9908bea267510752">WMSRC_NOGAP</a>)) {
<a name="l01114"></a>01114                                                 iRowHeightFixed += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01115"></a>01115                                                 iRowHeightMin += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01116"></a>01116                                                 iRowHeightMax += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01117"></a>01117                                         }
<a name="l01118"></a>01118 
<a name="l01119"></a>01119                                         <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l01120"></a>01120                                                 piRowAuto[iRow] = 0;
<a name="l01121"></a>01121                                                 iRowDef = iRow;
<a name="l01122"></a>01122 
<a name="l01123"></a>01123                                                 ppiRowBegin[iRow][1] = iType|iStyle;
<a name="l01124"></a>01124 
<a name="l01125"></a>01125                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(iRow, ppiRowBegin[iRow] + 1);
<a name="l01126"></a>01126                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l01127"></a>01127                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01128"></a>01128                                                 iRowDef = iRow;
<a name="l01129"></a>01129 
<a name="l01130"></a>01130                                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01131"></a>01131                                                         iRowExpand += iVal;
<a name="l01132"></a>01132                                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iVal == 0) {
<a name="l01133"></a>01133                                                         ppiRowBegin[iRow][1] |= <a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l01134"></a>01134                                                         iRowExpand += <a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l01135"></a>01135                                                 } <span class="keywordflow">else</span> {
<a name="l01136"></a>01136                                                         ATLTRACE(_T(<span class="stringliteral">"Wrong value in row: %d. Ignored.\n"</span>), iRow);
<a name="l01137"></a>01137                                                         ppiRowBegin[iRow][1] = iType|iStyle|<a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l01138"></a>01138                                                         iRowExpand += <a class="code" href="atlautosizedlg_8h.html#a537d1c244853da21e80b41d119e1bf4">WMSRC_DEFEXPANDABLEVAL</a>;
<a name="l01139"></a>01139                                                 }
<a name="l01140"></a>01140 
<a name="l01141"></a>01141                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(iRow, ppiRowBegin[iRow] + 1);
<a name="l01142"></a>01142                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l01143"></a>01143                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01144"></a>01144                                                 iRowDef = iRow;
<a name="l01145"></a>01145 
<a name="l01146"></a>01146                                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01147"></a>01147                                                         iRowContract += iVal;
<a name="l01148"></a>01148                                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iVal == 0) {
<a name="l01149"></a>01149                                                         ppiRowBegin[iRow][1] |= <a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l01150"></a>01150                                                         iRowContract += <a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l01151"></a>01151                                                 } <span class="keywordflow">else</span> {
<a name="l01152"></a>01152                                                         ATLTRACE(_T(<span class="stringliteral">"Wrong value in row: %d. Ignored.\n"</span>), iRow);
<a name="l01153"></a>01153                                                         ppiRowBegin[iRow][1] = iType|iStyle|<a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l01154"></a>01154                                                         iRowContract += <a class="code" href="atlautosizedlg_8h.html#b02950973802ccf67094f010f8b5df93">WMSRC_DEFCONTRACTABLEVAL</a>;
<a name="l01155"></a>01155                                                 }
<a name="l01156"></a>01156 
<a name="l01157"></a>01157                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(iRow, ppiRowBegin[iRow] + 1);
<a name="l01158"></a>01158                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#13c4321ce4c439e138b3d1d980e285cc">WMSRC_EQUAL</a>) {
<a name="l01159"></a>01159                                                 <span class="keywordflow">if</span> (iVal &gt;= iRow || iVal &lt; 0) {
<a name="l01160"></a>01160                                                         ATLTRACE(_T(<span class="stringliteral">"Rows can be equal only to preceeding rows. Flag in row: %d ignored. Auto-row set.\n"</span>), iRow);
<a name="l01161"></a>01161                                                         ppiRowBegin[iRow][1] = <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>|iStyle;
<a name="l01162"></a>01162                                                         piRowAuto[iRow] = 0;
<a name="l01163"></a>01163                                                         iRowDef = iRow;
<a name="l01164"></a>01164 
<a name="l01165"></a>01165                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(iRow, ppiRowBegin[iRow] + 1);
<a name="l01166"></a>01166                                                 } <span class="keywordflow">else</span> {
<a name="l01167"></a>01167                                                         iRowDef = iVal;
<a name="l01168"></a>01168                                                         <span class="keywordflow">while</span> (piRowAuto[iRowDef] &lt; 0 &amp;&amp; piRowAuto[iRowDef] != INT_MIN) {
<a name="l01169"></a>01169                                                                 iRowDef = -piRowAuto[iRowDef] - 1;
<a name="l01170"></a>01170                                                         }
<a name="l01171"></a>01171 
<a name="l01172"></a>01172                                                         <span class="keywordtype">int</span> iTypeDef, iStyleDef, iValDef;
<a name="l01173"></a>01173                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(ppiRowBegin[iRowDef][1], iTypeDef, iStyleDef, iValDef);
<a name="l01174"></a>01174 
<a name="l01175"></a>01175                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#aa686d4d06242c5f05eba7d9ce2c9018">_CheckEqualMinMax</a>(iRow, ppiRowBegin[iRow] + 1);
<a name="l01176"></a>01176 
<a name="l01177"></a>01177                                                         <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l01178"></a>01178                                                                 piRowAuto[iRow] = -(iRowDef + 1);
<a name="l01179"></a>01179                                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l01180"></a>01180                                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01181"></a>01181 
<a name="l01182"></a>01182                                                                 iRowExpand += iValDef;
<a name="l01183"></a>01183                                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l01184"></a>01184                                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01185"></a>01185 
<a name="l01186"></a>01186                                                                 iRowContract += iValDef;
<a name="l01187"></a>01187                                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01188"></a>01188                                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01189"></a>01189 
<a name="l01190"></a>01190                                                                 <span class="keywordtype">int</span> iHeight = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01191"></a>01191                                                                 <span class="keywordflow">if</span> (iValDef &gt; 0) {
<a name="l01192"></a>01192                                                                         iHeight += ::MulDiv(iValDef, lYUnits, 8);
<a name="l01193"></a>01193                                                                 } <span class="keywordflow">else</span> {
<a name="l01194"></a>01194                                                                         iHeight += (-iValDef);
<a name="l01195"></a>01195                                                                 }
<a name="l01196"></a>01196                                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01197"></a>01197                                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01198"></a>01198 
<a name="l01199"></a>01199                                                                 <span class="keywordtype">int</span> iHeight = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01200"></a>01200                                                                 <span class="keywordflow">if</span> (iValDef &gt; 0) {
<a name="l01201"></a>01201                                                                         iHeight -= ::MulDiv(iValDef, lYUnits, 8);
<a name="l01202"></a>01202                                                                 } <span class="keywordflow">else</span> {
<a name="l01203"></a>01203                                                                         iHeight -= (-iValDef);
<a name="l01204"></a>01204                                                                 }
<a name="l01205"></a>01205 
<a name="l01206"></a>01206                                                                 <span class="keywordflow">if</span> (iHeight &lt; 0) {
<a name="l01207"></a>01207                                                                         iHeight = 0;
<a name="l01208"></a>01208                                                                 }
<a name="l01209"></a>01209                                                         } <span class="keywordflow">else</span> {
<a name="l01210"></a>01210                                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01211"></a>01211 
<a name="l01212"></a>01212                                                                 <span class="keywordtype">int</span> iHeight;
<a name="l01213"></a>01213                                                                 <span class="keywordflow">if</span> (iValDef &gt; 0) {
<a name="l01214"></a>01214                                                                         iHeight = ::MulDiv(iValDef, lYUnits, 8);
<a name="l01215"></a>01215                                                                 } <span class="keywordflow">else</span> {
<a name="l01216"></a>01216                                                                         iHeight = -iValDef;
<a name="l01217"></a>01217                                                                 }
<a name="l01218"></a>01218                                                         }
<a name="l01219"></a>01219                                                 }
<a name="l01220"></a>01220                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01221"></a>01221                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01222"></a>01222                                                 iRowDef = iRow;
<a name="l01223"></a>01223 
<a name="l01224"></a>01224                                                 <span class="keywordtype">int</span> iHeight = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01225"></a>01225                                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01226"></a>01226                                                         iHeight += ::MulDiv(iVal, lYUnits, 8);
<a name="l01227"></a>01227                                                 } <span class="keywordflow">else</span> {
<a name="l01228"></a>01228                                                         iHeight += (-iVal);
<a name="l01229"></a>01229                                                 }
<a name="l01230"></a>01230 
<a name="l01231"></a>01231                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(iRow, ppiRowBegin[iRow] + 1, lYUnits, 8, iHeight);
<a name="l01232"></a>01232                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01233"></a>01233                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01234"></a>01234                                                 iRowDef = iRow;
<a name="l01235"></a>01235 
<a name="l01236"></a>01236                                                 <span class="keywordtype">int</span> iHeight = pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01237"></a>01237                                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01238"></a>01238                                                         iHeight -= ::MulDiv(iVal, lYUnits, 8);
<a name="l01239"></a>01239                                                 } <span class="keywordflow">else</span> {
<a name="l01240"></a>01240                                                         iHeight -= (-iVal);
<a name="l01241"></a>01241                                                 }
<a name="l01242"></a>01242 
<a name="l01243"></a>01243                                                 <span class="keywordflow">if</span> (iHeight &lt; 0) {
<a name="l01244"></a>01244                                                         iHeight = 0;
<a name="l01245"></a>01245                                                 }
<a name="l01246"></a>01246 
<a name="l01247"></a>01247                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(iRow, ppiRowBegin[iRow] + 1, lYUnits, 8, iHeight);
<a name="l01248"></a>01248                                         } <span class="keywordflow">else</span> {
<a name="l01249"></a>01249                                                 iRowDef = iRow;
<a name="l01250"></a>01250                                                 <span class="keywordflow">if</span> (iVal &gt; 0) {
<a name="l01251"></a>01251                                                         <span class="keywordflow">if</span> (iType) {
<a name="l01252"></a>01252                                                                 ATLTRACE(_T(<span class="stringliteral">"Wrong flag in row: %d. Ignored. Auto-row set.\n"</span>), iRow);
<a name="l01253"></a>01253                                                                 ppiRowBegin[iRow][1] = <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>|iStyle;
<a name="l01254"></a>01254                                                                 piRowAuto[iRow] = 0;
<a name="l01255"></a>01255 
<a name="l01256"></a>01256                                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(iRow, ppiRowBegin[iRow] + 1);
<a name="l01257"></a>01257                                                         } <span class="keywordflow">else</span> {
<a name="l01258"></a>01258                                                                 piRowAuto[iRow] = INT_MIN;
<a name="l01259"></a>01259 
<a name="l01260"></a>01260                                                                 <span class="keywordtype">int</span> iHeight = ::MulDiv(iVal, lYUnits, 8);
<a name="l01261"></a>01261 
<a name="l01262"></a>01262                                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(iRow, ppiRowBegin[iRow] + 1, lYUnits, 8, iHeight);
<a name="l01263"></a>01263                                                         }
<a name="l01264"></a>01264                                                 } <span class="keywordflow">else</span> {
<a name="l01265"></a>01265                                                         piRowAuto[iRow] = INT_MIN;
<a name="l01266"></a>01266 
<a name="l01267"></a>01267                                                         <span class="keywordtype">int</span> iHeight = -iVal;
<a name="l01268"></a>01268 
<a name="l01269"></a>01269                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(iRow, ppiRowBegin[iRow] + 1, lYUnits, 8, iHeight);
<a name="l01270"></a>01270                                                 }
<a name="l01271"></a>01271                                         }
<a name="l01272"></a>01272 
<a name="l01273"></a>01273                                         piCell += 4;
<a name="l01274"></a>01274 
<a name="l01275"></a>01275                                         <span class="keywordtype">int</span> iCol = 0, iColDef = 0;
<a name="l01276"></a>01276                                         <span class="keywordflow">while</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#dc65912d32b23c3d1e46fbf5d056a24f">WMR_END</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01277"></a>01277                                                 <span class="keywordflow">if</span> (iCol &lt; pheader-&gt;m_iNumCols) {
<a name="l01278"></a>01278                                                         iColDef = (piColAuto[iCol] == INT_MIN || piColAuto[iCol] &gt;= 0 ? iCol: -piColAuto[iCol] - 1);
<a name="l01279"></a>01279 
<a name="l01280"></a>01280                                                         <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#1abcfa932fc6ecb0af35e8f33d51163c">WMH_BEGIN</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#856ceeabc8e3837396b1994794db6b38">WMSCTRL_EMPTY</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#07c573d5dd3e01289cae2d1323327599">WMSCTRL_EXPDOWN</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#8db6b604e1ceb9d79ed91acb7d5d5c80">WMSCTRL_EXPRIGHT</a>) {
<a name="l01281"></a>01281                                                                 iNumCtrls++;
<a name="l01282"></a>01282                                                                 <span class="keywordflow">if</span> (piColAuto[iColDef] != INT_MIN || piRowAuto[iRowDef] != INT_MIN || 
<a name="l01283"></a>01283                                                                         piHeadCols[iColDef * 3 + 1] &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a> || piHeadCols[iColDef * 3 + 2] &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a> || 
<a name="l01284"></a>01284                                                                         ppiRowBegin[iRowDef][2] &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a> || ppiRowBegin[iRowDef][3] &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a>) {
<a name="l01285"></a>01285 
<a name="l01286"></a>01286                                                                         HWND hWnd = pT-&gt;GetDlgItem(*piCell);
<a name="l01287"></a>01287                                                                         <span class="keywordflow">if</span> (!hWnd) {
<a name="l01288"></a>01288                                                                                 ATLTRACE(_T(<span class="stringliteral">"Inexistant ctrl in row: %d, col: %d. Ignored.\n"</span>), iRow, iCol);
<a name="l01289"></a>01289                                                                         } <span class="keywordflow">else</span> {
<a name="l01290"></a>01290                                                                                 <span class="keyword">const</span> MINMAXINFO mmOrig = {0, 0, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX, INT_MAX};
<a name="l01291"></a>01291                                                                                 MINMAXINFO mm = mmOrig;
<a name="l01292"></a>01292 
<a name="l01293"></a>01293                                                                                 ::SendMessage(hWnd, WM_GETMINMAXINFO, 0, (LPARAM)&amp;mm);
<a name="l01294"></a>01294                                                                                 <span class="keywordflow">if</span> (::memcmp(&amp;mm, &amp;mmOrig, <span class="keyword">sizeof</span>(MINMAXINFO)) != 0) {
<a name="l01295"></a>01295                                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">_CalcAuto</a>(piColAuto[iColDef], mm.ptMinTrackSize.x);
<a name="l01296"></a>01296                                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#ba2b6b6f27edf1038797c3f790aad51e">_CalcMinMaxAuto</a>(piHeadCols + iColDef * 3, mm.ptMinTrackSize.x, mm.ptMaxTrackSize.x);
<a name="l01297"></a>01297 
<a name="l01298"></a>01298                                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">_CalcAuto</a>(piRowAuto[iRowDef], mm.ptMinTrackSize.y);
<a name="l01299"></a>01299                                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#ba2b6b6f27edf1038797c3f790aad51e">_CalcMinMaxAuto</a>(ppiRowBegin[iRowDef] + 1, mm.ptMinTrackSize.y, mm.ptMaxTrackSize.y);
<a name="l01300"></a>01300                                                                                 } <span class="keywordflow">else</span> {
<a name="l01301"></a>01301                                                                                         RECT rect = {0};
<a name="l01302"></a>01302                                                                                         ATLVERIFY(::GetWindowRect(hWnd, &amp;rect));
<a name="l01303"></a>01303 
<a name="l01304"></a>01304                                                                                         <span class="keywordtype">int</span> iWidth = rect.right - rect.left;
<a name="l01305"></a>01305                                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">_CalcAuto</a>(piColAuto[iColDef], iWidth);
<a name="l01306"></a>01306 
<a name="l01307"></a>01307                                                                                         <span class="keywordtype">int</span> iHeight = rect.bottom - rect.top;
<a name="l01308"></a>01308                                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">_CalcAuto</a>(piRowAuto[iRowDef], iHeight);
<a name="l01309"></a>01309                                                                                 }
<a name="l01310"></a>01310                                                                         }
<a name="l01311"></a>01311                                                                 }
<a name="l01312"></a>01312                                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*piCell == <a class="code" href="atlautosizedlg_8h.html#1abcfa932fc6ecb0af35e8f33d51163c">WMH_BEGIN</a>) {
<a name="l01313"></a>01313                                                                 <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a> *pheaderNew = (<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a>*)piCell; 
<a name="l01314"></a>01314                                                                 <span class="keywordflow">if</span> (<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#9783effb9f6becebad5fba91d45142db">_CtrlsInitialize</a>(pheaderNew, pmargins, lXUnits, lYUnits, FALSE)) {
<a name="l01315"></a>01315                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">_CalcAuto</a>(piColAuto[iColDef], pheaderNew-&gt;m_iColWidthMin);
<a name="l01316"></a>01316                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#ba2b6b6f27edf1038797c3f790aad51e">_CalcMinMaxAuto</a>(piHeadCols + iColDef * 3, pheaderNew-&gt;m_iColWidthMin, pheaderNew-&gt;m_iColWidthMax);
<a name="l01317"></a>01317 
<a name="l01318"></a>01318                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">_CalcAuto</a>(piRowAuto[iRowDef], pheaderNew-&gt;m_iRowHeightMin);
<a name="l01319"></a>01319                                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#ba2b6b6f27edf1038797c3f790aad51e">_CalcMinMaxAuto</a>(ppiRowBegin[iRowDef] + 1, pheaderNew-&gt;m_iRowHeightMin, pheaderNew-&gt;m_iRowHeightMax);
<a name="l01320"></a>01320 
<a name="l01321"></a>01321                                                                         iNumCtrls += pheaderNew-&gt;m_iNumCtrls;
<a name="l01322"></a>01322 
<a name="l01323"></a>01323                                                                         piCell += piCell[1];
<a name="l01324"></a>01324                                                                 } <span class="keywordflow">else</span> {
<a name="l01325"></a>01325                                                                         <span class="keywordflow">return</span> FALSE;
<a name="l01326"></a>01326                                                                 }
<a name="l01327"></a>01327                                                         }
<a name="l01328"></a>01328                                                 } <span class="keywordflow">else</span> {
<a name="l01329"></a>01329                                                         ATLTRACE(_T(<span class="stringliteral">"Too many columns. Row: %d, col: %d ignored.\n"</span>), iRow, iCol);
<a name="l01330"></a>01330 
<a name="l01331"></a>01331                                                         <span class="keywordflow">if</span> (*piCell == <a class="code" href="atlautosizedlg_8h.html#1abcfa932fc6ecb0af35e8f33d51163c">WMH_BEGIN</a>) {
<a name="l01332"></a>01332                                                                 piCell += piCell[1];
<a name="l01333"></a>01333                                                         }
<a name="l01334"></a>01334                                                 }
<a name="l01335"></a>01335 
<a name="l01336"></a>01336                                                 iCol++;
<a name="l01337"></a>01337                                                 piCell++;
<a name="l01338"></a>01338                                         }
<a name="l01339"></a>01339 
<a name="l01340"></a>01340                                         <span class="keywordflow">if</span> (*piCell == <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01341"></a>01341                                                 ATLTRACE(_T(<span class="stringliteral">"Malformed endrow in row: %d. Ignored.\n"</span>), iRow);
<a name="l01342"></a>01342                                         } 
<a name="l01343"></a>01343                                 } <span class="keywordflow">else</span> {
<a name="l01344"></a>01344                                         ATLTRACE(_T(<span class="stringliteral">"Malformed row: %d. Skipped. \n"</span>), iRow);
<a name="l01345"></a>01345                                         <span class="keywordflow">while</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#dc65912d32b23c3d1e46fbf5d056a24f">WMR_END</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01346"></a>01346                                                 piCell++;
<a name="l01347"></a>01347                                         }
<a name="l01348"></a>01348 
<a name="l01349"></a>01349                                         piRowAuto[iRow] = INT_MIN;
<a name="l01350"></a>01350                                 }
<a name="l01351"></a>01351 
<a name="l01352"></a>01352                                 iRow++;
<a name="l01353"></a>01353 
<a name="l01354"></a>01354                                 <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01355"></a>01355                                         piCell++;
<a name="l01356"></a>01356                                 }
<a name="l01357"></a>01357                         }
<a name="l01358"></a>01358 
<a name="l01359"></a>01359 <span class="preprocessor">#ifdef TRACEAUTOSIZE</span>
<a name="l01360"></a>01360 <span class="preprocessor"></span>                        ATLTRACE(<span class="stringliteral">"Rows: "</span>);
<a name="l01361"></a>01361 <span class="preprocessor">#endif </span>
<a name="l01362"></a>01362 <span class="preprocessor"></span>                        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; iRow; i++) {
<a name="l01363"></a>01363                                 <span class="keywordflow">if</span> (piRowAuto[i] != INT_MIN) {
<a name="l01364"></a>01364                                         <span class="keywordflow">if</span> (piRowAuto[i] &gt;= 0) {
<a name="l01365"></a>01365                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e5dd063891255c0b9a1466d9be4caa40">_CheckAutoMinMax</a>(ppiRowBegin[i] + 1, piRowAuto[i]);
<a name="l01366"></a>01366                                                 <span class="keywordtype">int</span> iType = ppiRowBegin[i][1] &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01367"></a>01367                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">_AddMinMax</a>(i, ppiRowBegin[i] + 1, lYUnits, 8, iRowHeightFixed, iType, iRowHeightMin, iRowHeightMax);
<a name="l01368"></a>01368                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e4f39bd6772b988cea23f68f89c5c993">_SetAuto</a>(ppiRowBegin[i] + 1, lYUnits, 8, piRowAuto[i]);
<a name="l01369"></a>01369                                         } <span class="keywordflow">else</span> {
<a name="l01370"></a>01370                                                 <span class="keywordtype">int</span> iDef = -piRowAuto[i] - 1;
<a name="l01371"></a>01371                                                 <span class="keywordtype">int</span> iType = ppiRowBegin[iDef][1] &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01372"></a>01372                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">_AddMinMax</a>(i, ppiRowBegin[iDef] + 1, lYUnits, 8, iRowHeightFixed, iType, iRowHeightMin, iRowHeightMax);
<a name="l01373"></a>01373                                         }
<a name="l01374"></a>01374                                 } <span class="keywordflow">else</span> {
<a name="l01375"></a>01375                                         <span class="keywordtype">int</span> iType = ppiRowBegin[i][1] &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01376"></a>01376                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">_AddMinMax</a>(i, ppiRowBegin[i] + 1, lYUnits, 8, iRowHeightFixed, iType, iRowHeightMin, iRowHeightMax);
<a name="l01377"></a>01377                                 }
<a name="l01378"></a>01378 
<a name="l01379"></a>01379 <span class="preprocessor">#ifdef TRACEAUTOSIZE</span>
<a name="l01380"></a>01380 <span class="preprocessor"></span>                                <span class="keywordtype">int</span> iTypeMin, iTypeMax;
<a name="l01381"></a>01381                                 <span class="keywordtype">int</span> iMinPix, iMaxPix;
<a name="l01382"></a>01382                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(ppiRowBegin[i] + 1, lYUnits, 8, iTypeMin, iMinPix, iTypeMax, iMaxPix);
<a name="l01383"></a>01383                                 ATLTRACE(<span class="stringliteral">"%d-%d "</span>, iMinPix, iMaxPix);
<a name="l01384"></a>01384 <span class="preprocessor">#endif</span>
<a name="l01385"></a>01385 <span class="preprocessor"></span>                        }
<a name="l01386"></a>01386                 }
<a name="l01387"></a>01387 
<a name="l01388"></a>01388 <span class="preprocessor">#ifdef TRACEAUTOSIZE</span>
<a name="l01389"></a>01389 <span class="preprocessor"></span>                ATLTRACE(<span class="stringliteral">"\nCols: "</span>);
<a name="l01390"></a>01390 <span class="preprocessor">#endif</span>
<a name="l01391"></a>01391 <span class="preprocessor"></span>                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a>; i++) {
<a name="l01392"></a>01392                         <span class="keywordflow">if</span> (piColAuto[i] != INT_MIN) {
<a name="l01393"></a>01393                                 <span class="keywordflow">if</span> (piColAuto[i] &gt;= 0) {
<a name="l01394"></a>01394                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e5dd063891255c0b9a1466d9be4caa40">_CheckAutoMinMax</a>(piHeadCols + i * 3, piColAuto[i]);
<a name="l01395"></a>01395                                         <span class="keywordtype">int</span> iType = piHeadCols[i * 3] &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01396"></a>01396                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">_AddMinMax</a>(i, piHeadCols + i * 3, lXUnits, 4, iColWidthFixed, iType, iColWidthMin, iColWidthMax);
<a name="l01397"></a>01397                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e4f39bd6772b988cea23f68f89c5c993">_SetAuto</a>(piHeadCols + i * 3, lXUnits, 4, piColAuto[i]);
<a name="l01398"></a>01398                                 } <span class="keywordflow">else</span> {
<a name="l01399"></a>01399                                         <span class="keywordtype">int</span> iDef = -piColAuto[i] - 1;
<a name="l01400"></a>01400                                         <span class="keywordtype">int</span> iType = piHeadCols[iDef * 3] &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01401"></a>01401                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">_AddMinMax</a>(i, piHeadCols + iDef * 3, lXUnits, 4, iColWidthFixed, iType, iColWidthMin, iColWidthMax);
<a name="l01402"></a>01402                                 }
<a name="l01403"></a>01403                         } <span class="keywordflow">else</span> {
<a name="l01404"></a>01404                                 <span class="keywordtype">int</span> iType = piHeadCols[i * 3] &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01405"></a>01405                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">_AddMinMax</a>(i, piHeadCols + i * 3, lXUnits, 4, iColWidthFixed, iType, iColWidthMin, iColWidthMax);
<a name="l01406"></a>01406                         }
<a name="l01407"></a>01407 
<a name="l01408"></a>01408 <span class="preprocessor">#ifdef TRACEAUTOSIZE</span>
<a name="l01409"></a>01409 <span class="preprocessor"></span>                        <span class="keywordtype">int</span> iTypeMin, iTypeMax;
<a name="l01410"></a>01410                         <span class="keywordtype">int</span> iMinPix, iMaxPix;
<a name="l01411"></a>01411                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(piHeadCols + i * 3, lXUnits, 4, iTypeMin, iMinPix, iTypeMax, iMaxPix);
<a name="l01412"></a>01412                         ATLTRACE(<span class="stringliteral">"%d-%d "</span>, iMinPix, iMaxPix);
<a name="l01413"></a>01413 <span class="preprocessor">#endif</span>
<a name="l01414"></a>01414 <span class="preprocessor"></span>                }
<a name="l01415"></a>01415 
<a name="l01416"></a>01416 <span class="preprocessor">#ifdef TRACEAUTOSIZE</span>
<a name="l01417"></a>01417 <span class="preprocessor"></span>                ATLTRACE(<span class="stringliteral">"\n"</span>);
<a name="l01418"></a>01418 <span class="preprocessor">#endif</span>
<a name="l01419"></a>01419 <span class="preprocessor"></span>
<a name="l01420"></a>01420                 <span class="keywordflow">if</span> (iRow != pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a>) {
<a name="l01421"></a>01421                         ATLTRACE(_T(<span class="stringliteral">"Number of rows incorrect. Fixed.\n"</span>));
<a name="l01422"></a>01422                         pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a> = iRow;
<a name="l01423"></a>01423                 }
<a name="l01424"></a>01424 
<a name="l01425"></a>01425                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7cfa3612955a8117b715c5a19fab10a2">m_iNumCtrls</a> = iNumCtrls;
<a name="l01426"></a>01426                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6fa09759340a9296456dd2d996758ec4">m_iColWidthFixed</a> = iColWidthFixed;
<a name="l01427"></a>01427                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#b712eedcb5a4e47b2fd3337e014b4254">m_iColWidthMin</a> = iColWidthMin;
<a name="l01428"></a>01428                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#d4efeb4096fde8d57db2cfd56dda792e">m_iColWidthMax</a> = iColWidthMax;
<a name="l01429"></a>01429                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#3d56cac4a4cfe6967d0a5580bccabc74">m_iColExpand</a> = iColExpand;
<a name="l01430"></a>01430                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8a4f88db3f329cd2e6ff67c141594924">m_iColContract</a> = iColContract;
<a name="l01431"></a>01431 
<a name="l01432"></a>01432                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#1436037a0a0e80f23fc99c6e4bd342d4">m_iRowHeightFixed</a> = iRowHeightFixed;
<a name="l01433"></a>01433                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8962ed2ec288cbd0b002c99fd4501eac">m_iRowHeightMin</a> = iRowHeightMin;
<a name="l01434"></a>01434                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#2d0973b9b3eb11a25d576924198e0e44">m_iRowHeightMax</a> = iRowHeightMax;
<a name="l01435"></a>01435                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7eabc008850098e58bf4384668c6d3b2">m_iRowExpand</a> = iRowExpand;
<a name="l01436"></a>01436                 pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#f3f4c8d1640118f54d8c9d2083ff03b0">m_iRowContract</a> = iRowContract;
<a name="l01437"></a>01437 
<a name="l01438"></a>01438 <span class="preprocessor">#ifdef TRACEAUTOSIZE</span>
<a name="l01439"></a>01439 <span class="preprocessor"></span>                ATLTRACE(<span class="stringliteral">"Fixed: %d, %d. Min: %d, %d. Max: %d, %d\n"</span>, iColWidthFixed, iRowHeightFixed, iColWidthMin, iRowHeightMin, iColWidthMax, iRowHeightMax);
<a name="l01440"></a>01440 <span class="preprocessor">#endif</span>
<a name="l01441"></a>01441 <span class="preprocessor"></span>
<a name="l01442"></a>01442                 ATLASSERT(*piCell == <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>);
<a name="l01443"></a>01443                 <span class="keywordflow">return</span> TRUE;
<a name="l01444"></a>01444         }
<a name="l01445"></a>01445 
<a name="l01446"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#06c0fc5cd54035e64c9039bfefdbe6b5">01446</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#06c0fc5cd54035e64c9039bfefdbe6b5">_CtrlsArrange</a>(HDWP &amp;hdwp, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a> *pheader, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> *pmargins, LONG lXUnits, LONG lYUnits, RECT *pRectWindow, BOOL bMain = TRUE)
<a name="l01447"></a>01447         {
<a name="l01448"></a>01448                 <span class="keywordflow">if</span> (pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#a564153f4798892192300f7f96c11f12">m_iSignature</a> != <a class="code" href="atlautosizedlg_8h.html#1abcfa932fc6ecb0af35e8f33d51163c">WMH_BEGIN</a>) {
<a name="l01449"></a>01449                         ATLTRACE(_T(<span class="stringliteral">"Wrong header format. Aborted.\n"</span>));
<a name="l01450"></a>01450                         <span class="keywordflow">return</span> FALSE;
<a name="l01451"></a>01451                 }
<a name="l01452"></a>01452 
<a name="l01453"></a>01453                 <span class="keywordtype">int</span> *piHeadCols = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6f5ce1843c95768aa1f3c48d9a0904b8">m_iCtrls</a>;
<a name="l01454"></a>01454 
<a name="l01455"></a>01455                 <span class="keywordtype">int</span> *piCell = piHeadCols + pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * 3 + 1;
<a name="l01456"></a>01456 
<a name="l01457"></a>01457                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l01458"></a>01458 
<a name="l01459"></a>01459                 <span class="keywordflow">if</span> (pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a>) {
<a name="l01460"></a>01460                         <span class="keywordtype">int</span> iColTrueMin = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#b712eedcb5a4e47b2fd3337e014b4254">m_iColWidthMin</a>;
<a name="l01461"></a>01461                         <span class="keywordtype">int</span> iColTrueMax = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#d4efeb4096fde8d57db2cfd56dda792e">m_iColWidthMax</a>;
<a name="l01462"></a>01462 
<a name="l01463"></a>01463                         <span class="keywordtype">int</span> iRowTrueMin = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8962ed2ec288cbd0b002c99fd4501eac">m_iRowHeightMin</a>;
<a name="l01464"></a>01464                         <span class="keywordtype">int</span> iRowTrueMax = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#2d0973b9b3eb11a25d576924198e0e44">m_iRowHeightMax</a>;
<a name="l01465"></a>01465 
<a name="l01466"></a>01466                         <span class="keywordtype">int</span> iWidth = pRectWindow-&gt;right - pRectWindow-&gt;left;
<a name="l01467"></a>01467                         <span class="keywordtype">int</span> iTotalColContract;
<a name="l01468"></a>01468 
<a name="l01469"></a>01469                         <span class="keywordflow">if</span> (iWidth &lt; iColTrueMin) {
<a name="l01470"></a>01470                                 ATLTRACE(_T(<span class="stringliteral">"Width too small! Needed %d more pixels.\n"</span>), iColTrueMin - iWidth);
<a name="l01471"></a>01471                                 iTotalColContract = 0;
<a name="l01472"></a>01472                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iWidth &gt;= iColTrueMin &amp;&amp; iWidth &lt;= iColTrueMax) {
<a name="l01473"></a>01473                                 iTotalColContract = 0;
<a name="l01474"></a>01474                         } <span class="keywordflow">else</span> {
<a name="l01475"></a>01475                                 iTotalColContract = iWidth - iColTrueMax;
<a name="l01476"></a>01476                                 iWidth = iColTrueMax;
<a name="l01477"></a>01477                         }
<a name="l01478"></a>01478 
<a name="l01479"></a>01479                         <span class="keywordtype">int</span> iHeight = pRectWindow-&gt;bottom - pRectWindow-&gt;top;
<a name="l01480"></a>01480                         <span class="keywordtype">int</span> iTotalRowContract;
<a name="l01481"></a>01481 
<a name="l01482"></a>01482                         <span class="keywordflow">if</span> (iHeight &lt; iRowTrueMin) {
<a name="l01483"></a>01483                                 ATLTRACE(_T(<span class="stringliteral">"Height too small! Needed %d more pixels.\n"</span>), iRowTrueMin - iHeight);
<a name="l01484"></a>01484                                 iTotalRowContract = 0;
<a name="l01485"></a>01485                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iHeight &gt;= iRowTrueMin &amp;&amp; iHeight &lt;= iRowTrueMax) {
<a name="l01486"></a>01486                                 iTotalRowContract = 0;
<a name="l01487"></a>01487                         } <span class="keywordflow">else</span> {
<a name="l01488"></a>01488                                 iTotalRowContract = iHeight - iRowTrueMax;
<a name="l01489"></a>01489                                 iHeight = iRowTrueMax;
<a name="l01490"></a>01490                         }
<a name="l01491"></a>01491 
<a name="l01492"></a>01492 <span class="preprocessor">#ifdef TRACEAUTOSIZE2</span>
<a name="l01493"></a>01493 <span class="preprocessor"></span>                        ATLTRACE(<span class="stringliteral">"Rect: %d, %d\n"</span>, iWidth, iHeight);
<a name="l01494"></a>01494 <span class="preprocessor">#endif</span>
<a name="l01495"></a>01495 <span class="preprocessor"></span>
<a name="l01496"></a>01496                         <span class="keywordtype">int</span> iTotalColExpand = (iWidth &gt; iColTrueMin ? iWidth - pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#6fa09759340a9296456dd2d996758ec4">m_iColWidthFixed</a> : 0);
<a name="l01497"></a>01497                         <span class="keywordtype">int</span> iColExpand = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#3d56cac4a4cfe6967d0a5580bccabc74">m_iColExpand</a>, iColContract = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#8a4f88db3f329cd2e6ff67c141594924">m_iColContract</a>;
<a name="l01498"></a>01498 
<a name="l01499"></a>01499                         <span class="keywordtype">int</span> iTotalRowExpand = (iHeight &gt; iRowTrueMin ? iHeight - pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#1436037a0a0e80f23fc99c6e4bd342d4">m_iRowHeightFixed</a> : 0);
<a name="l01500"></a>01500                         <span class="keywordtype">int</span> iRowExpand = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#7eabc008850098e58bf4384668c6d3b2">m_iRowExpand</a>, iRowContract = pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#f3f4c8d1640118f54d8c9d2083ff03b0">m_iRowContract</a>;
<a name="l01501"></a>01501 
<a name="l01502"></a>01502                         <span class="keywordtype">int</span> *piWidthCol = (<span class="keywordtype">int</span>*)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));
<a name="l01503"></a>01503 
<a name="l01504"></a>01504                         <span class="keywordtype">int</span> iWidthTotal = pRectWindow-&gt;left;
<a name="l01505"></a>01505                         <span class="keywordflow">if</span> (bMain) {
<a name="l01506"></a>01506                                 iWidthTotal += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>;
<a name="l01507"></a>01507                         }
<a name="l01508"></a>01508 
<a name="l01509"></a>01509 <span class="preprocessor">#ifdef TRACEAUTOSIZE2</span>
<a name="l01510"></a>01510 <span class="preprocessor"></span>                        ATLTRACE(<span class="stringliteral">"Cols: "</span>);
<a name="l01511"></a>01511 <span class="preprocessor">#endif</span>
<a name="l01512"></a>01512 <span class="preprocessor"></span>
<a name="l01513"></a>01513                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a>; i++) {
<a name="l01514"></a>01514                                 <span class="keywordtype">int</span> iType, iStyle, iVal;
<a name="l01515"></a>01515                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(piHeadCols[i * 3], iType, iStyle, iVal);
<a name="l01516"></a>01516 
<a name="l01517"></a>01517                                 <span class="keywordflow">if</span> (i &amp;&amp; !(iStyle &amp; <a class="code" href="atlautosizedlg_8h.html#d93326ed7691787d9908bea267510752">WMSRC_NOGAP</a>)) {
<a name="l01518"></a>01518                                         iWidthTotal += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l01519"></a>01519                                 }
<a name="l01520"></a>01520 
<a name="l01521"></a>01521                                 <span class="keywordflow">if</span> (iWidthTotal &gt; pRectWindow-&gt;right) {
<a name="l01522"></a>01522                                         iWidthTotal = pRectWindow-&gt;right;
<a name="l01523"></a>01523                                 }
<a name="l01524"></a>01524 
<a name="l01525"></a>01525                                 <span class="keywordtype">int</span> iTypeMin, iTypeMax;
<a name="l01526"></a>01526                                 <span class="keywordtype">int</span> iMinPix, iMaxPix;
<a name="l01527"></a>01527                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(piHeadCols + i * 3, lXUnits, 4, iTypeMin, iMinPix, iTypeMax, iMaxPix);
<a name="l01528"></a>01528 
<a name="l01529"></a>01529                                 <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l01530"></a>01530                                         piWidthCol[i] = iVal;
<a name="l01531"></a>01531                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l01532"></a>01532                                         piWidthCol[i] = ::MulDiv(iTotalColExpand, iVal, iColExpand);
<a name="l01533"></a>01533                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piWidthCol[i], iMinPix, iMaxPix);
<a name="l01534"></a>01534                                         iColExpand -= iVal;
<a name="l01535"></a>01535                                         iTotalColExpand = (iTotalColExpand &gt; piWidthCol[i] ? iTotalColExpand - piWidthCol[i] : 0);
<a name="l01536"></a>01536                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l01537"></a>01537                                         piWidthCol[i] = ::MulDiv(iTotalColContract, iVal, iColContract);
<a name="l01538"></a>01538                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piWidthCol[i], iMinPix, iMaxPix);
<a name="l01539"></a>01539                                         iColContract -= iVal;
<a name="l01540"></a>01540                                         iTotalColContract = (iTotalColContract &gt; piWidthCol[i] ? iTotalColContract - piWidthCol[i] : 0);
<a name="l01541"></a>01541                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#13c4321ce4c439e138b3d1d980e285cc">WMSRC_EQUAL</a>) {
<a name="l01542"></a>01542                                         <span class="keywordtype">int</span> iColDef = iVal;
<a name="l01543"></a>01543                                         <span class="keywordtype">int</span> iTypeDef, iStyleDef, iValDef;
<a name="l01544"></a>01544                                         <span class="keywordflow">do</span> {
<a name="l01545"></a>01545                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(piHeadCols[iColDef * 3], iTypeDef, iStyleDef, iValDef);
<a name="l01546"></a>01546                                         } <span class="keywordflow">while</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#13c4321ce4c439e138b3d1d980e285cc">WMSRC_EQUAL</a> &amp;&amp; (iColDef = iValDef) == iColDef);
<a name="l01547"></a>01547 
<a name="l01548"></a>01548                                         <span class="keywordtype">int</span> iTypeMinDef, iTypeMaxDef;
<a name="l01549"></a>01549                                         <span class="keywordtype">int</span> iMinPixDef, iMaxPixDef;
<a name="l01550"></a>01550                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(piHeadCols + iColDef * 3, lXUnits, 4, iTypeMinDef, iMinPixDef, iTypeMaxDef, iMaxPixDef);
<a name="l01551"></a>01551 
<a name="l01552"></a>01552                                         <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l01553"></a>01553                                                 piWidthCol[i] = iValDef;
<a name="l01554"></a>01554                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l01555"></a>01555                                                 piWidthCol[i] = ::MulDiv(iTotalColExpand, iValDef, iColExpand);
<a name="l01556"></a>01556                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piWidthCol[i], iMinPixDef, iMaxPixDef);
<a name="l01557"></a>01557                                                 iColExpand -= iValDef;
<a name="l01558"></a>01558                                                 iTotalColExpand = (iTotalColExpand &gt; piWidthCol[i] ? iTotalColExpand - piWidthCol[i] : 0);
<a name="l01559"></a>01559                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l01560"></a>01560                                                 piWidthCol[i] = ::MulDiv(iTotalColContract, iValDef, iColContract);
<a name="l01561"></a>01561                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piWidthCol[i], iMinPixDef, iMaxPixDef);
<a name="l01562"></a>01562                                                 iColContract -= iValDef;
<a name="l01563"></a>01563                                                 iTotalColContract = (iTotalColContract &gt; piWidthCol[i] ? iTotalColContract - piWidthCol[i] : 0);
<a name="l01564"></a>01564                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01565"></a>01565                                                 piWidthCol[i] = iMinPixDef;
<a name="l01566"></a>01566                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01567"></a>01567                                                 piWidthCol[i] = iMinPixDef;
<a name="l01568"></a>01568                                         } <span class="keywordflow">else</span> {
<a name="l01569"></a>01569                                                 piWidthCol[i] = iMinPixDef;
<a name="l01570"></a>01570                                         }               
<a name="l01571"></a>01571                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01572"></a>01572                                         piWidthCol[i] = iMinPix;
<a name="l01573"></a>01573                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01574"></a>01574                                         piWidthCol[i] = iMinPix;
<a name="l01575"></a>01575                                 } <span class="keywordflow">else</span> {
<a name="l01576"></a>01576                                         piWidthCol[i] = iMinPix;
<a name="l01577"></a>01577                                 }
<a name="l01578"></a>01578 
<a name="l01579"></a>01579                                 iWidthTotal += piWidthCol[i];
<a name="l01580"></a>01580                                 <span class="keywordflow">if</span> (iWidthTotal &gt; pRectWindow-&gt;right) {
<a name="l01581"></a>01581                                         piWidthCol[i] -= iWidthTotal - pRectWindow-&gt;right;
<a name="l01582"></a>01582                                         iWidthTotal = pRectWindow-&gt;right;
<a name="l01583"></a>01583                                 }
<a name="l01584"></a>01584 
<a name="l01585"></a>01585 <span class="preprocessor">#ifdef TRACEAUTOSIZE2</span>
<a name="l01586"></a>01586 <span class="preprocessor"></span>                                ATLTRACE(<span class="stringliteral">"%d "</span>, piWidthCol[i]);
<a name="l01587"></a>01587 <span class="preprocessor">#endif</span>
<a name="l01588"></a>01588 <span class="preprocessor"></span>                        }
<a name="l01589"></a>01589 
<a name="l01590"></a>01590                         <span class="keywordtype">int</span> *piHeightRow = (<span class="keywordtype">int</span>*)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>));
<a name="l01591"></a>01591                         <span class="keywordtype">int</span> **ppiRowBegin = (<span class="keywordtype">int</span>**)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#aeb010f6fb63f6a6716e2dcfd4bec7b7">m_iNumRows</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>*));
<a name="l01592"></a>01592 
<a name="l01593"></a>01593                         HWND *phWnd = (HWND*)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * <span class="keyword">sizeof</span>(HWND));
<a name="l01594"></a>01594                         <span class="keywordtype">int</span> **ppiCtrl = (<span class="keywordtype">int</span>**)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>**));
<a name="l01595"></a>01595                         RECT *prect = (RECT*)_alloca(pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * <span class="keyword">sizeof</span>(RECT));
<a name="l01596"></a>01596                         ::memset(phWnd, 0, pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * <span class="keyword">sizeof</span>(HWND));
<a name="l01597"></a>01597                         ::memset(ppiCtrl, 0, pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a> * <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>**));
<a name="l01598"></a>01598 
<a name="l01599"></a>01599                         <span class="keywordtype">int</span> iHeightTotal = pRectWindow-&gt;top;
<a name="l01600"></a>01600                         <span class="keywordflow">if</span> (bMain) {
<a name="l01601"></a>01601                                 iHeightTotal += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>;
<a name="l01602"></a>01602                         }
<a name="l01603"></a>01603 
<a name="l01604"></a>01604                         <span class="keywordtype">int</span> iRow = 0;
<a name="l01605"></a>01605 
<a name="l01606"></a>01606 <span class="preprocessor">#ifdef TRACEAUTOSIZE2</span>
<a name="l01607"></a>01607 <span class="preprocessor"></span>                        ATLTRACE(<span class="stringliteral">"\nRows: "</span>);
<a name="l01608"></a>01608 <span class="preprocessor">#endif</span>
<a name="l01609"></a>01609 <span class="preprocessor"></span>
<a name="l01610"></a>01610                         <span class="keywordflow">while</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01611"></a>01611                                 ppiRowBegin[iRow] = piCell;
<a name="l01612"></a>01612 
<a name="l01613"></a>01613                                 <span class="keywordflow">if</span> (*piCell == <a class="code" href="atlautosizedlg_8h.html#22c1cd4576577f9718790894b91d98b9">WMR_BEGIN</a>) {
<a name="l01614"></a>01614                                         <span class="keywordtype">int</span> iType, iStyle, iVal;
<a name="l01615"></a>01615                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(piCell[1], iType, iStyle, iVal);
<a name="l01616"></a>01616 
<a name="l01617"></a>01617                                         <span class="keywordflow">if</span> (iRow &amp;&amp; !(iStyle &amp; <a class="code" href="atlautosizedlg_8h.html#d93326ed7691787d9908bea267510752">WMSRC_NOGAP</a>)) {
<a name="l01618"></a>01618                                                 iHeightTotal += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01619"></a>01619                                         }
<a name="l01620"></a>01620 
<a name="l01621"></a>01621                                         <span class="keywordflow">if</span> (iHeightTotal &gt; pRectWindow-&gt;bottom) {
<a name="l01622"></a>01622                                                 iHeightTotal = pRectWindow-&gt;bottom;
<a name="l01623"></a>01623                                         }
<a name="l01624"></a>01624 
<a name="l01625"></a>01625                                         <span class="keywordtype">int</span> iTypeMin, iTypeMax;
<a name="l01626"></a>01626                                         <span class="keywordtype">int</span> iMinPix, iMaxPix;
<a name="l01627"></a>01627                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(ppiRowBegin[iRow] + 1, lYUnits, 8, iTypeMin, iMinPix, iTypeMax, iMaxPix);
<a name="l01628"></a>01628 
<a name="l01629"></a>01629                                         <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l01630"></a>01630                                                 piHeightRow[iRow] = iVal;
<a name="l01631"></a>01631                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l01632"></a>01632                                                 piHeightRow[iRow] = ::MulDiv(iTotalRowExpand, iVal, iRowExpand);
<a name="l01633"></a>01633                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piHeightRow[iRow], iMinPix, iMaxPix);
<a name="l01634"></a>01634                                                 iRowExpand -= iVal;
<a name="l01635"></a>01635                                                 iTotalRowExpand = (iTotalColExpand &gt; piHeightRow[iRow] ? iTotalColExpand - piHeightRow[iRow] : 0);
<a name="l01636"></a>01636                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l01637"></a>01637                                                 piHeightRow[iRow] = ::MulDiv(iTotalRowContract, iVal, iRowContract);
<a name="l01638"></a>01638                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piHeightRow[iRow], iMinPix, iMaxPix);
<a name="l01639"></a>01639                                                 iRowContract -= iVal;
<a name="l01640"></a>01640                                                 iTotalRowContract = (iTotalColContract &gt; piHeightRow[iRow] ? iTotalColContract - piHeightRow[iRow] : 0);
<a name="l01641"></a>01641                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#13c4321ce4c439e138b3d1d980e285cc">WMSRC_EQUAL</a>) {
<a name="l01642"></a>01642                                                 <span class="keywordtype">int</span> iRowDef = iVal;
<a name="l01643"></a>01643                                                 <span class="keywordtype">int</span> iTypeDef, iStyleDef, iValDef;
<a name="l01644"></a>01644                                                 <span class="keywordflow">do</span> {
<a name="l01645"></a>01645                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(ppiRowBegin[iRowDef][1], iTypeDef, iStyleDef, iValDef);
<a name="l01646"></a>01646                                                 } <span class="keywordflow">while</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#13c4321ce4c439e138b3d1d980e285cc">WMSRC_EQUAL</a> &amp;&amp; (iRowDef = iValDef) == iRowDef);
<a name="l01647"></a>01647 
<a name="l01648"></a>01648                                                 <span class="keywordtype">int</span> iTypeMinDef, iTypeMaxDef;
<a name="l01649"></a>01649                                                 <span class="keywordtype">int</span> iMinPixDef, iMaxPixDef;
<a name="l01650"></a>01650                                                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(ppiRowBegin[iRowDef] + 1, lYUnits, 8, iTypeMinDef, iMinPixDef, iTypeMaxDef, iMaxPixDef);
<a name="l01651"></a>01651 
<a name="l01652"></a>01652                                                 <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#8214190fd866ff1d5d7b3a1acfb43f76">WMSRC_AUTO</a>) {
<a name="l01653"></a>01653                                                         piHeightRow[iRow] = iValDef;
<a name="l01654"></a>01654                                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a>) {
<a name="l01655"></a>01655                                                         piHeightRow[iRow] = ::MulDiv(iTotalRowExpand, iValDef, iRowExpand);
<a name="l01656"></a>01656                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piHeightRow[iRow], iMinPix, iMaxPix);
<a name="l01657"></a>01657                                                         iRowExpand -= iValDef;
<a name="l01658"></a>01658                                                         iTotalRowExpand = (iTotalColExpand &gt; piHeightRow[iRow] ? iTotalColExpand - piHeightRow[iRow] : 0);
<a name="l01659"></a>01659                                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l01660"></a>01660                                                         piHeightRow[iRow] = ::MulDiv(iTotalRowContract, iValDef, iRowContract);
<a name="l01661"></a>01661                                                         <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(piHeightRow[iRow], iMinPix, iMaxPix);
<a name="l01662"></a>01662                                                         iRowContract -= iValDef;
<a name="l01663"></a>01663                                                         iTotalRowContract = (iTotalColContract &gt; piHeightRow[iRow] ? iTotalColContract - piHeightRow[iRow] : 0);
<a name="l01664"></a>01664                                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01665"></a>01665                                                         piHeightRow[iRow] = iMinPixDef;
<a name="l01666"></a>01666                                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeDef == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01667"></a>01667                                                         piHeightRow[iRow] = iMinPixDef;
<a name="l01668"></a>01668                                                 } <span class="keywordflow">else</span> {
<a name="l01669"></a>01669                                                         piHeightRow[iRow] = iMinPixDef;
<a name="l01670"></a>01670                                                 }               
<a name="l01671"></a>01671                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#7daf09e844846c50ca5b2726f51fcd0b">WMSRC_GAP</a>) {
<a name="l01672"></a>01672                                                 piHeightRow[iRow] = iMinPix;
<a name="l01673"></a>01673                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iType == <a class="code" href="atlautosizedlg_8h.html#b986ad81855da4c2e99226b641f43c27">WMSRC_GAPM</a>) {
<a name="l01674"></a>01674                                                 piHeightRow[iRow] = iMinPix;
<a name="l01675"></a>01675                                         } <span class="keywordflow">else</span> {
<a name="l01676"></a>01676                                                 piHeightRow[iRow] = iMinPix;
<a name="l01677"></a>01677                                         }
<a name="l01678"></a>01678 
<a name="l01679"></a>01679                                         <span class="keywordflow">if</span> (iHeightTotal + piHeightRow[iRow] &gt; pRectWindow-&gt;bottom) {
<a name="l01680"></a>01680                                                 piHeightRow[iRow] = pRectWindow-&gt;bottom - iHeightTotal;
<a name="l01681"></a>01681                                         }
<a name="l01682"></a>01682 
<a name="l01683"></a>01683 <span class="preprocessor">#ifdef TRACEAUTOSIZE2</span>
<a name="l01684"></a>01684 <span class="preprocessor"></span>                                        ATLTRACE(<span class="stringliteral">"%d "</span>, piHeightRow[iRow]);
<a name="l01685"></a>01685 <span class="preprocessor">#endif</span>
<a name="l01686"></a>01686 <span class="preprocessor"></span>
<a name="l01687"></a>01687                                         piCell += 4;
<a name="l01688"></a>01688 
<a name="l01689"></a>01689                                         <span class="keywordtype">int</span> iCol = 0;
<a name="l01690"></a>01690                                         RECT *pLastRect = NULL;
<a name="l01691"></a>01691 
<a name="l01692"></a>01692                                         <span class="keywordtype">int</span> iWidthTotal = pRectWindow-&gt;left;
<a name="l01693"></a>01693                                         <span class="keywordflow">if</span> (bMain) {
<a name="l01694"></a>01694                                                 iWidthTotal += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>;
<a name="l01695"></a>01695                                         }
<a name="l01696"></a>01696 
<a name="l01697"></a>01697                                         <span class="keywordflow">while</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#dc65912d32b23c3d1e46fbf5d056a24f">WMR_END</a>) {
<a name="l01698"></a>01698                                                 <span class="keywordflow">if</span> (iCol &lt; pheader-&gt;m_iNumCols) {
<a name="l01699"></a>01699                                                         <span class="keywordflow">if</span> (iCol &amp;&amp; !(piHeadCols[iCol * 3] &amp; WMSRC_NOGAP)) {
<a name="l01700"></a>01700                                                                 iWidthTotal += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l01701"></a>01701                                                         }
<a name="l01702"></a>01702 
<a name="l01703"></a>01703                                                         <span class="keywordflow">if</span> (iWidthTotal &gt; pRectWindow-&gt;right) {
<a name="l01704"></a>01704                                                                 iWidthTotal = pRectWindow-&gt;right;
<a name="l01705"></a>01705                                                         }
<a name="l01706"></a>01706 
<a name="l01707"></a>01707                                                         <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#07c573d5dd3e01289cae2d1323327599">WMSCTRL_EXPDOWN</a>) {
<a name="l01708"></a>01708                                                                 <span class="keywordflow">if</span> (!<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#7b950bed1853850743be6ebfe5ab1e7b">_MoveCtrl</a>(iCol, hdwp, phWnd, ppiCtrl, prect, pmargins, lXUnits, lYUnits)) {
<a name="l01709"></a>01709                                                                         <span class="keywordflow">return</span> FALSE;
<a name="l01710"></a>01710                                                                 }
<a name="l01711"></a>01711 
<a name="l01712"></a>01712                                                                 <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#856ceeabc8e3837396b1994794db6b38">WMSCTRL_EMPTY</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#8db6b604e1ceb9d79ed91acb7d5d5c80">WMSCTRL_EXPRIGHT</a>) {
<a name="l01713"></a>01713                                                                         prect[iCol].left = iWidthTotal;
<a name="l01714"></a>01714                                                                         prect[iCol].top = iHeightTotal;
<a name="l01715"></a>01715                                                                         prect[iCol].right = piWidthCol[iCol];
<a name="l01716"></a>01716                                                                         prect[iCol].bottom = piHeightRow[iRow];
<a name="l01717"></a>01717                                                                         pLastRect = &amp;prect[iCol];
<a name="l01718"></a>01718 
<a name="l01719"></a>01719                                                                         <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#1abcfa932fc6ecb0af35e8f33d51163c">WMH_BEGIN</a>) {
<a name="l01720"></a>01720                                                                                 phWnd[iCol] = pT-&gt;GetDlgItem(*piCell);
<a name="l01721"></a>01721                                                                                 ppiCtrl[iCol] = NULL;
<a name="l01722"></a>01722                                                                                 <span class="keywordflow">if</span> (!phWnd[iCol]) {
<a name="l01723"></a>01723                                                                                         phWnd[iCol] = (HWND)-1;
<a name="l01724"></a>01724                                                                                         ATLTRACE(_T(<span class="stringliteral">"Inexistant ctrl in row: %d, col: %d. Ignored.\n"</span>), iRow, iCol);
<a name="l01725"></a>01725                                                                                 }
<a name="l01726"></a>01726                                                                         } <span class="keywordflow">else</span> {
<a name="l01727"></a>01727                                                                                 phWnd[iCol] = NULL;
<a name="l01728"></a>01728                                                                                 ppiCtrl[iCol] = piCell;
<a name="l01729"></a>01729                                                                                 piCell += piCell[1];
<a name="l01730"></a>01730                                                                         }
<a name="l01731"></a>01731                                                                 } <span class="keywordflow">else</span> {
<a name="l01732"></a>01732                                                                         phWnd[iCol] = NULL;
<a name="l01733"></a>01733                                                                         ppiCtrl[iCol] = NULL;
<a name="l01734"></a>01734                                                                         <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#8db6b604e1ceb9d79ed91acb7d5d5c80">WMSCTRL_EXPRIGHT</a>) {
<a name="l01735"></a>01735                                                                                 pLastRect = NULL;
<a name="l01736"></a>01736                                                                         }
<a name="l01737"></a>01737                                                                 }
<a name="l01738"></a>01738                                                         } 
<a name="l01739"></a>01739 
<a name="l01740"></a>01740                                                         <span class="keywordflow">if</span> (*piCell == <a class="code" href="atlautosizedlg_8h.html#8db6b604e1ceb9d79ed91acb7d5d5c80">WMSCTRL_EXPRIGHT</a>) {
<a name="l01741"></a>01741                                                                 <span class="keywordflow">if</span> (pLastRect) {
<a name="l01742"></a>01742                                                                         pLastRect-&gt;right += piWidthCol[iCol];
<a name="l01743"></a>01743                                                                         <span class="keywordflow">if</span> ((piHeadCols[iCol * 3] &amp; WMSRC_NOGAP) != WMSRC_NOGAP &amp;&amp; iCol) {
<a name="l01744"></a>01744                                                                                 pLastRect-&gt;right += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>;
<a name="l01745"></a>01745                                                                                 <span class="keywordflow">if</span> (pLastRect-&gt;left + pLastRect-&gt;right &gt; pRectWindow-&gt;right) {
<a name="l01746"></a>01746                                                                                         pLastRect-&gt;right = pRectWindow-&gt;right - pLastRect-&gt;left;
<a name="l01747"></a>01747                                                                                 }
<a name="l01748"></a>01748                                                                         }
<a name="l01749"></a>01749                                                                 } <span class="keywordflow">else</span> {
<a name="l01750"></a>01750                                                                         ATLTRACE(_T(<span class="stringliteral">"Wrong continue right flag in row: %d, column: %d. Ignored.\n"</span>), iRow, iCol);
<a name="l01751"></a>01751                                                                 }
<a name="l01752"></a>01752                                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*piCell == <a class="code" href="atlautosizedlg_8h.html#07c573d5dd3e01289cae2d1323327599">WMSCTRL_EXPDOWN</a>) {
<a name="l01753"></a>01753                                                                 <span class="keywordflow">if</span> (phWnd[iCol] || ppiCtrl[iCol]) {
<a name="l01754"></a>01754                                                                         prect[iCol].bottom += piHeightRow[iRow];
<a name="l01755"></a>01755                                                                         <span class="keywordflow">if</span> (iRow &amp;&amp; !(iStyle &amp; WMSRC_NOGAP)) {
<a name="l01756"></a>01756                                                                                 prect[iCol].bottom += pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>;
<a name="l01757"></a>01757                                                                                 <span class="keywordflow">if</span> (prect[iCol].top + prect[iCol].bottom &gt; pRectWindow-&gt;bottom) {
<a name="l01758"></a>01758                                                                                         prect[iCol].bottom = pRectWindow-&gt;bottom - prect[iCol].top;
<a name="l01759"></a>01759                                                                                 }
<a name="l01760"></a>01760                                                                         }
<a name="l01761"></a>01761                                                                 } <span class="keywordflow">else</span> {
<a name="l01762"></a>01762                                                                         ATLTRACE(_T(<span class="stringliteral">"Wrong continue down flag in row: %d, column: %d. Ignored.\n"</span>), iRow, iCol);
<a name="l01763"></a>01763                                                                 }
<a name="l01764"></a>01764                                                                 pLastRect = NULL;
<a name="l01765"></a>01765                                                         }
<a name="l01766"></a>01766 
<a name="l01767"></a>01767                                                         iWidthTotal += piWidthCol[iCol];
<a name="l01768"></a>01768                                                 }
<a name="l01769"></a>01769 
<a name="l01770"></a>01770                                                 iCol++;
<a name="l01771"></a>01771                                                 piCell++;
<a name="l01772"></a>01772                                         }
<a name="l01773"></a>01773 
<a name="l01774"></a>01774                                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = iCol; i &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a>; i++) {
<a name="l01775"></a>01775                                                 <span class="keywordflow">if</span> (!<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#7b950bed1853850743be6ebfe5ab1e7b">_MoveCtrl</a>(i, hdwp, phWnd, ppiCtrl, prect, pmargins, lXUnits, lYUnits)) {
<a name="l01776"></a>01776                                                         <span class="keywordflow">return</span> FALSE;
<a name="l01777"></a>01777                                                 }
<a name="l01778"></a>01778                                         }
<a name="l01779"></a>01779                                 } <span class="keywordflow">else</span> {
<a name="l01780"></a>01780                                         ATLTRACE(_T(<span class="stringliteral">"Malformed row: %d. Skipped. \n"</span>), iRow);
<a name="l01781"></a>01781                                         <span class="keywordflow">while</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#dc65912d32b23c3d1e46fbf5d056a24f">WMR_END</a> &amp;&amp; *piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01782"></a>01782                                                 piCell++;
<a name="l01783"></a>01783                                         }
<a name="l01784"></a>01784 
<a name="l01785"></a>01785                                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a>; i++) {
<a name="l01786"></a>01786                                                 <span class="keywordflow">if</span> (!<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#7b950bed1853850743be6ebfe5ab1e7b">_MoveCtrl</a>(i, hdwp, phWnd, ppiCtrl, prect, pmargins, lXUnits, lYUnits)) {
<a name="l01787"></a>01787                                                         <span class="keywordflow">return</span> FALSE;
<a name="l01788"></a>01788                                                 }
<a name="l01789"></a>01789                                         }
<a name="l01790"></a>01790 
<a name="l01791"></a>01791                                         piHeightRow[iRow] = 0;
<a name="l01792"></a>01792                                 }
<a name="l01793"></a>01793 
<a name="l01794"></a>01794                                 iHeightTotal += piHeightRow[iRow];
<a name="l01795"></a>01795 
<a name="l01796"></a>01796                                 <span class="keywordflow">if</span> (*piCell != <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>) {
<a name="l01797"></a>01797                                         piCell++;
<a name="l01798"></a>01798                                 } <span class="keywordflow">else</span> {
<a name="l01799"></a>01799                                         ATLTRACE(_T(<span class="stringliteral">"Malformed endrow in row: %d. Ignored.\n"</span>), iRow);
<a name="l01800"></a>01800                                 }
<a name="l01801"></a>01801 
<a name="l01802"></a>01802                                 iRow++;
<a name="l01803"></a>01803                         }                       
<a name="l01804"></a>01804 
<a name="l01805"></a>01805                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; pheader-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html#121e082b5fd6d5c2c51e976b4ffde389">m_iNumCols</a>; i++) {
<a name="l01806"></a>01806                                 <span class="keywordflow">if</span> (!<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#7b950bed1853850743be6ebfe5ab1e7b">_MoveCtrl</a>(i, hdwp, phWnd, ppiCtrl, prect, pmargins, lXUnits, lYUnits)) {
<a name="l01807"></a>01807                                         <span class="keywordflow">return</span> FALSE;
<a name="l01808"></a>01808                                 }
<a name="l01809"></a>01809                         }
<a name="l01810"></a>01810                 }
<a name="l01811"></a>01811 
<a name="l01812"></a>01812                 ATLASSERT(*piCell == <a class="code" href="atlautosizedlg_8h.html#18de3644b1632a67fa860b4a4f15d52d">WM_END</a>);
<a name="l01813"></a>01813 
<a name="l01814"></a>01814                 <span class="keywordflow">return</span> TRUE;
<a name="l01815"></a>01815         }
<a name="l01816"></a>01816 
<a name="l01817"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#7b950bed1853850743be6ebfe5ab1e7b">01817</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#7b950bed1853850743be6ebfe5ab1e7b">_MoveCtrl</a>(<span class="keywordtype">int</span> iCol, HDWP &amp;hdwp, HWND *phWnd, <span class="keywordtype">int</span> **ppiCtrl, RECT *prect, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> *pmargins, LONG lXUnits, LONG lYUnits)
<a name="l01818"></a>01818         {
<a name="l01819"></a>01819                 <span class="keywordflow">if</span> (phWnd[iCol] &amp;&amp; phWnd[iCol] != (HWND)-1) {
<a name="l01820"></a>01820                         POINT pt = {0};
<a name="l01821"></a>01821                         __if_exists(T::GetScrollOffset) {
<a name="l01822"></a>01822                                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l01823"></a>01823                                 pT-&gt;GetScrollOffset(pt);
<a name="l01824"></a>01824                         }
<a name="l01825"></a>01825 
<a name="l01826"></a>01826                         UINT uiFlags = ::GetWindowLong(phWnd[iCol], GWL_EXSTYLE) &amp; WS_EX_TRANSPARENT ? SWP_NOCOPYBITS : 0;
<a name="l01827"></a>01827                         ATLVERIFY((hdwp = ::DeferWindowPos(hdwp, phWnd[iCol], NULL, prect[iCol].left - pt.x, prect[iCol].top - pt.y, prect[iCol].right, prect[iCol].bottom, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|uiFlags)) != NULL);
<a name="l01828"></a>01828                         <span class="keywordflow">if</span> (!hdwp) {
<a name="l01829"></a>01829                                 <span class="keywordflow">return</span> FALSE;
<a name="l01830"></a>01830                         }
<a name="l01831"></a>01831                         phWnd[iCol] = NULL;
<a name="l01832"></a>01832                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ppiCtrl[iCol]) {
<a name="l01833"></a>01833                         RECT rect = {prect[iCol].left, prect[iCol].top, prect[iCol].left + prect[iCol].right, prect[iCol].top + prect[iCol].bottom};
<a name="l01834"></a>01834                         <span class="keywordflow">if</span> (!<a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#06c0fc5cd54035e64c9039bfefdbe6b5">_CtrlsArrange</a>(hdwp, (<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_ctrl_group.html">CCtrlGroup</a>*)ppiCtrl[iCol], pmargins, lXUnits, lYUnits, &amp;rect, FALSE)) {
<a name="l01835"></a>01835                                 <span class="keywordflow">return</span> FALSE;
<a name="l01836"></a>01836                         }
<a name="l01837"></a>01837 
<a name="l01838"></a>01838                         ppiCtrl[iCol] = NULL;
<a name="l01839"></a>01839                 }
<a name="l01840"></a>01840 
<a name="l01841"></a>01841                 <span class="keywordflow">return</span> TRUE;
<a name="l01842"></a>01842         }
<a name="l01843"></a>01843 
<a name="l01845"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#f5402053a352b8d4b1d2fdb3e94ad564">01845</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#f5402053a352b8d4b1d2fdb3e94ad564">_CheckMargins</a>(<span class="keywordtype">long</span> lXUnits, <span class="keywordtype">int</span> iXUnitsBase, <span class="keywordtype">long</span> lYUnits, <span class="keywordtype">int</span> iYUnitsBase, <span class="keyword">const</span> <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> *pmargins, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html">CMargins</a> *pmarginsPix)
<a name="l01846"></a>01846         {
<a name="l01847"></a>01847                 pmarginsPix-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a> = (pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a> &gt; 0 ? ::MulDiv(pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>, lXUnits, iXUnitsBase) : -pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#95f5c7e6990aec94f4e20e2d98bc7e41">m_iLeftRight</a>);
<a name="l01848"></a>01848                 pmarginsPix-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a> = (pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a> &gt; 0 ? ::MulDiv(pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>, lYUnits, iYUnitsBase) : -pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#e705e89a2bd935a5563050cd56c6c199">m_iTopBottom</a>);
<a name="l01849"></a>01849                 pmarginsPix-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a> = (pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a> &gt; 0 ? ::MulDiv(pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>, lXUnits, iXUnitsBase) : -pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#5c1b6d8ee5c6aa08b09ac5417ed17c92">m_iXGap</a>);
<a name="l01850"></a>01850                 pmarginsPix-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a> = (pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a> &gt; 0 ? ::MulDiv(pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>, lYUnits, iYUnitsBase) : -pmargins-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_margins.html#d87098bcb529214d13e0a46cf2e5da17">m_iYGap</a>);
<a name="l01851"></a>01851         }
<a name="l01852"></a>01852 
<a name="l01854"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">01854</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89a2054c849213b984259093fe02c458">_TypeVal</a>(<span class="keywordtype">int</span> iBase, <span class="keywordtype">int</span> &amp;iType, <span class="keywordtype">int</span> &amp;iStyle, <span class="keywordtype">int</span> &amp;iVal)
<a name="l01855"></a>01855         {
<a name="l01856"></a>01856                 <span class="keywordflow">if</span> (iBase &gt;= 0) {
<a name="l01857"></a>01857                         iType = iBase &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01858"></a>01858                         iStyle = iBase &amp; <a class="code" href="atlautosizedlg_8h.html#fef4b038d585698faf24658ca2d0712c">WMSRC_EXSTYLEMASK</a>;
<a name="l01859"></a>01859                         iVal = iBase &amp; <a class="code" href="atlautosizedlg_8h.html#1d4e7fc4a851a02b5223c3cb332b1385">WMSRC_VALMASK</a>;
<a name="l01860"></a>01860                 } <span class="keywordflow">else</span> {
<a name="l01861"></a>01861                         iBase = 0 - iBase;
<a name="l01862"></a>01862                         iType = iBase &amp; <a class="code" href="atlautosizedlg_8h.html#dd6307c3bf1085e7113a65a141406058">WMSRC_TYPEMASK</a>;
<a name="l01863"></a>01863                         iStyle = iBase &amp; <a class="code" href="atlautosizedlg_8h.html#fef4b038d585698faf24658ca2d0712c">WMSRC_EXSTYLEMASK</a>;
<a name="l01864"></a>01864                         iVal = -(int)(iBase &amp; <a class="code" href="atlautosizedlg_8h.html#1d4e7fc4a851a02b5223c3cb332b1385">WMSRC_VALMASK</a>);
<a name="l01865"></a>01865                 }
<a name="l01866"></a>01866         }
<a name="l01867"></a>01867 
<a name="l01868"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">01868</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(<span class="keywordtype">int</span> iCR, <span class="keywordtype">int</span> *piColRow)
<a name="l01869"></a>01869         {
<a name="l01870"></a>01870                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(iCR, piColRow[1]);
<a name="l01871"></a>01871                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(iCR, piColRow[2], <a class="code" href="atlautosizedlg_8h.html#81eace22636aeca9819e864669bf2825">WMSRCMM_MAXVAL</a>);
<a name="l01872"></a>01872         }
<a name="l01873"></a>01873 
<a name="l01874"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8f5981bacdb2481daf4025ad2e32b8f7">01874</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#94f7db6e7571858addf064c448b929ad">_SetVariableMinMax</a>(<span class="keywordtype">int</span> iCR, <span class="keywordtype">int</span> &amp;iBase, <span class="keywordtype">int</span> iVal = 0)
<a name="l01875"></a>01875         {
<a name="l01876"></a>01876                 iCR;
<a name="l01877"></a>01877 
<a name="l01878"></a>01878                 BOOL bNeg = iBase &lt; 0;
<a name="l01879"></a>01879 
<a name="l01880"></a>01880                 <span class="keywordflow">if</span> (bNeg) {
<a name="l01881"></a>01881                         iBase = -iBase;
<a name="l01882"></a>01882                 }
<a name="l01883"></a>01883 
<a name="l01884"></a>01884                 <span class="keywordflow">if</span> (iBase &amp; <a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">WMSRCMM_SIZECALC</a>) {
<a name="l01885"></a>01885                         iBase = WMSRCMM_SIZECALC|<a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a>|iVal;
<a name="l01886"></a>01886                         bNeg = FALSE;
<a name="l01887"></a>01887                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iBase &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a>) {
<a name="l01888"></a>01888                         ATLTRACE(_T(<span class="stringliteral">"Wrong min-max flag in column (or row): %d. Fixed.\n"</span>), iCR);
<a name="l01889"></a>01889                         iBase &amp;= ~WMSRCMM_NEEDCALC;
<a name="l01890"></a>01890                 }
<a name="l01891"></a>01891 
<a name="l01892"></a>01892                 <span class="keywordflow">if</span> (bNeg) {
<a name="l01893"></a>01893                         iBase = -iBase;
<a name="l01894"></a>01894                 }
<a name="l01895"></a>01895         }
<a name="l01896"></a>01896 
<a name="l01897"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#aa686d4d06242c5f05eba7d9ce2c9018">01897</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#aa686d4d06242c5f05eba7d9ce2c9018">_CheckEqualMinMax</a>(<span class="keywordtype">int</span> iCR, <span class="keywordtype">int</span> *piColRow)
<a name="l01898"></a>01898         {
<a name="l01899"></a>01899                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#aa686d4d06242c5f05eba7d9ce2c9018">_CheckEqualMinMax</a>(iCR, piColRow[1]);
<a name="l01900"></a>01900                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#aa686d4d06242c5f05eba7d9ce2c9018">_CheckEqualMinMax</a>(iCR, piColRow[2]);
<a name="l01901"></a>01901         }
<a name="l01902"></a>01902 
<a name="l01903"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#2b83673f362302b1ed7892830e956ac1">01903</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#aa686d4d06242c5f05eba7d9ce2c9018">_CheckEqualMinMax</a>(<span class="keywordtype">int</span> iCR, <span class="keywordtype">int</span> &amp;iBase)
<a name="l01904"></a>01904         {
<a name="l01905"></a>01905                 iCR;
<a name="l01906"></a>01906 
<a name="l01907"></a>01907                 BOOL bNeg = iBase &lt; 0;
<a name="l01908"></a>01908 
<a name="l01909"></a>01909                 <span class="keywordflow">if</span> (bNeg) {
<a name="l01910"></a>01910                         iBase = -iBase;
<a name="l01911"></a>01911                 }
<a name="l01912"></a>01912 
<a name="l01913"></a>01913                 <span class="keywordflow">if</span> (!(iBase &amp; <a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">WMSRCMM_SIZECALC</a>)) {
<a name="l01914"></a>01914                         ATLTRACE(_T(<span class="stringliteral">"Equal columns/rows can't have min/max value. Ignored value in column (or row) %d.\n"</span>), iCR);
<a name="l01915"></a>01915                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iBase &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a>) {
<a name="l01916"></a>01916                         ATLTRACE(_T(<span class="stringliteral">"Wrong min-max flag in column (or row): %d. Fixed.\n"</span>), iCR);
<a name="l01917"></a>01917                 }
<a name="l01918"></a>01918 
<a name="l01919"></a>01919                 iBase = WMSRCMM_SIZECALC;
<a name="l01920"></a>01920         }
<a name="l01921"></a>01921 
<a name="l01922"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">01922</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(<span class="keywordtype">int</span> iCR, <span class="keywordtype">int</span> *piColRow, <span class="keywordtype">long</span> lXYUnits, <span class="keywordtype">int</span> iXYUnitsBase, <span class="keywordtype">int</span> iVal)
<a name="l01923"></a>01923         {
<a name="l01924"></a>01924                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(iCR, piColRow[1], lXYUnits, iXYUnitsBase, iVal);
<a name="l01925"></a>01925                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(iCR, piColRow[2], lXYUnits, iXYUnitsBase, iVal);
<a name="l01926"></a>01926         }
<a name="l01927"></a>01927 
<a name="l01928"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#fabd05102993489562ed143757540c5d">01928</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#89815ce1fbd82c720ec7fb453c48077f">_CheckFixedMinMax</a>(<span class="keywordtype">int</span> iCR, <span class="keywordtype">int</span> &amp;iBase, <span class="keywordtype">long</span> lXYUnits, <span class="keywordtype">int</span> iXYUnitsBase, <span class="keywordtype">int</span> iVal)
<a name="l01929"></a>01929         {
<a name="l01930"></a>01930                 iCR;
<a name="l01931"></a>01931 
<a name="l01932"></a>01932                 BOOL bNeg = iBase &lt; 0;
<a name="l01933"></a>01933 
<a name="l01934"></a>01934                 <span class="keywordflow">if</span> (bNeg) {
<a name="l01935"></a>01935                         iBase = -iBase;
<a name="l01936"></a>01936                 }
<a name="l01937"></a>01937 
<a name="l01938"></a>01938                 <span class="keywordflow">if</span> (iBase &amp; <a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">WMSRCMM_SIZECALC</a>) {
<a name="l01939"></a>01939                         iBase = WMSRCMM_SIZECALC|iVal;
<a name="l01940"></a>01940                 } <span class="keywordflow">else</span> {
<a name="l01941"></a>01941                         <span class="keywordflow">if</span> (iBase &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a>) {
<a name="l01942"></a>01942                                 ATLTRACE(_T(<span class="stringliteral">"Wrong min-max flag in column (or row): %d. Fixed.\n"</span>), iCR);
<a name="l01943"></a>01943                                 iBase &amp;= ~WMSRCMM_NEEDCALC;
<a name="l01944"></a>01944                         }
<a name="l01945"></a>01945 
<a name="l01946"></a>01946                         <span class="keywordtype">int</span> iBasePix = (iBase &gt; 0 ? ::MulDiv(iBase, lXYUnits, iXYUnitsBase) : -iBase);
<a name="l01947"></a>01947 
<a name="l01948"></a>01948                         <span class="keywordflow">if</span> (iBasePix != iVal) {
<a name="l01949"></a>01949                                 ATLTRACE(_T(<span class="stringliteral">"Wrong min-max value in column (or row): %d. Fixed.\n"</span>), iCR);
<a name="l01950"></a>01950                                 iBase = iVal;
<a name="l01951"></a>01951                                 bNeg = FALSE;
<a name="l01952"></a>01952                         }
<a name="l01953"></a>01953                 }
<a name="l01954"></a>01954 
<a name="l01955"></a>01955                 <span class="keywordflow">if</span> (bNeg) {
<a name="l01956"></a>01956                         iBase = -iBase;
<a name="l01957"></a>01957                 }
<a name="l01958"></a>01958         }
<a name="l01959"></a>01959 
<a name="l01960"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">01960</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4495273b7880a5e8a47e6248c130e438">_CalcAuto</a>(<span class="keywordtype">int</span> &amp;iVal, <span class="keywordtype">int</span> iMin)
<a name="l01961"></a>01961         {
<a name="l01962"></a>01962                 <span class="keywordflow">if</span> (iVal != INT_MIN) {
<a name="l01963"></a>01963                         <span class="keywordflow">if</span> (iMin &gt; iVal) {
<a name="l01964"></a>01964                                 iVal = iMin;
<a name="l01965"></a>01965                         }
<a name="l01966"></a>01966                 }
<a name="l01967"></a>01967         }
<a name="l01968"></a>01968 
<a name="l01969"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e5dd063891255c0b9a1466d9be4caa40">01969</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e5dd063891255c0b9a1466d9be4caa40">_CheckAutoMinMax</a>(<span class="keywordtype">int</span> *piColRow, <span class="keywordtype">int</span> iVal)
<a name="l01970"></a>01970         {
<a name="l01971"></a>01971                 {
<a name="l01972"></a>01972                         BOOL bNeg = piColRow[1] &lt; 0;
<a name="l01973"></a>01973 
<a name="l01974"></a>01974                         <span class="keywordflow">if</span> (bNeg) {
<a name="l01975"></a>01975                                 piColRow[1] = -piColRow[1];
<a name="l01976"></a>01976                         }
<a name="l01977"></a>01977 
<a name="l01978"></a>01978                         <span class="keywordflow">if</span> (piColRow[1] &amp; <a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">WMSRCMM_SIZECALC</a>) {
<a name="l01979"></a>01979                                 piColRow[1] = WMSRCMM_SIZECALC|iVal;
<a name="l01980"></a>01980                         }
<a name="l01981"></a>01981 
<a name="l01982"></a>01982                         <span class="keywordflow">if</span> (bNeg) {
<a name="l01983"></a>01983                                 piColRow[1] = -piColRow[1];
<a name="l01984"></a>01984                         }
<a name="l01985"></a>01985                 }
<a name="l01986"></a>01986 
<a name="l01987"></a>01987                 {
<a name="l01988"></a>01988                         BOOL bNeg = piColRow[2] &lt; 0;
<a name="l01989"></a>01989 
<a name="l01990"></a>01990                         <span class="keywordflow">if</span> (bNeg) {
<a name="l01991"></a>01991                                 piColRow[2] = -piColRow[2];
<a name="l01992"></a>01992                         }
<a name="l01993"></a>01993                         
<a name="l01994"></a>01994                         <span class="keywordflow">if</span> (piColRow[2] &amp; <a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">WMSRCMM_SIZECALC</a>) {
<a name="l01995"></a>01995                                 piColRow[2] = WMSRCMM_SIZECALC|iVal;
<a name="l01996"></a>01996                         }
<a name="l01997"></a>01997 
<a name="l01998"></a>01998                         <span class="keywordflow">if</span> (bNeg) {
<a name="l01999"></a>01999                                 piColRow[2] = -piColRow[2];
<a name="l02000"></a>02000                         }
<a name="l02001"></a>02001                 }
<a name="l02002"></a>02002         }
<a name="l02003"></a>02003 
<a name="l02004"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#ba2b6b6f27edf1038797c3f790aad51e">02004</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#ba2b6b6f27edf1038797c3f790aad51e">_CalcMinMaxAuto</a>(<span class="keywordtype">int</span> *piColRow, <span class="keywordtype">int</span> iMin, <span class="keywordtype">int</span> iMax)
<a name="l02005"></a>02005         {
<a name="l02006"></a>02006                 {
<a name="l02007"></a>02007                         BOOL bNeg = piColRow[1] &lt; 0;
<a name="l02008"></a>02008 
<a name="l02009"></a>02009                         <span class="keywordflow">if</span> (bNeg) {
<a name="l02010"></a>02010                                 piColRow[1] = -piColRow[1];
<a name="l02011"></a>02011                         }
<a name="l02012"></a>02012 
<a name="l02013"></a>02013                         <span class="keywordflow">if</span> (piColRow[1] &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a>) {
<a name="l02014"></a>02014                                 iMin &amp;= <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>;
<a name="l02015"></a>02015                                 <span class="keywordtype">int</span> iMinPix = piColRow[1] &amp; <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>;
<a name="l02016"></a>02016                                 <span class="keywordflow">if</span> (iMin &gt; iMinPix) {
<a name="l02017"></a>02017                                         piColRow[1] = <a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">WMSRCMM_SIZECALC</a>|iMin;
<a name="l02018"></a>02018                                 }
<a name="l02019"></a>02019                         }
<a name="l02020"></a>02020 
<a name="l02021"></a>02021                         <span class="keywordflow">if</span> (bNeg) {
<a name="l02022"></a>02022                                 piColRow[1] = -piColRow[1];
<a name="l02023"></a>02023                         }
<a name="l02024"></a>02024                 }
<a name="l02025"></a>02025 
<a name="l02026"></a>02026                 {
<a name="l02027"></a>02027                         BOOL bNeg = piColRow[2] &lt; 0;
<a name="l02028"></a>02028 
<a name="l02029"></a>02029                         <span class="keywordflow">if</span> (bNeg) {
<a name="l02030"></a>02030                                 piColRow[2] = -piColRow[2];
<a name="l02031"></a>02031                         }
<a name="l02032"></a>02032 
<a name="l02033"></a>02033                         <span class="keywordflow">if</span> (piColRow[2] &amp; <a class="code" href="atlautosizedlg_8h.html#d61eeda2bedb65e727adc992341cd589">WMSRCMM_NEEDCALC</a>) {
<a name="l02034"></a>02034                                 iMax &amp;= <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>;
<a name="l02035"></a>02035                                 <span class="keywordtype">int</span> iMaxPix = piColRow[2] &amp; <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>;
<a name="l02036"></a>02036                                 <span class="keywordflow">if</span> (iMax &lt; iMaxPix) {
<a name="l02037"></a>02037                                         piColRow[2] = <a class="code" href="atlautosizedlg_8h.html#98a3b72fdce23ac34379d65d93ae0934">WMSRCMM_SIZECALC</a>|iMax;
<a name="l02038"></a>02038                                 }
<a name="l02039"></a>02039                         }
<a name="l02040"></a>02040 
<a name="l02041"></a>02041                         <span class="keywordflow">if</span> (bNeg) {
<a name="l02042"></a>02042                                 piColRow[2] = -piColRow[2];
<a name="l02043"></a>02043                         }
<a name="l02044"></a>02044                 }
<a name="l02045"></a>02045         }
<a name="l02046"></a>02046 
<a name="l02047"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e4f39bd6772b988cea23f68f89c5c993">02047</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e4f39bd6772b988cea23f68f89c5c993">_SetAuto</a>(<span class="keywordtype">int</span> *piColRow, <span class="keywordtype">long</span> lXYUnits, <span class="keywordtype">int</span> iXYUnitsBase, <span class="keywordtype">int</span> iVal)
<a name="l02048"></a>02048         {
<a name="l02049"></a>02049                 <span class="keywordtype">int</span> iTypeMin, iTypeMax;
<a name="l02050"></a>02050                 <span class="keywordtype">int</span> iMinPix, iMaxPix;
<a name="l02051"></a>02051                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(piColRow, lXYUnits, iXYUnitsBase, iTypeMin, iMinPix, iTypeMax, iMaxPix);
<a name="l02052"></a>02052 
<a name="l02053"></a>02053                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(iVal, iMinPix, iMaxPix);
<a name="l02054"></a>02054 
<a name="l02055"></a>02055                 piColRow[0] &amp;= ~<a class="code" href="atlautosizedlg_8h.html#1d4e7fc4a851a02b5223c3cb332b1385">WMSRC_VALMASK</a>;
<a name="l02056"></a>02056                 piColRow[0] |= iVal &amp; <a class="code" href="atlautosizedlg_8h.html#1d4e7fc4a851a02b5223c3cb332b1385">WMSRC_VALMASK</a>;
<a name="l02057"></a>02057         }
<a name="l02058"></a>02058 
<a name="l02059"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">02059</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#c14b1eea4e8a35475f3b44ebb0d9fecc">_AddMinMax</a>(<span class="keywordtype">int</span> iCR, <span class="keywordtype">int</span> *piColRow, <span class="keywordtype">long</span> lXYUnits, <span class="keywordtype">int</span> iXYUnitsBase, <span class="keywordtype">int</span> &amp;iFixed, <span class="keywordtype">int</span> iType, <span class="keywordtype">int</span> &amp;iMin, <a class="code" href="class_a_t_l_1_1int__no.html">int_no</a> &amp;iMax)
<a name="l02060"></a>02060         {
<a name="l02061"></a>02061                 iCR;
<a name="l02062"></a>02062                 <span class="keywordtype">int</span> iTypeMin, iTypeMax;
<a name="l02063"></a>02063                 <span class="keywordtype">int</span> iMinPix, iMaxPix;
<a name="l02064"></a>02064                 <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(piColRow, lXYUnits, iXYUnitsBase, iTypeMin, iMinPix, iTypeMax, iMaxPix);
<a name="l02065"></a>02065 
<a name="l02066"></a>02066                 <span class="keywordflow">if</span> (iTypeMin) {
<a name="l02067"></a>02067                         <span class="keywordflow">if</span> (iTypeMax) {
<a name="l02068"></a>02068                                 <span class="keywordflow">if</span> (iMinPix &gt; iMaxPix) {
<a name="l02069"></a>02069                                         ATLTRACE(_T(<span class="stringliteral">"Auto-min-value &gt; auto-max-value in column (or row): %d. Fixed. Now auto-max-value = Auto-min-value.\n"</span>), iCR);
<a name="l02070"></a>02070                                         <span class="keywordflow">if</span> (piColRow[2] &lt; 0) {
<a name="l02071"></a>02071                                                 piColRow[2] = -piColRow[2];
<a name="l02072"></a>02072                                         }
<a name="l02073"></a>02073                                         piColRow[2] &amp;= <a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">WMSRCMM_TYPEMASK</a>;
<a name="l02074"></a>02074                                         piColRow[2] |= iMinPix;
<a name="l02075"></a>02075                                         iMaxPix = iMinPix;
<a name="l02076"></a>02076                                 }
<a name="l02077"></a>02077                         } <span class="keywordflow">else</span> {
<a name="l02078"></a>02078                                 <span class="keywordflow">if</span> (iMinPix &gt; iMaxPix) {
<a name="l02079"></a>02079                                         ATLTRACE(_T(<span class="stringliteral">"Auto-min-value &gt; max-value in column (or row): %d. Fixed. Now auto-min-value = man-value.\n"</span>), iCR);
<a name="l02080"></a>02080                                         <span class="keywordflow">if</span> (piColRow[1] &lt; 0) {
<a name="l02081"></a>02081                                                 piColRow[1] = -piColRow[1];
<a name="l02082"></a>02082                                         }
<a name="l02083"></a>02083                                         piColRow[1] &amp;= <a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">WMSRCMM_TYPEMASK</a>;
<a name="l02084"></a>02084                                         piColRow[1] |= iMaxPix;
<a name="l02085"></a>02085                                         iMinPix = iMaxPix;
<a name="l02086"></a>02086                                 }
<a name="l02087"></a>02087                         }
<a name="l02088"></a>02088                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iTypeMax) {
<a name="l02089"></a>02089                         <span class="keywordflow">if</span> (iMinPix &gt; iMaxPix) {
<a name="l02090"></a>02090                                 ATLTRACE(_T(<span class="stringliteral">"Min-value &gt; auto-max-value in column (or row): %d. Fixed. Now auto-max-value = min-value.\n"</span>), iCR);
<a name="l02091"></a>02091                                 <span class="keywordflow">if</span> (piColRow[2] &lt; 0) {
<a name="l02092"></a>02092                                         piColRow[2] = -piColRow[2];
<a name="l02093"></a>02093                                 }
<a name="l02094"></a>02094                                 piColRow[2] &amp;= <a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">WMSRCMM_TYPEMASK</a>;
<a name="l02095"></a>02095                                 piColRow[2] |= iMinPix;
<a name="l02096"></a>02096                                 iMaxPix = iMinPix;
<a name="l02097"></a>02097                         }
<a name="l02098"></a>02098                 } <span class="keywordflow">else</span> {
<a name="l02099"></a>02099                         <span class="keywordflow">if</span> (iMinPix &gt; iMaxPix) {
<a name="l02100"></a>02100                                 ATLTRACE(_T(<span class="stringliteral">"Min-value &gt; max-value in column (or row): %d. Fixed. Now max-value = min-value.\n"</span>), iCR);
<a name="l02101"></a>02101                                 piColRow[2] = iMinPix;
<a name="l02102"></a>02102                         }
<a name="l02103"></a>02103                 }
<a name="l02104"></a>02104 
<a name="l02105"></a>02105                 iMin += iMinPix;
<a name="l02106"></a>02106 
<a name="l02107"></a>02107                 <span class="keywordflow">if</span> (iType != <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l02108"></a>02108                         iMax += iMaxPix;
<a name="l02109"></a>02109                 }
<a name="l02110"></a>02110 
<a name="l02111"></a>02111                 <span class="keywordflow">if</span> (iType != <a class="code" href="atlautosizedlg_8h.html#f7765f57dfdee0638801248759a06c5f">WMSRC_EXPANDABLE</a> &amp;&amp; iType != <a class="code" href="atlautosizedlg_8h.html#5db715f0c9ae56179a0b41cfaeac1604">WMSRC_CONTRACTABLE</a>) {
<a name="l02112"></a>02112                         iFixed += iMinPix;
<a name="l02113"></a>02113                 }
<a name="l02114"></a>02114         }
<a name="l02115"></a>02115 
<a name="l02116"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">02116</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#8eb6ebed1f99889c8f215346fe85a594">_LoadMinMax</a>(<span class="keywordtype">int</span> *piColRow, <span class="keywordtype">long</span> lXYUnits, <span class="keywordtype">int</span> iXYUnitsBase, <span class="keywordtype">int</span> &amp;iTypeMin, <span class="keywordtype">int</span> &amp;iMin, <span class="keywordtype">int</span> &amp;iTypeMax, <span class="keywordtype">int</span> &amp;iMax)
<a name="l02117"></a>02117         {
<a name="l02118"></a>02118                 <span class="keywordflow">if</span> (piColRow[1] &gt;= 0) {
<a name="l02119"></a>02119                         iTypeMin = piColRow[1] &amp; <a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">WMSRCMM_TYPEMASK</a>;
<a name="l02120"></a>02120                         iMin = piColRow[1] &amp; <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>;
<a name="l02121"></a>02121                 } <span class="keywordflow">else</span> {
<a name="l02122"></a>02122                         iTypeMin = (-piColRow[1]) &amp; <a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">WMSRCMM_TYPEMASK</a>;
<a name="l02123"></a>02123                         iMin = -(int)((-piColRow[1]) &amp; <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>);
<a name="l02124"></a>02124                 }
<a name="l02125"></a>02125 
<a name="l02126"></a>02126                 <span class="keywordflow">if</span> (!iTypeMin) {
<a name="l02127"></a>02127                         iMin = (iMin &gt; 0 ? ::MulDiv(iMin, lXYUnits, iXYUnitsBase) : -iMin);
<a name="l02128"></a>02128                 }
<a name="l02129"></a>02129 
<a name="l02130"></a>02130                 <span class="keywordflow">if</span> (piColRow[2] &gt;= 0) {
<a name="l02131"></a>02131                         iTypeMax = piColRow[2] &amp; <a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">WMSRCMM_TYPEMASK</a>;
<a name="l02132"></a>02132                         iMax = piColRow[2] &amp; <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>;
<a name="l02133"></a>02133                 } <span class="keywordflow">else</span> {
<a name="l02134"></a>02134                         iTypeMax = (-piColRow[2]) &amp; <a class="code" href="atlautosizedlg_8h.html#18737f156c7d04eb386184dec64299bf">WMSRCMM_TYPEMASK</a>;
<a name="l02135"></a>02135                         iMax = -(int)((-piColRow[2]) &amp; <a class="code" href="atlautosizedlg_8h.html#bd013a98d9bd532f553918a7f28b3817">WMSRCMM_VALMASK</a>);
<a name="l02136"></a>02136                 }
<a name="l02137"></a>02137 
<a name="l02138"></a>02138                 <span class="keywordflow">if</span> (iMax == <a class="code" href="atlautosizedlg_8h.html#81eace22636aeca9819e864669bf2825">WMSRCMM_MAXVAL</a>) {
<a name="l02139"></a>02139                         iMax = INT_MAX;
<a name="l02140"></a>02140                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!iTypeMax) {
<a name="l02141"></a>02141                         iMax = (iMax &gt; 0 ? ::MulDiv(iMax, lXYUnits, iXYUnitsBase) : -iMax);
<a name="l02142"></a>02142                 }
<a name="l02143"></a>02143         }
<a name="l02144"></a>02144 
<a name="l02145"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">02145</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#6e0a526b9bbe37bf3a0f8370002a5e16">_NormalizeColRow</a>(<span class="keywordtype">int</span> &amp;iVal, <span class="keywordtype">int</span> iMin, <span class="keywordtype">int</span> iMax)
<a name="l02146"></a>02146         {
<a name="l02147"></a>02147                 <span class="keywordflow">if</span> (iVal &lt; iMin) {
<a name="l02148"></a>02148                         iVal = iMin;
<a name="l02149"></a>02149                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iVal &gt; iMax) {
<a name="l02150"></a>02150                         iVal = iMax;
<a name="l02151"></a>02151                 }
<a name="l02152"></a>02152         }
<a name="l02153"></a>02153 
<a name="l02154"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#2dc8d8c77178893e9b6a64ad0df7206b">02154</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#2dc8d8c77178893e9b6a64ad0df7206b">_Init</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a> *&amp;p, <a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a> *q)
<a name="l02155"></a>02155         {
<a name="l02156"></a>02156                 q-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a> = NULL;
<a name="l02157"></a>02157                 q-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#c7555fade62a8f582c7f39baeb548510">m_pPrev</a> = p;
<a name="l02158"></a>02158                 p = q;
<a name="l02159"></a>02159         }
<a name="l02160"></a>02160 
<a name="l02161"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#0bd7029dd2b3e0764f4dd68f79a71203">02161</a>         <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#0bd7029dd2b3e0764f4dd68f79a71203">_DeInit</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a> *&amp;p, <span class="keywordtype">int</span> iRet)
<a name="l02162"></a>02162         {
<a name="l02163"></a>02163                 p = p-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#c7555fade62a8f582c7f39baeb548510">m_pPrev</a>;
<a name="l02164"></a>02164                 <span class="keywordflow">return</span> iRet;
<a name="l02165"></a>02165         }
<a name="l02166"></a>02166 
<a name="l02167"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#5d0fed7e75cf690ea22dfbbec3c3b135">02167</a>         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#5d0fed7e75cf690ea22dfbbec3c3b135">_IncRow</a>(<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html">CRowsIndex</a> *q)
<a name="l02168"></a>02168         {
<a name="l02169"></a>02169                 (*q-&gt;<a class="code" href="struct_a_t_l_1_1_c_auto_size_window_1_1_c_rows_index.html#5c3ba3a04319061c234b29771d6bf8af">m_piNum</a>)++;
<a name="l02170"></a>02170         }
<a name="l02171"></a>02171 
<a name="l02172"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e98644cec92747697ad5bcc6d5da0209">02172</a>         <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#e98644cec92747697ad5bcc6d5da0209">_FirstParam</a>(<span class="keywordtype">int</span> a = 0, <span class="keywordtype">int</span> b = 0, <span class="keywordtype">int</span> c = 0, <span class="keywordtype">int</span> d = 0)
<a name="l02173"></a>02173         {
<a name="l02174"></a>02174                 b; c; d;
<a name="l02175"></a>02175                 <span class="keywordflow">return</span> a;
<a name="l02176"></a>02176         }
<a name="l02177"></a>02177 
<a name="l02178"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#391f43fed8bac11437cac1f136c75a7b">02178</a>         <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#391f43fed8bac11437cac1f136c75a7b">_SecondParam</a>(<span class="keywordtype">int</span> a = 0, <span class="keywordtype">int</span> b = 0, <span class="keywordtype">int</span> c = 0, <span class="keywordtype">int</span> d = 0)
<a name="l02179"></a>02179         {
<a name="l02180"></a>02180                 a; c; d;
<a name="l02181"></a>02181                 <span class="keywordflow">return</span> b;
<a name="l02182"></a>02182         }
<a name="l02183"></a>02183 
<a name="l02184"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#2c93f8c0ed7be805c0e9c1ab2475e197">02184</a>         <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#2c93f8c0ed7be805c0e9c1ab2475e197">_ThirdParam</a>(<span class="keywordtype">int</span> a = 0, <span class="keywordtype">int</span> b = 0, <span class="keywordtype">int</span> c = 0, <span class="keywordtype">int</span> d = 0)
<a name="l02185"></a>02185         {
<a name="l02186"></a>02186                 a; b; d;
<a name="l02187"></a>02187                 <span class="keywordflow">return</span> c;
<a name="l02188"></a>02188         }
<a name="l02189"></a>02189 
<a name="l02190"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4322579eb2b254a034da234a9eb187d5">02190</a>         <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#4322579eb2b254a034da234a9eb187d5">_FourthParam</a>(<span class="keywordtype">int</span> a = 0, <span class="keywordtype">int</span> b = 0, <span class="keywordtype">int</span> c = 0, <span class="keywordtype">int</span> d = 0)
<a name="l02191"></a>02191         {
<a name="l02192"></a>02192                 a; b; c;
<a name="l02193"></a>02193                 <span class="keywordflow">return</span> d;
<a name="l02194"></a>02194         }
<a name="l02195"></a>02195 
<a name="l02196"></a>02196         <span class="comment">//</span>
<a name="l02197"></a>02197 
<a name="l02198"></a>02198 <span class="keyword">protected</span>:
<a name="l02199"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#5a7bd23c6275bbf17e577d6cfedbf3cf">02199</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#5a7bd23c6275bbf17e577d6cfedbf3cf">InitializeTransparentCtrl</a>(<span class="keywordtype">int</span> iCtrl)
<a name="l02200"></a>02200         {
<a name="l02201"></a>02201                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l02202"></a>02202                 HWND hWnd = pT-&gt;GetDlgItem(iCtrl);
<a name="l02203"></a>02203 
<a name="l02204"></a>02204                 <span class="keywordflow">if</span> (hWnd) {
<a name="l02205"></a>02205                         TCHAR szName[256];
<a name="l02206"></a>02206                         ATLVERIFY(::GetClassName(hWnd, szName, 256));
<a name="l02207"></a>02207 
<a name="l02208"></a>02208                         WNDPROC wp;
<a name="l02209"></a>02209                         <span class="keywordflow">if</span> (::_tcscmp(_T(<span class="stringliteral">"Button"</span>), szName) == 0) {
<a name="l02210"></a>02210                                 wp = TransparentWindowProc&lt;1&gt;;
<a name="l02211"></a>02211                         } <span class="keywordflow">else</span> {
<a name="l02212"></a>02212                                 wp = TransparentWindowProc&lt;0&gt;;
<a name="l02213"></a>02213                         }
<a name="l02214"></a>02214 
<a name="l02215"></a>02215                         ::ShowWindow(hWnd, SW_HIDE);
<a name="l02216"></a>02216                         WNDPROC wpOld = (WNDPROC)::SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)wp);
<a name="l02217"></a>02217                         ATLVERIFY(::SetWindowLongPtr(hWnd, GWL_USERDATA, (LONG_PTR)wpOld) == 0);
<a name="l02218"></a>02218                 }
<a name="l02219"></a>02219 
<a name="l02220"></a>02220                 <span class="keywordflow">return</span> TRUE;
<a name="l02221"></a>02221         }
<a name="l02222"></a>02222 
<a name="l02223"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#896e60ad45fcd8a2c9797c9c6519071e">02223</a>         BOOL <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#896e60ad45fcd8a2c9797c9c6519071e">DrawTransparentCtrl</a>(CDCHandle dc, <span class="keywordtype">int</span> iCtrl)
<a name="l02224"></a>02224         {
<a name="l02225"></a>02225                 T* pT = static_cast&lt;T*&gt;(<span class="keyword">this</span>);
<a name="l02226"></a>02226                 HWND hWnd = pT-&gt;GetDlgItem(iCtrl);
<a name="l02227"></a>02227 
<a name="l02228"></a>02228                 <span class="keywordflow">if</span> (hWnd) {
<a name="l02229"></a>02229                         RECT rect;
<a name="l02230"></a>02230                         ::GetWindowRect(hWnd, &amp;rect);
<a name="l02231"></a>02231                         ::MapWindowPoints(NULL, pT-&gt;m_hWnd, (LPPOINT)&amp;rect, 1);
<a name="l02232"></a>02232 
<a name="l02233"></a>02233                         POINT pt;
<a name="l02234"></a>02234                         dc.SetViewportOrg(rect.left, rect.top, &amp;pt);
<a name="l02235"></a>02235 
<a name="l02236"></a>02236                         ::SendMessage(hWnd, WM_PRINT, (WPARAM)dc.m_hDC, PRF_CHILDREN|PRF_CLIENT|PRF_NONCLIENT|PRF_OWNED);
<a name="l02237"></a>02237 
<a name="l02238"></a>02238                         dc.SetViewportOrg(pt.x, pt.y);
<a name="l02239"></a>02239                 }
<a name="l02240"></a>02240 
<a name="l02241"></a>02241                 <span class="keywordflow">return</span> TRUE;
<a name="l02242"></a>02242         }
<a name="l02243"></a>02243 
<a name="l02244"></a>02244         <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> t_iType&gt;
<a name="l02245"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#f025858736b3322d5537dddee756c8fb">02245</a>         <span class="keyword">static</span> LRESULT CALLBACK <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#f025858736b3322d5537dddee756c8fb">TransparentWindowProc</a>(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
<a name="l02246"></a>02246         {
<a name="l02247"></a>02247                 <span class="keywordtype">int</span> iOffset, iOffsetTop;
<a name="l02248"></a>02248 
<a name="l02249"></a>02249                 <span class="keywordflow">if</span> (t_iType) {
<a name="l02250"></a>02250                         iOffsetTop = 5;
<a name="l02251"></a>02251                         iOffset = 5;
<a name="l02252"></a>02252                 } <span class="keywordflow">else</span> {
<a name="l02253"></a>02253                         iOffsetTop = 5;
<a name="l02254"></a>02254                         iOffset = 5;
<a name="l02255"></a>02255                 }
<a name="l02256"></a>02256 
<a name="l02257"></a>02257                 <span class="keywordflow">if</span> (uMsg == WM_WINDOWPOSCHANGING) {
<a name="l02258"></a>02258                         WINDOWPOS *pwp = (WINDOWPOS*)lParam;
<a name="l02259"></a>02259 
<a name="l02260"></a>02260                         <span class="keywordflow">if</span> ((pwp-&gt;flags &amp; (SWP_NOSIZE|SWP_NOMOVE)) == 0) {
<a name="l02261"></a>02261                                 HWND hWndParent = ::GetParent(hWnd);
<a name="l02262"></a>02262                                 RECT rectOld, rectNew, rectMax;
<a name="l02263"></a>02263                                 ::GetWindowRect(hWnd, &amp;rectOld);
<a name="l02264"></a>02264                                 ::MapWindowPoints(NULL, hWndParent, (LPPOINT)&amp;rectOld, 2);
<a name="l02265"></a>02265 
<a name="l02266"></a>02266                                 <span class="keywordflow">if</span> ((pwp-&gt;flags &amp; SWP_NOMOVE) == 0) {
<a name="l02267"></a>02267                                         rectNew.left = pwp-&gt;x;
<a name="l02268"></a>02268                                         rectNew.top = pwp-&gt;y;
<a name="l02269"></a>02269                                 } <span class="keywordflow">else</span> {
<a name="l02270"></a>02270                                         rectNew.left = rectOld.left;
<a name="l02271"></a>02271                                         rectNew.top = rectOld.top;
<a name="l02272"></a>02272                                 }
<a name="l02273"></a>02273 
<a name="l02274"></a>02274                                 <span class="keywordflow">if</span> ((pwp-&gt;flags &amp; SWP_NOSIZE) == 0) {
<a name="l02275"></a>02275                                         rectNew.right = pwp-&gt;cx;
<a name="l02276"></a>02276                                         rectNew.bottom = pwp-&gt;cy;
<a name="l02277"></a>02277                                 } <span class="keywordflow">else</span> {
<a name="l02278"></a>02278                                         rectNew.right = rectOld.right - rectOld.left;
<a name="l02279"></a>02279                                         rectNew.bottom = rectOld.bottom - rectOld.top;
<a name="l02280"></a>02280                                 }
<a name="l02281"></a>02281 
<a name="l02282"></a>02282                                 rectNew.right += rectNew.left;
<a name="l02283"></a>02283                                 rectNew.bottom += rectNew.top;
<a name="l02284"></a>02284 
<a name="l02285"></a>02285                                 rectMax.left = min(rectOld.left, rectNew.left);
<a name="l02286"></a>02286                                 rectMax.top = min(rectOld.top, rectNew.top);
<a name="l02287"></a>02287                                 rectMax.right = max(rectOld.right, rectNew.right);
<a name="l02288"></a>02288                                 rectMax.bottom = max(rectOld.bottom, rectNew.bottom);
<a name="l02289"></a>02289 
<a name="l02290"></a>02290                                 <span class="keywordtype">int</span> iAreaOld = (rectOld.right - rectOld.left) * (rectOld.bottom - rectOld.top);
<a name="l02291"></a>02291                                 <span class="keywordtype">int</span> iAreaNew = (rectNew.right - rectNew.left) * (rectNew.bottom - rectNew.top);
<a name="l02292"></a>02292                                 RECT rectInv[4];
<a name="l02293"></a>02293                                 <span class="keywordtype">int</span> iArea[] = {0, 0, 0, 0};
<a name="l02294"></a>02294 
<a name="l02295"></a>02295                                 <span class="keywordflow">if</span> (rectOld.left &lt; rectNew.left) {
<a name="l02296"></a>02296                                         RECT rect = {rectOld.left, rectMax.top, rectNew.left + iOffset, rectMax.bottom};
<a name="l02297"></a>02297                                         iArea[0] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02298"></a>02298                                         rectInv[0] = rect;
<a name="l02299"></a>02299                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rectOld.left &gt; rectNew.left) {
<a name="l02300"></a>02300                                         RECT rect = {rectNew.left, rectMax.top, rectOld.left + iOffset, rectMax.bottom};
<a name="l02301"></a>02301                                         iArea[0] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02302"></a>02302                                         rectInv[0] = rect;
<a name="l02303"></a>02303                                 }
<a name="l02304"></a>02304 
<a name="l02305"></a>02305                                 <span class="keywordflow">if</span> (rectOld.right &lt; rectNew.right) {
<a name="l02306"></a>02306                                         RECT rect = {rectOld.right - iOffset, rectMax.top, rectNew.right, rectMax.bottom};
<a name="l02307"></a>02307                                         iArea[1] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02308"></a>02308                                         rectInv[1] = rect;
<a name="l02309"></a>02309                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rectOld.right &gt; rectNew.right) {
<a name="l02310"></a>02310                                         RECT rect = {rectNew.right - iOffset, rectMax.top, rectOld.right, rectMax.bottom};
<a name="l02311"></a>02311                                         iArea[1] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02312"></a>02312                                         rectInv[1] = rect;
<a name="l02313"></a>02313                                 }
<a name="l02314"></a>02314 
<a name="l02315"></a>02315                                 <span class="keywordflow">if</span> (rectOld.top != rectNew.top) {
<a name="l02316"></a>02316                                         <span class="keywordflow">if</span> (t_iType) {
<a name="l02317"></a>02317                                                 HWND hWndParent = ::GetParent(hWnd);
<a name="l02318"></a>02318                                                 <span class="keywordtype">int</span> iHeight = <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#1ca73664a2b879b3490b5417ad2e77e6">_GetFontSize</a>(hWnd, hWndParent);
<a name="l02319"></a>02319 
<a name="l02320"></a>02320                                                 iOffsetTop += iHeight / 2;
<a name="l02321"></a>02321                                         }
<a name="l02322"></a>02322 
<a name="l02323"></a>02323                                         <span class="keywordflow">if</span> (rectOld.top &lt; rectNew.top) {
<a name="l02324"></a>02324                                                 RECT rect = {rectMax.left, rectOld.top, rectMax.right, rectNew.top + iOffsetTop};
<a name="l02325"></a>02325                                                 iArea[2] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02326"></a>02326                                                 rectInv[2] = rect;
<a name="l02327"></a>02327                                         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rectOld.top &gt; rectNew.top) {
<a name="l02328"></a>02328                                                 RECT rect = {rectMax.left, rectNew.top, rectMax.right, rectOld.top + iOffsetTop};
<a name="l02329"></a>02329                                                 iArea[2] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02330"></a>02330                                                 rectInv[2] = rect;
<a name="l02331"></a>02331                                         }
<a name="l02332"></a>02332                                 }
<a name="l02333"></a>02333 
<a name="l02334"></a>02334                                 <span class="keywordflow">if</span> (rectOld.bottom &lt; rectNew.bottom) {
<a name="l02335"></a>02335                                         RECT rect = {rectMax.left, rectOld.bottom - iOffset, rectMax.right, rectNew.bottom};
<a name="l02336"></a>02336                                         iArea[3] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02337"></a>02337                                         rectInv[3] = rect;
<a name="l02338"></a>02338                                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rectOld.bottom &gt; rectNew.bottom) {
<a name="l02339"></a>02339                                         RECT rect = {rectMax.left, rectNew.bottom - iOffset, rectMax.right, rectOld.bottom};
<a name="l02340"></a>02340                                         iArea[3] = (rect.right - rect.left) * (rect.bottom - rect.top);
<a name="l02341"></a>02341                                         rectInv[3] = rect;
<a name="l02342"></a>02342                                 }
<a name="l02343"></a>02343 
<a name="l02344"></a>02344                                 <span class="keywordtype">int</span> iAreaTot1 = iAreaOld + iAreaNew;
<a name="l02345"></a>02345                                 <span class="keywordtype">int</span> iAreaTot2 = iArea[0] + iArea[1] + iArea[2] + iArea[3];
<a name="l02346"></a>02346 
<a name="l02347"></a>02347                                 <span class="keywordflow">if</span> (iAreaTot1 &lt;= iAreaTot2) {
<a name="l02348"></a>02348                                         ::InvalidateRect(hWndParent, &amp;rectOld, TRUE);
<a name="l02349"></a>02349                                         ::InvalidateRect(hWndParent, &amp;rectNew, TRUE);
<a name="l02350"></a>02350                                 } <span class="keywordflow">else</span> {
<a name="l02351"></a>02351                                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; i++) {
<a name="l02352"></a>02352                                                 <span class="keywordflow">if</span> (iArea[i]) {
<a name="l02353"></a>02353                                                         ::InvalidateRect(hWndParent, &amp;rectInv[i], TRUE);
<a name="l02354"></a>02354                                                 }
<a name="l02355"></a>02355                                         }
<a name="l02356"></a>02356                                 }
<a name="l02357"></a>02357                         }
<a name="l02358"></a>02358                 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t_iType &amp;&amp; uMsg == WM_UPDATEUISTATE) {
<a name="l02359"></a>02359                         <span class="keywordflow">if</span> (HIWORD(wParam) &amp; UISF_HIDEACCEL) {
<a name="l02360"></a>02360                                 HWND hWndParent = ::GetParent(hWnd);
<a name="l02361"></a>02361                                 <span class="keywordtype">int</span> iHeight = <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#1ca73664a2b879b3490b5417ad2e77e6">_GetFontSize</a>(hWnd, hWndParent);
<a name="l02362"></a>02362 
<a name="l02363"></a>02363                                 RECT rect;
<a name="l02364"></a>02364                                 ::GetWindowRect(hWnd, &amp;rect);
<a name="l02365"></a>02365                                 ::MapWindowPoints(NULL, hWndParent, (LPPOINT)&amp;rect, 2);
<a name="l02366"></a>02366                                 rect.bottom = rect.top + iHeight + 2;
<a name="l02367"></a>02367 
<a name="l02368"></a>02368                                 ::InvalidateRect(hWndParent, &amp;rect, TRUE);
<a name="l02369"></a>02369                         }
<a name="l02370"></a>02370                 }
<a name="l02371"></a>02371 
<a name="l02372"></a>02372                 WNDPROC wp = (WNDPROC)(LONG_PTR)::GetWindowLongPtr(hWnd, GWL_USERDATA);
<a name="l02373"></a>02373                 return ::CallWindowProc(wp, hWnd, uMsg, wParam, lParam);
<a name="l02374"></a>02374         }
<a name="l02375"></a>02375 
<a name="l02376"></a><a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#1ca73664a2b879b3490b5417ad2e77e6">02376</a>         <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="class_a_t_l_1_1_c_auto_size_window.html#1ca73664a2b879b3490b5417ad2e77e6">_GetFontSize</a>(HWND hWnd, HWND hWndParent)
<a name="l02377"></a>02377         {
<a name="l02378"></a>02378                 HFONT hFont = (HFONT)::SendMessage(hWnd, WM_GETFONT, 0, 0);
<a name="l02379"></a>02379 
<a name="l02380"></a>02380                 HDC hDC = ::GetDC(hWndParent);
<a name="l02381"></a>02381 
<a name="l02382"></a>02382                 HFONT hOldFont = (HFONT)::SelectObject(hDC, (HGDIOBJ)hFont);
<a name="l02383"></a>02383 
<a name="l02384"></a>02384                 TEXTMETRIC tm;
<a name="l02385"></a>02385                 ::GetTextMetrics(hDC, &amp;tm);
<a name="l02386"></a>02386 
<a name="l02387"></a>02387                 ::SelectObject(hDC, (HGDIOBJ)hOldFont);
<a name="l02388"></a>02388 
<a name="l02389"></a>02389                 <span class="keywordflow">return</span> tm.tmHeight - tm.tmDescent;
<a name="l02390"></a>02390 
<a name="l02391"></a>02391 <span class="comment">//              Not used anymore (better results with GetTextMetrics):</span>
<a name="l02392"></a>02392 <span class="comment">//              LOGFONT lf;</span>
<a name="l02393"></a>02393 <span class="comment">//              ::GetObject(hFont, sizeof(LOGFONT), (HGDIOBJ)&amp;lf)</span>
<a name="l02394"></a>02394 <span class="comment">//              return -MulDiv(lf.lfHeight, 72, dc.GetDeviceCaps(LOGPIXELSY));</span>
<a name="l02395"></a>02395         }
<a name="l02396"></a>02396 };
<a name="l02397"></a>02397 
<a name="l02398"></a>02398 <span class="comment">//</span>
<a name="l02399"></a>02399 
<a name="l02400"></a>02400 } <span class="comment">// namespace ATL</span>
<a name="l02401"></a>02401 
<a name="l02402"></a>02402 <span class="comment">//</span>
<a name="l02403"></a>02403 
<a name="l02404"></a>02404 <span class="preprocessor">#endif // __ATLAUTOSIZEDLG_H__</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Jul 17 13:30:30 2006 for autosizedlg by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
Software Developer (Senior)
Italy Italy
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions