小编Kat*_*ory的帖子

无法在线程中调用EndDialog?

我希望在线程结束时关闭模态对话框.我知道如何使用PostMessageSendMessage,但为什么我不能直接调用EndDialog成员函数?如果我这样做,它会导致App异常.

winapi multithreading

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

如何在轮子事件QGraphicsView Qt C++上禁用滚动功能

我有一个图形视图,当用户按下控制和鼠标点击时,我设置了自己的手动滚动功能.

我已经删除了滚动条但鼠标滚轮仍然会滚动,甚至滚动显示在qGraphicsView显示空白(白色)空间中的图像,我的手拖动不会.

我怎么做它所以轮子直接向上什么都没做?

我知道有一个函数,我可以放入我的代码而没有派生类,因为我之前问了一次并得到了正确的答案,但答案被删除了,我没有保存代码:(

下面的代码甚至没有做任何接近预期的功能,启动时我得到鼠​​标仍然做一些消息然后所有点击和车轮事件一切只显示第二条消息...所以是不工作

bool GUI::eventFilter(QObject *object, QEvent *event)
 {
     if (object == ui->graphicsView && event->type() == QEvent::GraphicsSceneWheel)
     {
         std::cout << "Wheel Blocked";
         return true;
     }
     std::cout << "Mouse Wheel still doing something";
     return false;
 }
Run Code Online (Sandbox Code Playgroud)

然后这段代码安装过滤器

ui->graphicsView->installEventFilter(this);
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

如何访问命名空间"windows"

#include<iostream>
#include<string.h>
#include<Windows.h>
.
.
.
using namespace Windows::Networking::Connectivity;
.
.
.
ConnectionProfile^ internetConnectionProfile = NetworkInformation::GetInternetConnectionProfile();
.
.
.
Run Code Online (Sandbox Code Playgroud)

以上是代码,但它显示

error C2653: 'Windows' : is not a class or namespace name
Run Code Online (Sandbox Code Playgroud)

我该怎么办?已设置公共语言运行时支持(/ clr)

windows visual-studio c++-cx

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

C++每次都没有使用运算符'<'的重载

我有一个人物对象,其名称,姓氏等属性......我还有3-4个类继承自人类.

我有另一个类,它将按升序打印所有不同类型的人.所以,我已经重载了运算符'<',我知道它的工作方式与我在其他地方使用它一样.但由于某种原因,它并没有被用于这个不同类别的特定方法.

这是我在person类中找到的重载方法.

    bool person::operator< ( const person &p2 ) const
    {    
        if ( surname() < p2.surname() )
           return true;
        else 
        //There are many other conditions which return true or false depending on the attributes.
    }
Run Code Online (Sandbox Code Playgroud)

这是在另一个类(子类)中找到的方法,它应该使用重载的运算符但似乎没有使用它.

 vector<person *> contacts::sorted_contacts() const{

    vector<person *> v_contact;

    auto comparison = [] ( person *a, person *b ){  return a < b ;  };  

    //Some code here which fills in the vector

    sort(begin(v_contact), end(v_contact), comparison);
}
Run Code Online (Sandbox Code Playgroud)

这里的排序不起作用.因为,当我使用复制/粘贴重载的实现并将其放在这里时,向量被正确排序.因为我想重用代码,我想弄清楚为什么<不在这里使用运算符.

c++ overloading vector operator-overloading

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

Reporting Services Configuration Manager用户无权执行此操作

我正在尝试将安装在应用程序服务器上的Reporting Services配置管理器连接到位于另一台服务器上的ReportServer数据库.

我正在使用域帐户将Reporting Services配置管理器连接到数据库.

域帐户对这些数据库具有以下权限:

  • ReportServer数据库的public和RSExecRole角色.

  • master,msdb和ReportServerTempDB数据库的RSExecRole角色.

此外,域帐户对ReportServer和ReportServerTempDB具有db owner权限

在数据库服务器部分,我指定sql server\instance并使用当前用户集成安全性.我以我想用来连接数据库的域用户身份登录.用户名还显示此特定用户是正确的.测试连接成功

在数据库部分中,我选择ReportServer

在"凭据"部分中,我尝试将"身份验证类型"作为"服务凭据"和"Windows凭据",但它们都会在下面导致相同的错误.

应用连接权限期间发生错误.

System.Data.SqlClient.SqlException: User does not have permission to perform this action.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.ReportingServices.Common.DBUtils.ApplyScript(SqlConnection conn, String script, ICommandWrapperFactory commandWrapper)
   at Microsoft.ReportingServices.Common.DBUtils.ApplyScript(String connectionString, String script)
   at ReportServicesConfigUI.SqlClientTools.SqlTools.ApplyScript(String connectionString, String script)
Run Code Online (Sandbox Code Playgroud)

从错误日志:--- …

sql-server reporting-services

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

添加事件侦听器的最佳做法

在我的页面上,用户单击一个元素以进行编辑.为了方便这一点,我将类分配editable给所有这些元素.

我应该如何听取所有这些元素的点击?目前,我这样做:

$lib.addEventListener(document.body, "click", function(event) {
  if($lib.hasClass(event.target, "editable") {
    // do stuff
  }
});
Run Code Online (Sandbox Code Playgroud)

这里$lib是一个小JS库我使用.

另一种方法是在每个元素上设置一个监听器,如下所示:

var editables = document.getElementsByClassName("editable");
for(var i = 0; i < editables.length; i++) {
    $lib.addEventListener(editables[i], "click", editElement);
}
Run Code Online (Sandbox Code Playgroud)

在我看来,第一种方式必须更好的性能,因为它只是一个元素被听,但是通过将所有这些事件附加到body元素是否可能降低性能?是否有任何其他考虑因素(例如,事件处理的浏览器实现)我忽略哪些会建议以第二种方式进行?

javascript event-handling event-bubbling

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

dotfuscator社区版

我一直在尝试使用dotfuscator社区版.我用1方法创建了一个简单的组件.我通过.net 2.0中的dotfuscator社区版本运行它,基本上只需选择.dll并单击构建.它似乎运行.但是当我使用ILdasm来查看.dll时,我仍然可以看到方法名称.我看到几个项目,如a,b,c,d,e .......但我仍然看到我的班级名称和方法名称.有什么我想念的吗?

dotfuscator

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

.NET桌面应用程序的体系结构 - 客户端服务器C#,SQL

最近,我有机会为小型物理治疗诊所开发PMS(实践管理系统)软件.

我是一名计算机科学专业的学生,​​我的课程主要是在Linux上讲的.但是,我的客户端在vista或Windows 7上运行所有计算机.

我的想法是在Visual C#中开发客户端前端并访问中央postgresql服务器.

我是Windows编程的初学者,所以我在C#(WPF或Windows FORM)中实现用户权限和访问级别的最佳实践建议.我已经在Visual C#和访问控制列表中查看了Credential类,但请分享您的想法.

只是为了详细说明:

我的想法是使用窗口表单编写前端,并根据授予用户的访问级别禁用或隐藏控件/表/表单.

例如,只有诊所的所有者才会显示财务报告表格,而秘书只会显示预约日记表格.

所以我可能需要一个对话框,要求用户登录系统,我应该在数据库中存储或映射这些登录详细信息吗?哪些库或类最适合用于处理这些任务?

我可能会对此表示反对,但这是我的第一个商业项目,所以我很想测试水域.

.net c# sql architecture

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

Microsoft Visual Studio 2010中的C预处理程序问题

我在VS 2010中遇到了新的Visual C++问题.

我有一个带有以下定义的标题:

#define STC(y) #y
#define STR(y) STC(\y)
#define NNN(y) 0##y
#define NUM(y) NNN(y)
Run Code Online (Sandbox Code Playgroud)

意图是你可以有一些常数

#define TOKEN x5A
Run Code Online (Sandbox Code Playgroud)

然后你可以将令牌作为数字或字符串:

NUM(TOKEN) -> 0x5A
STR(TOKEN) -> "\x5A"
Run Code Online (Sandbox Code Playgroud)

这是宏参数替换规则下的预期行为,到目前为止它在VS2008 Express中与gcc,open watcom,pellesC(lcc),Digital Mars C和Visual C++一起运行良好.

今天我用VS2010 Express重新编译了库,发现它不再起作用了!使用新版本我会得到:

NUM(TOKEN) -> 0x5A
STR(TOKEN) -> "\y"
Run Code Online (Sandbox Code Playgroud)

似乎新的预处理器\y甚至在宏体内处理为转义序列,这是无意义的,因为转义序列在文字字符串中只有意义.

我怀疑这是ANSI标准的灰色区域,但即使原始行为是由标准规定的,MS VC++也不是100%符合ANSI C标准,因此我想我将不得不忍受新的行为. MS编译器.

鉴于此,是否有人建议如何使用VS2010重新实现原始宏行为?

编辑:更正了NUM()

编辑:可能的解决方案

我想我已经找到了办法:

#define STC(y) #y

#if defined(_MSC_VER) && (_MSC_VER >= 1600)
#define STA(x,y) STC(x##y)
#define STR(y) STA(\,y)
#else 
#define STR(y) STC(\y)
#endif

#define NNN(y) 0##y
#define …
Run Code Online (Sandbox Code Playgroud)

c visual-studio-2010 visual-c++

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

在构建“ Makefile解决方案”之前为NMAKE设置环境变量

我有一个MSVC Makefile项目,在其中需要运行NMAKE之前设置环境变量。对于x64构建,我需要将其设置为一个值,对于x86构建,我需要将其设置为其他值。

因此,例如,在进行构建时,SET PLATFORM=win64如果要构建64位编译器,或者SET PLATFORM=win32如果要构建32位,则需要。

即使对于makefile项目,似乎也没有设置环境变量或添加预构建的选项。

我该怎么做呢?

编辑:运行MSVC 2008

c++ windows visual-c++

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