Articles of 视觉工作室 2008

将EXE数据传递给一个或多个DLL

我们当前的应用程序是包含多个页面的单个OpenGL EXE。 EXE负责访问通过UDP在networking上发送的数据。 它累积数据并将其存储在一系列单例结构中。 EXE中的单个页面访问单身结构来处理他们认为合适的数据。 为了减轻我们的EXE足迹,并支持我们在configurationpipe理方面的尝试,我们决定将这些页面分成一个EXE加载的DLL。 我们打算让EXE成为从DLL中加载页面的shell。 EXE仍然具有所有的通信责任(UDP,Corba,用户等)。 页面仍将负责显示他们所做的任何事情。 这个问题(最后)变成:我如何将从EXE收集的大量数据传递给耗费的基于DLL的页面。 Singleton概念不再持有水,因为我们使用的单身(ACE_Singleton)不允许这样的方向。 我们可以整天将DLL中的单例从DLL中导出到耗费的EXE中,但是我还没有弄明白。 我已经提出了以下选项 – 我不喜欢这些选项,所以我希望有人会有更好的一个:) 将当前存储在单独单例中的所有数据汇总到另一个将导出“真实”单例的DLL中。 例如。 从DLL导出的单例将是相同的 – 不pipe是什么EXE加载它 – 有点像共享内存。 这是一个有趣的select,但会导致我们的部署scheme出现问题。 如果人们真的被这个想法所打动,我可以详细讨论这些问题。 创build一个包含所有相关数据的静态DLL级别结构。 EXE会在加载DLL时将这些数据下推到DLL中,这样DLL中包含的页面就可以访问数据。 这似乎是最简单的解决scheme – 即使它需要编辑我们的应用程序中的每一个页面 – 超过100个。它也似乎有点草率。 所有的数据只是在全球范围内。 不是很性感或者C ++ y。 那么,其他任何人都有解决这个问题? 该应用程序使用Visual C ++ 9.0(VisualStudio 2008)编写,用于Windows XP。 由于某些原因,Vista在我们的实验室中还不被支持 – 尽pipe我们的客户正在使用它。

如何隐藏菜单? lpszMenuName

我设法用这段代码制作菜单,并使用Visual Studio 2008: WNDCLASS wc; … wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); … if(!RegisterClass(&wc)) … 但是我怎样才能隐藏菜单只需按下我select的button? 有ShowWindow()函数,但它不能在菜单上工作…所以我用什么函数来隐藏菜单…?

在WinApi中如何发送variables到属于另一个进程/线程的对话框

我在情况下,我有tcharvariables(有一些信息),我需要将其传递到另一个线程的对话框。 我尝试通过发送消息和TCHAR作为LPARAM但访问该variables时对话仍然没有看到任何东西,我猜是因为我发送的数据属于另一个进程? 我在这里有什么select? 谢谢。

VS 2008中的QT应用程序在XP中不起作用

你好我所有在VS 2008中使用QT插件创build了一个应用程序,它在所有的Windows系统中工作正常。 但是,当我尝试在XP中运行相同的应用程序它显示错误::过程入口点xxx不能位于xxx.dll。 我怎么解决这个问题。

当我将该类放入另一个类的地图中时,类stringvariables将丢失其值

那么问题是,当我把这些类放在TransparentMaze类的地图中时,我的房间类放弃了stringvariables的“名称”值。 我不明白他们去哪里..是与地图比较器或别的东西有关的问题,希望有人可以帮助。 #include <iostream> #include <string> #include <list> #include <map> using namespace std; class Point{ int x; int y; public: Point(int, int); ~Point(){}; int getX() ; int getY() ; }; struct cmp_str { bool operator()(Point p1, Point p2) { if (p1.getY() < p2.getY() || p1.getY() == p2.getY() && p1.getX() < p2.getX()) { return true; } […]

Mysql服务不会在Windows 2008服务器r1上启动

大约一个月前,我更改了mysqlpipe理员的启动参数后,我的服务器被冻结了。 所以我重新启动。 自从我的MySQL服务不会在启动时启动,或者当我尝试手动启动它。 我只能在控制台模式下启动mysql(mysqld –console)。 我已经尝试了很多东西,但都没有工作: 我卸载并重新启动服务器,然后再次安装; 我删除了与mysql相关的程序文件夹中的所有内容,然后再次安装 我删除了programdata文件夹中的所有相关文件 我有3307端口,而不是3306,但仍然没有工作 现在当我再次安装mysql时,在安装过程中永远无法启动服务,所以它永远不会结束安装。 但我仍然可以在命令行上启动mysql服务器,使用“mysqld –console”我试图查看事件lgo,唯一的错误是我看到插件联合被禁用,我寻找关于这个错误的解决scheme,但没有为我工作。 我相信这可能是窗口的东西。 任何帮助赞赏。

如何使C ++代码在更改编译器/操作系统方面更健壮

我一直在使用MS Visual Studio 2008 / Windows开发一些有希望的通用C ++代码。 代码最终将在iOS和Android应用程序中使用。 经过一些初步的testing,我们发现我的程序在Android / IOS上performance不同,我们将其追溯到RAND_MAX的不同值。 现在代码performance得更好了,但是它仍然不像Windows那样完全一样,这是一个非常复杂的过程,尤其是当我没有在我的terminal设置IOS / Android开发环境,而我的客户端在一个不同的时区。 我的问题是,我能做些什么来避免不同细微的编译器差异的问题。 例如有没有办法使一个编译器像另一个一样? 或者,也许是一个网站,列出与编译器差异的常见问题?…任何想法? 编辑:该程序不使用任何第三方库。

当BSTR通过时,COM方法调用返回灾难性故障

从以前的问题修改 注意: 将BSTRvariables传递给COM方法, HRESULT返回值为8000FFFF 以前与接口指针调用成功 :HRESULT为0 在Visual Studio中执行成功 ,外部失败 – 释放和debugging 插图: BSTR raw_sim_Open = SysAllocString (L"c:\\example.S8"); hresult = pis8->raw_Open (raw_sim_Open); //0x8000FFFF returned 编辑 – WinDbg: First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=003a5be8 ebx=00009000 ecx=003a0208 edx=77606e00 esi=0012ec90 edi=00191b14 eip=003a0283 esp=0012ec34 ebp=0012ecb4 iopl=0 nv up ei […]

Windows服务器RDP会话远程控制

我在Windows Server 2008 R2上拥有RDP访问权限和pipe理权限。 当其他用户通过RDP连接时,我可以远程控制他们的会话。 当用户断开连接(但会话仍然存在)时,出于某种原因,我无法使用远程控制。 有没有办法login到用户的会话,而不必input他的密码?

如何查找给定的CLSID支持的对象

题: 基于CLSID ,我怎样才能find它支持的IClassFactory::CreateInstance 对象 (或接口) 注意: 目前使用 CLSIDFromProgID获取CLSID