OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 01:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 20:05 

Зарегистрирован: Четверг, 16 Декабрь, 2010 14:09
Сообщения: 4
Где можно посмотреть примеры программ на компонентном паскале? Интересует написание приложений для Win32, работа с функциями WinAPI.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 20:35 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Mihal писал(а):
Где можно посмотреть примеры программ на компонентном паскале? Интересует написание приложений для Win32, работа с функциями WinAPI.
http://oberoncore.ru/wiki/blackbox/make_exe


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 22:13 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Стандартный вопрос: опишите примерный функционал программы, назначение. возможно "неправославный" :) WinAPI вам и не понадобится, опытные товарищи всегда подскажут.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Декабрь, 2010 01:08 

Зарегистрирован: Четверг, 16 Декабрь, 2010 14:09
Сообщения: 4
Александр Ильин, спасибо.

Если не сложно, покажите как будет выглядеть этот код на КП, пожалуйста:

Код:
program VerySimple;

uses
  Windows, Messages;

var
  wClass: TWndClass;
  Msg: TMsg;
  Win, Button1: HWND;
 
function WindowProc(Win, Msg, WP, LP: Integer): Integer; stdcall;
begin
  case Msg of

    WM_COMMAND:
      if LoWord(WP) = 1001 then PostQuitMessage(0);

    WM_DESTROY:
      PostQuitMessage(0)

  end;
  Result := DefWindowProc(Win, Msg, WP, LP)
end;

BEGIN
  with wClass do
  begin
    lpszClassName:= 'CN';
    lpfnWndProc :=  @WindowProc;
    hbrBackground := 1;
    hCursor := LoadCursor(0,IDC_ARROW)
  end;
  RegisterClass(wClass);

  Win := CreateWindow(wClass.lpszClassName, 'Это очень простая программа',
    WS_OVERLAPPED or WS_SYSMENU or WS_MINIMIZEBOX or WS_VISIBLE,
    400, 300, 340, 217, 0, 0, hInstance, nil);

  Button1 := CreateWindowEx(WS_EX_STATICEDGE, 'Button', 'Выход',
    WS_VISIBLE or WS_CHILD, 264, 170, 66, 20, Win, 1001, hInstance, nil);

  while GetMessage(Msg, 0, 0, 0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg)
  end;
  Halt(Msg.wParam)
END.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Декабрь, 2010 05:55 

Зарегистрирован: Четверг, 16 Декабрь, 2010 14:09
Сообщения: 4
Тема про видео выделена: viewtopic.php?f=35&t=3079
to Пётр Кушнир: И как может помочь это видео? Вот программа, она не компилируется:
Код:
MODULE VerySimple;
 
IMPORT SYSTEM, WinApi;
 
VAR
  wClass: WinApi.WNDCLASS;
  Msg: WinApi.MSG;
  Win, Button1: WinApi.HWND;
  res: INTEGER;
  Instance: WinApi.HINSTANCE;
 
PROCEDURE WindowProc (Win, msg, WP, LP: INTEGER): INTEGER;
BEGIN
  IF msg = WinApi.WM_DESTROY THEN
     WinApi.PostQuitMessage(0);

    RETURN WinApi.DefWindowProc(Win, msg, WP, LP)
END WindowProc;
 
BEGIN
  Instance := WinApi.GetModuleHandle(NIL);
  wClass.lpszClassName := "CN";
  wClass.lpfnWndProc := WindowProc;
  wClass.hbrBackground := 1;
  wClass.hCursor := WinApi.LoadCursor(0, SYSTEM.VAL(WinApi.PtrSTR, WinApi.IDC_ARROW));
  wClass.hInstance := Instance;
    
  res := WinApi.RegisterClass(wClass);
    
  Win := WinApi.CreateWindow(wClass.lpszClassName, "Это очень простая программа",
    WS_OVERLAPPED or WS_SYSMENU or WS_MINIMIZEBOX or WS_VISIBLE,
    400, 300, 340, 217, 0, 0, Instance, nil);
    
  Button1 := WinApi.CreateWindowEx(WinApi.WS_EX_STATICEDGE, "Button", "Выход",
    WinApi.WS_VISIBLE or WinApi.WS_CHILD, 100, 100, 100, 100, 0, 0, Instance, 0);
   
  WHILE WinApi.GetMessage(Msg, 0, 0, 0) # 0 DO
    res :=  WinApi.TranslateMessage(Msg);
    res := WinApi.DispatchMessage(Msg);
  END;
  WinApi.ExitProcess(Msg.wParam)

END VerySimple.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Декабрь, 2010 06:06 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Mihal писал(а):
Вот программа, она не компилируется:
Правда?! Может быть, и сообщения об ошибках какие-то появляются? Что не понятно?

PS: Я не компилятор, но заметил, что после IF нету закрывающего END (он обязателен).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Декабрь, 2010 06:16 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Код:
MODULE VerySimple;

IMPORT SYSTEM, WinApi;

VAR
  wClass: WinApi.WNDCLASS;
  Msg: WinApi.MSG;
  Win, Button1: WinApi.HWND;
  res: INTEGER;
  Instance: WinApi.HINSTANCE;

PROCEDURE WindowProc (Win, msg, WP, LP: INTEGER): INTEGER;
BEGIN
  IF msg = WinApi.WM_DESTROY THEN
     WinApi.PostQuitMessage(0);
   END;
  RETURN WinApi.DefWindowProc(Win, msg, WP, LP)
END WindowProc;

BEGIN
  Instance := WinApi.GetModuleHandle(NIL);
  wClass.lpszClassName := "CN";
  wClass.lpfnWndProc := WindowProc;
  wClass.hbrBackground := 1;
  wClass.hCursor := WinApi.LoadCursor(0, SYSTEM.VAL(WinApi.PtrSTR, WinApi.IDC_ARROW));
  wClass.hInstance := Instance;
     
  res := WinApi.RegisterClass(wClass);
     
  Win := WinApi.CreateWindowEx({}, wClass.lpszClassName, "Это очень простая программа",
    WinApi.WS_OVERLAPPED + WinApi.WS_SYSMENU + WinApi.WS_MINIMIZEBOX + WinApi.WS_VISIBLE,
    400, 300, 340, 217, 0, 0, Instance, 0);
     
  Button1 := WinApi.CreateWindowEx(WinApi.WS_EX_STATICEDGE, "Button", "Выход",
    WinApi.WS_VISIBLE + WinApi.WS_CHILD, 100, 100, 100, 100, Win, 0, Instance, 0);
   
  WHILE WinApi.GetMessage(Msg, 0, 0, 0) # 0 DO
    res :=  WinApi.TranslateMessage(Msg);
    res := WinApi.DispatchMessage(Msg);
  END;
  WinApi.ExitProcess(Msg.wParam)

END VerySimple.

^Q DevLinker.LinkExe VerySimple.exe := VerySimple ~


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Декабрь, 2010 07:58 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Mihal писал(а):
to Пётр Кушнир: И как может помочь это видео? Вот программа, она не компилируется:
суть в том, что использовать ББ для собирания винапи-шных форм это как микроскопом гвозди вбивать. ну, конечно, я вам не указ, но форму с кнопками лично я сделаю и без этого вашего винапи. собственно видео - оно об этом. но, конечно, смотреть необязательно, у вас ведь не компилируется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Декабрь, 2010 09:31 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Mihal писал(а):
Интересует написание приложений для Win32, работа с функциями WinAPI.
Уточните, пожалуйста, более подробно, что Вам нужно. Не знаю, куда приткнуть тему.

Требуется ли WinAPI по условиям задачи?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Декабрь, 2010 15:48 

Зарегистрирован: Четверг, 16 Декабрь, 2010 14:09
Сообщения: 4
Спасибо за объяснение.

Евгений Темиргалеев, оставьте в этом разделе.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB