Привет!
У меня следующая проблема.
Во время запуска приложения, без afxwin.h, главное окно не появляется.
Подробнее: Был код, в нем был включен afxwin.h по каким-то мозахистским соображениям, т.к. при этом приложение не использовало из MFC ничего. Я убрал afxwin.h, заменил на windows.h...
Однако, теперь во время вызова
hWnd = CreateWindowEx( 0,wcl.lpszClassName,AppName,
WS_OVERLAPPEDWINDOW | WS_VISIBLE
WndX,WndY,WndW,WndH,
NULL,NULL,hInst,NULL
);
GetLastError() говорит мне об ошибке номер восемь, что соответствует
"Недостаточно памяти для обработки комманды"
Что это за грабли? Как их убрать?
Здравствуйте, anvaka, Вы писали:
A>У меня следующая проблема.
A>Во время запуска приложения, без afxwin.h, главное окно не появляется.
A>Подробнее: Был код, в нем был включен afxwin.h по каким-то мозахистским соображениям, т.к. при этом приложение не использовало из MFC ничего. Я убрал afxwin.h, заменил на windows.h...
A>Однако, теперь во время вызова
A>A>hWnd = CreateWindowEx( 0,wcl.lpszClassName,AppName,
A> WS_OVERLAPPEDWINDOW | WS_VISIBLE
A> WndX,WndY,WndW,WndH,
A> NULL,NULL,hInst,NULL
A> );
A>
A>GetLastError() говорит мне об ошибке номер восемь, что соответствует
A>"Недостаточно памяти для обработки комманды"
A>Что это за грабли? Как их убрать?
Во1ых, что в wcl.lpszClassName и AppName? Класс зарегистрен?
Во2ых, перед вызовом любой API функции вызывай SetLastError(0), чтобы гарантировать что код ошибки именно от CreateWindow.
В3их, в winerror.h рядом с кодом "8" указано слово dderror. Подозреваю что это про "device driver". Ты размеры какие окну указал?
Здравствуйте, aik, Вы писали:
aik>Во1ых, что в wcl.lpszClassName и AppName? Класс зарегистрен?
Класс зарегестрирован, wcl.lpszClassName == "Class_NAME";
AppName == "My Application"
aik>Во2ых, перед вызовом любой API функции вызывай SetLastError(0), чтобы гарантировать что код ошибки именно от CreateWindow.
Код именно от CreateWindow(); Проверял в отладке:
err, hr
aik>В3их, в winerror.h рядом с кодом "8" указано слово dderror. Подозреваю что это про "device driver". Ты размеры какие окну указал?
WndW=256;
WndH=256;
WndX=GetSystemMetrics(SM_CXSCREEN)/2-WndW/2;
WndY=GetSystemMetrics(SM_CYSCREEN)/2-WndH/2;
VC6.0 + Debug + Watch(err,hr) == "0x00000008, Недостаточно памяти для обработки комманды"
Здравствуйте, MShura, Вы писали:
MS>Что касается сути вопроса, то неплохо бы узнать успевают ли прийти какие-нибудь сообщения в оконную процедуру.
MS>Например WM_CREATE посылается окну до возврата из CreateWindow
Действительно, мне стоило заглянуть в обработчик событий, там происходило то, почему я получил восьмую ошибку

.
WM_CREATE приходит.
Оказывается, после вызова CreateToolbarEx(), происходит эта самая ошибка.
Замечательно то, что в отладочной версии я вижу главное окно, а в релизе — нет

.
Вот функция, созадющая мой тулбар:
// Define this enumaration for easier array indexing
enum
{
LEFT_ARROW,
RIGHT_ARROW,
SPACE_1,
REFRESH_BUTTON,
RESOURCE_BUTTON,
NUMBER_OF_TB_BUTTONS,
NUMBER_OF_SEPARATORS = 1
};
BOOL CreateToolBar(HWND hWnd)
{
if(!ViewToolbarFlag)
{
ghToolBar=NULL;
return FALSE;// We don't wanna toolbar
}
// Initialize each of the buttons with the appropiate values
TBBUTTON tbButton[NUMBER_OF_TB_BUTTONS] = { 0 };
tbButton[SPACE_1].fsStyle = TBSTYLE_SEP;
tbButton[LEFT_ARROW].iBitmap = 0;
tbButton[LEFT_ARROW].idCommand = MI_COLLAPSE;
tbButton[LEFT_ARROW].fsState = TBSTATE_ENABLED;
tbButton[LEFT_ARROW].fsStyle = TBSTYLE_BUTTON;
tbButton[RIGHT_ARROW].iBitmap = 1;
tbButton[RIGHT_ARROW].idCommand = MI_EXPAND;
tbButton[RIGHT_ARROW].fsState = TBSTATE_ENABLED;
tbButton[RIGHT_ARROW].fsStyle = TBSTYLE_BUTTON;
tbButton[REFRESH_BUTTON].iBitmap = 2;
tbButton[REFRESH_BUTTON].idCommand = MI_REFRESH;
tbButton[REFRESH_BUTTON].fsState = TBSTATE_ENABLED;
tbButton[REFRESH_BUTTON].fsStyle = TBSTYLE_BUTTON;
tbButton[RESOURCE_BUTTON].iBitmap = 3;
tbButton[RESOURCE_BUTTON].idCommand= MI_RESOURCES;
tbButton[RESOURCE_BUTTON].fsState = TBSTATE_INDETERMINATE;
tbButton[RESOURCE_BUTTON].fsStyle = TBSTYLE_BUTTON;
// Create the toolbar with the most commonly used functions
ghToolBar = CreateToolbarEx (hWnd,
WS_VISIBLE | WS_CHILD | WS_BORDER | TBSTYLE_TOOLTIPS,
IDC_TOOLBAR,
// The number of images is the number of
// buttons minus the separators
NUMBER_OF_TB_BUTTONS - NUMBER_OF_SEPARATORS,
hInst,
TOOLBAR_BMP,
tbButton,
NUMBER_OF_TB_BUTTONS,
16, 16, 16, 32,
sizeof(TBBUTTON));
if (NULL == ghToolBar)
{
return FALSE;
}
SaveLoadTB(false);
ShowWindow(ghToolBar,SW_SHOW);
return TRUE;
}
TOOLBAR_BMP — идентификатор ресурса — битмап 32x32, глубины в 8 бит.
попытка изменить размеры кнопки, или рисунка к успеху не привели...
И еще, что-бы значила строка в output window об исключении?
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\comctl32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\wsock32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\ws2_32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\ws2help.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\winmm.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\mpr.dll', no matching symbolic information found.
Loaded symbols for 'D:\WINDOWS\system32\MSVCRTD.DLL'
Loaded 'D:\WINDOWS\system32\shell32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\shlwapi.dll', no matching symbolic information found.
Loaded symbols for 'D:\WINDOWS\system32\MSVCP60D.DLL'
Loaded 'D:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\mswsock.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\dnsapi.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\winrnr.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\wldap32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\rasadhlp.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\hnetcfg.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\wshtcpip.dll', no matching symbolic information found.
First-chance exception in WinShell.exe (KERNEL32.DLL): 0x000006D9: (no name).
Loaded 'D:\WINDOWS\system32\msctf.dll', no matching symbolic information found.
Loaded 'D:\Program Files\PRMT6\PRMTED\EDSel.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\mfc42.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\ole32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\oleaut32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\mfc42loc.dll', no matching symbolic information found.
The program 'F:\TEMP\cpp\NetLook 1.4\Debug\WinShell.exe' has exited with code 0 (0x0).