Tag: winapi

Send Message和Post Message之间有什么区别,以及这些与C#,WPF和Pure windows编程有什么关系?

发送消息和发送消息(在纯粹的Windows编程方面)有什么区别,以及这些与C#,WPF和纯windows编程有什么关系? 我对线程和所有相关的东西是新的,所以请原谅我明显quesiton。 我需要挖掘线程的外部..请让我知道的链接,帮助我build立我的概念从Win32编程到WPF。 我需要从Post消息理解Afx(调用开始一个新的线程)委托Invok /开始调用到分派器。

为什么编译器会抛出这个警告:“缺less初始化程序”? 结构是否已初始化?

我正在为程序创build某种前端。 为了启动程序,我使用了CreateProcess() ,除此之外, STARTUPINFO接收一个指向STARTUPINFO结构体的指针。 要初始化我曾经做过的结构: STARTUPINFO startupInfo = {0}; // Or even '\0'. startupInfo.cb = sizeof(startupInfo); 当编译与GCC的程序启用这些警告集-Wall -Wextra它给了我一个警告说,有一个缺less的初始化指向第一行。 warning: missing initializer warning: (near initialization for 'startupInfo.lpReserved') 所以我最终做了: STARTUPINFO startupInfo; memset(&startupInfo, 0, sizeof(startupInfo)); startupInfo.cb = sizeof(startupInfo); 这样编译器不会给出任何警告。 问题是这些初始化结构的方式有什么区别? 使用第一种方法,是不是初始化的结构? 你会推荐哪一个?

如何在Visual Studio C ++中使用第三方DLL文件?

我明白我需要使用LoadLibrary()。 但是,为了使用第三方DLL文件,还需要执行哪些其他步骤? 我只是跳到C ++,这是我没有得到的唯一部分(作为Java程序员)。 我正在研究如何使用Qt库和tesseract-ocr,但是这个过程对我来说没有任何意义,而且对于google来说非常困难。 如何告诉编译器我正在使用的函数? 是否应该有来自第三方供应商的包含文件?

我如何决定是否将ATL,MFC,Win32或CLR用于新的C ++项目?

我刚刚开始我的第一个C ++项目。 我正在使用Visual Studio 2008 。 这是一个单一窗体的Windows应用程序,用于访问几个数据库并启动WebSphere MQ事务。 我基本上理解ATL,MFC,Win32(我实际上对此有点朦胧)和CLR之间的区别,但是我对如何select我却不知所措。 是否有一个或多个这些为了向后兼容? CLR 是一个坏主意吗? 任何build议感激。 编辑:我已经selectC ++这个项目,因为我没有在post中进入,这不完全是技术性的。 所以, 假设 C ++是唯一的/最好的select,我应该select哪一个?

LPCWSTR代表什么?应该如何处理?

首先,究竟是什么? 我想这是一个指针(LPC意味着长指针常量),但是“W”是什么意思? 它是一个特定的指针指向一个string或指向特定string的指针? 例如,我想closures一个名为“TestWindow”的窗口。 HWND g_hTest; LPCWSTR a; *a = ("TestWindow"); g_hTest = FindWindowEx(NULL, NULL, NULL, a); DestroyWindow(g_hTest); 代码是非法的,它不起作用,因为const char [6]不能转换为CONST WCHAR。 我一点都不明白。 我想清楚地了解所有这些LPCWSTR,LPCSTR,LPSTR。 我试图find一些东西,但是我更加困惑。 在MSDN站点FindWindowEx被声明为 HWND FindWindowEx( HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow ); 所以最后一个参数是LPCSTR,编译器要求LPCWSTR。 请帮忙。

VirtualAlloc和HeapAlloc有什么区别?

有很多方法可以在Windows环境中分配内存,如VirtualAlloc , HeapAlloc , malloc , new 。 那么,他们之间有什么不同呢?

我如何获得Windows中所有打开的命名pipe道的列表?

有没有简单的方法来testing你的命名pipe道是否正常工作? 我想确保从我的应用程序发送的数据实际上正在发送。 有没有一种快速简便的方法来获取所有命名pipe道的列表?

使用dllexport从DLL中导出函数

我想要一个从C ++窗口DLL中导出函数的简单示例。 我希望看到标题,cpp文件和def文件(如果绝对需要的话)。 我想要导出的名称是undecorated 。 我想使用最标准的调用约定(__stdcall?)。 我想使用__declspec(dllexport) ,而不必使用DEF文件。 例如: //header extern "C" { __declspec(dllexport) int __stdcall foo(long bar); } //cpp int __stdcall foo(long bar) { return 0; } 我试图避免链接添加下划线和/或数字(字节数?)的名称。 我没有支持dllimport和dllexport使用相同的头。 我不想要任何有关导出C ++类方法的信息,只需要c样式的全局函数。 UPDATE 不包括调用约定(和使用extern“C”)给我的出口名称,我喜欢,但这是什么意思? 无论默认调用约定我得到什么pinvoke(.NET),声明(VB6)和GetProcAddress会期望? (我猜GetProcAddress将取决于调用者创build的函数指针)。 我希望这个DLL可以在没有头文件的情况下使用,所以我并不需要很多花哨的#define来使头文件可以被调用者使用。 我很好,答案是我必须使用DEF文件。

检查path是否有效

我只是想知道:我正在寻找一种方法来validation给定的path是否有效。 (注:我不想检查一个文件是否存在!我只想certificatepath的有效性 – 所以如果一个文件可能存在的位置) 。 问题是,我在.Net API中找不到任何东西。 由于Windows支持多种格式和位置,我宁愿使用MS-native。 由于该function应该能够检查: 相对path(./) 绝对path(c:\ tmp) UNC-Pathes(\ some-pc \ c $) 像完整path1024个字符的NTFS限制 – 如果我没有被误认为超出path,将使许多内部Windowsfunction无法访问文件。 用Explorer重命名仍然有效 卷GUIDpath:“\?\卷{GUID} \ somefile.foo 有没有人有这样的function?

用C ++parsingINI文件最简单的方法是什么?

我试图用C ++parsing一个INI文件。 什么是最好的方式来实现这个任何提示? 我应该使用Windows API工具进行INI文件处理(我完全不熟悉),一个开源解决scheme还是试图手动parsing它?