C ++中的CListCtrl :: GetSelectedColumn()函数在Windows 10 OS中无法按预期运行

时间:2018-12-21 18:25:44

标签: visual-c++ mfc

我们一直在使用CListCtrl类进行一些开发。在Windows 7中一切正常,但在Windows 10操作系统中却出现了一些奇怪的行为。我试图在这里实现一些简单的操作。我有一个函数,可以说是funSelect代码片段,如下所示

//此函数试图复制CListCtrl对象保存的选定列

funcSelect()
{

/ *第一步,我调用GetSelectedColumn()函数以获取作为CListCtrl类的一部分的选定列* /

int iselectedCoulmn = CListCtrlObj.GetSelectedColumn();

//如果未选择任何列,则Windows 7将返回-1,而Windows 10将返回0

///基于值-1,其余代码将被写入。但是在Win 10中,它的值为0。因此,代码不会造成任何问题

}

我确实检查了清单文件之类的所有设置,并且正确使用了ComCtl32.dll版本6,而且它正在使用SDK Ver 10,并且已经检查了VS2015的设置,可以看到所有包含的SDK都已正确设置。所有这些东西都准备就绪了。

有人可以解释一下为什么此API GetSelectedColumn()返回0而不是-1的原因。Windows10的此API进行了任何更改吗?

正确的行为是,当未选择任何列时,它应该为-1。甚至MSDN文档都这么说。有没有其他替代方法可以实现GetSelectedColumn(),但可以通过平台独立和通用的方式实现?

任何功能或代码段都将非常有帮助。

作为清单文件中的FYI,我们确实引入了兼容性标记,以便它可以调用本机API,但即使在此之后,GetSelectedColumn()返回值也没有变化。它仍然返回0而不是-1。
就像FYI一样,以下内容已添加到清单文件中

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10 -->
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
            <!-- Windows 8.1 -->
            <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
            <!-- Windows Vista -->
            <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
            <!-- Windows 7 -->
            <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
            <!-- Windows 8 -->
            <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
        </application>
    </compatibility>

如果有人可以对此提供更多的信息,并且有人遇到过相同的问题,那么他们将如何解决,我将非常感激。任何可以完成此工作的代码段或功能,请告诉我。如果能尽快得到我的答复,我将不胜感激
谢谢-颜

0 个答案:

没有答案