CreateHatchBrush - как подключить?
Модератор: Модераторы
CreateHatchBrush - как подключить?
Добрый день, коллеги!
Пытаюсь применить привычную для делфей конструкцию:
SelectObject(hWnd, CreateHatchBrush(BrushStyle, BrushColor));
Но компилятор не находит CreateHatchBrush. Подскажите пожалуйста как быть?
Пытаюсь применить привычную для делфей конструкцию:
SelectObject(hWnd, CreateHatchBrush(BrushStyle, BrushColor));
Но компилятор не находит CreateHatchBrush. Подскажите пожалуйста как быть?
-
Павел Ишенин
- постоялец
- Сообщения: 475
- Зарегистрирован: 24.03.2007 09:16:52
Uses LCLIntf. А если на windows, то Uses Windows.
Добавлено спустя 38 секунд:
Может SelectObject(hDC, CreateHatchBrush(BrushStyle, BrushColor));
Добавлено спустя 38 секунд:
SelectObject(hWnd, CreateHatchBrush(BrushStyle, BrushColor));
Может SelectObject(hDC, CreateHatchBrush(BrushStyle, BrushColor));
Спасибо за Ваш отклик. Раскрою свой вопрос подробнее:
Модуль LCLIntf подключен. Но не находится именно CreateHatchBrush - возможно с этим методом какая другая библиотека - или метод не реализован... или не подключен...?
Модуль LCLIntf подключен. Но не находится именно CreateHatchBrush - возможно с этим методом какая другая библиотека - или метод не реализован... или не подключен...?
sergant
Попробуйте контекстный поиск...
Клянусь своей треуголкой, что эта функция благополучно объявлена, причём для Windows она объявлена именно в модуле Windows. 
Скажите для начала, Вы в какой ОС работаете?
Попробуйте контекстный поиск...
Скажите для начала, Вы в какой ОС работаете?
сижу под Windows XP пишу под Windows CE
Объявлены все модули, менял их местами на всякий случай...
uses
LResources, Forms, Classes, Windows, Types, SysUtils, Controls, Graphics, ExtCtrls, Math, LCLType, LCLIntf;
Загвоздка только в этом методе - CreateHatchBrush. Искал по лазарусу на вхождение CreateHatchBrush в какой нить файл. Метод объявлен в файле Func.inc.
Но как его подключить в проект?
В windows.ppu тоже есть - но это видимо скомпиленный файл - типа dcu в дельфях... А аналога pas файла где этот CreateHatchBrush объявлен нет.
Но даже если и windows.ppu - то почему тогда не подхватывается? Пишет: Error: Identifier not found "CreateHatchBrush".
FPC 2.3.1
Версия #: 0.9.29 бета
Объявлены все модули, менял их местами на всякий случай...
uses
LResources, Forms, Classes, Windows, Types, SysUtils, Controls, Graphics, ExtCtrls, Math, LCLType, LCLIntf;
Загвоздка только в этом методе - CreateHatchBrush. Искал по лазарусу на вхождение CreateHatchBrush в какой нить файл. Метод объявлен в файле Func.inc.
Но как его подключить в проект?
В windows.ppu тоже есть - но это видимо скомпиленный файл - типа dcu в дельфях... А аналога pas файла где этот CreateHatchBrush объявлен нет.
Но даже если и windows.ppu - то почему тогда не подхватывается? Пишет: Error: Identifier not found "CreateHatchBrush".
FPC 2.3.1
Версия #: 0.9.29 бета
Когда Вы подключаете модуль в строке Uses, то компилятор сначала ищет именно файл .ppu, потом сравнивает его с иходным кодом (файл .pas с тем же именем) и если время-дата у обоих файлов совпадает, то добавляются функции из .ppu файла, если не совпадают, то сначала компилируется подключаемый модуль.
1. Для начала тем же контекстным поиском проверьте есть ли в Вашем windows.ppu эта функция.
2. Попробуйте поставить модуль Windows на первое место.
3. Проверьте в меню "Окружение - Параметры", правильно ли у Вас написан путь к компилятору FPC ("Путь к компилятору (fpc.exe)").
4. Проверьте, есть ли по этому рядом с файлом компилятора fpc.exe файл его настроек - fpc.cfg.
5. Проверьте в файле fpc.cfg, есть ли опция задающая путь, где искать модули самого fpc, которые он должен подключать к Вашей программе. Например, у меня это:
-FuD:\progs\fpc22/units/i386-win32/rtl
-FuD:\progs\fpc22/units/i386-win32/*
6. Проверьте, по этому ли пути, который указан в файле fpc.cfg, лежит Ваш модуль windows.ppu.
sergant писал(а):Но даже если и windows.ppu - то почему тогда не подхватывается? Пишет: Error: Identifier not found "CreateHatchBrush".
1. Для начала тем же контекстным поиском проверьте есть ли в Вашем windows.ppu эта функция.
2. Попробуйте поставить модуль Windows на первое место.
3. Проверьте в меню "Окружение - Параметры", правильно ли у Вас написан путь к компилятору FPC ("Путь к компилятору (fpc.exe)").
4. Проверьте, есть ли по этому рядом с файлом компилятора fpc.exe файл его настроек - fpc.cfg.
5. Проверьте в файле fpc.cfg, есть ли опция задающая путь, где искать модули самого fpc, которые он должен подключать к Вашей программе. Например, у меня это:
-FuD:\progs\fpc22/units/i386-win32/rtl
-FuD:\progs\fpc22/units/i386-win32/*
6. Проверьте, по этому ли пути, который указан в файле fpc.cfg, лежит Ваш модуль windows.ppu.
Все сделал - проверил. Результата нет. Возможно дело в том, что я еще только вникаю в Лазарус. Но странные вещи есть.
C:\lazarus\fpc\2.3.1\units\i386-win32\rtl\widows.ppu - найден
а вот файла windows.pas нет нигде. Возможно поэтому CreateHatchBrush и не находится. Хотя в windows.ppu CreateHatchBrush есть. По крайней мере по поиску слово находится.
Ставил следующие пакеты:
Lazarus-0.9.29-21533-fpc-2.3.1-20090902-win32.exe
Lazarus-0.9.29-21533-fpc-2.3.1-20090902-cross-arm-wince-win32.exe
Может быть нужно было еще что-то поставить - пакет с pas файлами какойнибудь? где был бы этот windows.pas...
C:\lazarus\fpc\2.3.1\units\i386-win32\rtl\widows.ppu - найден
а вот файла windows.pas нет нигде. Возможно поэтому CreateHatchBrush и не находится. Хотя в windows.ppu CreateHatchBrush есть. По крайней мере по поиску слово находится.
Ставил следующие пакеты:
Lazarus-0.9.29-21533-fpc-2.3.1-20090902-win32.exe
Lazarus-0.9.29-21533-fpc-2.3.1-20090902-cross-arm-wince-win32.exe
Может быть нужно было еще что-то поставить - пакет с pas файлами какойнибудь? где был бы этот windows.pas...
Последний раз редактировалось sergant 07.09.2009 14:07:50, всего редактировалось 1 раз.
sergant писал(а):nwidows.ppu
Это нечто, науке неизвестное...
Я с WinCE не знаком, может там так и называется, но что-то у меня сомнения по этому поводу.
Извините ошибся в буковке - конечно же windows.ppu (предыдущий свой пост исправил для дальнейшего правильного восприятия)
Ха, всё понятно. Скачал я только что этот самый cross-arm-wince, так там действительно эта функция отсутствует в принципе. Видимо это какая то особенность WinCE. Так что или замените эту функцию на аналогичную, но существующую, либо подайте в суд на Билла Гейтса. 
Добавлено спустя 4 минуты:
Исходник, т.е. windows.pas, надо брать отсюда:
ftp://ftp.freepascal.org/pub/fpc/snapshot/v23/source/fpc.zip
Это исходники для всех платформ, поэтому найдите в нём каталог WinCE и там будут лежать pas-файлы для WinCE, в том числе и Windows.pas.
Добавлено спустя 4 минуты:
Исходник, т.е. windows.pas, надо брать отсюда:
ftp://ftp.freepascal.org/pub/fpc/snapshot/v23/source/fpc.zip
Это исходники для всех платформ, поэтому найдите в нём каталог WinCE и там будут лежать pas-файлы для WinCE, в том числе и Windows.pas.
В WinCE данная функция неподдерживается
Ясно - спасибо за помощь. Тогда в заключение темы вопрос - какой заменить? Или заливки вообще кроме сплошной не поддерживаются?
Как всегда читаем MSDN http://msdn.microsoft.com/en-us/library/aa922171.aspx
