VS2017中使用ObjectARX 2019 wizard的 ArxWizMFCSupport向导出现的bug,提示脚本错误.

实际原因类似在arx2012向导的问题,需要修改C:\Program Files (x86)\Autodesk\ObjectARX 2019 Wizards\ArxWizMFCSupport\HTML\1033下的default.htm

首先查找vs2017的VsWizard.dll文件是否注册,如果注册了,会在注册表中有一个     计算机\HKEY_CLASSES_ROOT\VsWizard.WizCombo.15.0 的注册表项,

找到这项下面的clsid默认值,复制这段大括号内的值

注:如果没有这个值,那么可能是你的这个dll没有注册,你可以使用管理员启动cmd.exe,然后用regsvr32注册VsWizard.dll

如:

regsvr32 "D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VsWizard.dll"

注册即可,其中的dll路径换成你自己的vs路径.

记事本之类的软件,比如notepad++打开C:\Program Files (x86)\Autodesk\ObjectARX 2019 Wizards\ArxWizMFCSupport\HTML\1033下的default.htm

查找classid替换掉.原版的内容我以及找不到了,如果有多个<OBJECT>确保只有一个是有效的.

另外还需要修改以下两处.第一行的html注释 <!-少了一个 "-" 符号,可能会导致html编辑器打开的时候没有高亮的效果.

其次是strURL += "Common7/IDE/VC"这句没有用,会导致css无法获取,向导对话框会显示蓝色的字,页面错乱,并且这句没有分号结束.

去掉这句后向导界面正常了.

后记,当我修正了这个bug后,去官方的GitHub,发现早已经修复.很是尴尬.次文仅当解析一下这个问题..

附上官方的修正后的html源码吧..

来源地址https://github.com/ADN-DevTech/ObjectARX-Wizards/blob/ForAutoCAD2019/ArxWizMFCSupport/HTML/1033/default.htm

  1. <!-- Copyright (c) Autodesk, Inc. All rights reserved. -->
  2. <!--Madhukar: To test various intricate behaviors of VS WIZARD
  3. Use:
  4. var myMsgBox = new ActiveXObject("wscript.shell")
  5. myMsgBox.Popup (strURL)
  6. -->
  7. <HTML DIR="LTR">
  8. <HEAD>
  9. <TITLE></TITLE>
  10. <META content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
  11. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
  12. <META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
  13. <LINK ID="LINKURL" REL="stylesheet" HREF="../../../../../1033/NewStyles.css">
  14. <SCRIPT>
  15. var strURL =window.external.FindSymbol ("PROJECT_TEMPLATE_PATH");
  16. strURL += "\\" ;
  17. strURL += window.external.GetHostLocale () ;
  18. strURL += "\\"+"NewStyles.css";
  19. /*Madhu: Not required in production
  20. var myMsgBox = new ActiveXObject("wscript.shell")
  21. myMsgBox.Popup (strURL)*/
  22. document.styleSheets ("LINKURL").href =strURL ;
  23. </SCRIPT>
  24. <!-- -->
  25. <!-- The SYMBOL tag is used to set the default values for the user-defined symbols.-->
  26. <!-- -->
  27. <SYMBOL NAME="CLASS_NAME_ROOT" TYPE="text" VALUE=""></SYMBOL>
  28. <SYMBOL NAME="CLASS_NAME" TYPE="text" VALUE=""></SYMBOL>
  29. <SYMBOL NAME="CHILDCLASS_NAME" TYPE="text" VALUE=""></SYMBOL>
  30. <SYMBOL NAME="BASE_CLASS" TYPE="text" VALUE=""></SYMBOL>
  31. <SYMBOL NAME="CHILD_DIALOG_NEEDED" TYPE="bool" VALUE="false"></SYMBOL>
  32. <SYMBOL NAME="CHILD_RESOURCE_NEEDED" TYPE="bool" VALUE="false"></SYMBOL>
  33. <SYMBOL NAME="FILTER_BASE" TYPE="text" VALUE="All"></SYMBOL>
  34. <SYMBOL NAME="HEADER_FILE" TYPE="text" VALUE=""></SYMBOL>
  35. <SYMBOL NAME="IMPL_FILE" TYPE="text" VALUE=""></SYMBOL>
  36. <SYMBOL NAME="CHILDHEADER_FILE" TYPE="text" VALUE=""></SYMBOL>
  37. <SYMBOL NAME="CHILDIMPL_FILE" TYPE="text" VALUE=""></SYMBOL>
  38. <SYMBOL NAME="HEADER_FILE_VALID" TYPE="bool" VALUE="false"></SYMBOL>
  39. <SYMBOL NAME="IMPL_FILE_VALID" TYPE="bool" VALUE="false"></SYMBOL>
  40. <SYMBOL NAME="INCLUDE_HEADER" TYPE="text" VALUE=""></SYMBOL>
  41. <SYMBOL NAME="IDD_DIALOG" TYPE="text" VALUE=""></SYMBOL>
  42. <SYMBOL NAME="CREATE_DIALOG" TYPE="checkbox" VALUE="false"></SYMBOL>
  43. <SYMBOL NAME="AUTOMATION_NONE" TYPE="radio" VALUE="true"></SYMBOL>
  44. <SYMBOL NAME="AUTOMATION" TYPE="radio" VALUE="false"></SYMBOL>
  45. <SYMBOL NAME="CREATABLE" TYPE="radio" VALUE="false"></SYMBOL>
  46. <SYMBOL NAME="TYPEID" TYPE="text" VALUE=""></SYMBOL>
  47. <SYMBOL NAME="TEMPLATE_HEADER" TYPE="text" VALUE=""></SYMBOL>
  48. <SYMBOL NAME="TEMPLATE_IMPL" TYPE="text" VALUE=""></SYMBOL>
  49. <SYMBOL NAME="DISPIID_STATIC_CONST_GUID_FORMAT" TYPE="text"></SYMBOL>
  50. <SYMBOL NAME="DISPIID_REGISTRY_FORMAT" TYPE="text"></SYMBOL>
  51. <SYMBOL NAME="CLSID_REGISTRY_FORMAT" TYPE="text"></SYMBOL>
  52. <SYMBOL NAME="CLSID_IMPLEMENT_OLECREATE_FORMAT" TYPE="text"></SYMBOL>
  53. <SYMBOL NAME="ACCESSIBILITY" TYPE="checkbox" VALUE="false"></SYMBOL>
  54. <SYMBOL NAME="COLESERVERDOC" TYPE="checkbox" VALUE="false"></SYMBOL>
  55. <SYMBOL NAME="COLECLIENTITEM" TYPE="checkbox" VALUE="false"></SYMBOL>
  56. <SYMBOL NAME="CCOLORDIALOG" TYPE="checkbox" VALUE="false"></SYMBOL>
  57. <SYMBOL NAME="CCONNECTIONPOINT" TYPE="checkbox" VALUE="false"></SYMBOL>
  58. <SYMBOL NAME="CDOCOBJECTSERVER" TYPE="checkbox" VALUE="false"></SYMBOL>
  59. <SYMBOL NAME="CDOCOBJECTSERVERITEM" TYPE="checkbox" VALUE="false"></SYMBOL>
  60. <SYMBOL NAME="CFILEDIALOG" TYPE="checkbox" VALUE="false"></SYMBOL>
  61. <SYMBOL NAME="CFONTDIALOG" TYPE="checkbox" VALUE="false"></SYMBOL>
  62. <SYMBOL NAME="CPAGESETUPDIALOG" TYPE="checkbox" VALUE="false"></SYMBOL>
  63. <SYMBOL NAME="CPRINTDIALOG" TYPE="checkbox" VALUE="false"></SYMBOL>
  64. <SYMBOL NAME="CINTERNETSESSION" TYPE="checkbox" VALUE="false"></SYMBOL>
  65. <SYMBOL NAME="CPROPERTYPAGE" TYPE="checkbox" VALUE="false"></SYMBOL>
  66. <SYMBOL NAME="CCONTROLBAR" TYPE="checkbox" VALUE="false"></SYMBOL>
  67. <SYMBOL NAME="CVIEW" TYPE="checkbox" VALUE="false"></SYMBOL>
  68. <SYMBOL NAME="MAX_DOC_TYPE_NAME" TYPE="num" VALUE="15"></SYMBOL>
  69. <SYMBOL NAME="MAX_FILE_NEW_NAME_SHORT" TYPE="num" VALUE="15"></SYMBOL>
  70. <SYMBOL NAME="MAX_FILE_TYPE_ID" TYPE="num" VALUE="39"></SYMBOL>
  71. <SYMBOL NAME="MAX_FILE_NEW_NAME_LONG" TYPE="num" VALUE="40"></SYMBOL>
  72. <SYMBOL NAME="MAX_FILTER_NAME" TYPE="num" VALUE="100"></SYMBOL>
  73. <SYMBOL NAME="DOCUMENT_TYPE_NAME" TYPE="text" VALUE=""></SYMBOL>
  74. <SYMBOL NAME="DOCUMENT_FILE_EXTENSION" TYPE="text" VALUE=""></SYMBOL>
  75. <SYMBOL NAME="DOCUMENT_FILE_TYPE_ID" TYPE="text" VALUE=""></SYMBOL>
  76. <SYMBOL NAME="DOCUMENT_FILE_NEW_NAME_SHORT" TYPE="text" VALUE=""></SYMBOL>
  77. <SYMBOL NAME="DOCUMENT_FILE_NEW_NAME_LONG" TYPE="text" VALUE=""></SYMBOL>
  78. <SYMBOL NAME="DOCUMENT_FILTER_NAME" TYPE="text" VALUE=""></SYMBOL>
  79. <SYMBOL NAME="DOCUMENT_MAIN_FRAME_CAPTION" TYPE="text" VALUE=""></SYMBOL>
  80. <SYMBOL NAME="MERGE_FILE" TYPE="bool" VALUE="false"></SYMBOL>
  81. <SYMBOL NAME="GEN_DOCTEMPLATE" TYPE="checkbox" VALUE="false"></SYMBOL>
  82. <SYMBOL NAME="DOCUMENT_CLASS" TYPE="text" VALUE=""></SYMBOL>
  83. <SYMBOL NAME="FRAME_CLASS" TYPE="text" VALUE=""></SYMBOL>
  84. <SYMBOL NAME="MDI_APP" TYPE="bool" VALUE="false"></SYMBOL>
  85. </HEAD>
  86. <BODY BGCOLOR="BUTTONFACE" TOPMARGIN="0" LEFTMARGIN="0" RIGHTMARGIN="0" BOTTOMMARGIN="0" ONLOAD="InitDocument(document);" ONKEYDOWN="OnKey();" ONKEYPRESS="OnPress();" TEXT="Blue">
  87. <TABLE CLASS="ONE" HEIGHT="100%" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table1">
  88. <COL WIDTH="178">
  89. <COL>
  90. <!--OPEN OF INTRODUCTORY INFORMATION TABLE//-->
  91. <TR VALIGN="TOP">
  92. <TD HEIGHT="79" WIDTH="100%" COLSPAN="2">
  93. <TABLE CLASS="TWO" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table2">
  94. <COL WIDTH="12">
  95. <COL>
  96. <COL WIDTH="12">
  97. <TR>
  98. <TD VALIGN="TOP" HEIGHT="12" WIDTH="12">
  99.  
  100. </TD>
  101. <TD VALIGN="TOP" HEIGHT="12">
  102.  
  103. </TD>
  104. <TD VALIGN="TOP" HEIGHT="12" WIDTH="12">
  105.  
  106. </TD>
  107. <TD CLASS="IMAGE" VALIGN="BOTTOM" WIDTH="110" ROWSPAN="2">
  108. <DIV CLASS="SMALLA" ID="Layer0">
  109. <IMG CLASS="SMALLEST" SRC="../../Images/MFCSupport.gif" WIDTH="63" HEIGHT="63" ALT="" BORDER="0">
  110. </DIV>
  111. </TD>
  112. <TD VALIGN="TOP" HEIGHT="12" WIDTH="6" ROWSPAN="2">
  113.  
  114. </TD>
  115. </TR>
  116. <TR>
  117. <TD VALIGN="TOP" HEIGHT="65" WIDTH="12">
  118.  
  119. </TD>
  120. <TD VALIGN="TOP" HEIGHT="65">
  121. <H4 CLASS="HEAD" ID="HEAD">Welcome</H4>
  122. </TD>
  123. <TD VALIGN="TOP" HEIGHT="65" WIDTH="12">
  124.  
  125. </TD>
  126. </TR>
  127. <TR>
  128. <TD VALIGN="TOP" CLASS="RULE" COLSPAN="5" HEIGHT="2">
  129. <TABLE BORDER="0" WIDTH="100%" HEIGHT="1" CELLPADDING="0" CELLSPACING="0" ID="Table3">
  130. <TR VALIGN="TOP">
  131. <TD HEIGHT="1" WIDTH="100%" BGCOLOR="BUTTONSHADOW"></TD>
  132. <TD HEIGHT="1" WIDTH="1" BGCOLOR="WINDOW"></TD>
  133. </TR>
  134. </TABLE>
  135. </TD>
  136. </TR>
  137. </TABLE>
  138. </TD>
  139. </TR>
  140. <!--CLOSE OF INTRODUCTORY INFORMATION TABLE//-->
  141. <!--OPEN OF NAVIGATION, CONTENT, AND BUTTON TABLES//-->
  142. <TR VALIGN="TOP">
  143. <TD CLASS="Three" VALIGN="TOP" HEIGHT="100%" WIDTH="100%">
  144. <TABLE CLASS="fixedSize" HEIGHT="100%" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table4">
  145. <TR VALIGN="TOP">
  146. <TD CLASS="threeCustom" VALIGN="TOP" STYLE="BACKGROUND-IMAGE: URL(../../Images/MFCSupportBG.gif);">
  147. <!--OPEN OF NAVIGATION TABLE//-->
  148. <TABLE CLASS="THREE" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table5">
  149. <COL WIDTH="12">
  150. <COL WIDTH="166">
  151. <COL WIDTH="1">
  152. <TR>
  153. <TD VALIGN="TOP" COLSPAN="3" HEIGHT="12">
  154.  
  155. </TD>
  156. </TR>
  157. <TR height="85%">
  158. <TD VALIGN="TOP" WIDTH="12">
  159.  
  160. </TD>
  161. <TD VALIGN="TOP" WIDTH="165">
  162. <!--OPEN OF NAVIGATIONAL LINKS//-->
  163. <DIV CLASS="LINKSELECTED">
  164. <SPAN CLASS="VERTLINE1"><IMG SRC="../../Images/spacer.gif" WIDTH="1" HEIGHT="1" ALT="" BORDER="0">
  165. </SPAN><SPAN CLASS="HORILINE1">
  166. <TABLE WIDTH="167" HEIGHT="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table6">
  167. <TR VALIGN="TOP">
  168. <TD CLASS="DOTTEDLINE" HEIGHT="1">
  169. </TD>
  170. </TR>
  171. <TR VALIGN="TOP">
  172. <TD HEIGHT="100%">
  173. <IMG SRC="../../Images/spacer.gif" WIDTH="1" HEIGHT="28" ALT="" BORDER="0">
  174. </TD>
  175. </TR>
  176. <TR VALIGN="TOP">
  177. <TD CLASS="DOTTEDLINE" HEIGHT="1">
  178. </TD>
  179. </TR>
  180. </TABLE>
  181. </SPAN>
  182. <TABLE WIDTH="160" HEIGHT="28" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="LINKTEXTSELECTED" ID="Table7">
  183. <TR VALIGN="MIDDLE">
  184. <TD WIDTH="156">
  185. <SPAN ID="Main" TITLE="Specify class and file names as well as type of class to create." onclick="DisplayAboutBox(false);">
  186. Names</SPAN>
  187. </TD>
  188. <TD WIDTH="4">
  189. <IMG SRC="../../Images/spacer.gif" HEIGHT="1" WIDTH="4">
  190. </TD>
  191. </TR>
  192. </TABLE>
  193. </DIV>
  194. <!--CLOSE OF NAVIGATIONAL LINKS//-->
  195. </TD>
  196. <TD WIDTH="1">
  197. <DIV CLASS="VERTLINE">
  198. <IMG SRC="../../Images/spacer.gif" WIDTH="1" HEIGHT="1" ALT="" BORDER="0">
  199. </DIV>
  200. </TD>
  201. </TR>
  202. <TR>
  203. <TD VALIGN="top" WIDTH="12"> </TD>
  204. <TD VALIGN="top" WIDTH="165">
  205. <DIV>
  206. <TABLE WIDTH="166" HEIGHT="28" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="LINKTEXT" ID="Table8">
  207. <TR VALIGN="bottom" >
  208. <TD WIDTH="162">
  209. <SPAN CLASS="ACTIVELINK" ID="ABOUT" TITLE="" onclick="DisplayAboutBox(true);" TABINDEX="1">
  210. About...</SPAN>
  211. </TD>
  212. <TD WIDTH="4">
  213. <IMG SRC="../../Images/spacer.gif" HEIGHT="1" WIDTH="4">
  214. </TD>
  215. </TR>
  216. </TABLE>
  217. </DIV>
  218. </TD>
  219. <TD WIDTH="1">
  220. <DIV CLASS="VERTLINE">
  221. <IMG SRC="../../Images/spacer.gif" WIDTH="1" HEIGHT="1" ALT="" BORDER="0">
  222. </DIV>
  223. </TD>
  224. </TR>
  225. </TABLE>
  226. </TD>
  227. </TR>
  228. </TABLE>
  229. <!--CLOSE OF NAVIGATION TABLE//-->
  230. </TD>
  231. <TD VALIGN="TOP" HEIGHT="100%">
  232. <!--OPEN OF CONTENT AND BUTTON TABLE//-->
  233. <TABLE CLASS="ONE" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table9">
  234. <COL WIDTH="100%">
  235. <TR VALIGN="TOP">
  236. <TD HEIGHT="100%">
  237. <!--OPEN OF CONTENT//-->
  238. <div id="about" style="visibility:hidden; display:none;">
  239. <table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" ID="Table13">
  240. <tr>
  241. <td colspan="5" height="12"><IMG SRC="../../Images/spacer.gif" WIDTH="1" HEIGHT="1"></td>
  242. </tr>
  243. <tr height="12">
  244. <td width="12" rowspan="11"><IMG SRC="../../Images/spacer.gif" WIDTH="12" HEIGHT="1"></td>
  245. <td colspan="3"><b><font size="2"><span id="ABOUTTITLE"></span></font></b></td>
  246. <td width="12" rowspan="11"><IMG SRC="../../Images/spacer.gif" WIDTH="12" HEIGHT="1"></td>
  247. </tr>
  248. <tr height="12">
  249. <td colspan="3" id="ABOUTVERSION">Version: </td>
  250. </tr>
  251. <tr height="12">
  252. <td colspan="3">Copyright � Autodesk, Inc. All rights reserved.</td>
  253. </tr>
  254. <tr>
  255. <td colspan="3" height="25"><IMG SRC="../../Images/spacer.gif" WIDTH="1" HEIGHT="1"></td>
  256. </tr>
  257. <tr height="12">
  258. <td width="30"></td>
  259. <td colspan="2"><b><u>by Autodesk Developer Technical Services</u></b></td>
  260. </tr>
  261. <tr height="12">
  262. <td></td>
  263. <td width="5"></td>
  264. <td><b>Fenton Webb</b></td>
  265. </tr>
  266. <tr height="12">
  267. <td></td>
  268. <td width="5"></td>
  269. <td><b>Cyrille Fauvel</b></td>
  270. </tr>
  271. <tr height="12">
  272. <td></td>
  273. <td></td>
  274. <td></td>
  275. </tr>
  276. <tr>
  277. <td colspan="3" height="25" width="100%"><IMG SRC="../../Images/spacer.gif" WIDTH="1" HEIGHT="1"></td>
  278. </tr>
  279. <tr height="12">
  280. <td colspan="3">Updates freely available to ADN members on: <a href="http://adn.autodesk.com">
  281. <font color="blue">http://adn.autodesk.com</font></a></td>
  282. </tr>
  283. <tr height="12">
  284. <td colspan="3">Email wishlist items, and bug reports to: <a href="mailto:oarxwiz-feedback@autodesk.com">
  285. <font color="blue">oarxwiz-feedback@autodesk.com</font></a></td>
  286. </tr>
  287. <tr>
  288. <td colspan="5"> </td>
  289. </tr>
  290. </table>
  291. </div>
  292. <div id="content">
  293. <TABLE CLASS="CONTENT" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table10">
  294. <COL WIDTH="12">
  295. <COL WIDTH="193">
  296. <COL WIDTH="12">
  297. <COL WIDTH="193">
  298. <COL WIDTH="12">
  299. <TR>
  300. <TD VALIGN="TOP" HEIGHT="12" COLSPAN="3">
  301.  
  302. </TD>
  303. </TR>
  304. <TR>
  305. <TD VALIGN="TOP" WIDTH="12">
  306.  
  307. </TD>
  308. <TD VALIGN="TOP">
  309. <SPAN CLASS="itemTextTop" ID="CLASS_NAME_SPAN" TITLE="Name of the new ObjectARX MFC class that will be created.">
  310. <LABEL FOR="CLASS_NAME" ID="CLASS_NAME_LABEL">C<U>l</U>ass name:</LABEL>
  311. <BR>
  312. <INPUT CLASS="sideBtn" ID="CLASS_NAME" TYPE="text" ACCESSKEY="l" VALUE="" onPropertychange="OnClass();" NAME="CLASS_NAME">
  313. </SPAN>
  314. <P CLASS="ElementSpacer16"> </P>
  315. <table>
  316. <TR>
  317. <td>
  318. <SPAN CLASS="itemText" ID="BASE_CLASS_SPAN" TITLE="Name of the new ObjectARX MFC class that new class will derive from.">
  319. <LABEL FOR="BASE_CLASS" ID="BASE_CLASS_LABEL"><U>B</U>ase class:</LABEL>
  320. <BR>
  321. <SELECT CLASS="sideBtn" ID="BASE_CLASS" SIZE="1" ACCESSKEY="b" onChange="OnBase();" NAME="BASE_CLASS">
  322. </SELECT>
  323. </SPAN>
  324. </td>
  325. <td>
  326. <SPAN CLASS="itemText" ID="FILTER_BASE_SPAN" TITLE="Use this to drop down filter the bass classes into collections of specific functionality.">
  327. <LABEL FOR="FILTER_BASE" ID="FILTER_BASE_LABLE"><U>F</U>ilter Base Classes by:</LABEL>
  328. <BR>
  329. <SELECT CLASS="sideBtn" ID="FILTER_BASE" SIZE="1" ACCESSKEY="F" onChange="OnFilterChange();" NAME="FILTER_BASE">
  330. </SELECT>
  331. </SPAN>
  332. </td>
  333. </TR>
  334. </table>
  335. <P CLASS="ElementSpacer6"> </P>
  336. <SPAN CLASS="itemText" ID="IDD_DIALOG_SPAN" TITLE="ID of dialog resource. Typing in an ID will create a new dialog resource. You can also select from the list if an existing one is available. Only enabled if base class is one of the following: CDialog, CFormView, COlePropertyPage, CPropertyPage or CDHtmlDialog.">
  337. <LABEL ID="idd_dialog_title" ACCESSKEY="d" FOR="DialogList"><U>D</U>ialog ID:</LABEL>
  338. <BR>
  339. <INPUT CLASS="sideBtn" ID="IDD_DIALOG" TYPE="HIDDEN" NAME="IDD_DIALOG"></INPUT>
  340. <!-- Update COM Control Id for VS 2012 -->
  341. <!--<OBJECT CLASS="itemText" ID="DialogList" ACCESSKEY="d" CLASSID="CLSID:19db9a07-5ca3-461e-9e7b-b370c91aba2e">
  342. </OBJECT>-->
  343. <!--Update COM Control Id for VS2015 -->
  344. <!--<OBJECT CLASS="itemText" ID="DialogList" ACCESSKEY="d" CLASSID="CLSID:087da97a-e2f4-472a-bb48-0bcdfaa20fb3">
  345. </OBJECT>-->
  346. <!--Update COM Control ID for VS2017 -->
  347. <OBJECT CLASS="itemText" ID="DialogList" ACCESSKEY="d" CLASSID="CLSID:fc1ae18b-0282-42f1-90ae-bbd8f0181013">
  348. </OBJECT>
  349.  
  350. </SPAN>
  351. <P CLASS="ElementSpacer6"> </P>
  352. <NOBR><SPAN CLASS="itemText" ID="HEADER_FILE_SPAN" TITLE="Name of header file where class will be defined.">
  353. <LABEL FOR="HEADER_FILE" ID="HEADER_FILE_LABEL">.h f<U>i</U>le:</LABEL>
  354. <BR>
  355. <INPUT CLASS="sideBtn2" ID="HEADER_FILE" ACCESSKEY="i" NAME="IsapiDirectoryName" TYPE="text" onPropertychange="window.external.AddSymbol('HEADER_FILE_VALID', false);">
  356. <BUTTON CLASS="buttonClass3Custom" ID="BrowseHeaderBtn" TYPE="BUTTON" TITLE="Browse for header file." onClick="OnBrowseHeaderFile();">
  357. ...</BUTTON> </SPAN></NOBR>
  358. <P CLASS="ElementSpacer6"> </P>
  359. <NOBR><SPAN CLASS="itemText" ID="IMPL_FILE_SPAN" TITLE="Name of implementation file for this class.">
  360. <LABEL FOR="IMPL_FILE" ID="IMPL_FILE_LABEL">.c<U>p</U>p file:</LABEL>
  361. <BR>
  362. <INPUT CLASS="sideBtn2" ID="IMPL_FILE" ACCESSKEY="p" TYPE="text" onPropertychange="window.external.AddSymbol('IMPL_FILE_VALID', false);" NAME="IMPL_FILE">
  363. <BUTTON CLASS="buttonClass3Custom" ID="BrowseImplBtn" TYPE="BUTTON" TITLE="Browse for implementation file." onClick="OnBrowseImplFile();">
  364. ...</BUTTON> </SPAN></NOBR>
  365. </TD>
  366. <TD VALIGN="TOP" WIDTH="12">
  367.  
  368. </TD>
  369. </TR>
  370. <TR>
  371. <TD VALIGN="TOP" HEIGHT="100%" COLSPAN="3">
  372.  
  373. </TD>
  374. </TR>
  375. </TABLE>
  376. <!--CLOSE OF CONTENT//-->
  377. </TD>
  378. </TR>
  379. <TR VALIGN="BOTTOM">
  380. <TD HEIGHT="48">
  381. <!--OPEN OF BUTTON HTML//-->
  382. <TABLE HEIGHT="48" BORDER="0" CELLPADDING="0" CELLSPACING="0" ID="Table11">
  383. <COL WIDTH="12">
  384. <COL>
  385. <COL WIDTH="75">
  386. <COL WIDTH="4">
  387. <COL WIDTH="75">
  388. <COL WIDTH="4">
  389. <COL WIDTH="75">
  390. <COL WIDTH="12">
  391. <TR>
  392. <TD VALIGN="TOP" CLASS="RULE" COLSPAN="8" HEIGHT="2">
  393. <TABLE BORDER="0" WIDTH="100%" HEIGHT="1" CELLPADDING="0" CELLSPACING="0" ID="Table12">
  394. <TR VALIGN="TOP">
  395. <TD HEIGHT="1" WIDTH="100%" BGCOLOR="BUTTONSHADOW"></TD>
  396. <TD HEIGHT="1" WIDTH="1" BGCOLOR="WINDOW"></TD>
  397. </TR>
  398. </TABLE>
  399. </TD>
  400. </TR>
  401. <TR>
  402. <TD VALIGN="TOP" HEIGHT="11" COLSPAN="8">
  403.  
  404. </TD>
  405. </TR>
  406. <TR>
  407. <TD VALIGN="MIDDLE" HEIGHT="23" WIDTH="12">
  408.  
  409. </TD>
  410. <TD VALIGN="TOP" HEIGHT="23">
  411.  
  412. </TD>
  413. <TD VALIGN="MIDDLE" HEIGHT="23" WIDTH="75">
  414. <BUTTON CLASS="BUTTONS" ID="FinishBtn" onClick="OnFinish(document);">Finish</BUTTON>
  415. </TD>
  416. <TD VALIGN="MIDDLE" HEIGHT="23" WIDTH="4">
  417.  
  418. </TD>
  419. <TD VALIGN="MIDDLE" HEIGHT="23" WIDTH="75">
  420. <BUTTON CLASS="BUTTONS" ID="CancelBtn" onClick="window.external.Finish(document, 'cancel');">
  421. Cancel</BUTTON>
  422. </TD>
  423. <TD VALIGN="MIDDLE" HEIGHT="23" WIDTH="4">
  424.  
  425. </TD>
  426. <TD VALIGN="MIDDLE" HEIGHT="23" WIDTH="75">
  427. <BUTTON CLASS="BUTTONS" ID="HelpBtn" onClick="InvokeArxWizardHelp();">Help</BUTTON>
  428. </TD>
  429. <TD VALIGN="MIDDLE" HEIGHT="23" WIDTH="12">
  430.  
  431. </TD>
  432. </TR>
  433. <TR>
  434. <TD VALIGN="TOP" HEIGHT="12" COLSPAN="8">
  435.  
  436. </TD>
  437. </TR>
  438. </TABLE>
  439. <!--CLOSE OF BUTTON HTML//-->
  440. </TD>
  441. </TR>
  442. </TABLE>
  443. <!--CLOSE OF NAVIGATION, CONTENT, AND BUTTON TABLES//-->
  444. </TD>
  445. </TR>
  446. </TABLE>
  447. </BODY>
  448. </HTML>
  449. <SCRIPT LANGUAGE="JSCRIPT">
  450. var xmlDoc =new ActiveXObject ("Msxml2.DOMDocument") ;
  451. var tab_array =new Array () ;
  452. tab_array [0] =Main ;
  453. var nDlgIndex ;
  454. function InitDocument (document) {
  455. setDirection () ;
  456.  
  457. if ( IsValidAdeskProject (window.external.ProjectObject, 3) == false ) {
  458. window.external.Finish (document, 'cancel') ;
  459. return ;
  460. }
  461. //- Other texts
  462. HEAD.innerText ="Welcome to the " + szArxWizMFCTitle ;
  463. if (window.external.FindSymbol ("DOCUMENT_FIRST_LOAD") ) {
  464. window.external.AddSymbol ("WIZARD_DIALOG_TITLE", szArxWizMFCTitle) ;
  465. window.external.SetDefaults (document) ;
  466. var strProjName = window.external.FindSymbol ("PROJECT_NAME") ;
  467. window.external.AddSymbol ("SAFE_PROJECT_NAME", CreateSafeName (strProjName)) ;
  468. }
  469. PopulateDialogIDs () ;
  470. DialogList.Enabled =false ;
  471. nDlgIndex =DialogList.tabIndex ;
  472. DialogList.tabIndex =-1 ;
  473. idd_dialog_title.disabled =true ;
  474. xmlDoc.async =false ;
  475. xmlDoc.load ("mfcsupport.xml") ;
  476. PopulateBaseList (0) ;
  477. window.external.Load (document) ;
  478.  
  479. PopulateFilterList () ;
  480.  
  481. var oProj = window.external.ProjectObject ;
  482. if ( GetProjectFile (oProj, "IDL") || GetProjectFile(oProj, "ODL") )
  483. window.external.AddSymbol ("PROJECT_SUPPORTS_AUTOMATION", true) ;
  484. else
  485. window.external.AddSymbol ("PROJECT_SUPPORTS_AUTOMATION", false) ;
  486. OnBase () ;
  487. }
  488. function PopulateBaseList (param) {
  489. //- Clear the bass class list
  490. while ( BASE_CLASS.item (0) != null )
  491. BASE_CLASS.remove (0) ;
  492. //- Read from an XML file (create a dom document)
  493. var msDomQuery =".//Entry" ;
  494. if ( param != 0 )
  495. msDomQuery =".//Entry[@FilterLevel = '" + param + "']" ;
  496. var moNodList =xmlDoc.selectNodes (msDomQuery) ;
  497. for ( var nCtr =0 ; nCtr < moNodList.length ; nCtr++ ) {
  498. var msBaseClass =moNodList.item (nCtr).getAttribute ("name") ;
  499. var oOption =document.createElement ("OPTION") ;
  500. oOption.text =msBaseClass ;
  501. oOption.value =msBaseClass ;
  502. BASE_CLASS.add (oOption) ;
  503. }
  504. BASE_CLASS.selectedIndex =0 ;
  505. }
  506. function PopulateFilterList () {
  507. //- Read from an XML file (create a dom document)
  508. //var msDomQuery =".//object[@flag = 'X']" ;
  509. var msDomQuery =".//Filter" ;
  510. var moNodList =xmlDoc.selectNodes (msDomQuery) ;
  511.  
  512. for ( var nCtr =0 ; nCtr < moNodList.length ; nCtr++ ) {
  513. var msBaseClass =moNodList.item (nCtr).getAttribute ("name") ;
  514. var oOption =document.createElement ("OPTION") ;
  515. oOption.text =msBaseClass ;
  516. oOption.value =msBaseClass ;
  517. FILTER_BASE.add (oOption) ;
  518. }
  519. FILTER_BASE.selectedIndex =0 ;
  520. }
  521. function GetAttribute (msBaseClass, msAttribute) {
  522. try {
  523. var poNode =xmlDoc.selectSingleNode (".//Entry[@name = '" + msBaseClass + "']") ;
  524. return (poNode.getAttribute (msAttribute)) ;
  525. } catch ( e ) {
  526. return (false) ;
  527. }
  528. }
  529. function OnClass () {
  530. var strClassName =CLASS_NAME.value ;
  531. //- If dockcontrol bar with a resource Id then we have to create a child dialog
  532. window.external.AddSymbol ("CHILDCLASS_NAME", strClassName + "ChildDlg") ;
  533.  
  534. if ( strClassName.length == 0
  535. || ( strClassName.length == 1
  536. && (strClassName.charAt (0) == "C" || strClassName.charAt (0) == "c")
  537. )
  538. ) {
  539. if ( DialogList.ListIndex == -1 )
  540. DialogList.Value ="" ;
  541. HEADER_FILE.value ="" ;
  542. IMPL_FILE.value ="" ;
  543.  
  544. //- If dockcontrol bar with a resource Id then we have to create a child dialog
  545. window.external.AddSymbol ("CHILDHEADER_FILE", "") ;
  546. window.external.AddSymbol ("CHILDIMPL_FILE", "") ;
  547. } else {
  548. var strSafeProjName = window.external.FindSymbol("SAFE_PROJECT_NAME");
  549. if ( strClassName.charAt (0) == "C" || strClassName.charAt (0) == "c" ) {
  550. if ( DialogList.ListIndex == -1 )
  551. DialogList.Value ="IDD_" + strClassName.substr (1).toUpperCase () ;
  552. HEADER_FILE.value =strClassName.substr(1) + ".h" ;
  553. IMPL_FILE.value =strClassName.substr(1) + ".cpp" ;
  554. //- If dockcontrol bar with a resource Id then we have to create a child dialog
  555. window.external.AddSymbol ("CHILDHEADER_FILE",strClassName.substr (1) + "ChildDlg.h") ;
  556. window.external.AddSymbol ("CHILDIMPL_FILE", strClassName.substr (1) + "ChildDlg.cpp") ;
  557. } else {
  558. if ( DialogList.ListIndex == -1 )
  559. DialogList.Value ="IDD_" + strClassName.toUpperCase () ;
  560. HEADER_FILE.value =strClassName + ".h" ;
  561. IMPL_FILE.value =strClassName + ".cpp" ;
  562. //- If dockcontrol bar with a resource Id then we have to create a child dialog
  563. window.external.AddSymbol ("CHILDHEADER_FILE",strClassName + "ChildDlg.h") ;
  564. window.external.AddSymbol ("CHILDIMPL_FILE", strClassName + "ChildDlg.cpp") ;
  565. }
  566. }
  567. }
  568. var gbDocView =false ;
  569. var gbDocViewCheckDone =false ;
  570. function OnBase () {
  571. if ( BASE_CLASS.selectedIndex == -1 )
  572. return ;
  573. var strBaseClass =BASE_CLASS.options [BASE_CLASS.selectedIndex].value ;
  574. //- No child dialogs to be created
  575. window.external.AddSymbol ("CHILD_DIALOG_NEEDED", false) ;
  576. //- Now find out if it supports resource id's
  577. var classOption =GetAttribute (strBaseClass, "Flag") ;
  578. switch ( classOption ) {
  579. case "C": //- Child dialog needed
  580. {
  581. window.alert ("This type of base class does not support direct resource ID handling.\nHowever, you can enter a resource ID�here and a child dialog will be created for you.\nThis will then be included in the base class implementation as a child window.") ;
  582. //- If this class supports child dialog, then check to see if a dialog resource is entered
  583. if ( DialogList.Value.length ) {
  584. //- Child dialogs to be created
  585. window.external.AddSymbol ("CHILD_DIALOG_NEEDED", true) ;
  586. }
  587. } ;
  588. case "R" : //- Resource supported
  589. case "RCW" : //- Resource supported, but actually needs to be a child window
  590. {
  591. DialogList.Enabled =true ;
  592. DialogList.tabIndex =nDlgIndex ;
  593. idd_dialog_title.disabled =false ;
  594. //- If it actually needs to be a child window like the fields dialog
  595. if ( classOption == "RCW" ) {
  596. //- Create a new symbol to indicate we require the childDialog.rc instead of the dialog.rc
  597. window.external.AddSymbol ("CHILD_RESOURCE_NEEDED", true) ;
  598. }
  599. }
  600. break ;
  601.  
  602. default :
  603. {
  604. DialogList.Enabled =false ;
  605. DialogList.tabIndex =-1 ;
  606. idd_dialog_title.disabled =true ;
  607. } ;
  608. }
  609. }
  610. function OnFilterChange () {
  611. PopulateBaseList (FILTER_BASE.selectedIndex) ;
  612. OnBase () ;
  613. }
  614. function PopulateDialogIDs () {
  615. if ( window.external.FindSymbol ("IS_PARENT_DIALOG") == "true" ) {
  616. DialogList.AddItem (window.external.FindSymbol ("ITEM_NAME")) ;
  617. DialogList.ListIndex =0 ;
  618. return ;
  619. }
  620. var GNS =window.external.ProjectObject.Codemodel ;
  621. var strDialogIds ="" ;
  622. try {
  623. strDialogIds =window.external.GetDialogIds () ;
  624. } catch (e) {
  625. var L_WarningLocation_Text ="Error in default.htm PopulateDialogIDs():\r\n" ;
  626. var L_Warning1_Text ="Cannot access resource information. Check if the .rc file is opened in another editor." ;
  627. window.external.ReportError (L_WarningLocation_Text + L_Warning1_Text) ;
  628. }
  629. var len =strDialogIds.length ;
  630. var iBegin =0 ;
  631. var iEnd =0 ;
  632. while ( iEnd >= 0 ) {
  633. var strDialogId ;
  634. iEnd =strDialogIds.indexOf (",", iBegin) ;
  635. if ( iEnd >= 0 ) {
  636. strDialogId =strDialogIds.substr (iBegin, iEnd-iBegin) ;
  637. iBegin =iEnd + 1 ;
  638. } else {
  639. strDialogId =strDialogIds.substr (iBegin) ;
  640. }
  641. var classes =GNS.DialogClasses (strDialogId) ;
  642. if ( classes.Count > 0 )
  643. continue ;
  644. DialogList.AddItem (strDialogId) ;
  645. }
  646. }
  647. function SetSymbols () {
  648. var strBaseClass =BASE_CLASS.options [BASE_CLASS.selectedIndex].value ;
  649. if ( DialogList.Enabled ) {
  650. if ( DialogList.ListIndex == -1 ) {
  651. var strDialogID =DialogList.Value ;
  652. //- If the dialog ID is valid
  653. if ( strDialogID.length ) {
  654. var bDlgExists =false ;
  655. for ( var nCntr =0 ; nCntr < DialogList.Count ; nCntr++ ) {
  656. if ( strDialogID == DialogList.Item (nCntr) ) {
  657. bDlgExists =true ;
  658. break ;
  659. }
  660. }
  661. if ( !bDlgExists )
  662. window.external.AddSymbol ("CREATE_DIALOG", true) ;
  663. }
  664. }
  665. IDD_DIALOG.value =DialogList.Value ;
  666. }
  667. var strTemplateHeader =GetAttribute (strBaseClass, "template") + ".h" ;
  668. var strTemplateImpl =GetAttribute (strBaseClass, "template") + ".cpp" ;
  669. var strIncludeHeader =GetAttribute (strBaseClass, "header") ;
  670.  
  671. window.external.AddSymbol ("TEMPLATE_HEADER", strTemplateHeader) ;
  672. window.external.AddSymbol ("TEMPLATE_IMPL", strTemplateImpl) ;
  673. window.external.AddSymbol ("INCLUDE_HEADER", strIncludeHeader) ;
  674.  
  675. var strClassName =CLASS_NAME.value ;
  676. var strSafeClassName =CreateSafeName (strClassName) ;
  677. if ( strSafeClassName.substr (0, 1) == "C" )
  678. strSafeClassName =strSafeClassName.substr (1, strSafeClassName.length) ;
  679. window.external.AddSymbol ("CLASS_NAME_ROOT", strSafeClassName) ;
  680. }
  681. function OnBrowseHeaderFile () {
  682. var strFile ;
  683. try {
  684. L_Title1_Text ="VS Wizards Select File" ;
  685. L_Title2_Text ="Visual C++ Header Files (*.h)\0*.h\0\0" ;
  686. strFile =window.external.GetOpenFileNameViaDlg (L_Title1_Text, window.external.FindSymbol ("PROJECT_PATH"), L_Title2_Text, HEADER_FILE.value) ;
  687. } catch ( e ) {
  688. if ( e.number != OLE_E_PROMPTSAVECANCELLED ) {
  689. var L_ErrMsg1_Text ="Error in OnBrowseHeaderFile()" ;
  690. if ( e.description.length != 0 ) {
  691. L_ErrMsg1_Text +=": " ;
  692. L_ErrMsg1_Text +=e.description ;
  693. }
  694. window.external.ReportError (L_ErrMsg1_Text) ;
  695. }
  696. return ;
  697. }
  698. HEADER_FILE.value =strFile ;
  699. }
  700. function OnBrowseImplFile () {
  701. var strFile ;
  702. try {
  703. L_Title3_Text ="VS Wizards Select File" ;
  704. L_Title4_Text ="Visual C++ Files (*.cpp;*.h;*.inl;*.c)\0*.cpp;*.h;*.inl;*.c\0\0" ;
  705. strFile =window.external.GetOpenFileNameViaDlg (L_Title3_Text, window.external.FindSymbol ("PROJECT_PATH"), L_Title4_Text, IMPL_FILE.value) ;
  706. } catch ( e ) {
  707. if ( e.number != OLE_E_PROMPTSAVECANCELLED ) {
  708. var L_ErrMsg2_Text ="Error in OnBrowseImplFile()" ;
  709. if ( e.description.length != 0 ) {
  710. L_ErrMsg2_Text +=": " ;
  711. L_ErrMsg2_Text +=e.description ;
  712. }
  713. window.external.ReportError (L_ErrMsg2_Text) ;
  714. }
  715. return ;
  716. }
  717. IMPL_FILE.value =strFile ;
  718. }
  719. function ValidateInput () {
  720. var oInvalid =null ;
  721. if ( !Validate (CLASS_NAME) )
  722. oInvalid =CLASS_NAME ;
  723. if ( oInvalid == null )
  724. if ( !Validate (BASE_CLASS) )
  725. oInvalid =BASE_CLASS ;
  726. //- Check the dialog resource id's
  727. if ( oInvalid == null ) {
  728. //- But before we do that, find out if we are allowed to have nothing in the ID input
  729. var strBaseClass =BASE_CLASS.options [BASE_CLASS.selectedIndex].value ;
  730. //- Now find out if it supports resource id's
  731. var classOption =GetAttribute (strBaseClass, "Flag") ;
  732. //- Ok, test to see if a child dialog is not wanted, if not then make sure we have a resource id
  733. if ( classOption != "C" ) {
  734. if ( !Validate (DialogList) ) {
  735. window.alert ("Please select a resource ID or enter one so that it can be created for you.") ;
  736. return (false) ;
  737. }
  738. }
  739. }
  740. if ( oInvalid == null )
  741. if ( !Validate (HEADER_FILE) )
  742. oInvalid =HEADER_FILE ;
  743. if ( oInvalid == null )
  744. if ( !Validate (IMPL_FILE) )
  745. oInvalid =IMPL_FILE ;
  746. if ( oInvalid != null ) {
  747. if ( gbShowError )
  748. window.external.ReportError () ;
  749. else
  750. gbShowError =true ;
  751. oInvalid.focus () ;
  752. return (false) ;
  753. }
  754. return (true) ;
  755. }
  756. var gbShowError =true ;
  757. function Validate (obj) {
  758. var bValid =true ;
  759. switch ( obj.id ) {
  760. case "CLASS_NAME":
  761. bValid =window.external.ParentObject.ValidateMember (obj.value, vsCMElementClass) ;
  762. break ;
  763. case "BASE_CLASS":
  764. if ( BASE_CLASS.selectedIndex == -1 )
  765. bValid =false ;
  766. break ;
  767. case "DialogList":
  768. if ( DialogList.Enabled )
  769. bValid =window.external.ProjectObject.CodeModel.IsValidID (DialogList.Value) ;
  770. break ;
  771. case "HEADER_FILE":
  772. if ( !window.external.FindSymbol ("HEADER_FILE_VALID") ) {
  773. gbShowError =bValid =CanUseFileName (obj.value, true) ;
  774. if ( !bValid )
  775. break ;
  776. window.external.AddSymbol ("HEADER_FILE_VALID", true) ;
  777. }
  778. bValid =ValidateFileNameAndEnsureInProject (obj.value) ;
  779. if ( !bValid )
  780. break ;
  781. if ( HEADER_FILE.value == IMPL_FILE.value ) {
  782. var L_ErrMsg_Text ="Header and implementation files cannot have the same name." ;
  783. oErrObj =new Error (L_ErrMsg_Text) ;
  784. SetErrorInfo (oErrObj) ;
  785. bValid =false ;
  786. }
  787. break ;
  788. case "IMPL_FILE":
  789. if ( !window.external.FindSymbol ("IMPL_FILE_VALID") ) {
  790. gbShowError =bValid =CanUseFileName (obj.value, false, false, true) ;
  791. if ( !bValid )
  792. break ;
  793. window.external.AddSymbol ("IMPL_FILE_VALID", true) ;
  794. }
  795. bValid =ValidateFileNameAndEnsureInProject (obj.value, vsCMValidateFileExtCppSource) ;
  796. break ;
  797. default:
  798. break ;
  799. }
  800. if ( typeof(bValid) == "undefined" )
  801. bValid =false ;
  802. return (bValid) ;
  803. }
  804. function DisplayAboutBox (flag) {
  805. if ( flag == true ) {
  806. content.style.visibility ="hidden" ;
  807. content.style.display ="none" ;
  808. about.style.display ="block" ;
  809. about.style.visibility ="visible" ;
  810. ABOUTTITLE.innerText =szArxWizMFCTitle ;
  811. ABOUTVERSION.innerText ='Version: ' + szWizardsVersion ;
  812. } else {
  813. about.style.display ="none" ;
  814. content.style.display ="block" ;
  815. content.style.visibility ="visible" ;
  816. about.style.visibility ="hidden" ;
  817. }
  818. }
  819. function Next (document, linkto) {
  820. if ( CLASS_NAME.length && !ValidateInput () )
  821. return ;
  822. SetSymbols () ;
  823. window.external.Next (document, linkto) ;
  824. }
  825. function OnFinish (document) {
  826. OnBase () ;
  827. if ( !ValidateInput () )
  828. return ;
  829.  
  830. SetSymbols () ;
  831. IDD_DIALOG.value =DialogList.Value ;
  832.  
  833. OnWizFinish (document) ;
  834. }
  835. </SCRIPT>
  836. <SCRIPT language="JSCRIPT" id="INCLUDE_SCRIPT"></SCRIPT>
  837. <SCRIPT language="JSCRIPT" id="INCLUDE_COMMON"></SCRIPT>
  838. <SCRIPT language="JSCRIPT" id="INCLUDE_ARXCOMMON"></SCRIPT>
  839. <SCRIPT>
  840. document.scripts ("INCLUDE_SCRIPT").src =window.external.FindSymbol ("SCRIPT_COMMON_PATH") + "/Script.js" ;
  841. document.scripts ("INCLUDE_COMMON").src =window.external.FindSymbol ("SCRIPT_COMMON_PATH") + "/Common.js" ;
  842. var strPath =window.external.FindSymbol ("ABSOLUTE_PATH") ;
  843. strPath =strPath.substring (0, strPath.lastIndexOf ("\\") + 1) ;
  844. document.scripts ("INCLUDE_ARXCOMMON").src =strPath + "ArxWizCommon/arxCommon.js" ;
  845. </SCRIPT>
  846. <SCRIPT FOR="DialogList" EVENT="KeyDown(nKeyCode)">
  847. OnWizComboKeyDown(nKeyCode);
  848. </SCRIPT>

  

VS2017中使用ObjectARX 2019 wizard的 ArxWizMFCSupport向导出现的bug修复前因后果的更多相关文章

  1. Element ui 中的表单提交按钮多次点击bug修复

  2. XNA、FNA以及在VS2017中编写XNA

    XNA是早期DX SDK支持的C#游戏开发环境,虽然现游戏开发大多是以Unity3D,Unreal 4为主,但是许多独立游戏开发者,特别是2D游戏,依然使用XNA进行开发, 纠其原因,猜测是C#开源且 ...

  3. [C#] VS2017中在某些目录下使用不了 .NET Core 2.0 问题的处理办法

    作者: zyl910 一.缘由 最近遇到了一个奇怪的问题--明明已经在VS2017里装好了 .NET Core 2.0 SDK,且测试过新建一个 .NET Core 2.0控制台项目能成功使用.但是在 ...

  4. VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书

    原文:VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书 dll引用小结 一.dll与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library” ...

  5. vs2017中char* str = "1234asd56";会报错,——const char*类型的值不能用于初始化char*类型的实体

    原因: "1234asd56"是常量 ,正确的写法本身就是:const char* str = "1234asd56"; 之所以之前的vs版本可以写成char* ...

  6. VS2017中建立ASP.NET MVC 4.0项目

    新的项目需要运行在WIN2003上,又不想用ASPX了,只好用回ASP.NET MVC4.0了,可是在VS2017中已经没有MVC4的模板了,网上下载的安装了也没有,只好把以前的MVC4的项目拿 出来 ...

  7. 在VS2017中编写Python程序

    最近开始了python的学习,在搭建完python环境之后,在选择IDE的时候陷入了困境,首先选择的是PyCharm但是用着还是不习惯,毕竟用VS开发了几年了,突然换软件总感觉有点不适应,就想到了强大 ...

  8. 在VS2017中连接到SQLite数据源(dbfist)

    在VS2017中配置.连接到SQLite数据源(dbfist) 需要安装的VS插件 SQLite/SQL Server Compact ToolBox 这个插件安装后,在选择数据源时已经可以选择SQL ...

  9. 解决VS2017中使用scanf函数报错的问题

    我们在VS2017中如果使用C语言的scanf输入函数,编译的时候编译器会报error C4996: 'scanf': This function or variable may be unsafe. ...

随机推荐

  1. Linux TTY函数跟踪

    1. 介绍 本文介绍了TTY打开.TTY读和TTY写操作的函数跟踪过程 2. 示例 下面是一个简单的Linux TTY打开和读写过程 #include <termios.h> #inclu ...

  2. 在windows系统和kali中通过sqlmap注入

    第1章 在windows系统中通过sqlmap注入 1.1 环境搭建 Sqlmap是目前功能最强大,使用最为广泛的注入类工具,是一个开源软件,被集成于kaliLinux, 由于sqlmap是基于Pyt ...

  3. SOLOR介绍

    https://www.cnblogs.com/ki16/p/11209508.html

  4. 学习:类和对象——对象模型和this指针

    成员变量和成员函数分开存储: 在C++中,类内的成员变量和成员函数分开存储 第一点:空对象占用内存空间1个字节 第二点:只有非静态成员变量才属于类的对象上,非静态成员函数和静态成员函数和静态成员变量不 ...

  5. VS2010中使用boost正则表达式库

    1.下载boost库.http://www.boost.org/ 我下载的是boost_1_51_0版本.放在D:\opensource\boost_1_51_0. 2.编译boost库.     执 ...

  6. Mysql 多表连接查询 inner join 和 outer join 的使用

    JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. 首先先列举本篇用到的分类(内连接,外连接,交 ...

  7. 62、Spark Streaming:容错机制以及事务语义

    一. 容错机制 1.背景 要理解Spark Streaming提供的容错机制,先回忆一下Spark RDD的基础容错语义: 1.RDD,Ressilient Distributed Dataset,是 ...

  8. 「2019-8-11提高模拟赛」女装盛宴 (flag)

    传送门 Solution  基环树+倍增+双指针 第一次因为#define int long long而玄学RE 为什么标程都不用开\(long long\)啊 Code  /*玄学RE 看来defi ...

  9. Java串口通信--------基于RXTX (附带资源地址)

    最近帮老师做了一个小项目,一个牧场公司想用传感器收集一些环境信息,记录到数据库里去,然后加以分析查看.这里面和传感器通信用到了串口通信,我也是接触了一下,把用到的东西分享出来. 准备工作: RXTX: ...

  10. Linux 上配置 SQL Server Always On Availability Group

    SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...