впечатления о версии 8.03

Раздел посвящен программированию с использованием Power Basic.
volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

впечатления о версии 8.03

Сообщение volo » 21.11.2006 (Вт) 17:10

Проверил на двух проектах, я о версии 8.03 .
Кажется работает нормально. По краней мере не наблюдал сегодня
типичных глюков.

Даже не проявилась ошибка с FPU опкодами.
Отрисовка тоже работает нормально.

Говорить о надежности еще рано, но уже есть какая-то надежда

Появилось впечатление "как бы ускоренной работы компилятора"

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 21.11.2006 (Вт) 17:20

ура! Думаю еще рано списывать PB со счетов!

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

первая проблема

Сообщение volo » 22.11.2006 (Ср) 10:14

Ну вот, обнаружилась первая проблема при неторопливом тестировании. Опять проблема с IMAGEX. Такое ощущение, что
IMAGEX это головная боль PB, да и наверное все, что связано с графикой, правда примитивы типа GRAPHIC... вряд ли буду использовать. Ошибка возникает при замене рисунка, находящегося в ресурсной DLL, с помощью CONTROL SET IMAGEX. Во всех ранних версиях все работает без сбоев. рисунок BITMAP

Код: Выделить всё
CONTROL ADD IMAGEX,...

resource from DLL-------------
    CONTROL SET IMAGEX,...
resource from DLL-------------

CONTROL SET IMAGEX,...    не работает

вчера просто не заметил это глюк

для справки:
Change the icon or bitmap displayed in an IMAGEX control. The new image is re-sized to fit the size of the control.

Syntax CONTROL SET IMAGEX hDlg, id&, newimage$

Remarks hDlg refers to the dialog that owns the control.

id& is the unique control identifier as assigned to the control with the CONTROL ADD IMAGEX statement.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 22.11.2006 (Ср) 10:20

Ну вот, обнаружилась первая проблема при неторопливом тестировании. Опять проблема с IMAGEX. Такое ощущение, что
IMAGEX это головная боль PB


Может стоит выложить этот баг на форуме powerbasic.com?
Пусть народ там тоже его протестирует

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Сообщение volo » 22.11.2006 (Ср) 10:44

jangle писал(а):
Ну вот, обнаружилась первая проблема при неторопливом тестировании. Опять проблема с IMAGEX. Такое ощущение, что
IMAGEX это головная боль PB


Может стоит выложить этот баг на форуме powerbasic.com?
Пусть народ там тоже его протестирует



Тот, "кому нужно", уже знает об этом...
Зачем народ пугать

PBDN
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 21.10.2006 (Сб) 22:10

Сообщение PBDN » 22.11.2006 (Ср) 11:23

Странно , у меня работает.
может что то не так инициализирую ?

Код: Выделить всё
#COMPILE EXE
#DIM ALL
#INCLUDE "WIN32API.INC"
'
'--------- TestImagex.rc --------
'#define IDR_PIC1 2000
'#define IDR_PIC2 2001
'
'IDR_PIC1  BITMAP smtp.bmp     //  smtp.bmp and SMAL_USA.bmp
'IDR_PIC2 BITMAP SMAL_USA.bmp  //  from folder SAMPLES
'--------------------------------
#RESOURCE "TestImagex.pbr"
'
%IDD_DIALOG1         =  101
%IDC_IMAGEX = 1001
%IDC_BUTTON = 1002
%IDR_PIC1 = 2000
%IDR_PIC2 = 2001
'
CALLBACK FUNCTION cbDLGProc()
  STATIC hWndSaveFocus, dw AS DWORD
    SELECT CASE AS LONG CBMSG
        CASE %WM_INITDIALOG
        CASE %WM_NCACTIVATE
            IF ISFALSE CBWPARAM THEN
                hWndSaveFocus = GetFocus()
            ELSEIF hWndSaveFocus THEN
                SetFocus(hWndSaveFocus):hWndSaveFocus = 0
            END IF
        CASE %WM_COMMAND
            SELECT CASE AS LONG CBCTL
                CASE %IDC_IMAGEX
                CASE %IDC_BUTTON
                    IF CBCTLMSG=%BN_CLICKED THEN
                        SELECT CASE AS LONG dw
                           CASE 0
                              CONTROL SET IMAGEX CBHNDL, %IDC_IMAGEX, "#2001"
                           CASE 1
                              CONTROL SET IMAGEX CBHNDL, %IDC_IMAGEX, "#2000"
                        END SELECT
                        dw = dw XOR 1
                    END IF
            END SELECT
    END SELECT
END FUNCTION
'---------------------------------------------------------------------
FUNCTION PBMAIN()
    LOCAL hDlg  AS DWORD
    '
    DIALOG NEW  0 , "TestImagex", 70, 70, 201, 130, %WS_POPUP OR %WS_BORDER _
        OR %WS_DLGFRAME OR %WS_CAPTION OR %WS_SYSMENU OR %WS_MINIMIZEBOX OR _
        %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_CENTER OR _
        %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_WINDOWEDGE OR _
        %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
        %WS_EX_RIGHTSCROLLBAR, TO hDlg
    CONTROL ADD IMAGEX, hDlg, %IDC_IMAGEX, "#2000", 16, 12, _
        168, 96, %WS_CHILD OR %WS_VISIBLE, %WS_EX_LEFT OR %WS_EX_LTRREADING _
        OR %WS_EX_RIGHTSCROLLBAR OR %WS_EX_STATICEDGE
    CONTROL ADD BUTTON, hDlg, %IDC_BUTTON,"Change fon",70,115,60,12
    '
    DIALOG SHOW MODAL hDlg, CALL cbDLGProc
END FUNCTION



в аттаче скомпилированый пример
(причем ЕХЕ-сжатый)
Вложения
TestImagex.zip
(59.71 Кб) Скачиваний: 153

PBDN
Обычный пользователь
Обычный пользователь
 
Сообщения: 59
Зарегистрирован: 21.10.2006 (Сб) 22:10

Сообщение PBDN » 22.11.2006 (Ср) 11:59

P.S.

а-a-a понял, из ДЛЛ...
да так не работает

Код: Выделить всё
'-----------------DLL---------------
#DIM ALL
#INCLUDE "WIN32API.INC"
'
'--------- TestImagex.rc --------
'#define IDR_PIC1 2000
'#define IDR_PIC2 2001
'
'IDR_PIC1  BITMAP smtp.bmp     //  smtp.bmp and SMAL_USA.bmp
'IDR_PIC2 BITMAP SMAL_USA.bmp  //  from folder SAMPLES
'--------------------------------
#RESOURCE "TestImagex.pbr"
'
%IDC_IMAGEX = 1001
'
SUB ControlAddImageX ALIAS "ControlAddImageX"(BYVAL hDlg AS DWORD)  EXPORT
    CONTROL ADD IMAGEX, hDlg, %IDC_IMAGEX, "#2000", 16, 12, _
        168, 96, %WS_CHILD OR %WS_VISIBLE, %WS_EX_LEFT OR %WS_EX_LTRREADING _
        OR %WS_EX_RIGHTSCROLLBAR OR %WS_EX_STATICEDGE
END SUB
'
SUB ControlSetImageX1 ALIAS "ControlAddImageX1"(BYVAL hDlg AS DWORD)  EXPORT
   CONTROL SET IMAGEX hDlg, %IDC_IMAGEX, "#2000"
END SUB
'
SUB ControlSetImageX2 ALIAS "ControlAddImageX2"(BYVAL hDlg AS DWORD)  EXPORT
   CONTROL SET IMAGEX hDlg, %IDC_IMAGEX, "#2001"
END SUB 


Код: Выделить всё
'------------------ main ---------------
#COMPILE EXE
#DIM ALL
#INCLUDE "WIN32API.INC"
'
DECLARE SUB ControlAddImageX  LIB "TestImagexDll.dll"  ALIAS "ControlAddImageX"(BYVAL hDlg AS DWORD)
DECLARE SUB ControlSetImageX1 LIB "TestImagexDll.dll" ALIAS "ControlAddImageX1"(BYVAL hDlg AS DWORD)
DECLARE SUB ControlSetImageX2 LIB "TestImagexDll.dll" ALIAS "ControlAddImageX2"(BYVAL hDlg AS DWORD)
'
%IDC_IMAGEX = 1001
%IDC_BUTTON = 1002
'
CALLBACK FUNCTION cbDLGProc()
  STATIC hWndSaveFocus, dw AS DWORD
    SELECT CASE AS LONG CBMSG
        CASE %WM_INITDIALOG
        CASE %WM_NCACTIVATE
            IF ISFALSE CBWPARAM THEN
                hWndSaveFocus = GetFocus()
            ELSEIF hWndSaveFocus THEN
                SetFocus(hWndSaveFocus):hWndSaveFocus = 0
            END IF
        CASE %WM_COMMAND
            SELECT CASE AS LONG CBCTL
                CASE %IDC_IMAGEX
                CASE %IDC_BUTTON
                    IF CBCTLMSG=%BN_CLICKED THEN
                        SELECT CASE AS LONG dw
                           CASE 0
                              ControlSetImageX2(CBHNDL)
                           CASE 1
                              ControlSetImageX1(CBHNDL)
                        END SELECT
                        dw = dw XOR 1
                    END IF
            END SELECT
    END SELECT
END FUNCTION
'---------------------------------------------------------------------
FUNCTION PBMAIN()
    LOCAL hDlg, hBMP1, hBMP2 AS DWORD
    '
    DIALOG NEW  0 , "TestImagex", 70, 70, 201, 130, %WS_POPUP OR %WS_BORDER _
        OR %WS_DLGFRAME OR %WS_CAPTION OR %WS_SYSMENU OR %WS_MINIMIZEBOX OR _
        %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_CENTER OR _
        %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_WINDOWEDGE OR _
        %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
        %WS_EX_RIGHTSCROLLBAR, TO hDlg
    ControlAddImageX(hDlg)
    CONTROL ADD BUTTON, hDlg, %IDC_BUTTON,"Change fon",70,115,60,12
    '
    DIALOG SHOW MODAL hDlg, CALL cbDLGProc
END FUNCTION


Досадно...
Volo, спасибо что сообщили про глюк

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Сообщение volo » 22.11.2006 (Ср) 12:01

PBDN писал(а):Странно , у меня работает.
может что то не так инициализирую ?


в аттаче скомпилированый пример
(причем ЕХЕ-сжатый)



Уточнюсь - ресурс с BITMAP в отдельной DLL (DLL хранит набор сменных графических оболочек с BITMAP предпросмотра)
Код: Выделить всё

описание функции смены изображения
DECLARE FUNCTION SetImage     LIB "XXXX.DLL" (BYVAL LONG, BYVAL LONG, ASCIIZ) AS LONG

установка первоначального
CONTROL ADD IMAGEX,  hDlgm, %ID_IMAGEX, "skin01", 416, 318, 120, 77,%SS_NOTIFY,  %WS_EX_CLIENTEDGE



OS_SKIN = "skin04"
вызов
CALL SetImage (hDlgm, %ID_IMAGEX, OS_SKIN)

сама функция в DLL
FUNCTION SetImage(BYVAL hWnd AS LONG, BYVAL hCtl AS LONG, hBmp AS ASCIIZ) EXPORT AS LONG
    CONTROL SET IMAGEX hWnd, hCtl, hBmp
END FUNCTION 

все параметры в DLL заходят, только толку нет (это касаемо 8.03 вер.)
в 7 работает все нормально
-----------
В обычном варианте не тестировал, возможно и работает.

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Сообщение volo » 22.11.2006 (Ср) 12:07

PBDN писал(а):P.S.

Volo, спасибо что сообщили про глюк



Всегда пожалуйста :)


Вернуться в Power Basic

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

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

    TopList