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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2008, 12:45   #1
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
Вопрос Работает на Висте а на ХР нет

Решил переписать сво программу на WinAPI, почти создал главное окно, решил запустить на ХР - вылазит ошибка. На Висте все ОК. В чем может быть проблема?
Код:
program POP3MailCheck;

{$R *.res}
{$R WindowsXP.res}

uses
  Windows,
  Messages,
  ShellAPI,
  CommCtrl;

const
  ProgrammName: PChar = 'POP3 Mail Check 5.0';

type
  TUser = record
    Name, Server, User, Password, Port: String;
    MessageCount: Integer;
  end;

var
  UsersWindow, WindowCaptionStatic, UsersListView, AddUser, ChangeUser, DeleteUser, OK: HWND;
  Font: HFONT;
  UsersWindowClass: TWndClassEx;
  TheMessage: TMsg;
  TmpRect: TRect;
  UserListViewColumn1, UserListViewColumn2, UserListViewColumn3: tagLVCOLUMNA;
  OldOKWindowProc, OldUsersListViewWindowProc: Pointer;
  Users: Array of TUser;
  Tray: TNotifyIconData;

function OKWindowProc(Handle: THandle;
  Msg, wParam, lParam: LongInt): LongInt; stdcall;
begin
  if Msg = WM_LBUTTONUP then
  SendMessage(UsersWindow, WM_DESTROY, 0, 0);
  Result:=CallWindowProc(OldOKWindowProc, Handle, Msg, wParam, lParam);
end;

function UsersListViewWindowProc(Handle: THandle;
  Msg, wParam, lParam: LongInt): LongInt; stdcall;
begin
  {

  }
  Result:=CallWindowProc(OldUsersListViewWindowProc, Handle, Msg, wParam, lParam);
end;

function UsersWindowProc(Wnd: HWND; Msg: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  WndRect: TRect;
begin
  Result:=0;
  GetWindowRect(Wnd, WndRect);
  case Msg of
  WM_CREATE:
  begin
    with Tray do
    begin
      cbSize:=SizeOf(TNotifyIconData);
      Wnd:=Wnd;
      uID:=13;
      uFlags:=NIF_MESSAGE + NIF_ICON + NIF_TIP;
      uCallBackMessage:=WM_USER + 13;
    end;
    Tray.Wnd:=Wnd;
    Shell_NotifyIcon(NIM_ADD, @Tray);
  end;
  WM_CLOSE: ShowWindow(Wnd, SW_HIDE);
  WM_DESTROY:
  begin
    Shell_NotifyIcon(NIM_DELETE, @Tray);
    PostQuitMessage(0);
    Exit;
  end;
  WM_NCHITTEST: Result:=HTCAPTION;
  else
  Result:=DefWindowProc(Wnd, Msg, wParam, lParam);
  end;
end;

begin
  GetWindowRect(GetDesktopWindow, TmpRect);
  with UsersWindowClass do
  begin
    cbSize:=SizeOf(UsersWindowClass);
    lpfnWndProc:=@UsersWindowProc; 
    cbClsExtra:=0;
    cbWndExtra:=0;  
    hCursor:=LoadCursor(0, IDC_ARROW);
    hbrBackground:=COLOR_BTNFACE + 1;
    lpszMenuName:=nil;
    lpszClassName:='UsersWindow';
  end;
  UsersWindowClass.hInstance:=HInstance;
  RegisterClassEx(UsersWindowClass);
  Font:=CreateFont(-12, 0, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');
  UsersWindow:=CreateWindowEx(WS_EX_TOOLWINDOW, 'UsersWindow', 'POP3 Mail Check', WS_VISIBLE or WS_POPUP, (TmpRect.Right - 315) div 2, (TmpRect.Bottom - 330) div 2, 315, 330, 0, 0, HInstance, nil);
  SetWindowRgn(UsersWindow, CreateRoundRectRgn(0, 0, 315, 330, 15, 15), True);
  WindowCaptionStatic:=CreateWindowEx(0, 'Static', ProgrammName, WS_CHILD or SS_LEFT or WS_VISIBLE, 8, 8, 100, 15, UsersWindow, 0, HInstance, nil);
  SendMessage(WindowCaptionStatic, WM_SETFONT, WPARAM(Font), 0);
  UsersListView:=CreateWindowEx(0, 'SysListView32', 'UsersList', WS_CHILD or LVS_REPORT or WS_BORDER or SS_LEFT or WS_VISIBLE, 8, 32, 297, 225, UsersWindow, 0, HInstance, nil);
  AddUser:=CreateWindowEx(0, 'Button', 'Äîáàâèòü', WS_CHILD or WS_VISIBLE, 8, 264, 89, 25, UsersWindow, 0, HInstance, nil);
  SendMessage(AddUser, WM_SETFONT, WPARAM(Font), 0);
  ChangeUser:=CreateWindowEx(0, 'Button', 'Èçìåíèòü', WS_CHILD or WS_DISABLED or WS_VISIBLE, 104, 264, 89, 25, UsersWindow, 0, HInstance, nil);
  SendMessage(ChangeUser, WM_SETFONT, WPARAM(Font), 0); 
  DeleteUser:=CreateWindowEx(0, 'Button', 'Óäàëèòü', WS_CHILD or WS_VISIBLE or WS_DISABLED, 208, 264, 89, 25, UsersWindow, 0, HInstance, nil);
  SendMessage(DeleteUser, WM_SETFONT, WPARAM(Font), 0);
  OK:=CreateWindowEx(0, 'Button', 'ÎÊ', WS_CHILD or WS_VISIBLE, 208, 296, 89, 25, UsersWindow, 0, HInstance, nil);
  SendMessage(OK, WM_SETFONT, WPARAM(Font), 0);
  OldOKWindowProc:=Pointer(SetWindowLong(OK, GWL_WNDPROC, LongInt(@OKWindowProc)));  
  OldUsersListViewWindowProc:=Pointer(SetWindowLong(UsersListView, GWL_WNDPROC, LongInt(@UsersListViewWindowProc)));
  with UserListViewColumn1 do
  begin
    pszText:='Ó÷åòíàÿ çàïèñü';
    cx:=130;
    mask:=6;
  end;
  with UserListViewColumn2 do
  begin
    pszText:='Ñåðâåð';
    cx:=70;
    mask:=6;
  end;
  with UserListViewColumn3 do
  begin
    pszText:='Ïîëüçîâàòåëü';
    cx:=90;
    mask:=6;
  end;
  ListView_InsertColumn(UsersListView, 0, UserListViewColumn1);
  ListView_InsertColumn(UsersListView, 1, UserListViewColumn2);
  ListView_InsertColumn(UsersListView, 2, UserListViewColumn3);
  while GetMessage(TheMessage, 0, 0, 0) do
  begin
    TranslateMessage(TheMessage);
    DispatchMessage(TheMessage);
  end;
end.
AidarBik вне форума Ответить с цитированием
Старый 22.07.2008, 13:01   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

AidarBik, не забывайте указывать, какая именно ошибка. Для "каши" в строках 95-110 существуют диалоги.
B_N вне форума Ответить с цитированием
Старый 22.07.2008, 13:04   #3
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию

Код:
Runtime error 2 at  00404a84
AidarBik вне форума Ответить с цитированием
Старый 22.07.2008, 13:16   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от AidarBik Посмотреть сообщение
Код:
Runtime error 2 at  00404a84
Такие ошибки нужно искать отладчиком. Уберите ссылки на ресурсы из проекта, по крайней мере
Код:
{$R *.res}
, зачем они здесь? Без ресурсов всё компилируется и работает. Окна всё же советую создавать диалогом.
B_N вне форума Ответить с цитированием
Старый 22.07.2008, 13:36   #5
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию

Без ресурсов тоже не работает
AidarBik вне форума Ответить с цитированием
Старый 22.07.2008, 14:42   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Без ресурсов тоже не работает
Только что скомпилил твою без ресурсов на D6 WinXP SP1 - все запустилось.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2008, 12:26   #7
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию

А вот этот файл запускается?
AidarBik вне форума Ответить с цитированием
Старый 23.07.2008, 12:40   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
А вот этот файл запускается?
Вылетает на
Код:
 UsersWindow:=CreateWindowEx(WS_EX_TOOLWINDOW, 'UsersWindow', 'POP3 Mail Check', WS_VISIBLE or WS_POPUP, (TmpRect.Right - 315) div 2, (TmpRect.Bottom - 330) div 2, 315, 330, 0, 0, HInstance, nil);
--
Гыг, а сама ошибка при открытии какого-то файла
пыщь

Последний раз редактировалось JTG; 23.07.2008 в 12:50.
JTG вне форума Ответить с цитированием
Старый 23.07.2008, 13:06   #9
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию

Ой, там с файлом я потом добавил.
Цитата:
Сообщение от JTG
Вылетает на
Код:
 UsersWindow:=CreateWindowEx(WS_EX_TOOLWINDOW, 'UsersWindow', 'POP3 Mail Check', WS_VISIBLE or WS_POPUP, (TmpRect.Right - 315) div 2, (TmpRect.Bottom - 330) div 2, 315, 330, 0, 0, HInstance, nil);
А что можно сделать с этим?
AidarBik вне форума Ответить с цитированием
Старый 28.07.2008, 20:21   #10
Christoph
 
Аватар для Christoph
 
Регистрация: 28.01.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от AidarBik Посмотреть сообщение
Ой, там с файлом я потом добавил.

А что можно сделать с этим?
Попробуй методом тыка менять параметры, а вообще чтоб не было таких конфликтов пишут на дота Net
Christoph вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с MVC++ 2005 && 2008 на висте NetGod Софт 1 09.08.2008 17:14
Как работает win rar? Altera Свободное общение 2 30.03.2008 08:05
не работает! RECREATOR Общие вопросы Delphi 6 29.11.2007 12:42
Паскаль на висте nikleb Паскаль, Turbo Pascal, PascalABC.NET 3 11.09.2007 17:36
Не работает try except!!! Radost БД в Delphi 17 03.06.2007 11:07