Tag: visual c ++

为什么编译器不喜欢隐式地转换为uint?

我在C ++和C#中遇到了关于uint使用的几个类似的怪癖,现在我想知道推理(对于每个例子可能完全不同)。 对于这两个示例,请注意我正在编译时将警告级别设置为最大值。 (1)gcc抱怨在下面将int与uint进行比较,而vc ++没有: uint foo = ; if( foo == ~0 ) //right here … 比较0就好了,没有在gcc和vc ++上进行任何转换。 (2)在C#3.5中,我遇到了一个类似的问题。 以下工作正常: uint foo = 1; uint bar = 2; 但这会给出一个uint / int警告: bool condition = ; uint foo = condition ? 1 : 2; //right here 是什么给出了,为什么编译器对立即值的签名如此敏感? 我完全理解从变量赋值时的问题,但这对我来说对于直接值是没有意义的; 在解析中是否存在一些隐藏的难以阻止此行为被允许? 或者是什么? 编辑:是的,我知道我可以用’你’来填充我的数字,但是回避了我的问题,这是关于隐含地向左侧施放,而不是明确地施放右侧。

如何从C#windows应用程序项目调用C ++ DLL

我使用Visual Studio中的类库项目在C ++中创建了一个dll。 我需要从C#应用程序中调用dll中的方法。 我知道有2个approches。 一种是将dll项目引用添加到C#项目或使用DllExport导出方法。 但是,当我尝试两种方式时,它总是在运行时调用dll方法时出现以下错误。 TestClient.exe中发生未处理的“System.BadImageFormatException”类型exception附加信息:尝试加载格式不正确的程序。 (HRESULTexception:0x8007000B) 我可以知道如何避免这个问题吗? 提前致谢!

如何将快照文件转换为任何其他格式?

有没有办法将Sql Server的“快照”文件(* .ss文件)转换为其他格式…如“xml”,“xls”或“txt”等。 谢谢。

如何创建C#事件来处理来自PostMessage()的MFC Windows消息

我有一个使用WINSOCK的托管C ++ DLL。 收到后,它会通过PostMessage()向CWnd *发送自定义消息。 从非托管C ++调用时,这很好用。 使用此代码构建后,目标CWnd *在C ++类中注册: // Registers a window (CWnd *) to receive a message when a valid // incoming data packet is received on this UdpRetrySocket. void CUdpRetrySocket::RegOnReceive(CWnd *i_pOnReceiveWnd, UINT i_RecvMsgId = WM_USER_RECV_DATA_AVAIL) { m_pOnReceiveWnd = i_pOnReceiveWnd; m_RecvMsgId = i_RecvMsgId; } 这是将消息发布到CWnd *的代码 // If there is a pending […]

附加到shell扩展中的默认工具提示

我有一个使用SharpShell构建的shell扩展。 我想知道是否可以附加到鼠标hover在文件上时看到的工具提示: 我已阅读并尝试使用Shell Info Tip Handler ,但问题在于它会将您设置的内容覆盖整个工具提示,而不是让您能够将一行文本附加到您正常的默认工具提示会看到,这是我想要的结果。 我有一种感觉,SharpShell可能不支持这种方式,因此,有助于我从人们那里获得有关如何在MSVC ++ shell扩展中另外解决此问题的见解。

影响ListView标头的Windows主题

我用一个包含ListView的简单表单创建了新的Windows窗体应用程序(C#)。 然后我将View属性更改为Details,并增加了此ListView中使用的字体的大小,这是结果: 这是它在具有Windows经典主题的Windows XP上的外观: 这是Windows XP主题的结果: 我可以通过删除Application.EnableVisualStyles()调用或更改Application.VisualStyleState来阻止我的应用程序的外观受Visual Styles的影响: 虽然此更改使ListView具有所需的外观,但它也会影响其他控件的外观。 我希望我的ListView是唯一不受Visual Styles影响的控件 。 我也发现了类似的问题试图解决它: 你能为一个窗口控件关闭视觉样式/主题吗? 如何仅为一个控件而不是其子控件禁用视觉样式? 不幸的是,没有提到的解决方案有效 看起来标题本身将由一些受视觉样式影响的控件组成,即使禁用了ListView控件的视觉样式也是如此。 任何阻止视觉样式影响ListView标题外观的C#解决方案都将受到赞赏。

找不到PInvoke DLL – BUG?

我有Windows移动GPS第三方应用程序。这是代码包含GPS自动启用/禁用function的C ++代码。 我想制作DLL。 那也是我做的。 当用户点击发票(C#代码)GPS(C ++)必须找到。 这是我的源代码GPS.cpp extern “C” //No name mangling __declspec(dllexport) #include “GPS.h” #include “stdafx.h” #include “RF PWR.h” #include “RF PWRDlg.h” #include “widioctl.h” #ifdef _DEBUG #define new DEBUG_NEW #endif void CaptureGPS() { HANDLE hDrv = CreateFile(TEXT(“FNC1:”), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (0 == DeviceIoControl(hDrv, IOCTL_WID_GPS_ON, NULL, 0, NULL, 0, […]

如何使用COM将字符串从c#传递给c ++?

当我尝试从c ++调用c#代码时,我按照本文的说明操作 http://support.microsoft.com/kb/828736 我的c#的一部分是: [Guid(“6A2E9B00-C435-48f8-AEF1-747E9F39E77A”)] public interface IGameHelper { void getInfo(out string result); } public class GameHelper : IGameHelper { void getInfo(out string result) { result = new StringBuilder().Append(“Hello”).ToString(); } } 我的c ++代码的一部分: #import “../lst/bin/Release/LST.tlb” named_guids raw_interfaces_only using namespace LST; using namespace std; … HRESULT hr = CoInitialize(NULL); IGameHelperPtr pIGame(__uuidof(GameHelper)); BSTR ha = SysAllocString(NULL); pIGame->GetInfo(&ha); […]

派生DataGridView绘图问题。 显示黑色区域

Late Edit我将此标记为C#问题以及C ++,因为问题出现在两种语言中, 如果显示的解决方案很可能是在C#(市场的大部分)中。 我一直在.net 2.0下开发一个应用程序(C ++具体,但不相关)。 此应用程序使用自定义派生的datagridview。 此数据网格视图偶尔会出现关于不包含单元格的DGV区域以及滚动条的严重伪像问题。 在一些resize操作期间,黑色矩形将在datagridview的底部绘制,这实际上将限制网格的大小。 滚动条也缩小以适应非坚固区域。 在我看来,因为系统认为DGV尺寸错误,并且正在进入错误的区域。 alt text http://img12.imageshack.us/img12/2213/81356991.jpg 我只能通过两种方法来解决症状: 1.单击要resize的列将自动修复网格 2.在DGV中调用AutoResizeRows()函数将执行修复(但我相信是从第1点调用的)。 Custom DGV的一些修改: 1)配置为处理多行的拖放。 2)点1要求重写OnCellPainting以绘制拖动线。 如果看起来有症状,可以发布function。 3)问题总是发生在resize(手动和自动都会导致问题),但resize事件中没有自定义代码。 onCellPainting的后期编辑代码。 在gridview中重写的其他函数:OnMouseDown,OnCellMouseDown,OnClick,OnMouseMove,OnDragOver,OnDragDrop,OnDragLeave,OnKeyDown,其中任何一个似乎都没有症状 protected: [DebuggerStepThrough()] virtual System::Void OnCellPainting(DataGridViewCellPaintingEventArgs ^e) override { //draws red drag/drop target indicator lines if necessary if (this->AllowDrop && _DragDropCurrentIndex > -1 && ShowDragLines) { System::Drawing::Pen ^p = gcnew […]

在VS2010中的.Net 2.0项目中使用托管C ++(。Net 2.0)的问题

我有两个项目: 1)用Visual C ++ 2005编写的项目,它以.net Framework 2.0为目标。 2)Visual C#2010中的一个项目,它针对.net framework 2.0并包含C ++ DLL。 当我构建引用C ++程序集的C#项目时,我得到如下错误: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3258: The primary reference “ScannerWizard” could not be resolved because it has an indirect dependency on the .NET Framework assembly “mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089” which has a higher version “4.0.0.0” than the version “2.0.0.0” in the current target […]