View previous topic :: View next topic |
Author |
Message |
Wizard109
Joined: 10 Aug 2012 Posts: 9
|
(Separately) 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 |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Fri Aug 10, 2012 23:59 Post subject: |
|
|
Попробуй так:
Code: | hWnd = CreateWindow(PLUGIN_WNDCLASS_NAME, PLUGIN_WNDCLASS_NAME, WS_OVERLAPPEDWINDOW, 0, 0, 80, 60, 0, 0, hInst, 0);
if(hWnd)
{
SetWindowLong(hWnd,GWL_STYLE,WS_CHILD | WS_MAXIMIZE & !WS_CAPTION & !WS_BORDER);
SetParent(hWnd,ParentWin);
}
|
_________________ tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar |
|
Back to top |
|
|
Wizard109
Joined: 10 Aug 2012 Posts: 9
|
(Separately) Posted: Sat Aug 11, 2012 00:14 Post subject: |
|
|
Maximus wrote: | Попробуй так:
Код:
hWnd = CreateWindow(PLUGIN_WNDCLASS_NAME, PLUGIN_WNDCLASS_NAME, WS_OVERLAPPEDWINDOW, 0, 0, 80, 60, 0, 0, hInst, 0);
if(hWnd)
{
SetWindowLong(hWnd,GWL_STYLE,WS_CHILD | WS_MAXIMIZE & !WS_CAPTION & !WS_BORDER);
SetParent(hWnd,ParentWin);
}
|
Пасиб. попробую завтра.
Сейчас оказалось что проблема была с тем, что у меня был установлен GSA Lister 1.02. Даже стандартный сэмпл с ним не работал. Кроме прочего он вываливает Дельфинский сепшн, но разбирать его на си совсем не хотелось.
Кстати если плагин использует "не бесплатную" длл, но найти ее можно во многих играх, его выложат или оставить его у себя и выкладывать неофициально ? _________________ Vexilla regis prodeunt inferni |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sun Aug 12, 2012 15:06 Post subject: |
|
|
Wizard109 wrote: | Кстати если плагин использует "не бесплатную" длл, но найти ее можно во многих играх, его выложат или оставить его у себя и выкладывать неофициально ? |
Зависит от лицензии на эту DLL. Если такое выкладывание нарушает лицензию, то на wincmd.ru такой плагин публиковать нельзя. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|