MFC ERROR GetLastError

 1 void CStockServerDlg::ErrorExit(LPTSTR lpszFunction)    //错误函数
 2 {
 3     // Retrieve the system error message for the last-error code
 4
 5     LPVOID lpMsgBuf;
 6     LPVOID lpDisplayBuf;
 7     DWORD dw = GetLastError();
 8
 9     FormatMessage(
10         FORMAT_MESSAGE_ALLOCATE_BUFFER |
11         FORMAT_MESSAGE_FROM_SYSTEM |
12         FORMAT_MESSAGE_IGNORE_INSERTS,
13         NULL,
14         dw,
15         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
16         (LPTSTR) &lpMsgBuf,
17         0, NULL );
18
19     // Display the error message and exit the process
20
21     lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
22         (lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR));
23     StringCchPrintf((LPTSTR)lpDisplayBuf,
24         LocalSize(lpDisplayBuf),
25         TEXT("%s failed with error %d: %s"),
26         lpszFunction, dw, lpMsgBuf);
27     ::MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);
28     LocalFree(lpMsgBuf);
29     LocalFree(lpDisplayBuf);
30     ExitProcess(dw);
31 }
32
33 //调用它
34         CStockServerDlg* pError =new CStockServerDlg();
35         pError->ErrorExit(TEXT("Create"));
36         delete pError;    //避免其成为"野指针"
37         pError = NULL;    
时间: 2024-07-30 10:47:28

MFC ERROR GetLastError的相关文章

MFC error LNK2019

MFC 添加对话框引用对话框对象时 编译报错:error LNK2019,解决办法是在工程文件上选择对话框类文件右键---->属性---Item Type改为C/C++ header(.h)和C/C++ Compiler(.cpp)

消息传递MFC error C2440 “static_cast” 无法从“void (_thiscall )(void)”转换为“LRESULT

转载至:http://www.educity.cn/wenda/566627.html error C2440 “static_cast” 无法从“void (__thiscall )(void)”转换为“LRESULTerror C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)”转换为“LRESULT (__thiscall CWnd )(WPARAM,LPARAM)” 不能转换void (_thiscall CMainFram

拦截API 注入进程

本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理),会在VS下编写和调试Win32应用程序和动态链接库(以下简称DLL). API钩子是一种高级编程技巧,常常用来完成一些特别的功能,比如词典软件的屏幕取词,游戏修改软件的数据修改等.当然,此技术更多的是被黑客或是病毒用来攻击其它程序,截获需要的数据或改变目标程序的行为.本文不探讨此技术的应用,只讲实现.同时希望掌握此技术的人都能够合法的应用它,不要去

Win32环境下代码注入与API钩子的实现(转)

本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理),会在VS下编写和调试Win32应用程序和动态链接库(以下简称DLL). API钩子是一种高级编程技巧,常常用来完成一些特别的功能,比如词典软件的屏幕取词,游戏修改软件的数据修改等.当然,此技术更多的是被黑客或是病毒用来攻击其它程序,截获需要的数据或改变目标程序的行为.本文不探讨此技术的应用,只讲实现.同时希望掌握此技术的人都能够合法的应用它,不要去

Windows 非阻塞或异步 socket

异步与非阻塞区别见我的另外一篇文章Socket 同步/异步与阻塞/非阻塞区别 select WSAAsyncSelect WSAEventSelect 重叠(Overlapped)I/O IOCP:完成端口 Select 首先要使用ioctlsocket设置为非阻塞模式. 然后启动线程,线程中不停select. WSAAsyncSelect WSAAsyncSelect模型是Windows下最简单易用的一种Socket I/O模型.使用这种模型时,Windows会把网络事件以消息的形势通知应用程

获取当前系统可用串口号(转,亲测有效)

void GetComList_256(CComboBox* pComnum){ CString strCom, strComOpen; int nCom = 0; int count = 0; HANDLE hCom; pComnum->ResetContent();//组合框清空 do { nCom++;   strCom.Format(_T("COM%d"), nCom);   strComOpen.Format(_T("\\\\.\\COM%d"),

C++获取指定程序的IAT

今天学习导入表,于是便通过程序将获取IAT的过程实现一下,各位看官发现什么问题,请多指教.谢谢!废话不多说,下面是代码: #include <iostream> #include <windows.h> #include <winnt.h> using namespace std; int main(int argc, char* argv[]) { if (argc != 2) { cout << "Usage: " << 

WinInet编程中如何使用异步

在WinInet编程中,同步的使用方法如下: InternetOpen->InternetOpenUrl->HttpQueryInfo->InternetReadFile->InternetCloseHandle;在InternetOpenUrl和InternetReadFile时会导致程序阻塞,知道操作完成,同步的好处就是比较简单,调试方便. 异步的使用方法如下: 1)InternetOpen,需指定是异步: 2)InternetSetStatusCallback,设置回调: 3

c++实现对windwos 下socket 的封装(实现封包及拆包处理)

SuperSocket.h #pragma once #include<string> #include<iostream> #include <WINSOCK2.H> #include "MyThread.h" #include "SuperThread.h" using namespace std; class SuperSocket { public: typedef struct SockData{ int id; int