Страница: 1 |
Страница: 1 |
Вопрос: VB и ресурсы диалога.
Добавлено: 16.12.06 01:36
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #1
Добавлено: 16.12.06 08:14
Как пытался делать то?
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 16.12.06 14:20
Да все как в асме, говорю же. Добавил файл с ресурсом диалога, зарегал класс окна, Callback-функцию для обработки сообщений сляпал, вызываю DialogBoxParamA, а она 0 возвращает.
о... надо попробовать посмотреть результат GetLastError
Номер ответа: 3
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #3
Добавлено: 16.12.06 16:01
Вот код, который был у меня:
Declare Function DialogBoxParam Lib "user32" Alias "ialogBoxParamA" (ByVal Instance As Long, ByVal TemplateName As String, Optional Parent As Long, Optional ByVal DialogFunc As Long, Optional ByVal InitParam As Long) As Integer
Dim hInstance As Long
Dim dlgName As String
Sub Main()
Dim ret As Long
dlgName = "IALOG"
hInstance = GetModuleHandle
ret = DialogBoxParam(hInstance, dlgName, , AddressOf DlgProc)
End Sub
Function DlgProc(hWin As Long, uMsg As Long, wParam As Variant, lParam As Variant)
' тут обработчик сообщений
End Function
Номер ответа: 4
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #4
Добавлено: 16.12.06 20:42
DialogBoxParam(BYVAL GetModuleHandle("","#1000" , BYVAL %HWND_DESKTOP, BYVAL CODEPTR(cbDLG1),0)=-1 THEN MesBox "Fail"
Где "#1000" номер(ID) диалога в ресурсе
%HWND_DESKTOP = просто ByVal 0
У меня так работает
Номер ответа: 5
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #5
Добавлено: 16.12.06 21:24
что-то я не помню в vb функции CODEPTR.... не работает.
Можешь прислать этот рабочий исходник на executioner_[dog]_pisem.net?
Номер ответа: 6
Автор ответа:
mikityak
Вопросов: 23
Ответов: 237
Профиль | | #6
Добавлено: 17.12.06 12:09
Народ нащет извращения, заметил што в "MS Office" эсть
библиетеки написаные на "MS VBasic" и в них окна есть в ресурсе (топто зделаные ресурс едитор).
У миня такой вопросик а што дает што окно будет зделано таким из.. способом помню штота такое тыкал размер екзешника осталса прежним.
Номер ответа: 7
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #7
Добавлено: 17.12.06 12:27
Да чет там посылать, вот оно все
сырец:
#COMPILE EXE
#DIM ALL
#INCLUDE "win32api.inc"
#RESOURCE "CreatedViaResourсe4fora.pbr"
%IDD_DLG1 =1000
%IDC_BTN1 =1001
%IDC_STC1 =1002
'---------------------------
CALLBACK FUNCTION cbDLG1() AS LONG
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
CASE %IDC_BTN1
IF CBCTLMSG = %BN_CLICKED OR CBCTLMSG = 1 THEN
' do something
MSGBOX "Блин... работает "
END IF
END SELECT
'
CASE %WM_SYSCOMMAND
SELECT CASE (CBWPARAM AND &HFFF0)
CASE %SC_CLOSE
EndDialog (CBHNDL,0)
FUNCTION = 0
END SELECT
END SELECT
END FUNCTION
'=================
FUNCTION PBMAIN () AS LONG
'create modal dialog IDD_DLG1
IF DialogBoxParam(BYVAL GetModuleHandle("", BYVAL MAKDWD(%IDD_DLG1,0), BYVAL %HWND_DESKTOP, BYVAL CODEPTR(cbDLG1),0)=-1 THEN ? "Fail"
' или так , тоже самое
' IF DialogBoxParam(BYVAL GetModuleHandle("","#1000" , BYVAL %HWND_DESKTOP, BYVAL CODEPTR(cbDLG1),0)=-1 THEN ? "Fail"
END FUNCTION
и ресурс файл - CreatedViaResourсe4for.rc:
#define IDD_DLG1 1000
#define IDC_BTN1 1001
#define IDC_STC1 1002
#include "Resource.h"
IDD_DLG1 DIALOGEX 6,6,160,130
CAPTION "LG-via-resource"
FONT 8,"MS Sans Serif",0,0
STYLE 0x10CB0000
EXSTYLE 0x00010000
BEGIN
CONTROL "Test",IDC_BTN1,"Button",0x50010000,100,18,54,22
CONTROL "Press button for",IDC_STC1,"Static",0x50000000,100,5,54,9
END
Да самое главное - это на повер бэйсике
CODEPTR - это адрес в коде , т.е. с его помощью определяем стартовый адрес колбэковской процедуры.
Как такое на ВБ делается не знаю.
Номер ответа: 8
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #8
Добавлено: 17.12.06 12:32
Удобство дает.
Для замены размеров контролов, или новый добавить,
или текст контрола поменять, не надо по всему исходнику шарить, изменил в ресурсах и все.
Номер ответа: 9
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #9
Добавлено: 17.12.06 20:10
API-функции уж точно работают быстрее, чем встроенные функции VB. Да и приложение можно контролировать более тонко. Все сообщения перехватывать.
Номер ответа: 10
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #10
Добавлено: 17.12.06 20:12
Если честно, то я не имею даже малейшего представления о Power Basic....
Надо бы заняться, видимо...
Номер ответа: 11
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #11
Добавлено: 17.12.06 20:12
Если честно, то я не имею даже малейшего представления о Power Basic....
Надо бы заняться, видимо...
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 18.12.06 00:19
Не ну на PB понятно - #RESOURCE, а вот VB6 интересно как?
Может надо "по особому" просто компилировать вб проект?
Не ну а чё, в ассемблере ж ничего специфического нет в рес файлах, даже в самом коде ничего писать ненадо, просто правельно скомпилировать...
Номер ответа: 13
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #13
Добавлено: 18.12.06 00:34
Интересно, как?))) Я ужо как только не извращался.... Может ресурсы там как-то не так выстроены? может перестроить надо? попробую грохнуть секцию ресурсов и новую прилепить.