小编SMG*_*eld的帖子

Windows桌面应用程序的现代UI的正确方法是什么?

我有一个广泛的C++模型的现有应用程序,我想连接到一个漂亮的,现代的Windows 7或8 UI.我们的应用程序的当前(古代)UI是在早期的Windows XP/95/98时代使用纯Win32 API开发的.我们的代码目前正在通过Visual Studio 2010进行编译/链接.

在Windows上似乎有很多不同的开发API"标准":Win32,MFC,ATL,COM和.NET.在过去的14年里,我的工程师几乎拖累了微软的产品线:2001年,它是"MFC已经死了 - 我们必须转向ATL"(我们没有).然后".NET将替换MFC"(它似乎没有).

所以现在我们准备好转储旧的UI代码了.使用一组既稳定又高效的标准会更好,但我们也可以快速创建UI.抛开QT(在这里我已经在stackoverflow上阅读了很多有争议的优点和缺点):

1)Windows 7和8的现代UI开发方法是使用MFC还是.NET?

2)对于.NET方法(假设选择.NET有充分理由)我们可以使用我们的C++模型代码UNMANAGED与.NET应用程序吗?

3)在Visual Studio 2012中进行开发是否必要,即使我们的应用程序最初不是为Metro外观设计的?

4)是否还有其他Microsoft工具包应该考虑用于桌面应用程序开发?

斯蒂芬

.net user-interface winapi mfc visual-studio-2010

8
推荐指数
2
解决办法
5793
查看次数

这个分层模型数据是否有一个stl容器?

对于独立于平台的模型层,我有分层数据(实际上是字符串),如下所示:

  • 项目A.
    • 子项目A.
    • 子项目B.
    • SubItem C.
      • SubSubItem A.
      • SubSubItem B.
    • SubItem D.
  • 项目B.
  • 项目C.

现在,在每个"级别"(Item,SubItem,SubSubItem等)中,项目需要按字母顺序排序.

似乎一个简单的解决方案是创建一个带有排序的std :: Vector或std :: MultiMap的简单类来跟踪它的Children,以及指向它的Parent的指针.(和一个根项目).我需要一般地向前遍历每个项目的孩子.

构建/排序后,我不需要添加或删除项目.通常少量的物品(数百).

这是用于轮廓样式控件的后备数据的模型组织.

滚动一个简单的类很容易,但这是一个常见的模式 - 是不是已经有一个现成的STL容器有这种行为?

c++ sorting containers stl

7
推荐指数
1
解决办法
1464
查看次数

XML文件格式的布尔值应该写为true/false还是1/0?

经过三十年的二进制文件格式开发,我(最终)写出了一个XML文档文件格式.

我已经到达了我的文档标题的一部分,我需要编写大约五十个单独的布尔数据成员,我想知道:我应该将它们写为1/0还是true/false?

我理解XML规范可能会有两种方式.一方面,1/0 SEEMS在重新读取文件格式时工作量较少.但由于文件格式很小,周期很便宜,所以认为文件格式尽可能符号是否合适?如果是这样,对所有枚举变量做同样的XML是否正确(输出它们的符号名称与它们的值 - 这可能会改变?)

在旁注 - 我正在以这种形式生成XML:

<FieldName>true</FieldName>
Run Code Online (Sandbox Code Playgroud)

不是这种形式:

<FieldName value="true"/>
Run Code Online (Sandbox Code Playgroud)

在阅读了DOZENS的相互矛盾的文章和帖子(一些关于Stack Overflow)之后,它发现属性风格(例子#2)已经大部分不受欢迎了.

c++ xml file-format xml-serialization xml-parsing

6
推荐指数
1
解决办法
4816
查看次数

用 boost 过滤流替换 std::ofstream 的参数语法

关于 boostfiltering_streams 的一些基本问题。我有几十个函数接受 std::ofstream& 的参数

void foo(std::ofstream& outStream)
{
    // lots of operations, like this:
    outStream << "various bits of text";
}

void StreamSomeTextToFile(char* fileName)
{
    ofstream myFileStream(fileName, ios::out | ios::app | ios::binary);
    foo(myFileStream);
    myFileStream.close();
}
Run Code Online (Sandbox Code Playgroud)

现在我想使用 boost filtering_stream 输出到压缩的 ZIP 文件。用于打包和解包的常用boost filtering_streams 测试代码已编译、链接并非常适合我。我想替换filtering_stream:

void StreamSomeCompressedTextToFile(char* fileName)
{
    ofstream myFileStream(destPath, std::ios_base::out | std::ios_base::app | std::ios_base::binary);
    boost::iostreams::filtering_streambuf<boost::iostreams::output> myCompressedFileStream;
    myCompressedFileStream.push(boost::iostreams::zlib_compressor());
    myCompressedFileStream.push(myFileStream);

    foo(myCompressedFileStream);    // I can't just pass myCompressedFileStream to foo(std::ofstream&), right?
    myFileStream.close();
}
Run Code Online (Sandbox Code Playgroud)

三个问题:

1) 我之前接受 std::ofstream& outStream 的所有函数现在都需要接受 boost::iostreams::filtering_streambuf& 类型的参数吗?或者是否有适当的参数类型,以便那些众多(“foo”)函数可以与任何一种类型的流类型一起使用?

2) …

c++ boost zlib boost-iostreams

6
推荐指数
1
解决办法
1909
查看次数

OS X: Any way to DELAY loading of a DEPENDENT library (.dylib)?

A C++ dependent library .dylib resides in a bundle located in the app package's Content/Frameworks. I'd like to DELAY the loading of that dependent library until I've completed some specific initialization.

Is there any way OTHER THAN to create a Runtime-Loaded Library? Would using weak linking options prevent the .dylib from being loaded until first referenced?

c++ macos xcode dylib dynamic-library

6
推荐指数
1
解决办法
1163
查看次数

使用 C++17 std::filesystem 是否需要 MacOS 10.15?(Xcode 11.1)

使用 Xcode 11.1,在 MacOS 10.14.6 (Mojave) 上构建,以下几行:

#include <filesystem>
typedef std::filesystem::path my_path;
Run Code Online (Sandbox Code Playgroud)

...生成此编译器错误:

'path' is unavailable: introduced in macOS 10.15
Run Code Online (Sandbox Code Playgroud)

这是否意味着我无法从 10.14 开始为较早版本的 MacOS(10.13、10.14)构建,或者我无法从 10.15 生成可执行文件,该可执行文件可以针对/在早于 10.15 的 MacOS 版本上运行?

xcode c++17 std-filesystem macos-mojave macos-catalina

6
推荐指数
1
解决办法
2192
查看次数

如何创建Win32控件以包含其他Win32控件?

设置:几年前,我们开发了一个很好的C++跨平台,它管理了许多在Mac OS X Windows之间编写公共代码源的问题.(我们不会进入这种方法的巨大缺点 - 我们在1993年开发了这个!).

为了简化可重用组件的开发,我们最近添加了一个"窗格"概念来包含多个控件和用户项,主要处理绘图和其他事件的分层特性,例如击键和鼠标点击.

我们在Mac OS X(Carbon)方面成功构建了这种方法.然而,试图将这种方法转移到Windows(XP SP3及更高版本)已经导致了无数的混乱问题:不间断地重新绘制窗口内容,并且事件没有传递到我们的"窗格"中.

在Windows上,每个窗格都转换为"窗口",我怀疑这可能是问题的根源:重叠"封闭"项目下面的项目可能会干扰绘图和事件传播.

是否有可接受的方法以编程方式将控件添加到分组层次结构中?或者是否有必须设置的特定FLAG来完成此任务?

(注意:虽然我们目前与XP SP3兼容,但我们不需要 - 我们可以将最低操作系统定位为Windows 7.我们目前正在开发VS 2010)

斯蒂芬

windows winapi visual-c++

5
推荐指数
1
解决办法
1128
查看次数

如何使这个简单的字符串函数"pythonic"

来自C/C++世界并且是一个Python newb,我写了这个简单的字符串函数,它接受一个输入字符串(保证是ASCII)并返回最后四个字符.如果少于四个字符,我想用字母"A"填充主要位置.(这不是练习,而是另一个复杂功能的重要部分)

从蛮力到简单到优雅,有很多方法可以做到这一点.下面我的方法,虽然功能,但似乎不是"Pythonic".

注意:我目前正在使用Python 2.6 - 性能不是问题.输入字符串很短(2-8个字符),我只调用这个函数几千次.

def copyFourTrailingChars(src_str):

    four_char_array = bytearray("AAAA")
    xfrPos = 4

    for x in src_str[::-1]:
        xfrPos -= 1
        four_char_array[xfrPos] = x
        if xfrPos == 0:
            break

    return str(four_char_array)


input_str = "7654321"
print("The output of {0} is {1}".format(input_str, copyFourTrailingChars(input_str)))

input_str = "21"
print("The output of {0} is {1}".format(input_str, copyFourTrailingChars(input_str)))
Run Code Online (Sandbox Code Playgroud)

输出是:

The output of 7654321 is 4321
The output of 21 is AA21
Run Code Online (Sandbox Code Playgroud)

Pythoneers的建议?

python string

5
推荐指数
2
解决办法
251
查看次数

NSColorWell不发送点击动作?

在我的.xib中,我放置了一个NSColorWell内部NSView,并IBAction在控制器中连接到NSColorWell'Sent Actions'(通过文件所有者).我想我会响应我的控制器中的一个点击并发送激活以显示NSColorPanel.

但与其他我的控件不同,我没有得到IBAction被叫.单击会调用颜色上的拖动操作.我注意到这个控件并非衍生出来NSActionCell(就像我所有的其他控件一样).什么是适当的控件应该用于显示颜色和调用NSColorWell点击时?

(注意:这是Xcode/IB 3.2.x)

macos cocoa objective-c interface-builder nscolor

3
推荐指数
1
解决办法
1312
查看次数

单击时突出显示的NSButton“仅文本”变体?

我正在尝试找到“仅文本”的可可控件/按钮,并在单击时跟踪其突出显示。我尝试了未选中“边框”复选框的几种按钮组合,并且将“类型”设置为瞬时推入,瞬时照明和瞬时变化-但在运行的程序中(单击按钮时)没有动画或差异。

macos xcode cocoa interface interface-builder

3
推荐指数
1
解决办法
437
查看次数

Python DateTime 字符串转换为整数毫秒

我想将 UTC TimeDate 标记字符串转换为毫秒的整数值(可能需要是 64 位数量),以便在存储在 mySQL 数据库列中时占用更少的空间。这个 UTC 字符串是从另一个库生成的,我将它存储为一种每用户 GUID。

datetime 或 dateutil 能否将其转换为单个整数值(例如“自纪元以来的毫秒数”)?还是我需要自己做?

使用这种方法解析:

myDateTime = dateutil.parser.parse("2015-06-27T02:10:05.653000Z")
print("Parsed datetime String is {0}, ordinal value is {1}".format(myDateTime, myDateTime.toordinal()))
Run Code Online (Sandbox Code Playgroud)

给出输出:

Parsed datetime String is 2015-06-27 02:10:05.652999+00:00, ordinal value is 735776
Run Code Online (Sandbox Code Playgroud)

...它只给出日期的序数值。此外,如果我有一个整数 653 毫秒的时间,那么我希望解析的对象知道它有 653 毫秒,而不是 652999。

python mysql datetime datetime-format python-2.7

2
推荐指数
1
解决办法
7198
查看次数

Mac OS X 10.6 SDK不再适用于Xcode 7.3?

从Xcode 7.2.1更新到Xcode 7.3之后,构建我的项目得到了"运行目标我的Mac无法运行该方案".我记得我需要将10.6 SDK(不幸的是,这个项目的基本SDK)添加到Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs文件夹中.然后重新启动Xcode,并在项目中重新选择SDK.

除此之外,MacOSX10.6.sdk未在Build Settings中的任何SDK弹出菜单中列出.

Apple是否完全切断了Xcode使用10.6 SDK的能力?

斯蒂芬

macos xcode

1
推荐指数
1
解决办法
515
查看次数

使用 Xojo 进行跨平台开发有哪些妥协?

许多关于 SO 的跨平台开发主题似乎已有 6 到 9 年的历史了。有人最近有 Xojo 的经验吗?它可以用来在 macOS 和 Windows 上的 C++ 生成的链接库之上快速部署 UI 吗?这在 iOS 上如何运作?这个工具有什么限制?

c++ windows macos cross-platform xojo

0
推荐指数
1
解决办法
843
查看次数