Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.07.2008, 12:50
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
Вопрос Виста и ХР

Переписываю свою программу на WinAPI, пока создал только главное окно, но если запустить в ХР, то вылазит ошибка.
Вроде бы ничего и нет кроме окна, кнопок и ListView.
Не подскажите в чем ошибка?
Код:
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.
Ошибка
Цитата:
Runtime error 2 at 00404a84
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.

Последний раз редактировалось The Shadow, 22.07.2008 в 13:07.
Ответить с цитированием
  #2  
Старый 22.07.2008, 17:57
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Странно.... У меня все нормально работает. Попробуй пошагово пройти под отладчиком. Должен выявить.
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter