глюк или оптический обман

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

глюк или оптический обман

Сообщение volo » 25.12.2006 (Пн) 9:30

Давно наблюдаю некоторый глюк или оптический обман, но более детально обратил внимание вчера. Проверил на 7 и на 8.03 версии - одинаково.


При использовании:
CONTROL SET SIZE ...

не много деформируется размер контрола по вертикали. Раньше казалось "синхронизация монитора" глючит, пока не присмотрелся детальнее. Проявления глюка не столь проблематичны.

Предполагаю, возможно глюк будет виден не у всех.
См пример, разница вертикального размера тексбоксов.
Это же касается и кнопок.
Локализовать последствия глюка можно применив превентивное
использование " CONTROL SET SIZE" для всех контролов, чьи
размеры будут меняться впоследствии

Код: Выделить всё
#COMPILE EXE
#DIM ALL
#INCLUDE "win32api.inc"

GLOBAL hdlgM AS LONG

FUNCTION PBMAIN () AS LONG

      DIALOG NEW 0,"",,,400,200,%DS_3DLOOK OR %WS_POPUPWINDOW OR %WS_BORDER OR %WS_CAPTION TO hdlgM
      DIALOG SET COLOR hdlgM, %BLACK, RGB(0,0,127)
      CONTROL ADD TEXTBOX, hdlgm, 100, "test", 10,20,100,12, %SS_SUNKEN
      CONTROL ADD TEXTBOX, hdlgm, 101, "test", 111,20,100,12,%SS_SUNKEN
      CONTROL SET SIZE hdlgm,101,100,12

      DIALOG SHOW MODAL hdlgM

END FUNCTION                     


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

Сообщение jangle » 25.12.2006 (Пн) 9:36

У меня вот, что выходит
Вложения
1.JPG
1.JPG (8.61 Кб) Просмотров: 2281

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

Сообщение volo » 25.12.2006 (Пн) 10:36

jangle писал(а):У меня вот, что выходит


... значит все таки подглюковывает.


Ладно, походу дела возник вопрос, может кто сталкивался
с аналогами либо подобием чипов MCM20027 - 1280 x 1024 пикселов, 10fps наружу, выход в цифре, глубина по цвету каждого сенсора - 10бит.

(смежники мозги пудрят, приходится ковырятся самостоятельно).

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

Сообщение jangle » 25.12.2006 (Пн) 14:38

... значит все таки подглюковывает.


PB глючит? Очередной баг с графикой?

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 25.12.2006 (Пн) 21:11

Проверил еще раз, но использую CALLBACK ф-цию, никаких глюков нет. В примере выше наблюдаемый эффект наверно связан с неправильной устновкой размера элемента до показа диалога.

А зачем менять размер контрола сразу после его создания и до показа диалога? Как то "не эффективно" выглядит...

Этот кусок кода работает на ура. Никаких глюков.
Код: Выделить всё
CASE %WM_COMMAND
            ' Process control notifications
            SELECT CASE AS LONG CBCTL
                CASE %IDC_TEXTBOX1

                CASE %IDC_TEXTBOX2

                CASE %IDC_BUTTON1
                    IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
                       CONTROL SET SIZE CBHNDL, 1002,100, 12
                    END IF

            END SELECT     


Можно также твой код проверить, переписав все на VC6.

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

Сообщение volo » 25.12.2006 (Пн) 22:11

Dark Machine писал(а):Проверил еще раз, но использую CALLBACK ф-цию, никаких глюков нет. В примере выше наблюдаемый эффект наверно связан с неправильной устновкой размера элемента до показа диалога.

А зачем менять размер контрола сразу после его создания и до показа диалога? Как то "не эффективно" выглядит...

Этот кусок кода работает на ура. Никаких глюков.
Код: Выделить всё
CASE %WM_COMMAND
            ' Process control notifications
            SELECT CASE AS LONG CBCTL
                CASE %IDC_TEXTBOX1

                CASE %IDC_TEXTBOX2

                CASE %IDC_BUTTON1
                    IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
                       CONTROL SET SIZE CBHNDL, 1002,100, 12
                    END IF

            END SELECT     


Можно также твой код проверить, переписав все на VC6.



В принципе конечно пример не отражает реально выполняемой задачи, пример отражает только глюк.

Если касаемо задачи, то например - есть рядом стоящие кнопки,
которые по тому или иному условию меняют размер (больше-возврат) либо позицию (от требований задачи) и получается, что те кнопки что остались без изменений имеют "несколько другой размер".

Наверное глюк связан с первоначльным неправильным расчетом
размера UNITS для контрола.

смотрим пример и изменение контрола №102

Код: Выделить всё
#COMPILE EXE
#DIM ALL
#INCLUDE "win32api.inc"

GLOBAL hdlgM AS LONG

CALLBACK FUNCTION dlgproc () AS LONG
    SELECT CASE CBMSG
        CASE %WM_COMMAND
            ' Process control notifications
            SELECT CASE CBCTL
                CASE 500
                    IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
                       CONTROL SET SIZE CBHNDL, 102,100,12
                       MSGBOX "Ok"
                    END IF

            END SELECT
    END SELECT
END FUNCTION
                                   

FUNCTION PBMAIN () AS LONG

      DIALOG NEW 0,"",,,400,200,%DS_3DLOOK OR %WS_POPUPWINDOW OR %WS_BORDER OR %WS_CAPTION TO hdlgM
      DIALOG SET COLOR hdlgM, %BLACK, RGB(0,0,127)
      CONTROL ADD TEXTBOX, hdlgm, 100, "test", 10,20,100,12, %SS_SUNKEN
      CONTROL ADD TEXTBOX, hdlgm, 101, "test", 111,20,100,12,%SS_SUNKEN
      CONTROL ADD TEXTBOX, hdlgm, 102, "test", 212,20,100,12,%SS_SUNKEN
      CONTROL SET SIZE hdlgm,101,100,12
      CONTROL ADD BUTTON,  hdlgM, 500, "test", 50,50,50,20

      DIALOG SHOW MODAL hdlgM CALL dlgproc

END FUNCTION



по моему контрол № 103 увеличился, либо у меня зрение уже "упало"
Ладно об этом можно дискутировать. Что касаемо установки контролов до показа, возвратимся к документации:

[i]
FUNCTION PBMAIN() AS LONG

LOCAL hDlg AS DWORD
LOCAL lResult AS LONG

' ** Create a new dialog template
DIALOG NEW 0, "What is your name?", ,, 160, 50, 0, 0 TO hDlg

' ** Add controls to it
CONTROL ADD TEXTBOX, hDlg, %IDTEXT, "", 14, 12, 134, 12
CONTROL ADD BUTTON, hDlg, %IDOK, "OK", 34, 32, 40, 14, %BS_DEFAULT OR %WS_TABSTOP CALL OkButton
CONTROL ADD BUTTON, hDlg, %IDCANCEL, "Cancel", 84, 32, 40, 14 CALL CancelButton

' ** Display the dialog
DIALOG SHOW MODAL hDlg TO lResult
[i]


...
Тяжелый день - понедельник

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 25.12.2006 (Пн) 22:26

Перепроверил еще раз: Есть глюк при расчете UNITs.
Если заменить высоту с 12-ти на 13, то все правильно считается....

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

Сообщение volo » 25.12.2006 (Пн) 22:32

Dark Machine писал(а):Перепроверил еще раз: Есть глюк при расчете UNITs.
Если заменить высоту с 12-ти на 13, то все правильно считается....


А, мать их так, закроем глаза на этот глюк. :)


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

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

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

    TopList