Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » New shell menus don't work right Collapse All
Subject Author Date
Krustys Donuts Jan 30, 2009 - 5:15 PM


<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="Word.Document" name="ProgId" />
<meta content="Microsoft Word 12" name="Generator" />
<meta content="Microsoft Word 12" name="Originator" />
<link href="file:///C:\Users\rberman\AppData\Local\Temp\msohtmlclip1\01\clip_filelist.xml" rel="File-List" />
<link href="file:///C:\Users\rberman\AppData\Local\Temp\msohtmlclip1\01\clip_themedata.thmx" rel="themeData" />
<link href="file:///C:\Users\rberman\AppData\Local\Temp\msohtmlclip1\01\clip_colorschememapping.xml" rel="colorSchemeMapping" />


<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves />
<w:TrackFormatting />
<w:PunctuationKerning />
<w:ValidateAgainstSchemas />
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF />
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables />
<w:SnapToGridInCell />
<w:WrapTextWithPunct />
<w:UseAsianBreakRules />
<w:DontGrowAutofit />
<w:SplitPgBreakAndParaMark />
<w:DontVertAlignCellWithSp />
<w:DontBreakConstrainedForcedTables />
<w:DontVertAlignInTxbx />
<w:Word11KerningPairs />
<w:CachedColBalance />
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math" />
<m:brkBin m:val="before" />
<m:brkBinSub m:val="--" />
<m:smallFrac m:val="off" />
<m:dispDef />
<m:lMargin m:val="0" />
<m:rMargin m:val="0" />
<m:defJc m:val="centerGroup" />
<m:wrapIndent m:val="1440" />
<m:intLim m:val="subSup" />
<m:naryLim m:val="undOvr" />
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal" />
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" />
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" />
<w:LsdException Locked="false" Priority="39" Name="toc 1" />
<w:LsdException Locked="false" Priority="39" Name="toc 2" />
<w:LsdException Locked="false" Priority="39" Name="toc 3" />
<w:LsdException Locked="false" Priority="39" Name="toc 4" />
<w:LsdException Locked="false" Priority="39" Name="toc 5" />
<w:LsdException Locked="false" Priority="39" Name="toc 6" />
<w:LsdException Locked="false" Priority="39" Name="toc 7" />
<w:LsdException Locked="false" Priority="39" Name="toc 8" />
<w:LsdException Locked="false" Priority="39" Name="toc 9" />
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" />
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title" />
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" />
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle" />
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong" />
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis" />
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid" />
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" />
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1" />
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" />
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" />
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote" />
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5" />
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6" />
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6" />
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6" />
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" />
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" />
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6" />
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6" />
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" />
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" />
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" />
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6" />
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6" />
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6" />
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6" />
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" />
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" />
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" />
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" />
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title" />
<w:LsdException Locked="false" Priority="37" Name="Bibliography" />
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" />
</w:LatentStyles>
</xml><![endif]-->

<style type="text/css">
<!--
/* Font Definitions */
@font-face
    {font-family:"Cambria Math";
    panose-1:2 4 5 3 5 4 6 3 2 4;
    mso-font-alt:"Calisto MT";
    mso-font-charset:0;
    mso-generic-font-family:roman;
    mso-font-pitch:variable;
    mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
    {font-family:Calibri;
    panose-1:2 15 5 2 2 2 4 3 2 4;
    mso-font-alt:Hercules;
    mso-font-charset:0;
    mso-generic-font-family:swiss;
    mso-font-pitch:variable;
    mso-font-signature:-1610611985 1073750139 0 0 159 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
    {mso-style-unhide:no;
    mso-style-qformat:yes;
    mso-style-parent:"";
    margin:0in;
    margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
    mso-fareast-font-family:"Times New Roman";
    mso-bidi-font-family:"Times New Roman";}
span.EmailStyle15
    {mso-style-type:personal;
    mso-style-noshow:yes;
    mso-style-unhide:no;
    mso-ansi-font-size:11.0pt;
    mso-bidi-font-size:11.0pt;
    font-family:"Calibri","sans-serif";
    mso-ascii-font-family:Calibri;
    mso-ascii-theme-font:minor-latin;
    mso-fareast-font-family:Calibri;
    mso-fareast-theme-font:minor-latin;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;
    mso-bidi-font-family:"Times New Roman";
    mso-bidi-theme-font:minor-bidi;
    color:#1F497D;
    mso-themecolor:dark2;}
.MsoChpDefault
    {mso-style-type:export-only;
    mso-default-props:yes;
    font-family:"Calibri","sans-serif";
    mso-ascii-font-family:Calibri;
    mso-hansi-font-family:Calibri;
    mso-bidi-font-family:Calibri;}
.MsoPapDefault
    {mso-style-type:export-only;}
@page Section1
    {size:8.5in 11.0in;
    margin:1.0in 1.0in 1.0in 1.0in;
    mso-header-margin:.5in;
    mso-footer-margin:.5in;
    mso-paper-source:0;}
div.Section1
    {page:Section1;}
-->
</style>


<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->

Hi. I recently upgraded to 2.84. My app has a grid with some CExtGridCellFiles in it. In 2.83, if I click the ellipsis button, I can navigate to a file to open. The grid will then be populated with the path to that file, which is great. Upgrading to 2.84 gives me the new shell file browser which is fine. However, when I navigate to a file to open with it, the path that shows up in the cell now shows up in double quotes, which breaks all our existing code. Moreover, if you type the path directly into the cell rather than using the ellipsis button, you don’t get any quotes so your code has to handle both cases which seems inconvenient at best.


 


Here is the offending code from CExtGridCellFile::GetFile():


 


CExtSafeString str;

    INT nIndex, nCount = INT( dlgShellFile.m_arrRetValNames.GetSize() );

    for( nIndex = 0; nIndex < nCount; nIndex ++ )

    {

        CExtSafeString & strTmp = dlgShellFile.m_arrRetValNames.ElementAt( nIndex );

        if( nIndex > 0 )

            str += _T(" ");

        str += _T("\"");         // Add double quotes and make existing code incompatible

        str += LPCTSTR(strTmp);

        str += _T("\"");

    }


 


Another problem I’ve seen is with the directory browser (as opposed to the file browser). With that, if the contents of the grid cell already contains a valid path, I would expect the shell browser to open directly to that path (as was the case in 2.83). Instead it opens to some completely random other path for no apparent reason.


 


Thoughts?<o:p></o:p>

Technical Support Feb 1, 2009 - 11:42 AM

The quotes inside the file path are required when the path string contains spaces. So, your code should support quotes in any case. We can modify the CExtGridCellFile::GetFile() method and make it not inserting quotes in the following cases:

1) Each of selected files has path without spaces.

2) The single selection file dialog is used.

What do you think?

The CExtShellDialogFile dialog displayed by the CExtGridCellFile navigates to the current directory when just showed first time. Next times it saves/restores browsed location. We agree this is not correct in case of single file selection dialog and fully specified file path. To fix this issue please update the source code for the CExtGridCellFile::GetFile() method:

 bool CExtGridCellFile::GetFile(
	bool bOpen, // true for Open, false for SaveAs
	__EXT_MFC_SAFE_LPTSTR lpszFileName,
	__EXT_MFC_SAFE_LPCTSTR lpszDefExt, // = NULL
	DWORD dwFlags, // = __GRID_CELL_FILE_DEFAULT_FLAGS
	__EXT_MFC_SAFE_LPCTSTR lpszFilter, // = NULL
	CWnd * pWndParent // = NULL
	)
{
	ASSERT_VALID( this );
	ASSERT( lpszFileName != NULL );
    if( lpszFileName == NULL )
        return false;
#if ( ! defined __EXT_MFC_NO_SHELL_DIALOG_FILE )

CExtShellLock _shellLock;
CExtShellDialogFile dlgShellFile(
		pWndParent,
		bOpen
			? (		( ( dwFlags & OFN_ALLOWMULTISELECT )
!= 0 )
						?
CExtShellDialogFile::__EFDT_OPEN_MULTIPLE
						:
CExtShellDialogFile::__EFDT_OPEN_SINGLE
				)
			: CExtShellDialogFile::__EFDT_SAVE
		);
	if(		lpszFilter != NULL
		&&	_tcslen( LPCTSTR(lpszFilter) ) > 0
		)
	{
		dlgShellFile.m_comboFileTypes.SetFilter( lpszFilter );
		if(		lpszDefExt != NULL
			&&	_tcslen( LPCTSTR(lpszDefExt) ) > 0
			)
			dlgShellFile.m_nInitialFileTypeIndex = dlgShellFile.m_comboFileTypes.FindFilterIndexByExtension( lpszDefExt );
	}

	dlgShellFile.m_bFilesMustExist  = ( ( dwFlags & OFN_FILEMUSTEXIST ) != 0 ) ? true : false;
	dlgShellFile.m_bPathMustExist   = ( ( dwFlags & OFN_PATHMUSTEXIST )
!= 0 ) ? true : false;
	dlgShellFile.m_bPromptOverwrite = ( ( dwFlags & OFN_OVERWRITEPROMPT
) != 0 ) ? true : false;

	if( lpszFileName != NULL )
	{
		CString str;
		str = lpszFileName;
		if( ( dwFlags & OFN_ALLOWMULTISELECT ) != 0 )
		{
			dlgShellFile.m_strEditorTextInitial = str;
		}
		else
		{
			str.TrimLeft( _T(" \r\n\t\"") );
			str.TrimRight( _T(" \r\n\t\"") );
			TCHAR	strDrive[    _MAX_PATH + 1 ],
					strDir[      _MAX_PATH + 1 ],
					strFileName[ _MAX_PATH + 1 ],
					strFileExt[  _MAX_PATH + 1 ];
			::memset( strDrive,    0, _MAX_PATH + 1 );
			::memset( strDir,      0, _MAX_PATH + 1 );
			::memset( strFileName, 0, _MAX_PATH + 1 );
			::memset( strFileExt,  0, _MAX_PATH + 1 );
			__EXT_MFC_SPLITPATH(
				LPCTSTR(str),
				strDrive, _MAX_PATH,
				strDir, _MAX_PATH,
				strFileName, _MAX_PATH,
				strFileExt, _MAX_PATH
				);
			dlgShellFile.m_strRetValFolder =  strDrive;
			dlgShellFile.m_strRetValFolder += strDir;
			dlgShellFile.m_strEditorTextInitial =  strFileName;
			dlgShellFile.m_strEditorTextInitial += strFileExt;
			if( ! dlgShellFile.m_strRetValFolder.IsEmpty() )
			{
				dlgShellFile.m_bCurrentDirectorySetInitially
= false;
				dlgShellFile.m_bSaveRestoreShellLocation = false;
			}
		}
	}

	if( dlgShellFile.DoModal() != IDOK )
		return false;

//	__EXT_MFC_STRCPY( lpszFileName, MAX_PATH, LPCTSTR(
dlgShellFile.m_strRetValNames ) );

	CExtSafeString str;
	INT nIndex, nCount = INT( dlgShellFile.m_arrRetValNames.GetSize() );
	for( nIndex = 0; nIndex < nCount; nIndex ++ )
	{
		CExtSafeString & strTmp =
dlgShellFile.m_arrRetValNames.ElementAt( nIndex );
		if( nIndex > 0 )
			str += _T(" ");
		str += _T("\"");
		str += LPCTSTR(strTmp);
		str += _T("\"");
	}
	__EXT_MFC_STRCPY( lpszFileName, MAX_PATH, LPCTSTR(str) );

	_shellLock;
	return true;

#else // ( ! defined __EXT_MFC_NO_SHELL_DIALOG_FILE )

CFileDialog dlgFileDialog( 
		bOpen ? TRUE : FALSE, 
		lpszDefExt,
		lpszFileName,
		dwFlags,
		lpszFilter, 
		pWndParent
		);
	// if this is Win2K+, then use spec OPENFILENAME.
	OSVERSIONINFO osv;
	memset( &osv, 0, sizeof(OSVERSIONINFO) );
	osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
	VERIFY( ::GetVersionEx(&osv) );
	if(		osv.dwPlatformId >= VER_PLATFORM_WIN32_NT
		&&	osv.dwMajorVersion >= 5
		&&	sizeof(OPENFILENAME) < 88 
		&&	dlgFileDialog.m_ofn.lStructSize < 88
		)
	{
		// OPENFILENAME in Win2K has extra members, following copied from newer commdlg.h.
		struct OPENFILENAMEEX
		{ 
			void*  pvReserved; // 4 bytes
			DWORD  dwReserved; // 4 bytes
			DWORD  FlagsEx;    // 4 bytes
		};
		dlgFileDialog.m_ofn.lStructSize += sizeof(OPENFILENAMEEX); // should equal an additional 12 bytes;
	}
	if( dlgFileDialog.DoModal() != IDOK )
		return false;
	__EXT_MFC_STRCPY( lpszFileName, MAX_PATH, LPCTSTR(
dlgFileDialog.GetPathName() ) );
	return true;

#endif // else from if ( ! defined __EXT_MFC_NO_SHELL_DIALOG_FILE )

}


Krustys Donuts Feb 2, 2009 - 12:53 PM

Hi-


 


Thanks for getting back to me. If there is only a single selection then you wouldn’t need quotes at all (even if there are spaces in the path), right? This would provide compatible functionality to the existing file picker. I agree the quotes are necessary if you have multiple selections since you need a way to delimit the files if several are selected. But if there is only 1 file chosen you shouldn’t need quotes.


 


Thanks, -K

Technical Support Feb 4, 2009 - 1:17 AM

Please update the source code for the following method:

 bool CExtGridCellFile::GetFile(
            bool bOpen, // true for Open, false for SaveAs
            __EXT_MFC_SAFE_LPTSTR lpszFileName,
            __EXT_MFC_SAFE_LPCTSTR lpszDefExt, // = NULL
            DWORD dwFlags, // = __GRID_CELL_FILE_DEFAULT_FLAGS
            __EXT_MFC_SAFE_LPCTSTR lpszFilter, // = NULL
            CWnd * pWndParent // = NULL
            )
{
            ASSERT_VALID( this );
            ASSERT( lpszFileName != NULL );
    if( lpszFileName == NULL )
        return false;
#if ( ! defined __EXT_MFC_NO_SHELL_DIALOG_FILE )
CExtShellLock _shellLock;
CExtShellDialogFile dlgShellFile(
                        pWndParent,
                        bOpen
                                    ? ( ( ( dwFlags & OFN_ALLOWMULTISELECT ) != 0 ) ? CExtShellDialogFile::__EFDT_OPEN_MULTIPLE : CExtShellDialogFile::__EFDT_OPEN_SINGLE )
                                    : CExtShellDialogFile::__EFDT_SAVE
                        );
            if( lpszFilter != NULL && _tcslen( LPCTSTR(lpszFilter) ) > 0 )
            {
                        dlgShellFile.m_comboFileTypes.SetFilter( lpszFilter );
                        if( lpszDefExt != NULL && _tcslen( LPCTSTR(lpszDefExt) ) > 0 )
                                    dlgShellFile.m_nInitialFileTypeIndex = dlgShellFile.m_comboFileTypes.FindFilterIndexByExtension( lpszDefExt );
            }
            dlgShellFile.m_bFilesMustExist  = ( ( dwFlags & OFN_FILEMUSTEXIST ) != 0 ) ? true : false;
            dlgShellFile.m_bPathMustExist   = ( ( dwFlags & OFN_PATHMUSTEXIST ) != 0 ) ? true : false;
            dlgShellFile.m_bPromptOverwrite = ( ( dwFlags & OFN_OVERWRITEPROMPT ) != 0 ) ? true : false;
            if( lpszFileName != NULL )
            {
                        CString str = lpszFileName;
                        if( ( dwFlags & OFN_ALLOWMULTISELECT ) != 0 )
                                    dlgShellFile.m_strEditorTextInitial = str;
                        else
                        {
                                    str.TrimLeft( _T(" \r\n\t\"") );
                                    str.TrimRight( _T(" \r\n\t\"") );
                                    TCHAR strDrive[    _MAX_PATH + 1 ],
                                                            strDir[      _MAX_PATH + 1 ],
                                                            strFileName[ _MAX_PATH + 1 ],
                                                            strFileExt[  _MAX_PATH + 1 ];
                                    ::memset( strDrive,    0, _MAX_PATH + 1 );
                                    ::memset( strDir,      0, _MAX_PATH + 1 );
                                    ::memset( strFileName, 0, _MAX_PATH + 1 );
                                    ::memset( strFileExt,  0, _MAX_PATH + 1 );
                                    __EXT_MFC_SPLITPATH( LPCTSTR(str), strDrive, _MAX_PATH, strDir, _MAX_PATH, strFileName, _MAX_PATH, strFileExt, _MAX_PATH );
                                    dlgShellFile.m_strRetValFolder =  strDrive;
                                    dlgShellFile.m_strRetValFolder += strDir;
                                    dlgShellFile.m_strEditorTextInitial =  strFileName;
                                    dlgShellFile.m_strEditorTextInitial += strFileExt;
                                    if( ! dlgShellFile.m_strRetValFolder.IsEmpty() )
                                    {
                                                dlgShellFile.m_bCurrentDirectorySetInitially = false;
                                                dlgShellFile.m_bSaveRestoreShellLocation = false;
                                    }
                        }
            }
            if( dlgShellFile.DoModal() != IDOK )
                        return false;
CExtSafeString str;
INT nIndex, nCount = INT( dlgShellFile.m_arrRetValNames.GetSize() );
            for( nIndex = 0; nIndex < nCount; nIndex ++ )
            {
                        CExtSafeString & strTmp = dlgShellFile.m_arrRetValNames.ElementAt( nIndex );
                        if( nIndex > 0 )
                                    str += _T(" ");
                        if( ( dwFlags & OFN_ALLOWMULTISELECT ) != 0 && nCount > 1 )
                                    str += _T("\"");
                        str += LPCTSTR(strTmp);
                        if( ( dwFlags & OFN_ALLOWMULTISELECT ) != 0 && nCount > 1  )
                                    str += _T("\"");
            }
            __EXT_MFC_STRCPY( lpszFileName, MAX_PATH, LPCTSTR(str) );
            _shellLock;
            return true;
#else // ( ! defined __EXT_MFC_NO_SHELL_DIALOG_FILE )
CFileDialog dlgFileDialog( bOpen ? TRUE : FALSE, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pWndParent );
            // if this is Win2K+, then use spec OPENFILENAME.
OSVERSIONINFO osv; ::memset( &osv, 0, sizeof(OSVERSIONINFO) );
            osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
            VERIFY( ::GetVersionEx(&osv) );
            if( osv.dwPlatformId >= VER_PLATFORM_WIN32_NT && osv.dwMajorVersion >= 5 && sizeof(OPENFILENAME) < 88 && dlgFileDialog.m_ofn.lStructSize < 88 )
            {
                        struct OPENFILENAMEEX // OPENFILENAME in Win2K has extra members, following copied from newer commdlg.h.
                        { 
                                    void*  pvReserved; // 4 bytes
                                    DWORD  dwReserved; // 4 bytes
                                    DWORD  FlagsEx;    // 4 bytes
                        };
                        dlgFileDialog.m_ofn.lStructSize += sizeof(OPENFILENAMEEX); // should equal an additional 12 bytes;
            }
            if( dlgFileDialog.DoModal() != IDOK )
                        return false;
            __EXT_MFC_STRCPY( lpszFileName, MAX_PATH, LPCTSTR( dlgFileDialog.GetPathName() ) );
            return true;
#endif // else from if ( ! defined __EXT_MFC_NO_SHELL_DIALOG_FILE )
}