Articles of c + +

传递字节的SAFEARRAY以加载MSXML的函数

如果有任何一种灵魂在那里请通过以下来源,告诉我为什么MSXML“加载”function无法加载这个XML。 在这里我试图加载一个UTF-8编码的XML使用MSXML分析器的“加载”function。 我有一个BSTR [UTF-16编码]作为参数,所以我试图将它转换成字节的SAFEARRAY,以便我可以将它传递到MSXML的“加载”function。 但问题是加载函数无法加载这个XML。 如果有人能提供解决scheme,我将非常感激。 #include <windows.h> #include <objsafe.h> #include <objbase.h> #include <atlbase.h> #include <string> #include <comutil.h> #include <msxml2.h> #include <iostream> using namespace std; #define STATUS_SUCCESS 0 #define STATUS_FAIL -1 long LoadXmlData(BSTR xmlDoc) { HRESULT hr = S_OK; CComPtr <IXMLDOMDocument> xmlDomDoc = NULL; CComPtr <IXMLDOMElement> docRoot = NULL; VARIANT_BOOL isParseSucess = FALSE; CoInitialize(NULL); hr […]

MFC:在ON_COMMAND函数混淆?

好吧,这是这个function 。 。 ON_COMMAND(ID_COLOR_RED,OnColor) ON_COMMAND(ID_COLOR_GREEN,OnColor) ON_COMMAND(ID_COLOR_BLUE,OnColor) 。 。 。 无效CMainWindow :: OnColor() { UINT nID =(UINT)LOWORD(GetCurrentMessage() – > wParam); m_nCurrentColor = nID _ ID_COLOR_RED; } 因此,在这里,CurrentMessage的wParam的LOWORD应该包含消息的ID,没关系,但是m_nCurrentColor = nID _ ID_COLOR_RED是什么意思; 手段? 对于红色,绿色或蓝色,m_nCurrentColor可以分别为0,1或2 … 所以首先我们在第一个语句中将消息ID转换为UINT,但是我们在第二个函数中使用m_nCurrentColor = nID _ID_COLOR_RED来做什么? 谁能解释一下吗?

在TCP Telnet传输中丢失字符

我正在使用Winsock通过Telnet发送命令; 但由于某种原因,当我尝试发送一个string时,偶尔会有几个字符丢失。 我用send : int SendData(const string & text) { send(hSocket,text.c_str(),static_cast<int>(text.size()),0); Sleep(100); send(hSocket,"\r",1,0); Sleep(100); return 0; } 有什么build议么? 更新: 我检查了,即使所有的字符被发送,错误仍然发生。 所以我决定改变Sendfunction,以便发送单个字符并检查是否已经发送: void SafeSend(const string &text) { char char_text[1]; for(size_t i = 0; i <text.size(); ++i) { char_text[0] = text[i]; while(send(hSocket,char_text,1,0) != 1); } } 而且,它以一种特殊的方式来放置字符; 即在句子的中间。 例如 set variable [fp]exit_flag = true 被发送为 ariable [fp]exit_flag […]

在使用WinCrypt证书进行身份validation的Windows上创buildSSL套接字?

validationSSL客户端连接时,服务器期望客户端提供证书。 在典型的企业Windows平台上,这些证书位于Windowsencryption存储的“个人”部分(使用此命令打开:'certmgr.msc') OpenSSL不使用这些证书。 Windows确实提供了一个WinHTTP API,它提供了创buildSSL连接的能力,但是他们必须遵守HTTP请求/响应协议,是否有人知道Windows API允许程序员创build使用Windowsencryption存储证书进行身份validation的SSL连接,但是可以像OpenSSL套接字一样使用?谢谢。

64位窗口 – 我需要使用IMAGE_NT_HEADERS64?

我试图读取Windows 64环境中的一些进程的PE头,因为我的代码只是读取IMAGE_NT_HEADERS结构的32位和64位可执行文件,我想知道:我需要写一些像 if executable is 64 bit use IMAGE_NT_HEADERS64 else use IMAGE_NT_HEADERS ? 我的代码似乎只使用IMAGE_NT_HEADERS 64和32位进程工作,我错过了什么?

为什么printf输出零为非零的double?

我有一段代码: 在Windows MSVC 2012 #include <stdio.h> #include <string.h> namespace myname{ double var = 42; } extern "C" double _ZN6myname3varE = 10.0; int main(){ printf("%d\n", _ZN6myname3varE); return 0; } 输出是0 。 但是我认为输出应该是10 。 你能帮忙解释一下为什么?

应用程序可以在手动运行时保存文件,但在任务计划程序运行时不会保存文件

我有一个简单的命令行应用程序,它每晚创build一个数据库的CSV转储并发送一封电子邮件。 它创build的文件保存在映射的networking驱动器,我在我的app.config引用像这样: <add key="Path" value="X:\Path\To\Folder" /> 一切工作正常,如果我从命令行运行它,但当它由任务计划程序运行时,它会引发以下exception: System.IO.DirectoryNotFoundException:找不到path'X:\ Path \ To \ Folder \ File.csv'的一部分。 该任务运行的帐户具有pipe理员权限,我另外尝试运行它作为域pipe理员,但无济于事。 该系统在Windows Server 2008 R2上运行,但我不确定这是否有所作为。

从控制台中删除单个字符

我试图做一个蛇游戏的Windows控制台,而无需使用“系统(”CLS“)”重绘游戏板,食物和蛇每次蛇移动。 相反,我想添加一个头,并在一定的时间间隔删除尾巴。 我用“cout”为新的蛇头打印一个“@”,这个工作正常,但是我不知道如何从控制台上删除单个字符(或者只是把它留空)的控制台。 有什么build议么?

debuggingWindows窗体应用程序C#添加一个手表

我是在Windows窗体应用程序中编码的新手(对于一般编码来说,这是相当新颖的)。 我正在尝试debugging我的代码。 我一直在debugging时使用手表,但我似乎无法将任何我的variables添加到监视列表。 有没有人有任何想法,为什么? 具体来说,我想弄清楚以下两个variables有什么问题:1.用户2.path名 一旦我弄清楚了,我想在文本框“ImageFileWrapperPath”中显示stringImageFileWrapper。 每一点帮助都非常感谢。 如果可能的话,我想解释一下,以便我可以学习未来。 请参阅下面的代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void ChooseImageFileWrapper_Click(object sender, EventArgs e) { String TheUser = Environment.UserName; String PathName […]

seekg()读取文本文件时奇怪的偏移量

我试图得到文件的最后一行,使用这里描述的逻辑最快的方式来只读取文本文件的最后一行? ,但我得到一些奇怪的exception: score.seekg(-2, ios::cur); 重置我的stream到相同的字符,所以我得到无限循环。 但是,将其设置为-3完美: fstream score("high_scores.txt"); //open file if(score.is_open()) //file exist { score.seekg(0, ios::end); char tmp = '~'; while(tmp != '\n') { score.seekg(-3, ios::cur); if((int)score.tellg() <= 0) //start of file is start of line { score.seekg(0); break; } tmp = score.get(); cout << tmp << "-"; } } 再次,问题是 – 这个代码只适用于seekg()偏移-3 ,理论上,它应该与-2 。 […]