VBNet
VBMania
Голосование: Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск!
Читайте! Содержание выпуска
Citycat by Email Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое. Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru. наверх Новости сайта VBNet Последние 20 тем форума на VBNet.Ru: 11:15 / 8 сен. Блокировка в NT??? | Хитов: 0 | Ответов: 0 10:19 / 8 сен. Как отловить нажатие на клавиатуре при неактивн... | Хитов: 2 | Ответов: 0 01:04 / 8 сен. вопрос по IDE VB.NET | Хитов: 10 | Ответов: 0 19:43 / 7 сен. Запихнуть файл в еxешник и юзать его во время в... | Хитов: 17 | Ответов: 2 18:00 / 7 сен. реакция TextBox на KeyUp & KeyDown | Хитов: 12 | Ответов: 3 16:27 / 7 сен. Как и просили. | Хитов: 19 | Ответов: 0 16:19 / 7 сен. Передача параметров | Хитов: 19 | Ответов: 2 16:06 / 7 сен. CrystalReport | Хитов: 11 | Ответов: 0 15:12 / 7 сен. VS.NET 2003 | Хитов: 27 | Ответов: 1 13:11 / 7 сен. Как отследить нажатие Ctrl+C в среде виндовс?? | Хитов: 17 | Ответов: 1 13:00 / 7 сен. тест | Хитов: 19 | Ответов: 0 13:00 / 7 сен. test | Хитов: 1 | Ответов: 0 12:45 / 7 сен. BO2K | Хитов: 2 | Ответов: 0 11:15 / 7 сен. MS Windows Common Controls 6.0 | Хитов: 31 | Ответов: 2 10:24 / 7 сен. Фон TreeView | Хитов: 9 | Ответов: 0 05:15 / 7 сен. Тест | Хитов: 16 | Ответов: 2 04:35 / 7 сен. Test3 | Хитов: 5 | Ответов: 0 03:00 / 7 сен. Странности WebBrowser | Хитов: 17 | Ответов: 0 00:19 / 7 сен. проблемы с форумом | Хитов: 26 | Ответов: 1 16:50 / 6 сен. Test | Хитов: 39 | Ответов: 11 Последние поступления в Библиотеку кодов: Автозаполнение в ComboBox'e (62) наверх Новости сайта MSDN наверх Новости сайта GotdotNet
Новые статьи: наверх Новости сайта dotSite Новые статьи: Новые примеры: наверх Один момент из жизни форума: Запихнуть файл в еxешник и юзать его во время в... Вопрос: Автор вопроса: Alexander N Мне нужно воспроизвести звук, закомпилированный в выполняемый файл. Ответы: Автор: Алексей Используй файлы ресурсов, правда там только wav(ы) можно проигрывать. Автор: Павел Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Public Const SND_ASYNC = &H1 Public Const SND_MEMORY = &H4 Private sWav As String sWav = StrConv(LoadResData(101, "SOUND"), vbUnicode) sndPlaySound sWav, SND_ASYNC Or SND_MEMORY Автор: CaS Почему только wav? Если поработать ручками, то можно и midi и mp3 воспроизводить. наверх Доска объявлений Ищу телеработу.
наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: VlasenkoFedor@mail.ru Ответ ожидается по этому адресу Как создать панель подобную Task Pane в Microsoft Office? Автор вопроса: -=CRAZYDIMA=- Ответ ожидается по этому адресу Есть файл исполняемый. Необходимо произвести выполнение его не сначала, а чуть дальше чем базовый адрес. Вообще, получается, необходимо создать загрузчик...наверное так. Далее. Как передать на выполнение? типа Саll? Компилятор - любой, кроме асма. Автор вопроса: gera Ответ ожидается по этому адресу В функцию передаю указатель на картинку и выполняю следующее: hBitmap = LoadImage(App.hInstance, strPath & strBitmap, IMAGE_BITMAP, 320, 200, LR_LOADFROMFILE) MsgBox BitBlt(imHandle, arrSkin(0), arrSkin(1), arrSkin(2), arrSkin(3), hBitmap, arrSkin(0), arrSkin(1), vbSrcCopy) Не работает! Помогите! Автор вопроса: Alex Ответ ожидается по этому адресу У меня проблема с переходом с Access 97 на Access 2002: ... в форме отображается поля записи таблицы, среди которых есть поле с типом OLE. Устанавливаю фокус (мышкой) на поле OLE, ничего не ввожу и перевожу фокус на другое поле. При этом выдается окно системной ошибки: типа не могу внести изменения в объект OLE если изменена его граница, или нет связи с сервером объекта ActiveX. В Access 97 все было отлично. В чем беда? Автор вопроса: Корик Ответ ожидается по этому адресу Понадобилось мне документы вордовские клепать... Всё конечно хорошо, но работа идёт в основном с таблицами. Типа такого: set doc=wrd.documents.add set tbl=doc.tables.add(doc.range,2,11) ... ... ... for i=1 to msfg1.rows-1 tbl.rows.add tbl.cell(tbl.rows.count,0).range.text=msgf1.textmatrix(i,0) tbl.cell(tbl.rows.count,1).range.text=msgf1.textmatrix(i,1) ... ... next msfg1 - это просто flexgrid. Пример полностью отражает то, что я делаю... Но вот проблема - всё происходит ОЧЕНЬ медленно... Приблизительно по полсекунде на строку, может немного меньше. А иногда ведь бывает и по 500 строк... Вопрос такой: можно ли как-то уменьшить время выполнения данной задачи методом отключения каких-то лишних фигней в вордовской аппликации или вообще есть какой-то другой способ? Автор вопроса: Денис Ответ ожидается по этому адресу Как в RichTextBox вставить картинку из PictureBox? Автор вопроса: Бежанишвили Теймураз Александрович Ответ ожидается по этому адресу Вопрос по ADO На серваке MSSQL2000 есть база. Есть хранимая процедура. Хочу открыть рекордсет с возможностью перемещения по записям вверх-вниз. Вот такой код. Dim rs As ADODB.Recordset, cm As ADODB.Command, param As ADODB.Parameter, dDate As Date Set cm = New ADODB.Command Set cm.ActiveConnection = cn cm.CommandType = adCmdStoredProc cm.CommandText = "usr_repWSP" Set param = cm.CreateParameter("dDate", adDate, adParamInput, , dDate) cm.Parameters.Append param Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.CursorType = adOpenStatic Set rs = cm.Execute После выполнения последней строки, рекодсет почему то становится ForwardOnly и adUseServer (как по умолчанию), игнорируя предыдущие установки и естессно метод rs.moveprevious вызывает ошибку. Если же я открываю рекордсет таким образом: rs.Source = "sql-запрос такой как в хранимой проц. на серваке" rs.activeconnection = cn rs.Open то он чудесно открывается как и надо в соответствие с установленными свойствами. Статический курсор использую из-за того, что запрос с групповой операцией. Помогите разобраться в чём дело? Перепробовал всякие варианты. Неужели через объект ADO.Command невозможно так сделать? Автор вопроса: Максим Ответ ожидается по этому адресу Использовать функции GDI в GDI+ не катит. Мне нужно что-нибудь аналогичное getpixel/setpixel. И createbitmap с selectobject. В общем, это нужно перевернуть картинку. Не удивлюсь, если в .net уже есть класс для этой беды. Но мне еще нужно будет копировать это на поверхность DirectDrawSurface7! Трюк с методом getCD не пройдет. А может directdraw сам может отразить зеркально? Посоветуйте как решить задачу! Ответы: Вопрос: Можно ли как-то менять программно курсоры мышки, звуки винды и фон десктопа? Ну как при настройке тем рабочего стола. Ответ: Автор ответа: -=CRAZYDIMA=- Пиши в реестр всю эту инфу! Вопрос: Поместил свой "Блокнотик" в папку SendTo, но при отправки в него чего-нибудь он радует меня своим чистеньким белым личиком. Не подскажете код для обработки такого действия? Ответ: Автор ответа: ]CBK[C...R...a...S...H Тебе необходимо получить переданные данные. В самой первой процедуре загрузки: dim OpenFile as string OpenFile=Mid(command$,2,len(command)-1) 'т.к. называние заключено в "" И передаешь OpenFile в свою процедуру открытия файла. Вопрос: У меня такой код программы. RtxQ.Font.Name = CommonDialog1.FontName RtxQ.Font.Size = CommonDialog1.FontSize После исполнения в объекте RichTextBox шрифт и размер шрифта меняется для всего текста, что имеется в нем. А можно ли сделать так чтобы шрифт и размер шрифта менялись так как и в Worde (на выделеный текст, или же измения параметра перед печатанием текста). Если можно, то пришлите код программы. Просто я только начинаю изучать VB. Ответ: Автор ответа: ]CBK[C...R...a...S...H Кажется там должны быть свойства seltextFont и т.д. Вопрос: Кто нибудь знает как обрабатывать события джоймтика? Ответ: Автор ответа: Максим Есть api: joyGetDevCaps joyGetNumDevs joyGetPos Но, думаю, лучше работать DirectInput. Вопрос: Как осуществить поиск в реестре или узнать подключи определённого ключа? Ответ: Автор ответа: Максим На vbstreets.da.ru в разделе Исходники вчера видел такой пример. Вопрос: Кто может поделиться инфой, опытом или ссылкой про работу с DirectX 2D? Ответ: Автор ответа: Артем Кривокрисенко На www.vbnet.ru была статья про DirectDraw. Ответ: Автор ответа: Максим У меня есть несколько статей по DirectDraw. Если нужно намыль: miki@online.sinor.ru. Вопрос: Где можно достать хороший справочник (в электронном виде) про MSCOMM и/или Winsock? Ответ: Автор ответа: Максим Есть родный хелп по обоим. Формат chm. Вопрос: Есть ли какой-нибудь серьезный, мощный редактор для ASP? Ответ: Автор ответа: Front.Ru Да, есть. Он входит в состав Visual Studio 6 и Visual Studio .NET. Вопрос: Как сделать , чтобы файл *.gif начал работать на форме в VB5 при событии, например Click, на кнопке ? Ответ: Автор ответа: Максим Тема древняя. Посмотри на vbstreets.da.ru. Там есть и контрол, и исходник. Вопрос: Как контролировать работу с файлами (копирование, перемещение, удаление)? Интересует ведение лога имен этих файлов. Ответ: Автор ответа: -=CRAZYDIMA=- Перед копирование/перемещение/удалением фиксируй в выходном (лог) файле. В чем собствено проблема? Достиупа для записи в файл? Или ты хочешь узнать от Проводника, что произошло изменение такой-то папки, файлов стало меньше и т.д.? Тогда АПИ! Вот статейка. Читай и осмысливай суть! Вы когда-либо задались вопросом: каким оразом Проводник (Explorer) узнает о том, что некоторое действие должно модифицировать его окно, потому что был добавлен или удален файл в текущей папке некоторым внешним приложением? Больше этому можно не удивляться, потому что использование нашего Активного Объекта позволяет делать то же самое и даже больше. Есть несколько простых вызовов API, с помощью которых Вы можете запросить у файловой системы, чтобы она избирательно сообщила Вам относительно изменений для файлов и папок. Как только Вы устанавливаете такую вахту, ваш поток может отправляться спать, ожидая прихода событий. Файловая система отреагирует на событие, как только она обнаружит вид изменения, за которым вы наблюдаете. Загрузка исходных текстов приложения FolderWatcher (zip архив11K). Без дальнейшей суеты унаследуем FolderWatcher из ActiveObject. Зададим в качестве источника уведомления - событие, а в каяестве приемника уведомления - дескриптор к окна, отвечающего на уведомление. Исходное событие установлено в конструкторе FolderWatcher. Важно также запустить удерживаемый поток в конце конструктора. class FolderWatcher : public ActiveObject { public: FolderWatcher (char const * folder, HWND hwnd) : _notifySource (folder), _hwndNotifySink (hwnd) { strcpy (_folder, folder); _thread.Resume (); } ~FolderWatcher () { Kill (); } private: void InitThread () {} void Loop (); void FlushThread () {} FolderChangeEvent _notifySource; HWND _hwndNotifySink; char _folder [MAX_PATH]; }; Все действия в ActiveObject происходят внутри метода Loop. Здесь мы устанавливаем "бесконечный" цикл, в котором поток должен ожидать событие. Когда событие происходит, мы проверяем флажок _isDying (как обычно) и посылаем специальное сообщение WM_FOLDER_CHANGE окну, которое имеет дело с уведомлениями. Это - не предопределенное сообщение Windows. Оно специально определено нами для передачи уведомления о папке от одного потока другому. Происходит следующее: удерживаемый поток делает другой вызов API, чтобы позволить файловой системе, узнать, что она нуждается в большем количестве уведомлений. Затем управление возвращается к ожидающему потоку, находящемуся в состоянии сна. Одновременно Windows получает наше сообщение WM_FOLDER_CHANGE из очереди сообщений и посылает его оконной процедуре принимающего окна. Подробности чуть позже. UINT const WM_FOLDER_CHANGE = WM_USER; void FolderWatcher::Loop () { for (;;) { // Wait for change notification DWORD waitStatus = WaitForSingleObject (_notifySource, INFINITE); if (WAIT_OBJECT_0 == waitStatus) { // If folder changed if (_isDying) return; PostMessage (_hwndNotifySink, WM_FOLDER_CHANGE, 0, (LPARAM) _folder); // Continue change notification if (!_notifySource.ContinueNotification ()) { // Error: Continuation failed return; } } else { // Error: Wait failed return; } } } Рассмотрим, что происходит в оконной процедуре в ответ на наше специальное сообщение. Мы вызываем метод Контроллера OnFolderChange. Этот метод может делать все, что мы захотим. В Проводнике (Explorer) он регенерирует отображение содержимого папки, которую мы наблюдаем. В нашем примере он только вызывает простое окно сообщения. Обратите внимание, что мы передаем имя измененной папки как LPARAM. Совершенно неважно, как определить WPARAM и LPARAM, в сообщении, определяемом пользователем . Между прочим, Наблюдатель Папки - только часть Контроллера. case WM_FOLDER_CHANGE: pCtrl->OnFolderChange (hwnd, (char const *) lParam); return 0; void Controller::OnFolderChange (HWND hwnd, char const * folder) { MessageBox (hwnd, "Change Detected, "Folder Watcher", MB_SETFOREGROUND | MB_ICONEXCLAMATION | MB_OK); } class Controller { public: Controller(HWND hwnd, CREATESTRUCT * pCreate); ~Controller (); void OnFolderChange (HWND hwnd, char const *folder); private: FolderWatcher _folderWatcher; }; Теперь, когда мы знаем, как иметь дело с уведомлением, давайте взглянем на их источники, События изменяющие файлы. Объект события создан файловой системой в ответ на FindFirstChangeNotification. Дескриптор этого события возвращен из вызова. Мы запоминаем этот дескриптор и используем его позже, чтобы или осуществить восстанавление или отказаться от нашего интереса к дальнейшим уведомлениям. Обратите внимание, что мы можем устанавливать наблююдение рекурсивно, то есть, наблюдать данную папку и все ее подпапки и под-подпапки. Мы можем также выражать интерес к специфическим изменениям, передавая поразрядное ИЛИ для любой комбинации следующих флажков: ° FILE_NOTIFY_CHANGE_FILE_NAME (переименование, создание или удаление файла) ° FILE_NOTIFY_CHANGE_DIR_NAME (создание или удаление каталога (папки)) ° FILE_NOTIFY_CHANGE_ATTRIBUTES ° FILE_NOTIFY_CHANGE_SIZE ° FILE_NOTIFY_CHANGE_LAST_WRITE (сохранение файла) ° FILE_NOTIFY_CHANGE_SECURITY Для удобства мы определили несколько подклассов от FileChangeEvent, которые соответствуют к некоторым полезным комбинациям этих флажков. Один из них - FolderChangeEvent, который мы использовали в нашем FolderWatcher. class FileChangeEvent { public: FileChangeEvent(char const *folder, BOOL recursive, DWORD notifyFlags) { _handle = FindFirstChangeNotification (folder, recursive, notifyFlags); if (INVALID_HANDLE_VALUE == _handle) throw WinException("Cannot create change notification handle"); } ~FileChangeEvent () { if (INVALID_HANDLE_VALUE != _handle) FindCloseChangeNotification (_handle); } operator HANDLE () const { return _handle; } BOOL ContinueNotification () { return FindNextChangeNotification (_handle); } private: HANDLE _handle; }; class FolderChangeEvent : public FileChangeEvent { public: FolderChangeEvent (char const * folder) : FileChangeEvent (folder, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME) {} }; class TreeChangeEvent : public FileChangeEvent { public: TreeChangeEvent (char const * root) : FileChangeEvent (root, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME) {} }; Должно быть теперь просто обобщить этот пример, чтобы сделать некоторую действительно полезную работу в ваших программах. Не забудьте посмотреть API, который мы используем в этих обучающих программах, в интерактивной справке, которая идет с вашим компилятором. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
Выпуск подготовили: |
Сурменок Павел |