Обсуждение программирования на Visual Basic в конференции ru.visual.basic
Создание дистрибутива |
Я приветствую тебя Alexander! Sat Feb 14 2004 12:56, Alexander Shherbakov (2:5020/794.77) wrote to Kapaev Alex: AS> Есть такой сетапер, бесплатный, InnoSetup. С директориями умеет. AS> Зарегистрирует что покажешь. Размер - порядка мегабайта. Да, неплохой сетапер. Только он почему то под ХР при установке не всё регистрирует :( или неправельно регистрирует - может я что то не то делаю? С глубочайшим уважением Sergey * Origin: Latona (FidoNet 2:4651/18.50) |
Re[3]: Райт-клик на текстовом поле |
Добpый день\утpо\вечеp\ночь, достопочтимый Sergey ! 19 февpаля 04 Sergey Merzlikin (2:5020/400) => Максим Кнышов >> SM> В общем случае задача pешается сабклассингом текстбокса с ловлей >> SM> WM_CONTEXTMENU и "глотанием" его, т.е. для этого сообщения следует SM> сpазу >> SM> завеpшать обpаботчик, не вызывая CallWindowProc. [... малость поскипано ...] SM> Это пpостейший вид сабклассинга, множественные экземпляpы фоpмы не SM> поддеpживаются. я вот пpоще от стандаpтного меню избавился, когда своё надо было вывести: Private Sub Пpимечания_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Button And vbRightButton Then Пpимечания.Enabled = False 'избавляемся от стандаpтного меню Пpимечания.Enabled = True PopupMenu mnuPopupMyMenu End If End Sub ЗЫ хз почему TextBox так pаботает, но пеpедёpгивание .Enabled = False/True помогает ... С бестами и pегаpдами Dmitry ds [@] u-kon.ru * Origin: Hичто не слишком! (2:5015/23.70) |
Райт-клик на текстовом поле |
From: Максим Кнышов Привет Dmitry! DS> ЗЫ хз почему TextBox так pаботает, но пеpедёpгивание .Enabled = False/True помогает ... Тоже хорошая идея... -- •>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<• Максим Кнышов [ knyshow#mail.dsip.net ] [ gbu.dvostok.com ] •>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<• Последняя версия программы Golden BackUp ( gbu.dvostok.com ) - 0.0.188 Beta 9 •>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<• * Origin: КПКП "Транс Агентство" (2:5020/400) |
Упал... в унитаз упал |
From: Mike Hа компьютере (Windows 2000 SP4 и Visual Basic 6.0 SP5) имеется несколько приложений на Бэйсике, еще месяц назад отлаженных, откомпилированных и благополучно забытых. И вот пару дней назад понадобилось их открыть и чего-то там поменять. Hо с одним из них творится странное: открываем проект, запускаем его прямо из VB, и сразу же выдается: VB6.EXE - Application Error The instruction at "0x********" referenced memory at "0x********". The memory could not be "written". Click on OK to terminate the program Click on CANCEL to debug the program и Бэйсик вылетает к чертовой бабушке. Один коллега сказал, что иногда такое бывает, если при запуске не открыта ни одна форма. Открыл форму, запустил - то же самое. Открыл две формы, три - не помогло. Запуск Trace Into, Step Over или Start with full compile дает тот же эффект. Hо если сделать File->Make и запустить полученный экзешничек, то все проходит нормально. Все это только в одном VB-приложении - запуск из VB любого другого проекта происходит нормально. В то же время на другой машине (Win 2000 SP3 и VB 6.0 SP5) и этот проект запускается без проблем. Подскажите, пожалуйста, как бороться - не хочется из-за этого винды переставлять. -- Best regards (M)ike При ответе на e-mail убрать из адреса NOS * Origin: Best antimagic/antiUFO cure: skeptik.net (2:5020/400) |
.NET Х Win32 |
оПХБЕРЯРБСЧ! я ОКЮРТHПЛHИ .NET ДЕК МЕ ХЛЕК. мH ОЮПС ВЕКHБЕЙ СРБЕПФДЮКХ, ВРH Б VS7 ЛHФМH ОHКСВХРЭ МHПЛЮКЭМШИ exeЬМХЙ ОHД Win32. бВЕПЮ ОHЯРЮБХК VS7, МH ОHКСВХРЭ exeЬМХЙ ОHД Win32 ОHКСВХКHЯЭ РHКЭЙH МЮ C++. бЮЯХЙ Х C# ОПЕДКЮЦЮЧР РHКЭЙH ОHД .NET. цДЕ ЯHАЮЙЮ ГЮПШРЮ? юМДПЕИ. * Origin: Zenon N.S.P. news server (2:5020/52.0) |
Еще раз .NET Х Win32 (Пардон за кодировку) |
Приветствую! С платформой .NET дел не имел. Hо пару человек утверждали, что в VS7 можно получить нормальный exeшник под Win32. Вчера поставил VS7, но получить exeшник под Win32 получилось только на C++. Васик и C# предлагают только под .NET. Где собака зарыта? Андрей. * Origin: Zenon N.S.P. news server (2:5020/52.0) |
Re[3]: Райт-клик на текстовом поле |
From: "Sergey Merzlikin" > > SM> В общем случае задача решается сабклассингом текстбокса с ловлей > SM> WM_CONTEXTMENU и "глотанием" его, т.е. для этого сообщения следует сразу > SM> завершать обработчик, не вызывая CallWindowProc. > > Вот сабклассинг - мое слабоеместо. семпл есть? В простейшем виде это выглядит так: создаем проект Standard EXE, на Form1 добавляем текстбокс Text1. Создаем меню mnu1, снимаем ему галку Visible, добавляем ему произвольное подменю. Код формы: Option Explicit Private Sub Form_Load() ' Включение сабклассинга pWndProc = SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf TxtProc) End Sub Private Sub Form_Unload(Cancel As Integer) ' Выключение сабклассинга SetWindowLong Text1.hWnd, GWL_WNDPROC, pWndProc End Sub Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Text1.SetFocus PopupMenu mnu1 End Sub Добавляем стандартный модуль. Код модуля: Option Explicit Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _ (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Const GWL_WNDPROC = -4& Private Const WM_CONTEXTMENU = &H7B& Public pWndProc As Long 'Сохраненный адрес прежней оконной процедуры Public Function TxtProc(ByVal hWnd As Long, ByVal uMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long ' Hовая оконная процедура - она ловит все сообщения окна Select Case uMsg Case WM_CONTEXTMENU ' Система вызвала контекстное меню - ничего делать не надо, ' просто вернуть 0 Case Else ' Для остальных сообщений нужно вызвать прежнюю ' оконную процедуру и вернуть ее результат TxtProc = CallWindowProc(pWndProc, hWnd, uMsg, wParam, lParam) End Select End Function Это простейший вид сабклассинга, множественные экземпляры формы не поддерживаются. -- Сергей Мерзликин www.smsoft.ru/ru/ * Origin: Sovintel (2:5020/400) |
Threading... |
From: "A. Skrobov" Tue Feb 24 2004 23:53, Savelov Anton wrote to All: SA> Есть вопрос .... написал я прогу в ней создаю отдельный процесс SA> для функции с помощью: CreateEvent и CreateThread, Процессы и нити, кстати, - разные вещи. SA> но столкнулся с проблемой, а как этот процесс выгрузить? SA> Пробывал ExitThread и TerminateThread, но в итоге выгружается SA> вся прога :( (или зависает) SA> Может кто подскажет как тут быть? (можно с примером, plzzz) Вообще же, посмотри здесь: www.jasonbock.net/vbthread.html www.freevbcode.com/ShowCode.asp?ID=1287 * Origin: FidoNet Online (2:5020/175.2) |
Re: Многоязыковая поддержка... |
From: Alexander Asyabrik Привет, Artem. Вы, было дело, писали, 2:28 25.02.04: AP> Обpащаясь с вопоpосом ко всем: AP> Уже не один pаз встpечаю коммеpческие многоязыковые пpогpаммы, в котоpых AP> есть диpектоpия Languages, а в ней файлы типа russian.lng, english.lng и AP> так далее. AP> Откpыв этот файл видим пpостой список типа: AP> &Файл AP> &Hовый AP> &Откpыть AP> и т.д. AP> Пеpвое, что пpиходит на yм, откpыть файл как текст, pазбить по стpокам, AP> split и в массив их. AP> Hо это означает, что все меню и вообще все текстовые сообщения в пpогpамме AP> пpидется yказывать как: AP> myLable1.Caption = lngArray(123) ' и томy подобное. AP> А это же гемоppой жyткий. И пpямой пyть к ошибкам, пеpепyтанным стpокам... А попробуй-ка теперь вот перепутать: Public Enum Mesages msg_myLable1Caption = 1 msg_myLable1ToolTipText = 2 ........................ msg_CantOpenFile = 666 ' etc... End Enum Public Function GetMesage(index As Mesages) As String GetMesage = lngArray(index) End Function Public Sub SetLanguage(LangFile As String) 'Bla-Bla, сам напишешь код myLable1.Caption = GetMesage(msg_myLable1Caption) myLable1.ToolTipText = GetMesage(msg_myLable1ToolTipText) 'etc... End Sub Private Sub Command1_Click() If GetFile(FileToOpen) = False Then MsgBox GetMesage(msg_CantOpenFile) & FileToOpen, vbCritical End If End Sub -- Alexander * Origin: Talk.Mail.Ru (2:5020/400) |
Создание дистрибутива |
Я приветствую тебя Alexander! Sat Feb 14 2004 12:56, Alexander Shherbakov (2:5020/794.77) wrote to Kapaev Alex: AS> Есть такой сетапер, бесплатный, InnoSetup. С директориями умеет. AS> Зарегистрирует что покажешь. Размер - порядка мегабайта. Да, неплохой сетапер. Только он почему то под ХР при установке не всё регистрирует :( или неправельно регистрирует - может я что то не то делаю? С глубочайшим уважением Sergey * Origin: Latona (FidoNet 2:4651/18.50) |