Добрый день проблемма такая MSVS 2003.NET Project type Win32 without mfc atl. Есть модуль main где собственно и происходт следующее LoginInfo m_ptrLoginNfo; RtlZeroMemory(&m_ptrLoginNfo,sizeof(LoginInfo)); hAboutDlg = CreateDialogParam(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_LOGIN),NULL,DlgProcLogin,(LPARAM)&m_ptrLoginNfo);//Сдесь смотрим дебагером все в порядке структура проинициализированна, все красиво. по F10 переходим во второй модуль login.cpp BOOL CALLBACK DlgProcLogin(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { LoginInfo* inf=(LoginInfo*)lParam;//вот сдесь указатель теряется и после этой иницализации он светит в BAdPtr. Что я сделал не так ? Заранее благодарен.
ну у меня иногда были подобные глюки с указателями. Возиожно это фокусы студии, т.к. у меня это исчезло после ребута студии и полной перекомпиляции.
а у остальных это исчезает при: Код (Text): BOOL CALLBACK DlgProcLogin(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: LoginInfo* inf=(LoginInfo*)lParam; break;
не надо пожалуйста выдирать из контекста, я имел в виду не именно этот случай, а непонятные вещи которые VC2003 иногда делает с указателями
Слушай я думал просто что ненужно писать очевидные вещи может тебе еще и pch вылажить ? Я показал основное, что бы была понятна суть
Может, m_ptrLoginNfo обьявлена как локальная переменная? ZaikinM Нам продолжать угадывать или ты соизволишь выложить очевидные вещи? Обычно в этих самых вещах кроются самые позорные баги.
rmn Извеняюсь за то что вел себя как упертый идот. На самом деле так и есть, как вы сказали. Тока я вот понять не могу почему при событии WM_INITDIALOG она инициализируется а до этого нет ?