Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 |

 

  Вопрос: АбраКадабра в заголовке формы вместо русских букв? Добавлено: 20.01.06 04:48  

Автор вопроса:  New user
Создал балванку приложения в PB Forms 1.5 компилю в в 8 -ой версии, запускаю и вижу в заголовке формы Абракадабру вместо "Русский заголовок формы". ПОЧЕМУ?


Вот балванка -

#PBFORMS CREATED V1.50
'------------------------------------------------------------------------------
' The first line in this file is a PB/Forms metastatement.
' It should ALWAYS be the first line of the file. Other
' PB/Forms metastatements are placed at the beginning and
' end of "Named Blocks" of code that should be edited
' with PBForms only. Do not manually edit or delete these
' metastatements or PB/Forms will not be able to reread
' the file correctly. See the PB/Forms documentation for
' more information.
' Named blocks begin like this: #PBFORMS BEGIN ...
' Named blocks end like this: #PBFORMS END ...
' Other PB/Forms metastatements such as:
' #PBFORMS DECLARATIONS
' are used by PB/Forms to insert additional code.
' Feel free to make changes anywhere else in the file.
'------------------------------------------------------------------------------

#COMPILE EXE
#DIM ALL

'------------------------------------------------------------------------------
' ** Includes **
'------------------------------------------------------------------------------
#PBFORMS BEGIN INCLUDES
#IF NOT %DEF(%WINAPI)
    #INCLUDE "WIN32API.INC"
#ENDIF
#PBFORMS END INCLUDES
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
' ** Constants **
'------------------------------------------------------------------------------
#PBFORMS BEGIN CONSTANTS
%IDD_DIALOG1 = 101
#PBFORMS END CONSTANTS
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
' ** Declarations **
'------------------------------------------------------------------------------
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
#PBFORMS DECLARATIONS
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
' ** Main Application Entry Point **
'------------------------------------------------------------------------------
FUNCTION PBMAIN()
    ShowDIALOG1 %HWND_DESKTOP
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
' ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ShowDIALOG1Proc()

    SELECT CASE AS LONG CBMSG
        CASE %WM_INITDIALOG
            ' Initialization handler

        CASE %WM_NCACTIVATE
            STATIC hWndSaveFocus AS DWORD
            IF ISFALSE CBWPARAM THEN
                ' Save control focus
                hWndSaveFocus = GetFocus()
            ELSEIF hWndSaveFocus THEN
                ' Restore control focus
                SetFocus(hWndSaveFocus)
                hWndSaveFocus = 0
            END IF

        CASE %WM_COMMAND
            ' Process control notifications
            SELECT CASE AS LONG CBCTL

            END SELECT
    END SELECT
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
' ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG

#PBFORMS BEGIN DIALOG %IDD_DIALOG1->->
    LOCAL hDlg AS DWORD

    DIALOG NEW hParent, "Русский заголовок формы", 337, 207, 201, 121, _
        %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR _
        %WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME 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
#PBFORMS END DIALOG

    DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt

#PBFORMS BEGIN CLEANUP %IDD_DIALOG1
#PBFORMS END CLEANUP

    FUNCTION = lRslt
END FUNCTION
'------------------------------------------------------------------------------

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 20.01.06 05:42
Что то я кода для шрифтов у тебя не вижу. Ты вообще в дизайнере пробовал шрифты настраивать или не заметил кнопки Font. Вот там когда нажимаешь возможно набор символов стоит западноевропейский вместо кирилицы.
Если шрифтами пользоваться то PbForms создаёт примерно такой код:
    Local hFont1 As Dword
    hFont1 = PBFormsMakeFont("Times New Roman", 9, 400, %FALSE, %FALSE, _
        %FALSE, 204)
    ;Dialog  Send hDlg, %WM_SETFONT, hFont1, 0
    ;DeleteObject hFont1

Ответить

Номер ответа: 2
Автор ответа:
 New user



Вопросов: 1
Ответов: 4
 Профиль | | #2 Добавлено: 20.01.06 06:04
Добавил шрифт, но грабли продолжаются, ничче не понимаю.
...

FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG

#PBFORMS Begin Dialog %IDD_DIALOG1->->
    LOCAL hDlg AS DWORD
    LOCAL hFont1 AS DWORD

    ;DIALOG NEW hParent, "Русский заголовок формы", 323, 182, 201, 121, _
        %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR _
        %WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME 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

    hFont1 = PBFormsMakeFont("Times New Roman", 10, 400, %FALSE, %FALSE, _
        %FALSE, 204)

    ;DIALOG SEND hDlg, %WM_SETFONT, hFont1, 0
#PBFORMS End Dialog

    ;DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt

#PBFORMS Begin CleanUp %IDD_DIALOG1
    ;DeleteObject hFont1
#PBFORMS End CleanUp

    FUNCTION = lRslt
END FUNCTION

Ответить

Номер ответа: 3
Автор ответа:
 New user



Вопросов: 1
Ответов: 4
 Профиль | | #3 Добавлено: 20.01.06 06:05
А у тебя заголовок есть руский ? Я-Я?

Ответить

Номер ответа: 4
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 20.01.06 06:11
А, вспомнил, у меня тоже такая трабла была и я её так и не решил, просто озаглавил латиницей. Единственное что могу предложить, способ, известный ещё с Windows 3.x. Это прибавлять к имень шрифта окончание Cyr. Например, "Times New Roman Cyr"

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 20.01.06 06:18
Не, не фурычит. Тогда другой способ. Смотри PBFormsMakeFont, у него последний параметр lCharSet идёт 204. Что там за флаги установлены не знаю, нужно все чарсеты перебирать.

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 20.01.06 06:20
Вот блин, как на зло русская (&HCC). Значит что то другое.

Ответить

Номер ответа: 7
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #7
Добавлено: 20.01.06 06:46
Гы-гы, а ларчик то просто открывался :)
        Case %WM_INITDIALOG
            LstText="Вау, Супер!"
            ;Dialog Set Text CbHndl, LstText

Ответить

Номер ответа: 8
Автор ответа:
 New user



Вопросов: 1
Ответов: 4
 Профиль | | #8 Добавлено: 20.01.06 07:04
Точно ! Работает ! Спасибо, только мне больше нравится перед диалог шоу

    LOCAL lRslt AS LONG
    LOCAL hDlg AS DWORD
    ;DIALOG NEW hParent, "", 323, 182, 201, 121, _
        %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR %WS_CAPTION OR _
        %WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME 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 BUTTON, hDlg, %IDC_BUTTON1, "Button1", 65, 90, 65, 15

    DIALOG SET TEXT hDlg, "Русский заголовок"
    ;DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt

    FUNCTION = lRslt
END FUNCTION

Ответить

Номер ответа: 9
Автор ответа:
 New user



Вопросов: 1
Ответов: 4
 Профиль | | #9 Добавлено: 20.01.06 07:18
А теперь теже грабли с инпутбоксом, притом со всеми текстами -

FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG
     LOCAL a AS STRING
     a = INPUTBOX$("Это промт", "Это титл", "Это дефолт";)
    FUNCTION = lRslt
END FUNCTION

Ответить

Номер ответа: 10
Автор ответа:
 Sergij



Вопросов: 11
Ответов: 65
 Web-сайт: www.poffsbc.narod.ru/
 Профиль | | #10
Добавлено: 20.01.06 07:37
Свой InputBox(из форума на PB) с учетом поправок CyRax

InputBox.INC

CALLBACK FUNCTION ipb_cb
    STATIC lpText AS ASCIIZ PTR

    SELECT CASE CBMSG
        CASE %WM_USER+1 : lpText = CBWPARAM
        CASE %WM_COMMAND
        SELECT CASE LOWRD(CBWPARAM)
            CASE 1
               CONTROL GET TEXT CBHNDL, 3 TO @lpTEXT
               ;DIALOG END CBHNDL, %true
            CASE 2 : DIALOG END CBHNDL, %False
        END SELECT
    END SELECT
END FUNCTION
                   
FUNCTION MyInputbox(BYVAL hWndOwner AS LONG, BYVAL Caption AS STRING, BYVAL ButtonYes AS STRING, BYVAL ButtonNo AS STRING, BYVAL Defin AS STRING ) AS STRING
  LOCAL hDlg AS LONG, _
        result AS LONG, _
        sUSER AS ASCIIZ * 80

  ;DIALOG NEW hWndOwner, "", ,, 160, 65, %WS_BORDER TO hDlg
  CONTROL ADD TEXTBOX, hDlg, 3, Defin , 14, 12, 134, 12, 0
  CONTROL ADD BUTTON, hDlg, 1, ButtonYes, 34, 32, 40, 14, 1
  CONTROL ADD BUTTON, hDlg, 2, ButtonNo, 84, 32, 40, 14

  ;DIALOG SET TEXT hDlg, Caption
  
  CallWindowProc CODEPTR(ipb_cb), hDlg, %WM_USER+1, VARPTR(sUSER), 0
  ;DIALOG SHOW MODAL hDlg CALL ipb_cb TO result
  IF result THEN FUNCTION = sUSER

END FUNCTION


вызов из программы
sResult = MyInputbox(hDlgForm, "Введите маску...", "Ок", "Отмена", "*.dbf";)

Ответить

Номер ответа: 11
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #11 Добавлено: 20.01.06 11:58
Трабл с кирилицей в заголовке формы - это баг PB. Этот вопрос поднимал еще Матусовский в форуме powerbasic.com

Обходится он элементарно, кирилический текст устанавливается API функцией - SetWindowText

Ответить

Номер ответа: 12
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #12
Добавлено: 20.01.06 14:07
Просто InputBox врядли решается (ИМХО конечно). Можно разве что какой нибудь дурацкий вариант с потоком, ожидающим сооздания окна InputBox-а, но тогда уж проще свой InputBox нарисовать :)
Есть же кустарные STDIN/OUT для PB/WIN. Почему бы бы InputBox не сделать?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам