C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 33 - Как работает Error Lookup / Отладка / Visual C++

Шаг 33 - Как работает Error Lookup

Error Lookup использует функцию FormatMessage. Мы тоже можем ее использовать в своих программах. Вот ее параметры:

DWORD FormatMessage(
	DWORD dwFlags,      	// опции
	LPCVOID lpSource,   	// источник сообщения
	DWORD dwMessageId,  	// идентификатор ошибки
	DWORD dwLanguageId, 	// идентификатор языка
	LPTSTR lpBuffer,    	// буфер сообщения
	DWORD nSize,        	// максимальный размер буфера
	va_list *Arguments  	// массив сообщений
);

Давайте переделаем прошлый шаг, чтобы самостоятельно получить сообщение об ошибке.

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"


void main()
{
	if (MoveWindow(NULL,1,1,20,20,TRUE)!=TRUE)
	{
		LPVOID lpMsgBuf;
		FormatMessage( 
			FORMAT_MESSAGE_ALLOCATE_BUFFER | 
			FORMAT_MESSAGE_FROM_SYSTEM | 
			FORMAT_MESSAGE_IGNORE_INSERTS,
			NULL, GetLastError(),  MAKELANGID(LANG_NEUTRAL,
			SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL
		);
		cout << (char*)lpMsgBuf << endl;
	}
}

Смотрим результат.

33_1.gif (2693 b)

Отлично. Как это работает понятно. Но не все так просто. В шаге "Шаг 44 - Обработка ошибок COM - HRESULT" я упоминал, что код ошибки хранится в kernel32.dll. Но это не совсем так, то есть не только там.


| |
Автор Каев Артем.
[AD]