Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2010, 19:54   #1
Upgrades
Пользователь
 
Аватар для Upgrades
 
Регистрация: 19.07.2010
Сообщений: 21
По умолчанию В Windows XP хорошо, в Windows 7 - плохо... AV в comctl32.dll

Здравствуйте.

Написанная мной программа в Delphi 2010 и скомпилированная в Microsoft Windows XP build 2600, Service Pack 3, у товарища с Microsoft Windows 7 build 7600 не работает, более точно возникает ошибка Access Violation в модуле comctl32.dll.

В Call Stack видно, что исключение было в USER32.dll в Procedure / Method: CallWindowProcW, я в программе использовал AdvListView и исключение было вызвано при использовании функции:

Код:
var
   wpCoord: TRect;

function EditSubclassProc(hwnd: tHandle; uMsg: Integer; wParam: word; lparam: longint): Integer; stdcall;
var
   pwp: PWindowPos;

begin
   if umsg = WM_WINDOWPOSCHANGING then
   begin
     pwp := PWindowPos(lparam);
     with pwp^ do
     begin
        x := wpCoord.Left;
        y := wpCoord.Top;
        cx := wpCoord.Right - wpCoord.Left;
        cy := wpCoord.Bottom - wpCoord.Top;
     end;
   end;

   Result := CallWindowProc(tfnwndproc(wpOrigEditProc), hwnd, uMsg, wParam, lParam);
end;
... на строке Result.

В программе пользователь выделяет строку в AdvListView (vsReport) жмёт второй раз по любому SubItem'у и может редактировать его, в этот момент в Win7 и происходит ошибка AV. Помогите пожалуйста, как бороться?

Последний раз редактировалось Upgrades; 04.09.2010 в 20:03.
Upgrades вне форума Ответить с цитированием
Старый 04.09.2010, 20:03   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Покурите мясо. После этого посмотрите в исходниках дельфы, какая процедура вызывается? CTRL+CLICK на CallWindowProc. По идее должна быть CallWindowProcA, а не CallWindowProcW
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 04.09.2010, 22:45   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Если что-то работает - это ещё не значит, что это должно работать.

Код:
wParam: word
А по рукам за бездумный copy&paste?

P.S. Видимо, не имеет отношения к проблеме, но почитать.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вырубка Химкинского леса - хорошо это или плохо ? решать вам. vedro-compota Свободное общение 41 26.08.2011 19:02
Бакалавриат - хорошо или все-таки плохо? Mr.Qwerty Свободное общение 33 17.08.2011 06:08
Windows I/o без Kernel32.dll и Advapi32.dll coinkrsk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 31 27.06.2010 08:52
Из программы выгружается отчет (плохо), его нужно преобразовать в другой вид (хорошо) Anutik Microsoft Office Excel 4 23.09.2009 11:42