Articles of winapi

是否有可能在Windows中获得触摸联系人(位图)的物理形状?

我希望能够确定手指绘画应用程序的触摸接触的大小和旋转。 现在,对angular地放下一根长手指给了我一个巨大的方形,这不是我想要的,我想要一个长方形的angular度。 我想这将由系统提供,但即使是Surface Pro 4硬件也没有这个。 但是如果我有一个接触区域的位图,我可以提取信息。 到目前为止谷歌searchWM_INPUT相关的东西没有帮助。 这甚至有可能吗? 编辑:获取POINTER_TOUCH_INFO::orientation方法是我正在寻找,确切地说。 我的触摸屏没有把任何价值的这个领域。 编辑2:有关于此的一些有用的研究( http://hci.cs.umanitoba.ca/assets/publication_files/2009-UIST-wang-DirectTouchSurface.pdf ),我现在需要的是访问形状。 编辑3:我从@msdev得到了答案,他们还build议运动跟踪。 现在唯一缺乏的是连续跟踪,我想没有一个联系位图就无法可靠地解决这个问题。 也许教neural network可以工作。

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来做什么? 谁能解释一下吗?

如何在C ++的窗口中获得用户的最大进程数

我有一个非常微不足道的问题,但我无法在Google中得到任何答案。 据我所知,用户可以创build的最大进程数量是有限制的。 我怎样才能得到这个variables到C ++? 我正在使用Visual C ++,Visual Studio 2013。 非常感谢。

枚举窗口时发生

试图运行以下代码时遇到问题: #include "header.h" int main() { id = GetCurrentProcessId(); EnumWindows(hEnumWindows, NULL); Sleep(5000); //MoveWindow(hThis, 450, 450, 100, 100, TRUE); system("pause"); return 0; } //header.h #include <cstdio> #include <cstdlib> #include <iostream> #include <Windows.h> using namespace std; DWORD id = 0; HWND hThis = NULL; BOOL CALLBACK hEnumWindows(HWND hwnd, LPARAM lParam) { DWORD pid = 0; pid = […]

使用MS CryptoAPI保存/恢复证书使连接的私钥失效

我写了一个程序,应该使用Windows Crypto API保存和恢复用户证书。 我的印象是,它工作正常,但现在用户抱怨说,证书已被恢复后,附加到证书的私钥是无效的。 我正在使用以下方式保存证书: HCERTSTORE hCertStore = CertOpenStore(CERT_STORE_PROV_PHYSICAL_W, 0, NULL, CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG | CERT_STORE_UPDATE_KEYID_FLAG, (PVOID) storeName.c_str()); 再后来: if (!CertSaveStore(hCertStore, 0, CERT_STORE_SAVE_AS_STORE, CERT_STORE_SAVE_TO_FILENAME, (PVOID) saveFile.c_str(), 0)) 我明白,CERT_STORE_SAVE_AS_STORE标志应该意味着整个证书应该被序列化,包括私钥。 虽然我注意到MSDN说: “CERT_KEY_CONTEXT_PROP_ID属性和相关的CERT_KEY_PROV_HANDLE_PROP_ID和CERT_KEY_SPEC_PROP_ID值不会被保存到序列化的商店”。 ..我承认,我真的不明白。 当我恢复证书时,我使用CertFindCertificateInStore()来查看证书是否已经存在,只有当证书不存在时,我才会这样做: bOK = CertAddCertificateContextToStore( hDestinationStore, pCertContext, CERT_STORE_ADD_USE_EXISTING, NULL); 为了添加证书…所以我的问题是,为什么私钥不能被保存? 我错过了什么吗?

RegCreateKeyEx()和GetLastError()

为什么RegCreateKeyEx()返回一个LONG ,而不是通过SetLastError()设置DWORD错误代码? 将它的LONG返回值转换为DWORD ,然后将它设置为SetLastError()的全局错误代码是否安全? http://msdn.microsoft.com/en-us/library/windows/desktop/ms724844(v=vs.85).aspx

夏令时和使用WinAPI进行的UTC到本地时间转换

我试图看看是否从本地转换到UTC时间,反之亦然是准确的夏令时。 例如,让我们拿LocalFileTimeToFileTime API。 其描述中指出: LocalFileTimeToFileTime使用时区和夏令时的当前设置。 因此,如果是夏令时,即使您正在转换的时间处于标准时间,此function也会考虑夏令时。 所以我用这个代码testing它: //Say, if DST change takes place on Mar-8-2015 at 2:00:00 AM //when the clock is set 1 hr forward //Let's check the difference between two times: SYSTEMTIME st1_local = {2015, 3, 0, 8, 1, 30, 0, 0}; //Mar-8-2015 1:30:00 AM SYSTEMTIME st2_local = {2015, 3, 0, 8, 3, […]

为什么GetFileAttributesW(L“C:”)返回FILE_ATTRIBUTE_REPARSE_POINT?

通常, GetFileAttributesW(L"C:")返回0x10 ( FILE_ATTRIBUTE_DIRECTORY ),这是合理的。 在某些情况下, GetFileAttributesW(L"C:")将返回0x2416 ( FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED ) 我想知道是什么让它发生,以及如何摆脱它。 这个问题使boost::filesystem::canonical不能工作。 你有什么主意吗?

LoadLibrary()的相对地址为dll

我想在我的代码在Windows中加载DLL,我用LoadLibrary()函数成功加载我的DLL,但我有一个问题,我给我的DLL的path如: LoadLibrary(C:\\path\\to\\my\\dll); 我不知道是否可以给我的DLL的相对path。 我的意思是例如: LoadLibrary(.\my dll directory\my dll.dll) 可能吗? 如果没有,我怎样才能开发我的项目,它可以是便携式的,而不改变在不同的机器上的DLL的path?

安全地移除已安装的驱动器

我有一个应用程序,通过SATA接口将文件写入格式化为NTFS的外部驱动器。 在closures应用程序之前,我确保使用FlushFileBuffers为每个文件(即CreateFile , FlushFileBuffers , CloseHandle )刷新所有内容。 然后我卸下驱动器,没有先卸载它! 将驱动器插入PC机时似乎工作正常。 但是,将其插入OS X时,操作系统似乎找不到任何文件,除非该驱动器已正确卸载。 有什么可以从磁盘丢失导致OS X找不到任何东西,有没有办法,我可以刷新数据,而无需卸载驱动器? 编辑: 与exfat我有问题,“脏”的驱动器重新安装时不可写入。