ObjectARX.net学习(2)-CLR 托管C++ 类库
正常cpp项目
类代码如下所示:
C++ | |
---|---|
- 类库需要导出
- CString需要引入头文件
正常的clr项目
创建clr类库项目
加载cpp的头文件和库文件
设置信息
- 注意.net版本
- 由于cpp项目是MFC的dll,这里需要使用
在共享DLL中使用MFC
代码如下所示:
正常的.net项目
引入clr创建的dll
代码中使用
- 先using导入类库
类代码如下所示:
C++ | |
---|---|
在共享DLL中使用MFC
代码如下所示:
https://spiderinnet1.typepad.com/
下载ANAW2017
https://blog.csdn.net/lhxy24/article/details/101058720
1、C:\Program Files (x86)\Autodesk\ObjectARX 2020 Wizards\ArxAppWiz\Scripts\1033\default.js
从C:\Program Files (x86)\Autodesk\ObjectARX 2020 Wizards\ArxAppWiz\Templates\1033为新建项目的模板,拷贝这里面的文件,x64win32.vcxproj设置,要改变
后面PropertyGroup 标签中的WindowsTargetPlatformVersion要考到前面来,否则找不到系统库。目标平台会被默认为win8.1,无法按win10SDK版本号导入目录。
2、C:\Program Files (x86)\Autodesk\ObjectARX 2020 Wizards\文件夹内外都有属性页设置,到底用的哪个还没整清楚。 应该是拷贝目录外面的,
Bash | |
---|---|
因为crx.props在外面。
3、接2中,无论拷贝哪个属性页,目前是在项目中的vcxproj文件中,
合并上面这两个文件,之后 Autodesk.arx-2020.props文件会在合并下面6个文件 前三个
后3个文件主要是不同项目类型的引用库的文件。
这三个是调试和最终发布的一些设置,其中出bug那个地方是在
导出需要使用的代码
在cpp中先封装一次
CFuncHelper.h
C++ | |
---|---|
CFuncHelper.cpp
clrDemo.h
https://download.sublimetext.com/sublime_text_build_4169_x64_setup.exe
默认安装路径:C:\Program Files\Sublime Text
安装之后,使用sublime text 打开安装目录下的sublime_text.exe文件。
Ctrl + F 搜到到
更改为
然后另存到其他路径,然后关闭sublime text,将原sublime_text.exe进行替换即可。
在花括号中输入以下语句: "ignored_packages": [], "update_check":false, 然后,Ctrl+S保存 注:切记是在英文模式下!!!
在花括号中输入以下语句: "update_check":false, 注:切记是在英文模式下!!!
Bash | |
---|---|
Bash | |
---|---|
Bash | |
---|---|
Bash | |
---|---|
刚入门 WPF/UWP 之类的 XAML 平台,首先会接触到 XAML 这一新事物。初学 XAML 时对它的印象可以归纳为一个词:一坨。
随着我在 XAML 平台上工作的时间越来越长,我对 XAML 的了解就越来越深入,从语法、约束、扩展性等方方面面,我明白到 XAML 是桌面开发平台的一个最佳解决方案。这时候我已经对 XAML 有了改观,我重新用一个词归纳了我对它的印象:一大坨。
没错,这时候我已经是一个成熟的 XAML 工人了,经过我熟练的双手产生了一坨又一坨 XAML,它们成长相遇结合繁衍,变成了一大坨又一大坨 XAML。
明明 XAML 这么一大坨已经够艰难了,偏偏对于它的格式化微软爸爸也没给个好的方案。对我来说,XAML 格式化主要的难题是下面几个:
如果不想得过且过忍受上述这些问题的话,可以试试用 XAML Styler 这个工具,它正好解决了我最想解决的问题。
XAML Styler 是一个 VisualStudio插件(也可用于其它 IDE),这是它在 Github 上的地址:
https://github.com/Xavalon/XamlStyler
在这里你可以找到具体的文档,而这篇文章我只介绍我关心的其中几个属性,不一定满足到你。
在 VisualStudio 的管理扩展窗口中,输入 XamlStyle 搜索,点击“下载”然后关闭 VisualStudio 即可完成安装。
安装完成后重启 Visual Studio,可以在“选项”窗口中看到它的配置:
之后,每次在 XAML 编辑器中执行保存都会自动进行格式化操作。你也可以在 XAML 编辑器的右键菜单选择 Format XAML 或使用快捷键进行格式化。
XAML 的格式主要有两种方式:所有属性放一行和每个属性单独一行。
如果选择所有属性放一行的时候,XAML 结构清晰,结构严谨,段落分明,而且文件也很短。
可是万一很多属性问题就出来了,一行 XAML 会变得很长。而且看看下面两个 ContentPresenter,同样都有 Margin 属性、HorizontalAlignment 属性,VerticalAlignment 属性,RecognizesAccessKey 属性,SnapsToDevicePixels 顺序ing,但你能看到第二个 ContentPresenter 后面偷偷塞了个 Margin 吗:
如果在 VisualStudio 中“文本编辑器->XAML->格式化->间距->特性间距”这个选项中选择了“将各个属性分别放置”:
格式化文档后上面的 XAML 就会变成这样:
每个属性单独一行不仅不会看漏属性,而且编辑器本身也不会有横向和纵向两种方向的移动,只有从上到下的移动,这就舒服多了。
可是大部分情况下每个属性分行放置会破坏原本清晰的 XAML 层次结构,例如下面这种本来好好的 XAML:
XML | |
---|---|
变成这样:
XML | |
---|---|
这种风格优雅得像诗歌 我偶尔称为豆瓣风 一行变两行 两行变四行 本来 一页看得完 的代码 变成 两页才看得完 也是够 麻烦的。
XAML Styler 很好地解决了这个问题,它通过 “Attribute tolerance” 属性控制每一行的容许的最多的属性数量,如果一个元素的属性数量少于设定值,那就放在一行,如果超过就所有属性单独一行。通常我将这个属性设置为 2
,再配合 “Keep first attribute on same line = true” 的设置,可以做到下面这种格式化效果:
这样就可以兼顾两种格式化的优点。
如果元素有多个属性,要找到它的主要属性(通常是 Name 和 Grid.Row)需要颇费一番功夫。XAML Styler 根据一个可设定的规则自动将元素的各个属性排序,这个规则如下:
排序结果大致如下:
XML | |
---|---|
另外,我不喜欢它自动将 VisualStateManager 排序到后面,虽然这个排序合理,但不符合我的习惯,所以要将 “Record visual state manager” 设置为 None。
最后,就算自己做好了格式化,团队中的其它成员使用了不同的格式化标准也会引起很多问题。针对这个问题 Xaml Styler 也提供了解决方案。
在项目的根目录创建一个名为“Settings.XamlStyler”的文件,内容参考这个网址:https://github.com/Xavalon/XamlStyler/wiki/External-Configurations 中的 Default Configuration。有了这个配置文件,XAML Styler 就会根据它而不是全局配置进行格式化,作为项目的统一格式化标准。
在“解决方案资源管理器”中,右键单击项目,然后选择“管理NuGet程序包”。在NuGet包管理器中,搜索“Newtonsoft.Json”。找到Newtonsoft.Json包,点击安装按钮
对于简单的json的可以直接解析, 复杂的json, 建议用先创建json对应的类,然后再用JsonConvert.DeserializeObject转为类来解析, 当json比较复杂时, 创建类也比较浪费时间, VS2022为C#提供了json转C#类的工具,先复制需要转为类的json字符串,然后将光标定位到cs文件的空白处,最后点击编辑–选择性粘贴–将Json粘贴为类,如下图:
除了VS自带的工具,也有一些网站提供了类似的功能,例如Json2CSharp。
### demo
JSON | |
---|---|
JSON | |
---|---|
LocadMenu.h
LocadMenu.cpp
C++ | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
|
使用方式
在On_kInitAppMsg
中
initLoadMenu();
推荐使用第一种方式,不需要加载那么多的头文件
====
CSS3,我们可以创建动画,它可以取代许多网页动画图像,Flash 动画,和 Javascripts。
要创建CSS3动画,你将不得不了解@keyframes
规则。
@keyframes
规则是用来创建动画。 @keyframes
规则内指定一个 CSS样式和动画将逐步从目前的样式更改为新的样式。
**注意:**Internet Explorer 10、Firefox 以及 Opera 支持 @keyframes
规则和 animation 属性。 Chrome 和 Safari 需要前缀 -webkit-。
当在@keyframe
创建动画,把它绑定到一个选择器,否则动画不会有任何效果。
指定至少这两个 CSS3 的动画属性绑定向一个选择器:
例子:
Text Only | |
---|---|
1 2 3 4 5 |
|
例子:
Text Only | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
属性 | 描述 | CSS |
---|---|---|
@keyframes | 规定动画。 | 3 |
animation | 所有动画属性的简写属性,除了 animation-play-state 属性。 | 3 |
animation-name | 规定 @keyframes 动画的名称。 | 3 |
animation-duration | 规定动画完成一个周期所花费的秒或毫秒。默认是 0。 | 3 |
animation-timing-function | 规定动画的速度曲线。默认是 "ease"。 | 3 |
animation-delay | 规定动画何时开始。默认是 0。 | 3 |
animation-iteration-count | 规定动画被播放的次数。默认是 1。 | 3 |
animation-direction | 规定动画是否在下一周期逆向地播放。默认是 "normal"。 | 3 |
animation-play-state | 规定动画是否正在运行或暂停。默认是 "running"。 | 3 |