IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Панель инструментов средствами Win API CreateWindowEx
IKh
сообщение 9.10.2011 7:30
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Здравстуйте.

Объясните пожалуйста, можно ли создать панель инструментов в окне прииложения созданного на Delphi средствами Win API - CreateWindowEx.

В описании говориться, что для создания панели инструментов без кнопок можно использовать функцию CreateWindowEx указывая имя класса окна TOOLBARCLASSNAME.

Подскажите как можно это сделать в приложении на Delphi.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 24.10.2011 17:25
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Не воспроизводится (WinXP SP3 + Dephi2009/FPC 2.4.4, проверял окном GetOpenFileName, тягал его во все стороны - не получилось добиться артефактов). Можешь прикрепить минимальный тестовый проект (просто отрисовка главного окна с надписью + запрос имени файла), который воспроизводит проблему? Чтоб можно было откомпилировать, запустить и посмотреть, есть ли проблема, и как от нее избавиться.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IKh
сообщение 25.10.2011 0:16
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Цитата(IUnknown @ 24.10.2011 23:25) *

Не воспроизводится (WinXP SP3 + Dephi2009/FPC 2.4.4, проверял окном GetOpenFileName, тягал его во все стороны - не получилось добиться артефактов). Можешь прикрепить минимальный тестовый проект (просто отрисовка главного окна с надписью + запрос имени файла), который воспроизводит проблему? Чтоб можно было откомпилировать, запустить и посмотреть, есть ли проблема, и как от нее избавиться.


Вот текст, оставил отрисовку окна с надписью и вызов диалогового окна.

program test;

uses
CommCtrl,
ComCtrls,
CommDlg,
Messages,
Windows;

const
AppName ='Упражнение';

var
MainWnd: HWND;
WindowClass: TWndClass;
OpnSvFileStr: TOpenFileName;
FilePath : array [0..260] of Char = '';
FileName : array [0..260] of Char = '';
PaintStruct: TPaintStruct;
Msg: TMsg;
DevCon: HDC;

function WindowProc(hwnd:HWND; uMsg:UINT; wPARAM:WPARAM; lPARAM:LPARAM):LongInt;
stdcall;
begin
WindowProc := 0;
case uMsg of
WM_DESTROY:
begin
PostQuitMessage(0);
exit;
end;
WM_PAINT:
begin
{Прорисовка окна}
DevCon := BeginPaint(hwnd, PaintStruct);
DrawText(DevCon,PChar('Заготовка'),-1,PaintStruct.rcPaint,
DT_SINGLELINE or DT_CENTER or DT_VCENTER);
EndPaint(hwnd, PaintStruct);
end;
end;
WindowProc := DefWindowProc(hwnd, uMsg, wPARAM, lPARAM);
end;

begin

ZeroMemory(@WindowClass, SizeOf(WindowClass));
with WindowClass do
begin
Style := cs_HRedraw or cs_VRedraw;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := 0;
hIcon := LoadIcon (0, IDI_Application);
hCursor := LoadCursor (0, IDC_Arrow);
hbrBackground := GetStockObject(WHITE_BRUSH);
lpszMenuName := '';
lpszClassName := AppName;
end;

if InitCommonControl(ICC_BAR_CLASSES) = False then halt;

If RegisterClass(WindowClass) = 0 then Halt;
MainWnd := CreateWindowEx(WS_EX_DLGMODALFRAME or WS_EX_WINDOWEDGE,AppName,
'Упражнение',WS_OVERLAPPEDWINDOW or WS_HSCROLL
or WS_VSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,0,0,HInstance,nil);
ShowWindow(MainWnd,SW_SHOW);

ZeroMemory(@OpnSvFileStr, SizeOf(OpnSvFileStr));
with OpnSvFileStr do
begin
lStructSize := SizeOf(OpnSvFileStr);
hwndOwner := MainWnd;
lpstrFilter := 'Файлы bmp'#0'*.bmp'#0'Файлы JPEG'#0'*.jpeg'#0#0;
lpstrCustomFilter := nil;
lpstrFile := FilePath;
nMaxFile := SizeOf(FilePath);
lpstrFileTitle := FileName;
nMaxFileTitle := SizeOf(FileName);
lpstrInitialDir := nil;
Flags := OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST;
end;

getopenfilename(OpnSvFileStr);

while GetMessage (Msg,0,0,0) do
begin
TranslateMessage (Msg);
DispatchMessage (Msg);
end;

Halt (Msg.wParam);
end.


Результат тот же самый:
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 10:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"