Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> stdcall в pascal 
V
    Опции темы
Ccoder
  Дата 24.9.2011, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте.
Кодю под borland pascal
stdcall компилятор не бурет, говорит
Цитата

A1.PAS(14): Error 36: BEGIN expected.
function WndProc(hwnd: THandle; Msg: integer; wParam, lParam: longint): longint;
stdcall;


вот сам код
Код

      program a1;
       
       
      uses
        WinTypes, WinCrt, WinProcs;
       
      var
        show: array [0 .. 5] of record lPatternSymbol: longint;
          szPatternSymbol: PChar;
        end;
        cyClient, cxCaps, cyChar, cyDesc: Integer;
        iNumTypes : Integer;
       
      function WndProc(hwnd: THandle; Msg: integer; wParam, lParam: longint): longint; stdcall;
      var
        hDC: THandle;
        Ps: TPAINTSTRUCT;
        NewBrush: HBRUSH;
        fm: TTextMetric;
        brsh: HBRUSH;
        i, h, w: Integer;
        rect: TRect;
      begin
        case Msg of
          WM_CREATE:
            begin
              hDC:= GetDC(hwnd);
              GetTextMetrics(hDC, fm);
              cxCaps := 20;
              cyChar := fm.tmHeight + 100;
              cyDesc := fm.tmDescent;
            end;
       
          WM_PAINT:
            begin
              hDC := BeginPaint(hwnd, Ps);
              for i := 0 to iNumTypes - 1 do
              begin
                brsh:= CreateHatchBrush(show [i].lPatternSymbol, 0);
       
                rect.top:= 20 + (cyChar div 4) + (i mod 3)*(cyChar);
                rect.left:= (i div 3)*250 + 10;
                rect.bottom:= rect.top + cyChar;
                rect.right:= rect.left + 120;
       
                SelectObject(hDC, brsh);
                DrawText(hDC, show[i].szPatternSymbol, -1, rect, DT_RIGHT);
       
                h:= rect.left + 130;
                w:= 10 + (i mod 3)*(cyChar);
       
                Rectangle(hDC, h + 10, w, h + cyChar - 10, w + cyChar -20 );
       
                DeleteObject(brsh);
              end;
              EndPaint(hwnd, Ps);
            end;
       
              WM_CLOSE:
          begin
            DestroyWindow(hwnd);
          end;
       
          WM_DESTROY:
          begin
            PostQuitMessage(0);
          end;
       
          else
          begin
            WndProc:= DefWindowProc(hwnd, msg, wParam, lParam);
            exit;
          end;
        end;
       
      end;
       
      var
        szClientClass: PChar;
        flFrameFlags: Longint;
        wc: TWndClass;
        hwnd: THandle;
        Msg: TMSG;
       
      begin
        szClientClass:= 'Patterns';
        flFrameFlags:= WS_CAPTION or WS_SYSMENU or WS_SIZEBOX or WS_MINIMIZEBOX or WS_MAXIMIZEBOX;
       
        show[0].lPatternSymbol := HS_BDIAGONAL;
        show[0].szPatternSymbol := 'HS_BDIAGONAL';
        show[1].lPatternSymbol := HS_CROSS;
        show[1].szPatternSymbol := 'HS_CROSS';
        show[2].lPatternSymbol := HS_DIAGCROSS;
        show[2].szPatternSymbol := 'HS_DIAGCROSS';
        show[3].lPatternSymbol := HS_FDIAGONAL;
        show[3].szPatternSymbol := 'HS_FDIAGONAL';
        show[4].lPatternSymbol := HS_HORIZONTAL;
        show[4].szPatternSymbol := 'HS_HORIZONTAL';
        show[5].lPatternSymbol := HS_VERTICAL;
        show[5].szPatternSymbol := 'HS_VERTICAL';
        iNumTypes := 6;
       
       
        wc.style := 0;
        wc.lpfnWndProc := @WndProc;
        wc.cbClsExtra := 0;
        wc.cbWndExtra := 0;
        wc.hInstance := hInstance;
        wc.hIcon := LoadIcon(0, IDI_APPLICATION);
        wc.hCursor := LoadCursor(0, IDC_ARROW);
        wc.hbrBackground := COLOR_WINDOW + 1;
        wc.lpszMenuName := nil;
        wc.lpszClassName := szClientClass;
       
        if (not RegisterClass(wc)) then
        begin
          MessageBox(0, 'RegisterClass Failed!', 'Error!',
            MB_ICONEXCLAMATION or MB_OK);
          Exit;
        end;
       
        hwnd:= CreateWindow(szClientClass, szClientClass, flFrameFlags,
          CW_USEDEFAULT, CW_USEDEFAULT, 580, 400, 0, 0, 0, nil);
       
        if hwnd = 0 then
        begin
          MessageBox(0, 'CreateWindow Failed!', 'Error!',
            MB_ICONEXCLAMATION or MB_OK);
          Exit;
        end;
       
        ShowWindow(hwnd, SW_SHOW);
        UpdateWindow(hwnd);
       
        while (GetMessage(Msg, 0, 0, 0)) do
        begin
          TranslateMessage(Msg);
          DispatchMessage(Msg);
        end;
       
        DestroyWindow(hwnd);
       
      end.



RTL библиотеки находится http://pascal.sources.ru/museum/bp7_13.zip
компилятор http://depositfiles.com/files/fxo8pid2d
если скомпилировать без stdcall;
то при запуске вижу
user posted image
PM MAIL   Вверх
volvo877
Дата 24.9.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Export используется в Борланд Паскале.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

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

2. Публиковать ссылки на варез

3. Оффтопить

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

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

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


 




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


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

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