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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.12.2012, 12:20
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию Создание ListBox WinAPI

Код:
Код:
program JustProgram;

uses
  Windows, Messages;

var
  WC: TWndClassEx;
  Wnd: HWND;
  Msg: TMsg;

const
  WndClass = 'TWindow';
  WndCaption = 'Just Program';

{$R *.res}

function WindowProc(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM):
  LRESULT; stdcall;
begin
  // Обработка сообщений
  case Msg of
    // Сообщение при закрытии формы
    WM_DESTROY:
      begin
        // Запрос на закрытие
        PostQuitMessage(0);
        // Отрицательный результат
        Result := 0;
        // Завершаем процедуру
        Exit
      end;
  else
    // Положительний результат
    Result := DefWindowProc(Wnd, Msg, wParam, lParam)
  end;
end;

begin
  // Производим действия над TWndClassEx
  with WC do
  begin
    cbSize := SizeOf(WC);
    // Перериовывание при изменении размера формы
    style := CS_HREDRAW or CS_VREDRAW;
    // Присваиваем адресс процедуры
    lpfnWndProc := @WindowProc;
    cbClsExtra := 0;
    cbWndExtra := 0;
    hInstance := hInstance;
    // Иконка
    hIcon := LoadIcon(0, IDI_APPLICATION);
    // Курсор
    hCursor := LoadCursor(0, IDC_ARROW);
    // Фон формы
    hbrBackground := COLOR_WINDOW;
    // Указатель на главное меню
    lpszMenuName := nil;
    // Имя класса
    lpszClassName := WndClass;
  end;

  // Регистрируем класс
  RegisterClassEx(WC);
  // Создаем форму с заданными параметрами
  Wnd := CreateWindowEx(0, WndClass, WndCaption, WS_OVERLAPPEDWINDOW, 250, 60,
    300, 100, 0, 0, hInstance, nil);
  // Отображаем форму
  ShowWindow(Wnd, SW_SHOWNORMAL);

  ListBox := CreateWindowEx(WS_EX_CLIENTEDGE, 'ListBox', '',
    WS_CHILD or WS_VISIBLE or LBS_EXTENDEDSEL, 120, 40, 121, 97, WND, 0,
      hInst, nil);
  SendMessage(ListBox, WM_SETFONT, hFont, 0);

  // Обработка сообщений
  while GetMessage(Msg, 0, 0, 0) do
  begin
    // Транслирование сообщений
    TranslateMessage(Msg);
    // Посылаем сообщения оконной процедуре
    DispatchMessage(Msg);
  end;

  // Завершение приложения
  Halt(Msg.wParam);
end.
Но ругается на ListBox, подскажите как его объявить?..
Ответить с цитированием
  #2  
Старый 02.12.2012, 12:33
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
  CreateWindowEx(WS_EX_CLIENTEDGE, 'ListBox', '',
    WS_CHILD or WS_VISIBLE or LBS_EXTENDEDSEL, 120, 40, 121, 97, AWnd, 0,
    HInstance, nil);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
sariman (02.12.2012)
  #3  
Старый 02.12.2012, 12:34
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

ListBox: THandle
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
sariman (06.12.2012)
  #4  
Старый 02.12.2012, 12:59
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Спасибо, а как сделать alBottom? В VCL такое без проблем, а в WinAPI как?
Ответить с цитированием
  #5  
Старый 02.12.2012, 13:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

SetWindowPos\MoveWindow
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
sariman (02.12.2012)
  #6  
Старый 02.12.2012, 13:17
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Код:
CreateWindowEx(WS_EX_CLIENTEDGE, 'ListBox', '', WS_CHILD or WS_VISIBLE or
    LBS_EXTENDEDSEL, 120, 40, 121, 97, Wnd, 0, HInstance, nil);
SetWindowPos(Wnd, HWND_BOTTOM, 0, 0, 0, 0, 0);
А как передать параметр именно ListBox'у?
Ответить с цитированием
  #7  
Старый 02.12.2012, 13:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

нельзя передать то, чего нет.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter