Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с Edit class 
V
    Опции темы
freenity
Дата 7.9.2006, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.9.2006

Репутация: нет
Всего: нет



Здраствуйте.
Есть код, который не компилируется. Ошибка гдето в WindowProc. Вроде бы все нормально, но даже окно не появляется. Вот код:

Код

program WindowsApp;
{$MODE DELPHI}
uses Windows;

const AppName = 'WindowsApp';

var hWindow: hwnd;
    hins : hwnd;
    hwndEdit : hwnd;

function WindowProc(Window: HWnd; AMessage, WParam,
          LParam: Longint): Longint; stdcall; export;
begin
     if Amessage = WM_DESTROY then
        ExitProcess(0)
     else if amessage = WM_CREATE then
     begin
          hwndEdit := CreateWindowEx(WS_EX_CLIENTEDGE, 'edit', nil, WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or ES_AUTOHSCROLL, 50, 35, 200, 25, Window, 1, hins, nil);
          {SetFocus(hwndedit); }
     end;
         WindowProc := DefWindowProc(Window, amessage, wparam, lparam);
end;


procedure WinMain (hinst, hprevinst, cmdline, cmdshow : Longint); stdcall; export;
var
   lhwnd : longint;
   lmsg : msg;
   WindowClass : WNDCLASSEX;
begin
     WindowClass.Style := cs_hRedraw or cs_vRedraw;
     WindowClass.lpfnWndProc := @WindowProc;
     WindowClass.cbClsExtra := 0;
     WindowClass.cbWndExtra := 0;
     WindowClass.hInstance := system.MainInstance;
     WindowClass.hIcon := LoadIcon(0, idi_Application);
     WindowClass.hCursor := LoadCursor(0, idc_Arrow);
     WindowClass.hbrBackground := GetStockObject(WHITE_BRUSH);
     WindowClass.lpszMenuName := nil;
     WindowClass.lpszClassName := AppName;

     RegisterClassEx(WindowClass);
     lhwnd := CreateWindowEx(0, AppName, 'my fakin cool window', WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, cw_UseDefault, cw_UseDefault, 0, 0, system.MainInstance, nil);

     ShowWindow(lhwnd, SW_NORMAL);
     UpdateWindow(lhwnd);

     while GetMessage(@lmsg, 0, 0, 0) do
     begin
           TranslateMessage(lmsg);   {check here @msg}
           DispatchMessage(lmsg);
     end;

end;

begin
     hins := GetModuleHandle(0);
     WinMain(hins, 0, 0, SW_SHOWNORMAL);
end.


Спасибо за помощ.
PM MAIL   Вверх
Alexeis
Дата 7.9.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



В места правки я поставил коментарии
Код

program winmin2;
uses
  Windows,
  Messages; //модуль сообщеий

const AppName = 'WindowsApp';

var
  hWindow: hwnd;
  hins : hwnd;
  hwndEdit : hwnd;

function WindowProc(Window: HWnd; AMessage, WParam,
          LParam: Longint): Longint; stdcall;
begin
  Result := 0; //результат надо всегда возвращать
  case Amessage
  of
    WM_DESTROY : ExitProcess(0);
    WM_CREATE  :
       hwndEdit := CreateWindowEx(WS_EX_CLIENTEDGE, 'edit',
                                  nil, WS_CHILD or WS_VISIBLE or WS_BORDER or
                                  ES_LEFT or ES_AUTOHSCROLL,
                                  50, 35, 200, 25,
                                  Window, 1, hins, nil);

     else
       Result := DefWindowProc(Window, amessage,
                               wparam, lparam);
  end;
end;

var
  WindowClass : TWndClassEx;//класс окна не может быть локальной пере
                                                  //менной
procedure WinMain(hinst, hprevinst, cmdline, cmdshow : Longint);
 var
   lhwnd       : THandle;
   lmsg        : TMsg;

begin
  WindowClass.cbSize := SizeOf(WindowClass);//надо указывать размер структуры
  WindowClass.Style := cs_hRedraw or cs_vRedraw;
  WindowClass.lpfnWndProc := @WindowProc;
  WindowClass.cbClsExtra := 0;
  WindowClass.cbWndExtra := 0;
  WindowClass.hInstance := system.MainInstance;
  WindowClass.hIcon := LoadIcon(0, idi_Application);
  WindowClass.hCursor := LoadCursor(0, idc_Arrow);
  WindowClass.hbrBackground := GetStockObject(WHITE_BRUSH);
  WindowClass.lpszMenuName := nil;
  WindowClass.lpszClassName := AppName;
  RegisterClassEx(WindowClass);
  lhwnd := CreateWindowEx(0, AppName,
                         'my cool window', //мат на форуме запрещен
                         WS_OVERLAPPEDWINDOW,
                         CW_USEDEFAULT, CW_USEDEFAULT,
                         cw_UseDefault, cw_UseDefault,
                          0, 0, system.MainInstance, nil);

   ShowWindow(lhwnd, CmdShow);
   UpdateWindow(lhwnd);

   while GetMessage(lmsg, 0, 0, 0) //передается не указатель а сама пере
   do                                               //менная
     begin
       TranslateMessage(lmsg);
       DispatchMessage(lmsg);
     end;
end;

begin
  hins := GetModuleHandle(nil);
  WinMain(hins, 0, 0, SW_SHOWNORMAL);
end.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
freenity
Дата 7.9.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.9.2006

Репутация: нет
Всего: нет



Спасибо большое.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1117 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.