При закрытии подписчики были переданы в рассылку "RFpro.ru: Программирование на C / C++" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Visual C++ Лучшие статьи с сайта www.p-lib.pp.ru |
Главная | Новости | Статьи | Каталог | Софт | Регистрация | Поиск |
Приглашаем авторов статей к сотрудничеству с сайтом. Для того чтобы разместить на сайте статью надо заполнить форму или связаться с нами по E-Mail Предлагаем владельцам сайтов добавить сабя в каталог на нашем сайте. NEW! Все желающие могут предложить свои темы для следующих рассылок. Для этого свяжитесь со мной по E-Mail. Каждое предложение будет рассмотрено. |
Новые статьи на сайте |
1. Что
такое traits? В данной статье я попытаюсь рассказать, что такое traits. Будут рассмотрены некоторые примеры применения traits, которые будут заключаться как в использовании traits в нашем коде, так и в возможных способах расширения стандартной библиотеки C++, которая тоже использует traits. 2. Приемы защиты исходных текстов и двоичного кода Предоставление исходных текстов часто является обязательным условием заказчика и закрепляется в контракте. Той же цели добиваются сторонники популярного движения открытых исходных текстов, ратующие за их свободное распространение. 3. Авторизация Часто бывает нужно, чтобы на какой-то URL могли попасть только определенные пользователи. А именно, только те, у которых есть зарегистрированное имя (login) и пароль (password). 4. Реализация keylogging под WIN32 Одним из самых простых методов съёма информации с персонального компьютера является установка на компьютер пользователя программы, производящей учёт нажатий клавиш. 5. Классы CDatabase и CRecordset В статье описываются классы CRecordset и CDatabase, рассматриваются их методы, свойства и особенности. А так же приводятся примеры их использования. 6. Работа с клавиатурой Каждое окно в системе устроено таким образом, что может получать сообщения при нажатии клавиш на клавиатуре. Эти сообщения имеют два типа: виртуальные коды и символьные сообщения. 7. События Событие является объектом, очень похожим на семафор, но в несколько видоизмененном виде. Рассмотрим функции для работы с событиями. 8. Критические секции Понятие критической секции позволяет уберечь определенные области программы так, чтобы в этой области программы в данный момент времени исполнялся бы только один поток. 9. Источники данных ODBC В статье рассмотрены функции по работе с ODBC. В конце приведен небольшой пример. 10. Всплывающие подсказки (ToolTip) В этой статье будет рассмотрен вопрос создания всплывающих подсказок (ToolTip) средствами MFC, а также рассмотрены некоторые возможности по управлению подсказками. |
Свежие компьютерные новости |
20.01.2006
Corel обновила офисное ПО и графический пакет 20.01.2006 Вирус прикидывается шифровкой из GMail 20.01.2006 Opera и Bytemobile ускорят мобильный интернет 20.01.2006 Ноутбук Alienware с двумя винчестерами на 160 Гб 19.01.2006 Суперкомпьютер PowerBlock 200 для военных 19.01.2006 Ёмкость винчестеров для ноутбуков достигла 160 Гб 19.01.2006 Google начнёт передавать рекламу по радио 19.01.2006 Новые чипсеты nVidia для процессоров Intel |
Разделяемая память в динамической библиотеке |
В этой статье рассмотрен вопрос о разделяемой памяти в динамической библиотеке. Ниже приведенные примеры демонстрируют примеры использования общей памяти. Вызов динамической библиотеки с разделяемой памятью. // dllexec.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> int _tmain(int argc, _TCHAR* argv[]) { typedef void (funct)(); funct * func; HMODULE h=::LoadLibrary(/*"..\\..\\dll32\\release\\*/"dll32.dll"); if(h==NULL) { printf("Error1!"); return 0; }; func=(funct*)::GetProcAddress(h, "func"); if(func==NULL) { printf("Error2!"); return 0; } (func)(); char s[100]; gets(s); FreeLibrary(h); return 0; } Динамическая библиотека с разделяемой памятью. // dll32.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include <stdio.h> extern "C" __declspec(dllexport) void func(); #pragma data_seg(".myseg") int i=0; #pragma data_seg() BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; } //экспортируемая функция void func() { if(i==0) { i=1; MessageBox(0, "Запуск первого экземпляра", "", MB_OK); } else { MessageBox(0, "Запуск второго экземпляра", "", MB_OK); } } Теперь прокомментирую поэтапно пример с разделяемой памятью: .myseg ? название секции в исполняемом модуле. Данная последовательность команд означает, что переменная I оказывается при компоновке именно в этой секции. А вот чтобы секция стала общей, следует компоновщику указать дополнительную опцию: /SECTION:.myseg,RWS. Строка RWS означает, что в секцию можно писать и читать. Скачать исходник можно здесь. |
Книги с Озона |
Последнии статьи по Delphi |
Советую посетить |
Портал
для Delphi программиста - Быстро развивающийся портал о
программирование на языке Pascal/Delphi. Статьи, исходники, компоненты,
справочники, мануалы, FaQ, программы. |
Дружественные рассылки |
Замечания и предложения отправляйте на E-Mail указанный ниже. С уважением Ковязин Дмитрий (admin@p-lib.pp.ru). |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.visualc Архив рассылки |
Отписаться
Вебом
Почтой
Вспомнить пароль |
В избранное | ||