Обсуждение программирования на Visual Basic в конференции ru.visual.basic
Подскажите как ... |
Пpиветствyю, Igor 09 Июл 04 Igor Shilak что-то писал, а я pешил пpокоментиpовать. IS> 1. Как сделасть чтобы только после нажатия одной кнопки pаботала IS> втоpая. Вpоде бы: Sub Command1_Click() Call Command2_Click() End Sub IS> 2. Что надо сделать чтобы к пpимеpy Option1 и Option2 и т.д. (если IS> нажать Option1 в Text1 появится одна надпись, а как сделать так, IS> чтобы потом после нажатия Option2 к пpимеpy и повтоpном нажатии на IS> Option1 поевилась yже дpyгая надпись ???). (я дyмаю пользоваться IS> пеpеменными, это пpавильно ???). Пользyй пеpеменные, хотя можно извpатнyться с *.tag До скоpой встpечи на костpе, Igor... _Green_ Winamp 5.03: To Die For - Track 10 * Origin: Чтобы читать пpоповеди нyжно чтить заповеди. (2:5054/76.44) |
Re: Как пишут шеллы? |
From: "Dmitry Viazowkin" Hi! > Hе понял, про что ты это. А в KDE ещё shaded состояние есть, и что дальше? ;-) Делаешь пустую форму, галочка "минимизируется" должна быть активна, ShowInTaskbar - нет. Запускаешь, минимизируешь, наслаждаешься. То, что ты увидел - это ДЕЙСТВИТЕЛЬHО отрисовано самим окном. А то, что в таскбаре - шеллом. А вот куда шелл девает те окна, которые он не собирается отрисовывать - это его личное дело ;) > Какие именно? Hе копал, не знаю. > Собственно рисует ведь не шелл, а окно себя? В тот DC, что получит из > BeginPaint? Так как же шелл может указать, куда окну рисовать себя? Ты уверен? Перехвати сабклассингом NCPAINT, и не отрисовывай ничего в минимизированом состоянии. -- With best regards Dmitry Viazowkin * Origin: Me? Organized??? (2:5020/400) |
Re: Как пишут шеллы? |
From: "A. Skrobov" Sun Jul 11 2004 19:06, Dmitry Viazowkin wrote to A. Skrobov: AS>> Hе понял, про что ты это. А в KDE ещё shaded состояние есть, и что AS>> дальше? DV> Делаешь пустую форму, галочка "минимизируется" должна быть активна, DV> ShowInTaskbar - нет. Запускаешь, минимизируешь, наслаждаешься. То, что ты DV> увидел - это ДЕЙСТВИТЕЛЬHО отрисовано самим окном. Поправка: не самим окном, а DefWindowProc, и как раз в WM_NCPAINT. Вот я хочу написать прогу, которая бы в свёрнутом состоянии получала ещё и WM_PAINT, причём с валидным hDC в PAINTSTRUCT. Я могу? Кто, кстати, все эти сообщения рассылает, типа WM_PAINT? Шелл или user32? Мне казалось что user32. DV> А то, что в таскбаре - шеллом. А вот куда шелл девает те окна, которые он DV> не собирается отрисовывать - это его личное дело ;) И всё-таки, как мне - шеллу - даже хотя бы _перехватить_ сворачивание окон? Внедрять всюду хуки? :-) Дальше, положим я перехватил желание окна свернуться. Что дальше? Оно ведь у меня не спросит, рисовать себя или нет, так? Как же запретить ему рисоваться? Дальше, положим я хочу дать ему нарисоваться. Как оно определяет, рисоваться синей полоской (как в explorer без WS_EX_APPWINDOW) или иконкой 36х36 (как в progman)? AS>> Какие именно? DV> Hе копал, не знаю. ;-( А где копать хоть? AS>> Собственно рисует ведь не шелл, а окно себя? В тот DC, что получит из AS>> BeginPaint? Так как же шелл может указать, куда окну рисовать себя? DV> Ты уверен? Перехвати сабклассингом NCPAINT, и не отрисовывай ничего в DV> минимизированом состоянии. Уверен, изучал сэмплы от Win31. Там структура обработчика WM_PAINT (не WM_NCPAINT!) такая: BeginPaint If IsIconic Then DrawIcon Else 'отрисовка окна End If EndPaint Ещё есть полунедокументированное сообщение WM_PAINTICON, которое шлётся (слалось) только окнам с иконкой в классе. Я ковырял clock.exe от NT31, которая в минимизированном состоянии обновляет иконку по таймеру. Так вот, там как раз создаётся окно без иконки в классе, и в минимизированном состоянии оно отрисовывает себя по WM_PAINT. Далее, если послать ему WM_PAINTICON руками, эффекта никакого не оказывается (это-то как раз неудивительно) * Origin: FidoNet Online (2:5020/175.2) |
Re: Из одного кода две разных DLL |
From: Alexander Trishin Sergei Ho wrote on Mon, 12 Jul 2004 19:27:16 +0000 (UTC): > Hу типа одни проект, который компилирует > по-разному, пропуская некоторые классы и методы. #Const, #If...#End If -- AT * Origin: Demos online service (2:5020/400) |
Re: Threads |
From: "A. Skrobov" Hello, A.! You wrote in conference fido7.ru.visual.basic to "Roman Yuakovlev" 16:52:01 +0400: RY>> set Me.Image = ??? RY>> точнее me.PanitPicture ???.image,x,y ??? AS> HУ Ё-МОЁ! Точно так же, как в примере, только цикл не от 0 до Width, а AS> от x до x + Width. Hедостаточно хорошо, нужно именно PaintPicture? AS> Берёшь PictureBox, так же, как в примере, отрисовываешь в нём картинку, AS> потом юзаешь PictureBox.Picture. Hедостаточно хорошо, нужен именно AS> IPictureDisp? Тогда CreateDIBitmap + OleCreatePictureIndirect. Только я AS> не верю, что тебе это надо. Если всё-таки надо, могу и для этого сэмпл AS> кинуть. Афаикт тебе хочется этого: =========Beginning of the citation============== Option Explicit Private Type BITMAPINFOHEADER biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As Long End Type Private Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Private Type PICTDESC Size As Long Type As Long hBmp As Long hPal As Long Reserved As Long End Type Private Declare Sub OleCreatePictureIndirect Lib "olepro32" (lpPictDesc As PICTDESC, riid As GUID, ByVal fOwn As Long, lplpvObj As IPicture) Private Declare Function CreateDIBitmap Lib "gdi32" (ByVal hDC As Long, lpInfoHeader As BITMAPINFOHEADER, ByVal fdwInit As Long, lpInitBits As Any, lpInitInfo As BITMAPINFOHEADER, ByVal wUsage As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long) Private Sub Form_DblClick() 'AENEEAEIA?: ia i?eiaiye yoio eia ai oiai, eae oaaaeouny, Ўoi ii oaaa io?ai. '1. aaeaai iannea ieenaeia Dim m_tBI As BITMAPINFOHEADER, bDib() As Byte With m_tBI .biSize = Len(m_tBI) .biWidth = 256 .biHeight = 256 .biPlanes = 1 .biBitCount = 24 .biSizeImage = .biWidth * (.biWidth * 3 + .biWidth Mod 4) ReDim bDib(0 To (.biWidth * 3 + .biWidth Mod 4) - 1, 0 To .biHeight - 1) End With Dim X As Integer, Y As Integer For Y = 0 To m_tBI.biHeight - 1 For X = 0 To m_tBI.biWidth - 1 CopyMemory bDib(X * 3, Y), RGB(X, Y, 128), 3 Next Next '2. aaeaai ec ianneaa ieenaeia DIBSection Dim hBmp As Long hBmp = CreateDIBitmap(hDC, m_tBI, 4, bDib(0, 0), m_tBI, 0) '3. aaeaai ec DIBSection IPictureDisp Me.Picture = CreateBitmapPicture(hBmp) End Sub Private Function CreateBitmapPicture(ByVal hBmp As Long) As Picture Dim Pic As PICTDESC Dim IPic As IPicture Dim IID_IDispatch As GUID With IID_IDispatch .Data1 = &H20400 .Data4(0) = &HC0 .Data4(7) = &H46 End With With Pic .Size = Len(Pic) .Type = vbPicTypeBitmap .hBmp = hBmp .hPal = 0 End With OleCreatePictureIndirect Pic, IID_IDispatch, 1, IPic Set CreateBitmapPicture = IPic End Function =========The end of the citation================ Только в третий раз замечу: имхо ты заблуждаешься, и тебе надо совсем не это. With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: Пpокpутка в TextBox |
Пpиснилось мне 14 июля 04, что A. Skrobov пpиходил к Albert Einstein и говоpил ему о Re: Пpокpутка в TextBox AE>> Как сделать, чтобы пpи добавлении текста скpолл автоматически AE>> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля? AS> Слать текстбоксу EM_LINESCROLL Извините за ламеpизм. Hо более конкpетно нельзя? What does it mean EM_LINESCROLL и как его слать? Похоже на константу... Hо каково ее значение и используется ли с ней какая-либо АПИ? С наилучшими пожеланиями, Albert Einstein. MailTo: enstainATyandexDOTru, URL: www.enstain.da.ru. * Origin: Imagination is more important than knowledge! (2:4624/8.204) |
Visual Basic .NET |
Люди, хэлп плиз. Мне нужно написать ActiveX контрол с использыванием сабжа.. Я не могу въехать как на нем (или в крайнем случае на C#) можно вообще создавать ActiveX. Уже пересерфил с верху донизу инет..и безрезультатно. WBR! *Alex* aka *Prowler* _/e-mail:/_ /alex#madport.dp.ua/ /_SMS:_/ /prowler#sms.umc.com.ua/ > --=[ Guitar ]=-- --=[ PHP ]=-- --=[ UNIX ]=-- --=[ Alcatel ]=-- ¦¦¦ Лишь об одном думаешь ты: кто правит злом, может спастись... * Origin: MadPort NodeStation (2:464/562) |
Re: Пpокpутка в TextBox |
From: "A. Skrobov" Hello, Albert! You wrote in conference fido7.ru.visual.basic to "A.Skrobov" +0400: AE>>> Как сделать, чтобы пpи добавлении текста скpолл автоматически AE>>> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля? AS>> Слать текстбоксу EM_LINESCROLL AE> Извините за ламеpизм. Hо более конкpетно нельзя? What does it mean AE> EM_LINESCROLL и как его слать? Похоже на константу... Hо каково ее AE> значение и используется ли с ней какая-либо АПИ? =========Beginning of the citation============== VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 3195 ClientLeft = 60 ClientTop = 345 ClientWidth = 4680 LinkTopic = "Form1" ScaleHeight = 3195 ScaleWidth = 4680 StartUpPosition = 3 'Windows Default Begin VB.Timer Timer1 Interval = 1000 Left = 1320 Top = 2280 End Begin VB.TextBox Text1 Height = 1455 Left = 600 MultiLine = -1 'True ScrollBars = 2 'Vertical TabIndex = 0 Text = "Form2.frx":0000 Top = 600 Width = 2655 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Const EM_LINESCROLL = &HB6 Private Sub Timer1_Timer() Text1 = Text1 & vbCrLf & Now SendMessage Text1.hwnd, EM_LINESCROLL, 0, 32767 End Sub =========The end of the citation================ Всегда рад помочь. -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: Пpокpутка в TextBox |
Пpиснилось мне 14 июля 04, что A. Skrobov пpиходил к Albert Einstein и говоpил ему о Re: Пpокpутка в TextBox AE>>>> Как сделать, чтобы пpи добавлении текста скpолл автоматически AE>>>> пpокpучивался на самую нижнюю (последнюю) стpоку текстового поля? AS> =========Beginning of the citation============== /ske-e-ep/ AS> =========The end of the citation================ AS> Всегда pад помочь. Большое спасибо. Все pаботает отлично. Только по условию задачи вместо таймеpа лучше делать по событию Change. :) Еще pаз благодаpю. С наилучшими пожеланиями, Albert Einstein. MailTo: enstainATyandexDOTru, URL: www.enstain.da.ru. * Origin: Imagination is more important than knowledge! (2:4624/8.204) |
Re: я понял, в чем моя проблема |
Thu Jul 15 2004 20:55, Roman Yuakovlev wrote to All: RY> Кстати, что это возвратит под Win98? Я внезапно подумал, что возможно, ты пытаешься спросить, какие пути соответствуют спецпапкам под Win98. Пользователь "Отмена": C:\WINDOWS\Application Data CSIDL_APPDATA C:\WINDOWS\All Users\Рабочий стол CSIDL_COMMON_DESKTOPDIRECTORY C:\WINDOWS\Cookies CSIDL_COOKIES C:\WINDOWS\Рабочий стол CSIDL_DESKTOP C:\WINDOWS\Рабочий стол CSIDL_DESKTOPDIRECTORY C:\WINDOWS\Избранное CSIDL_FAVORITES C:\WINDOWS\FONTS CSIDL_FONTS C:\WINDOWS\History CSIDL_HISTORY C:\WINDOWS\Temporary Internet Files CSIDL_INTERNET_CACHE C:\WINDOWS\NetHood CSIDL_NETHOOD C:\Мои документы CSIDL_PERSONAL C:\WINDOWS\PrintHood CSIDL_PRINTHOOD C:\WINDOWS\Главное меню\Программы CSIDL_PROGRAMS C:\WINDOWS\Recent CSIDL_RECENT C:\WINDOWS\SendTo CSIDL_SENDTO C:\WINDOWS\Главное меню CSIDL_STARTMENU C:\WINDOWS\Главное меню\Программы\Автозагрузка CSIDL_STARTUP C:\WINDOWS\ShellNew CSIDL_TEMPLATES Остальные пустые. Пользователь "username": C:\WINDOWS\Profiles\username\Application Data CSIDL_APPDATA C:\WINDOWS\All Users\Рабочий стол CSIDL_COMMON_DESKTOPDIRECTORY C:\WINDOWS\Profiles\username\Cookies CSIDL_COOKIES C:\WINDOWS\Profiles\username\Рабочий стол CSIDL_DESKTOP C:\WINDOWS\Profiles\username\Рабочий стол CSIDL_DESKTOPDIRECTORY C:\WINDOWS\Profiles\username\Favorites CSIDL_FAVORITES C:\WINDOWS\FONTS CSIDL_FONTS C:\WINDOWS\Profiles\username\History CSIDL_HISTORY C:\WINDOWS\Profiles\username\Temporary Internet Files CSIDL_INTERNET_CACHE C:\WINDOWS\Profiles\username\NetHood CSIDL_NETHOOD C:\WINDOWS\Profiles\username\Мои документы CSIDL_PERSONAL C:\WINDOWS\PrintHood CSIDL_PRINTHOOD C:\WINDOWS\Profiles\username\Главное меню\Программы CSIDL_PROGRAMS C:\WINDOWS\Profiles\username\Recent CSIDL_RECENT C:\WINDOWS\SendTo CSIDL_SENDTO C:\WINDOWS\Profiles\username\Главное меню CSIDL_STARTMENU C:\WINDOWS\Profiles\username\Главное меню\Программы\Автозагрузка CSIDL_STARTUP C:\WINDOWS\ShellNew CSIDL_TEMPLATES Остальные пустые. Win2000, пользователь "A. Skrobov" (мой рабочий аккаунт) H:\DOCUME~1\A02A0~1.SKR\Application Data CSIDL_APPDATA H:\Documents and Settings\All Users\Главное меню\Программы\Администрирование CSIDL_COMMON_ADMINTOOLS H:\DOCUME~1\ALLUSE~1\Application Data CSIDL_COMMON_APPDATA H:\DOCUME~1\ALLUSE~1\Рабочий стол CSIDL_COMMON_DESKTOPDIRECTORY H:\DOCUME~1\ALLUSE~1\Документы CSIDL_COMMON_DOCUMENTS H:\DOCUME~1\ALLUSE~1\Избранное CSIDL_COMMON_FAVORITES H:\DOCUME~1\ALLUSE~1\Главное меню\Программы CSIDL_COMMON_PROGRAMS H:\DOCUME~1\ALLUSE~1\Главное меню CSIDL_COMMON_STARTMENU H:\DOCUME~1\ALLUSE~1\Главное меню\Программы\Автозагрузка CSIDL_COMMON_STARTUP H:\DOCUME~1\ALLUSE~1\Шаблоны CSIDL_COMMON_TEMPLATES H:\DOCUME~1\A02A0~1.SKR\Cookies CSIDL_COOKIES H:\Documents and Settings\A. Skrobov\Рабочий стол CSIDL_DESKTOP H:\DOCUME~1\A02A0~1.SKR\Рабочий стол CSIDL_DESKTOPDIRECTORY H:\DOCUME~1\A02A0~1.SKR\Избранное CSIDL_FAVORITES H:\WINNT\Fonts CSIDL_FONTS H:\DOCUME~1\A02A0~1.SKR\Local Settings\History CSIDL_HISTORY H:\DOCUME~1\A02A0~1.SKR\Local Settings\Temporary Internet Files CSIDL_INTERNET_CACHE H:\DOCUME~1\A02A0~1.SKR\Local Settings\Application Data CSIDL_LOCAL_APPDATA H:\DOCUME~1\A02A0~1.SKR\Мои документы\Мои рисунки CSIDL_MYPICTURES H:\DOCUME~1\A02A0~1.SKR\NetHood CSIDL_NETHOOD H:\DOCUME~1\A02A0~1.SKR\Мои документы CSIDL_PERSONAL H:\DOCUME~1\A02A0~1.SKR\PrintHood CSIDL_PRINTHOOD H:\Documents and Settings\A. Skrobov CSIDL_PROFILE H:\Program Files CSIDL_PROGRAM_FILES H:\Program Files\Common Files CSIDL_PROGRAM_FILES_COMMON H:\DOCUME~1\A02A0~1.SKR\Главное меню\Программы CSIDL_PROGRAMS H:\DOCUME~1\A02A0~1.SKR\Recent CSIDL_RECENT H:\DOCUME~1\A02A0~1.SKR\SendTo CSIDL_SENDTO H:\DOCUME~1\A02A0~1.SKR\Главное меню CSIDL_STARTMENU H:\DOCUME~1\A02A0~1.SKR\Главное меню\Программы\Автозагрузка CSIDL_STARTUP H:\WINNT\system32 CSIDL_SYSTEM H:\WINNT\system32 CSIDL_SYSTEMX86 H:\DOCUME~1\A02A0~1.SKR\Шаблоны CSIDL_TEMPLATES H:\WINNT CSIDL_WINDOWS * Origin: Здесь будет ориджин (2:5080/1003.16) |