Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> .NET 3.0: Windows Presentation Foundation, краткий обзор 
:(
    Опции темы
Exception
Дата 12.12.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



С чего должна начинаться любая статья? Правильно, со вступления. Что же, для начала, мне следует хотя бы кратко рассказать вам о предмете, о котором пойдёт речь. В данной статье я постараюсь описать свои ощущения, возникшие при ознакомлении с платформой WPF (Windows Presentation Foundation), входящей в состав недавно выпущенного .NET Framework 3.0 (ранее называвшегося WinFX). Эта платформа представляет собой замену уже ставшему для многих привычным Windows Forms 2.0, при этом привнося некоторые совершенно новые для многих разработчиков .NET концепции (конечно же, я говорю о XAML). WPF в первую очередь ориентирована на Windows Vista, но будет совершенно нормально работать и на Windows XP SP2, которым пользовался автор статьи.

Для начала работы с .NET 3.0 необходимо либо дождаться релиза следующей Visual Studio с таинственным кодовым именем Orcas, либо добавить поддержку версии 3.0 в текущую версию (речь идёт, безусловно, о VS 2005). Инструкции по загрузке и установке .NET 3.0 вкупе с расширениями для VS можно найти в конце статьи.

Примечание:
.NET 3.0 так называется исключительно, повторяю, исключительно из маркетинговых соображений. На самом деле это всё тот же .NET 2.0 Runtime и несколько новых библиотек - WPF (Windows Presentation Foundation), которую мы рассматриваем в этом обзоре, WCF (Windows Communication Foundation) и WWF (Windows Workflow Foundation). Среди программистов также популярна шутка, что Microsoft забыла выпустить библиотеку с наименованием WTF smile .


Итак, предположим, что установка прошла спокойно, и вы нажали на кнопку "Finish". Кстати, я не зря использовал слово "предположим" применительно к успешному концу установки: для вящего эффекта после установки инсталлятор радостно выкинул BSoD, чем поверг меня в уныние. В прочем, потом он присмирел и таки дал мне спокойно начать работать играться с новой библиотекой.

Теперь, когда все дебри установки остались позади, мы должны запустить Visual Studio и создать новый проект. Насколько я знаю, никаких проблем с обратной совместимостью нет, так что можно будет безбоязненно работать и со старыми проектами из той же студии. Для создания нового проекта с использованием WPF необходимо выбрать шаблон "Windows Application (WPF)", появившийся с установкой расширений.

Первое, что мы замечаем - это изменения в дизайнере: теперь он разделён на две части, в которых располагаются, соответственно, дизайнер и редактор кода. Но самое сокрушительное изменение обнаруживается при взгляде на Solution Explorer: код формы теперь хранится в файле с расширением *.xaml. Что же, теперь на XML кодить будем? Не совсем. Потому что файл с именем TestWindow.cs тоже присутствует. Наберите в лёгкие воздуха и задержите дыхание... На XAML (диалект XML, разработанный Microsoft) пишется только код пользовательского интерфейса. Медленно выдохните. Вы поняли меня? Нет? Тогда читайте дальше.

user posted image
Новый дизайнер.

user posted image
Файлы XAML.

Примечание:
XAML произносится не "ксамл" и даже не "икс эй эм эль". Правильное произношение - "замл".


Попробуем разобраться в новшествах WPF, для чего нам придётся немного пройтись по базовым знаниям архитектуры Windows Forms. Раньше, чтобы добавить на форму текстовое поле, нужно было описать поле типа TextBox в классе формы, инициализировать его и добавить в коллекцию компонентов (то есть, конечно, за нас эту работу выполнял дизайнер, но сути оно не меняет).

WPF предлагает записывать интерфейс в XML, то есть простая форма с текстовым полем описывается примерно так:

TestWindow.xaml
Код
<Window x:Class="WPFTest.TestWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Заголовок окна" Height="300" Width="300"
    >
  <Grid>
    <TextBox Margin="0,0,0,0" Height="30" Width="200" Name="myTextBox" />
  </Grid>
</Window>


TestWindow.xaml.cs

Код
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;


namespace WPFTest
{
    /// <summary>
    /// Interaction logic for TestWindow.xaml
    /// </summary>

    public partial class TestWindow : System.Windows.Window
    {

        public TestWindow()
        {
            InitializeComponent();
        }

    }
}


Не нужно быть гением, чтобы догадаться, что корневой элемент - Window - представляет собой окно. Он содержит по одному атрибуту на каждое свойство класса System.Windows.Window, в чём-то неуловимо похожего на System.Windows.Forms.Form smile . Разумеется, вовсе не обязательно указывать для каждого из них своё значение, так как в большинстве случаев нас вполне устраивают значения атрибутов-свойств по умолчанию. Следующий по "вложенности" элемент - это "сетка" (Grid). Её не было в Windows Forms, так что позже мы рассмотрим её более внимательно. Пока что достаточно лишь знать, что это - контейнер для всех элементов формы. Ну и, соответственно, элемент TextBox так текстовым полем и остаётся, несмотря на свою вопиющую декларативность smile .

Весь код логики пишется именно в файле *.cs, причём до "настоящего" класса, содержащего реализацию метода InitializeComponent(), теперь не так-то просто достучаться, поскольку его не видно даже по нажатии в Solution Explorer кнопки "Show All Files". Файл из *.designer.cs прератился в *.g.cs и, этот partial-класс выглядит так:

TestForm.g.cs
Код
/// <summary>
/// TestWindow
/// </summary>
public partial class TestWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
    
    internal System.Windows.Controls.TextBox myTextBox;
    
    private bool _contentLoaded;
    
    /// <summary>
    /// InitializeComponent
    /// </summary>
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public void InitializeComponent() {
        if (_contentLoaded) {
            return;
        }
        _contentLoaded = true;
        System.Uri resourceLocater = new System.Uri("/WPFTest;component/testwindow.xaml", System.UriKind.Relative);
        System.Windows.Application.LoadComponent(this, resourceLocater);
    }
    
    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
    [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
    void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
        switch (connectionId)
        {
        case 1:
        this.myTextBox = ((System.Windows.Controls.TextBox)(target));
        return;
        }
        this._contentLoaded = true;
    }
}


Примечание: интересно, а я один заметил, что имя переменной resourceLocater в методе Connect() написано с ошибкой smile ?

Как видно, во время выполнения библиотека WPF в лице класса System.Windows.Application извлекает XAML-файлы из ресурсов приложения и "на ходу" создаёт форму. В чём плюсы такого подхода? На самом деле, идея декларативного языка для описания UI ни в коем случае не является новой. Сейчас получил большое распространение диалект XML "XUL" (зул), используемый в качестве основы для написания UI таких приложений, как Mozilla Firefox и Mozilla Thunderbird. Также существует аналог XAML c открытым исходным кодом, который называется MyXaml. На самом деле, в моём понимании ни тот, ни другой ни в коем случае не являются аналогом XAML из-за гораздо более скудного набора возможностей.

Каковы плюсы подобного подхода? Позвольте мне перечислить самые, на мой взгляд, очевидные:
  •  Переносимость. Вообще, стандарт XML задумывался как независимый от анализатора язык для структуризации информации. Разумеется, XAML не может сохранить независимость от своего "интерпретатора", поскольку на данный момент существует лишь одна полная его реализация - WPF, но, тем не менее, переносимость в нём присутствует в куда большем объёме чем у простого кода, сгенерированного дизайнером: код GUI одинаков для разных языков программирования, а это очень важно.
  •  Простота. Согласитесь, код в формате XML легко читается человеком и компактно умещается на экране, в то время, как при задании всех свойств и создании объектов "вручную" взаимосвязанные куски кода оказываются разбросанными по разным частям файла, что не сказывается хорошо на удобстве его редактирования. "А какая мне разница, всё равно ведь код генерирует дизайнер?" - спросите вы и будете совершенно правы. Что же, по крайней мере, дизайнер скажет вам спасибо, поскольку разбор XML является делом куда более лёгким, нежели разбор кода на императивном языке программирования. А если однажды у вас не окажется под рукой дизайнера, вы его прекрасно поймёте.
  •  Разделение логики и представления. Появление XAML попросту сводит на нет проблему смешанного кода логики и представления хотя бы потому, что кода представления как такового нет. Конечно, это вовсе не отменяет необходимость использования паттернов вроде MVP, но всё-таки мы становимся чуть ближе к дзену разработчика ПО.
Несомненно, у XAML есть также и очень серьёзная проблема, суть производительность. Загрузка интерфейса пользователя происходит очень, ну просто непозволительно и неприлично долго. Заставлять пользователя ждать 15 секунд для загрузки простейшей формы с текстовым полем - непозволительная роскошь для разработчика. Честно говоря, я слегка не понял, что мелкомягкие хотели нам сказать этим манёвром - складывается отчётливое ощущение, что на Vista всё это работает куда быстрее (если я не ошибаюсь, все появившиеся "навороты" стандартных контролов и их новая внешность напрямую поддерживаются её API), и подобная "медлительность" работы WPF на WinXP в их понимании должна подействовать как нервный импульс в коре головного мозга - "скорее покупай Windows Vista!". К счастью иль сожалению, заказчикам мы такой ультиматум выдвинуть не можем. Как бы то ни было, технологию "пощупать" имеет смысл.

user posted image
Формочка.

Как вы, вероятнее всего, уже догадались, это была вводная часть в обзор WPF, который я планирую писать в соответствии с моим собственным продвижением в познании этой платформы. Adios smile !

Это сообщение отредактировал(а) Exception - 13.12.2006, 20:26
PM   Вверх
mr.DUDA
Дата 12.12.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Exception @  12.12.2006,  21:43 Найти цитируемый пост)
Загрузка интерфейса пользователя происходит очень, ну просто непозволительно и неприлично долго. Заставлять пользователя ждать 15 секунд для загрузки простейшей формы с текстовым полем - непозволительная роскошь для разработчика. Честно говоря, я слегка не понял, что мелкомягкие хотели нам сказать этим манёвром - складывается отчётливое ощущение, что на Vista всё это работает куда быстрее

Скорее всего, долго загружаются многочисленные библиотеки smile. Хорошо бы их прекомпилить, вот тогда не будет пресловутых 15-ти секунд, AFAIK.

P.S. Exception, ты пиши статью (не бросай как Nemerle), а я её закреплю и возможно со временем буду дополнять сам. Даёшь русскоязычный FAQ по XAML !  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Exception
Дата 12.12.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Про WPF с лёгкой руки пишется (вероятно, сказывается то, что не приходится переводить -  мысли сами быстрее лезут в голову smile ). Ну и feedback, конечно, больший ожидается.

Добавлено @ 23:18 
Цитата(mr.DUDA @  13.12.2006,  00:02 Найти цитируемый пост)
Хорошо бы их прекомпилить


Кстати, отличная мысль. Ибо, как я заметил, "непривычные" для XP штучки тормозят именно первые секунды их использования - эх, JIT.. smile

Добавлено @ 23:24 
Ой да - сразу напишу инструкции по установке.

Инструкции по установке .NET 3.0 и расширений для разработки приложений под него

Сперва мы должны скачать .NET 3.0 Redistributable Packgage. Сам он весит немного, только вот инсталлятор потом ещё качает 39 MB из интернета, так что, если у вас узкий канал, не тратьте зря время и нервы.

После установки следует скачать и установить Visual Studio 2005 extensions for .NET Framework 3.0 (WCF & WPF). Ссылка ведёт на November CTP, так что, если скачаете не самую свежую версию, не обессудьте. Но пока что она самая новая.

Вот, в принципе, и всё.
PM   Вверх
Softaz
Дата 12.12.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата

Сперва мы должны скачать .NET 3.0 Redistributable Packgage. Сам он весит немного, только вот инсталлятор потом ещё качает 39 MB из интернета, так что, если у вас узкий канал, не тратьте зря время и нервы.


Вот "полный" .NET 3.0 здесь (50,4 МБ)

Загрузка формочки заняла 5 с.
Только вот как быть с тем же TextBox... (см. рис. U3) не все же знают англицкий. Это теперь надо каждый переводить smile 

Это сообщение отредактировал(а) Softaz - 12.12.2006, 23:50

Присоединённый файл ( Кол-во скачиваний: 89 )
Присоединённый файл  U2.gif 10,17 Kb


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Softaz
Дата 12.12.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Либо я либо форум глючат.
Не возможно добавить еще один файл в сообщение.
Вот тот рисунок.

Добавлено @ 23:53 
Из рисунка видно, что контекстное меню на английском.
Смена культуры ничего не дала. И где пункты "Отменить" и "Удалить"?
Конечно, можно сделать свои, но все же smile 

Присоединённый файл ( Кол-во скачиваний: 85 )
Присоединённый файл  U3.gif 4,54 Kb


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
mr.DUDA
Дата 13.12.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Softaz, Thread.CurrentThread.CurrentUICulture часом не английская ?


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 13.12.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Exception, молодец. Так держать. Первооткрыватель ты наш  smile 

 smile 
Цитата(Exception @  12.12.2006,  21:43 Найти цитируемый пост)
А если однажды у вас не окажется под рукой дизайнера, вы его прекрасно поймёте.

Прекрасно понимаю smile
За неимением лицензии на DevExpress на ноуте, пришлось в командировке лазить по коду дизайнера. Ну и кака, я вам скажу.

PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 13.12.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Поставил .NET 3.0 SDK и VS Extensions под висту. Кстати, первый почему-то называется "Windows SDK"  smile. Начал разбираться.

Первое впечатление от знакомства с документацией и примерами: "они всё изменили !!!"  smile. Ну например, где вкладка "Events" в окне свойств ? В общем, буду учить матчасть, курить маны и листать гигабайты обновлённого мсдн...


--------------------
user posted image
PM MAIL WWW   Вверх
mr.DUDA
Дата 13.12.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Что-то слишком всё хардкорно: дизайнер не доделан, xaml приходится редактировать вручную, на события подписываться - тоже вручную, толкового описания возможностей контролов нигде нету...  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
Softaz
Дата 13.12.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(mr.DUDA @  13.12.2006,  10:29 Найти цитируемый пост)
 Thread.CurrentThread.CurrentUICulture часом не английская


Я ж написал, что
Цитата(Softaz @  12.12.2006,  23:51 Найти цитируемый пост)
Смена культуры ничего не дала

менял на русскую (ru-ru). Ничего не дало smile




--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Void
Дата 13.12.2006, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Softaz, возможно, поможет русский language pack для рантайма (он ещё не вышел?).


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Softaz
Дата 13.12.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Цитата(Void @  13.12.2006,  18:12 Найти цитируемый пост)
возможно, поможет русский language pack для рантайма (он ещё не вышел?)

Дело не в языковом пакете, а в том, что раньше (везде) кинешь на форму текст бокс, скажем, - а минимальное контекстное меню уже есть, причем "на языке системы", поскольку все это выполнялось через WinApi. В NET2.0 еще было (конечно, система там другая).
А здесь (в 3.0) даже на текст бокс приходится вешать свое меню, да еще писать тексты в локальные ресурсы, если приложение мультиязыковое.

P.S.: Помню, когда тольок вышли FW, многие возникали по поводу большого размера в 20 МБ. Сейчас уже 50 МБ. Пока тихо. Скоро начнется...


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Void
Дата 13.12.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Цитата(Softaz @  13.12.2006,  22:05 Найти цитируемый пост)
Сейчас уже 50 МБ. Пока тихо. Скоро начнется

В Висте .NET 3.0 предустановлен. На многие компьютеры .NET попадёт с Windows Update. А проблемы наших диалапщиков MS не тревожат.
Цитата(Softaz @  13.12.2006,  22:05 Найти цитируемый пост)
А здесь (в 3.0) даже на текст бокс приходится вешать свое меню, да еще писать тексты в локальные ресурсы, если приложение мультиязыковое.

Не совсем понял. В 2.0 придётся делать то же самое, если требуется поддержка каких-то языков, кроме английского и языка локализации Windows. Поскольку 3.0 почти не использует WinAPI, вместо последнего (по идее) накатывается langpack.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Exception
Дата 13.12.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(Softaz @  12.12.2006,  23:44 Найти цитируемый пост)

Загрузка формочки заняла 5 с.


О, тогда замечательно.

Softaz, ты просто скачал английский .NET Runtime. А я - русский smile .

Добавлено @ 20:22 
Постой. Так ты же на Висте пробуешь. А я - на XP. Виста у тебя английская, видимо, по крайней мере, .NET в неё встроен английский smile .
PM   Вверх
Gelis
Дата 13.12.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 26.10.2006
Где: Брест

Репутация: 2
Всего: 4



Цитата

Что-то слишком всё хардкорно: дизайнер не доделан, xaml приходится редактировать вручную, на события подписываться - тоже вручную, толкового описания возможностей контролов нигде нету... 

А дизайнер внутри студии и не доделают. Был на семинаре "Дни разработчика Microsoft" и медленно похрапывал под рассказы мужика с Мелкософта о WPF. Так вот что понял сквозь сон:
1. В Vista вся графика будет векторная, т.е. даже иконки будут векторными.
2. В Visual Studio будет какой-то дико урезанный дизайнер форм. Полный дизайнер будет выпускаться отдельным продуктом и это будет графическое ПО уровня Adobe Illustrator или Corel. В этом дизайнере будет генерится XAML код который затем можно будет экспортировать в VS. В VS этот XAML-код можно будет перегнать в C#. Почему так сделано. Ну по-моему мнению Мелкософт хочет еще хапнуть денег продавая буржуям отдельно дизайнер форм. По-ихнему: предполагается что над любым проектом будут работать хотя бы два человека:1. Дизайнер - рысавать векторные элементы управления, формачки, иконки и т.п.  2. Программист, который не будет отвечать за интерфейс, а лишь за бизнес логику. Т.е. типа чтобы не заставлять программиста работать с графикой, а дизайнера с кодом типа выпускать будут два разных продукта. 
3. Дизайнер форм уже типа готов, нам типа даже его показывали, но где скачать какую-нить бету так и несказали
4. У элемента управления нет своего изначально заданного графического интерфейса и мы можем его задать произвольным. Т.е. не прыдется делать свои компоненты типа круглой кнопочки.
Ладно пойду попью пива, завтра еще че-нить интересного вспомню напишу.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0685 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.