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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> процедуры на WinApi, процедуры 
:(
    Опции темы
Evghenusi
Дата 6.6.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

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



помогите ребята, не знаю уже что делать.  smile 
переписываю программу из VCL в WinApi.  smile 
проблема в том, что не знаю как осуществить некоторые процедуры:  smile  smile 

Код


procedure TForm1.FormResize(Sender: TObject);
begin
...
end;

procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
...
end;



может кто-то поможет?
PM WWW   Вверх
DragonFire
Дата 6.6.2007, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



FormResize - WM_SIZE 
ScrollBar - это VCL его на API не перепишешь)


--------------------
PM MAIL ICQ   Вверх
Riply
Дата 7.6.2007, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

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



Цитата(DragonFire @  6.6.2007,  23:00 Найти цитируемый пост)
ScrollBar - это VCL его на API не перепишешь) 

А я, наивная, полагала, что VCL на API написана  smile 

PM MAIL   Вверх
Poseidon
Дата 7.6.2007, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Цитата(Riply @  7.6.2007,  00:20 Найти цитируемый пост)
А я, наивная, полагала, что VCL на API написана 
VCL написана на VCL, знать надо  smile 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Alexeis
Дата 7.6.2007, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Ребяты унд девушки вы меня пугаете  smile Я даже с испугу в MSDN залез, и вот что нарыл :

Цитата(MSDN)
To create a scroll bar control using the CreateWindow or CreateWindowEx function specify the SCROLLBAR class, appropriate window style constants, and a combination of the following scroll bar control styles.


Добавлено через 3 минуты и 42 секунды
  Да, а события у него WM_CTLCOLORSCROLLBAR, WM_HSCROLL, WM_VSCROLL.


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

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

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


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

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



Цитата(DragonFire @ 6.6.2007,  23:00)
ScrollBar - это VCL его на API не перепишешь)

ну тогда может скажете как это осуществить

Код

...
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
form2.ScrollBar1.Position:=ScrollPos;
end;

...

procedure TForm2.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
Form1.ScrollBar1.Position:=ScrollPos;
end;
...

PM WWW   Вверх
Alexeis
Дата 7.6.2007, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Evghenusi, уже создал окно клаcа 'SCROLLBAR'?


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

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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Ну можно так можно)) Буду знать сам... 


--------------------
PM MAIL ICQ   Вверх
Evghenusi
Дата 7.6.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

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



Цитата(Alexeis @ 7.6.2007,  11:54)
Evghenusi, уже создал окно клаcа 'SCROLLBAR'?

я надеюсь ты это имел ввиду:
scrollbar1:=CreateWindowEx(0,'scrollbar',nil,WS_CHILD or SBS_HORZ or WS_VISIBLE,9,356,261,10,Wnd,3,hInstance,nil);
PM WWW   Вверх
Alexeis
Дата 7.6.2007, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Ну значит осталось обработать сообщение WM_HSCROLL это и будет аналогом TForm2.ScrollBar1Scroll


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

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

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


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

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



Цитата(Alexeis @ 7.6.2007,  20:04)
Ну значит осталось обработать сообщение WM_HSCROLL это и будет аналогом TForm2.ScrollBar1Scroll

а как именно?  smile  smile 
PM WWW   Вверх
Rouse_
Дата 7.6.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(DragonFire @  7.6.2007,  00:00 Найти цитируемый пост)
ScrollBar - это VCL его на API не перепишешь) 

Кто ж тебя так со знаниями то обидел? 
RegisterClassEx для SCROLLBAR вызывается еще при инициализации Win32 подсистемы.
Но самое хреновое, что о стилях WS_HSCROLL и WS_VSCROLL оконные элементы знали даже до изобретения VCL.


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 8.6.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(Evghenusi @  7.6.2007,  23:15 Найти цитируемый пост)
а как именно?

MSDN курить нужно smile
Код

program Project2;

uses
  Windows,
  Messages;

const g_szClassName = 'myWindowClass';

// Step 4: the Window Procedure
Procedure WndProc(wnd : HWND; msg : UINT; wParam : Integer; lParam : Integer); stdcall;
var
  spos : integer;
Begin
  case msg of
    WM_CLOSE   : DestroyWindow(wnd);
    WM_DESTROY : PostQuitMessage(0);
    WM_HSCROLL : case LOWORD(wParam) of
                   SB_LINEUP :
                   Begin
                     spos := GetScrollPos(lParam, SB_CTL);
                     Dec(spos);
                     SetScrollPos(lParam, SB_CTL, spos, TRUE);
                   End;
                   SB_LINEDOWN :
                   Begin
                     spos := GetScrollPos(lParam, SB_CTL);
                     Inc(spos);
                     SetScrollPos(lParam, SB_CTL, spos, TRUE);
                   End;
                   SB_PAGERIGHT :
                   Begin
                     spos := GetScrollPos(lParam, SB_CTL);
                     Inc(spos, 10);
                     SetScrollPos(lParam, SB_CTL, spos, TRUE);
                   End;
                   SB_PAGELEFT  :
                   Begin
                     spos := GetScrollPos(lParam, SB_CTL);
                     Dec(spos, 10);
                     SetScrollPos(lParam, SB_CTL, spos, TRUE);
                   End;
                   SB_THUMBTRACK : SetScrollPos(lParam, SB_CTL, HIWORD(wParam), TRUE);
                 end
    else DefWindowProc(wnd, msg, wParam, lParam);
  end;
end;

procedure WinMain(Instance : HMODULE; lpCmdLine : LPSTR; nCmdShow : Integer);
var
    wc  : WNDCLASSEX;
    wnd : HWND;
    Msg : TMSG;
    scrollbar1 : HWND;
    res : boolean;
    resi : integer;
    sclI : SCROLLINFO;
    iHThumb : Integer;
    iVThumb : Integer;
Begin
    //Step 1: Registering the Window Class
    wc.cbSize        := sizeof(WNDCLASSEX);
    wc.style         := 0;
    wc.lpfnWndProc   := @WndProc;
    wc.cbClsExtra    := 0;
    wc.cbWndExtra    := 0;
    wc.hInstance     := Instance;
    wc.hIcon         := LoadIcon(Instance, IDI_APPLICATION);
    wc.hCursor       := LoadCursor(Instance, IDC_ARROW);
    wc.hbrBackground := HBRUSH(COLOR_WINDOW+1);
    wc.lpszMenuName  := nil;
    wc.lpszClassName := g_szClassName;
    wc.hIconSm       := LoadIcon(Instance, IDI_APPLICATION);

    if(RegisterClassEx(wc) = 0)
    then
      Begin
        MessageBox(0, 'Window Registration Failed!', 'Error!',
            MB_ICONEXCLAMATION or MB_OK);
        exit;
      End;

    // Step 2: Creating the Window
    wnd := CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        'The title of my window',
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 440, 320,
        0, 0, Instance, nil);

    if(wnd = 0)
    then
      Begin
        MessageBox(0, 'Window Creation Failed!', 'Error!',
            MB_ICONEXCLAMATION or MB_OK);
      End;

    ShowWindow(wnd, nCmdShow);
    UpdateWindow(wnd);

    iVThumb := GetSystemMetrics(SM_CYVTHUMB);

    scrollbar1 := CreateWindowEx(0, 'SCROLLBAR', nil,
                                 WS_CHILD or WS_VISIBLE or SBS_HORZ,
                                 9,   9,
                                 261, iVThumb,
                                 Wnd, 0, Instance, nil);
    SetScrollRange(scrollbar1, SB_CTL, 0, 100, false);

    // Step 3: The Message Loop
    while(GetMessage(Msg, 0, 0, 0))
    do
      Begin
          TranslateMessage(Msg);
          DispatchMessage(Msg);
      End;
end;

begin
  WinMain(HInstance, GetCommandLine(), SW_SHOWNORMAL);
end.



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

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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

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



Rouse_, Ну перепутал скролы окна и висиэльный компонент скролбар... в след. раз буду внимательней читать представленный год.. 
Может теперь еще меня забанить попросишь? Атец наш...

Это сообщение отредактировал(а) DragonFire - 8.6.2007, 11:27


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0875 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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