小编ak.*_*ak.的帖子

MFC resource.h命令/消息ID

我正在开发一个MFC应用程序,这个应用程序多年来和不同的开发团队相当混乱.包含所有命令/消息映射的resource.h文件随着时间的推移变得非常大,并且存在许多问题(例如重复ID).我不熟悉MFC,所以这个问题可能听起来很愚蠢......

MSDN文档提到命令ID和消息ID不应相应地小于WM_USER和WM_APP.我看到Visual Studio生成的resource.h中的大多数命令ID都是从100开始.这不应该导致某些干扰MFC/Windows命令和消息,这些命令和消息与应用程序定义的ID重叠吗?例如,我有一个命令ID:

#define ID_MY_ID 101
Run Code Online (Sandbox Code Playgroud)

并且有一个具有相同ID的Windows命令.当MC将此命令发送到APP时,它会像应用程序定义的ID_MY_ID一样处理,并且应用程序正在执行不必要的操作.这是一种可能的情况吗?

此外,是否有一些第三方工具可以帮助分析项目资源?

更新1:

出现了新问题:向应用程序类添加新自定义命令的首选方法是什么?据我所知,在以下列方式添加之前:向resouce.h添加命令ID,然后向处理类添加消息映射处理程序.

resources mfc command messages

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

Scala - 使用最小语法设计 DSL

我希望在 Scala 中设计一个 DSL,它的语法可能最少。它旨在供不了解 Scala 但可以利用 Scala 类型系统进行验证和错误检查的用户使用。在我的脑海中,DSL 是这样的:

outer {
    inner(id = "asdf") {
        value("v1")
        value("v2")
    }
}
Run Code Online (Sandbox Code Playgroud)

这个剪断应该产生一个这样的值:

Outer(Inner("asdf", Value("v1") :: Value("v2") :: Nil))
Run Code Online (Sandbox Code Playgroud)

给定数据结构

case class Outer(inner: Inner)
case class Inner(values: List[Value])
case class Value(value: String)
Run Code Online (Sandbox Code Playgroud)

这个想法是inner函数只在闭包之后可用outervalue函数只在闭包之后可用inner,等等。这就是以下不会编译:outer { value("1") }

我怎样才能实现这样的事情?最后,数据结构不需要是不可变的,只要它是强类型的,它就可以是任何东西。

我对 Scala 宏不熟悉,但我可以用宏来解决这个问题吗?


到目前为止,我最接近的是以下实现:

object DSL extends App {

    def outer = new Outer()

    class Outer(val values: mutable.MutableList[Inner] = mutable.MutableList.empty) {
        def inner(id: String): Inner = …
Run Code Online (Sandbox Code Playgroud)

dsl scala anonymous-function

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

Qt:在 QMimeData 中传递指向 QObject 的指针

是否可以在拖放操作期间使用 QMimeData 将指针传递给 QObject?QMimeData 只有这个功能用于存储数据:

void QMimeData::setData(constQString &mimeType, const QByteArray &data)
Run Code Online (Sandbox Code Playgroud)

但我找不到将指针安全地编码为 QByteArray 的方法。

为了阐明我的目标:我需要在拖放操作期间将指向 QObject 的指针从模型传递到目标小部件。

编辑:据我所知,Mime 数据就是将独立于应用程序的数据从一个地方传递到另一个地方:url、颜色、html 代码。在我的情况下,我需要传递一个指向应用程序中的资源对象的指针。你通常如何处理这种拖放?

谢谢安东

qt pointers drag-and-drop qobject

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

QSqlQuery准备好的语句 - 正确用法

我正在尝试确定使用QSqlQuery准备好的语句的正确方法.文档在这个问题上并不十分具体.

void select(const QSqlDatabase &database) {
    QSqlQuery query(database);
    query.prepare("SELECT * FROM theUniverse WHERE planet = :planet");
    query.bindValue(":planet", "earth");
    query.exec();
}
Run Code Online (Sandbox Code Playgroud)

那么这段代码会在连接中创建一个永久性的预备语句database吗?这个准备好的语句是否会在调用之间持续存在select(),即它会在函数返回并被释放时保存QSqlQuery query吗?

或者我应该在堆上创建QSqlQuery并反复使用相同的实例?

sql qt prepared-statement

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

XPath:contains(./ text(),'str')只会查看第一个文本后代

我正在尝试编写一个XPath查询,它将选择一个元素,其文本包含给定的字符串:

<div>Text1<strong>censored</strong>Text2</div>
Run Code Online (Sandbox Code Playgroud)

所以以下查询不匹配

//div[contains(./text(), 'Text2')]/strong/text()
Run Code Online (Sandbox Code Playgroud)

但是这个,文本节点索引是明确说明的:

//div[contains(./text()[2], 'Text2')]/strong/text()
Run Code Online (Sandbox Code Playgroud)

如何编写一个匹配任何文本后代的查询?

xml xpath text contains

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

jQuery UI滑块:如何内联它?

我正在尝试在同一行显示带有标签的几个滑块,例如:

Label1: [----O--]  Label2: [--O---]  Label3: [O-----]
Run Code Online (Sandbox Code Playgroud)

所有这些内容都是通过JS创建的:

var controls = $('<div></div>');
controls.append($('<b>Label1:</b>'));
controls.append($('<div></div>').slider({...}));
controls.append($('<b>Label2:</b>'));
controls.append($('<div></div>').slider({...}));
controls.append($('<b>Label3:</b>'));
controls.append($('<div></div>').slider({...}));
// insert controls in the DOM
Run Code Online (Sandbox Code Playgroud)

内联滑块的正确方法是什么?默认情况下,它们将呈现为块元素并相应地断行.display:inline在这种情况下我尝试更改CSS 滑块刚刚折叠...

css jquery jquery-ui inline slider

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

带有unicode字符的Python正则表达式错误?

长话短说:

>>> re.compile(r"\w*").match(u"Français")
<_sre.SRE_Match object at 0x1004246b0>
>>> re.compile(r"^\w*$").match(u"Français")
>>> re.compile(r"^\w*$").match(u"Franais")
<_sre.SRE_Match object at 0x100424780>
>>> 
Run Code Online (Sandbox Code Playgroud)

为什么它不与Unicode字符匹配的字符串^,并$在正则表达式?据我所知,^代表字符串(行)的开头和$- 结尾.

python regex unicode match character-properties

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