Wizard109
|
Posted: Fri Aug 10, 2012 13:02 Post subject: WLX: VisualStudio - пляска с бубном |
|
|
Не могу разобраться с wlx-плагином.
Сначала кусок кода:
Code: |
void __stdcall ListCloseWindow(HWND ListWin)
{
MessageBoxA(NULL, "Bye - bye", "Information", MB_OK | MB_ICONASTERISK);
}
HWND WINAPI ListLoad(HWND ParentWin,char* FileToLoad,int ShowFlags)
{
MSG msg;
HWND hWnd;
WNDCLASSEX wcex;
HINSTANCE hInst = GetModuleHandle(NULL);
ZeroMemory(&wcex, sizeof(wcex));
wcex.cbClsExtra = 0;
wcex.cbSize = sizeof(wcex);
wcex.cbWndExtra = 0;
wcex.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hIcon = 0;
wcex.hIconSm = 0;
wcex.hInstance = hInst;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.lpszClassName = PLUGIN_WNDCLASS_NAME;
wcex.lpszMenuName = 0;
wcex.style = CS_CLASSDC;
RegisterClassEx(&wcex);
hWnd = CreateWindow(PLUGIN_WNDCLASS_NAME, PLUGIN_WNDCLASS_NAME, WS_CHILD, 0, 0, 80, 60, ParentWin, 0, hInst, 0);
ShowWindow(hWnd, 1);
UpdateWindow(hWnd);
/*while(true)
{
if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if(msg.message == WM_QUIT)
break;
}
else
{
break;
}
}*/
return hWnd;
} |
1. Если цикл с PeekMessage закомментирован - никаких ошибок не возникает, сразу же вызывается ListCloseWindow.
2. На основании п.1 возникло предположение что цикл обработки сообщений все-таки должен быть в теле ListLoad. Ок. Убираем комментарии и получаем:
* плагин работает нормально, взаимодействует с DirectX, по Esc получаем сообщение Bye-bye и lister закрывается. В ListCloseWindow пробовал закрывать окно, убивать HANDLE и ... n-вариантов.
* второй раз lister открывается но при отображении сразу же вываливает
Quote: |
System Error. Code: 1400.
Недопустимый дескриптор окна.
|
* при закрытии Тотала имеем крэш:
Quote: |
Имя события проблемы: APPCRASH
Имя приложения: TOTALCMD.EXE
...
Имя модуля с ошибкой: GSALister.wlx
...
Код исключения: c0000005
Смещение исключения: 00003202
Версия ОС: 6.1.7601.2.1.0.256.1
|
В OllyDbg лезть как-то совсем не хочется. Кто-нибудь знает что я не так делаю ?[/code] _________________ Vexilla regis prodeunt inferni |
|