MFC & DPI

В Visual Studio 2010 MFC-приложения будут по умолчанию помечаться как DPI-Aware, пишет Пэт Бреннер в VC++ Team Blog. Как известно, в Windows Vista был несколько переработан подход к работе с различными значениями DPI. Ранее приложение было обязано само следить за всем, что связано с поддержкой различных значений DPI и включать код для масштабирования окон, правильного расположения графических элементов etc. В Windows Vista была реализована поддержка автоматического масштабирования, что позволило приложениям корректно отображаться при различных DPI, пусть и с эффектом некоторой "размытости".

    Приложение, однако, могло пометить себя как DPI-Aware с помощью функции SetProcessDPIAware или манифеста и само управлять собственным масштабированием. По умолчанию приложение считалось DPI-Unaware. Теперь же, в Visual Studio 2010 все MFC-приложения (даже старые) будут автоматически помечаться как DPI-Aware, что может повлечь повляение старых проблем в кастомнизированных элементах управления. Опция, регулирующая данное поведение находится в настройках проекта: "Configuration Properties -> Manifest Tool -> Input and Output: Enable DPI Awareness":



Будьте внимательны!

Ищется инструмент для разработки GUI для Windows Mobile.

Вероятно какой-то визуальный редактор, который позволяет размещать стандартные контролы. Было бы не плохо получить возможно настраивать между ними взаимодействия, например переходы в другие окна. Так же вывод всех надписей в ресурсный файл.

Очень не удобно рисовать в фотошопе, что бы показать заказчику как это будет выглядеть, да и текст приходиться забивать заново.

Вакансия: Программист, разработчик GUI (Москва)

Parallels

Компания Parallels, основанная в 1999 г., предоставляет динамичное окружение в по-настоящему глобальной компании со штатом 900 человек, 10 миллионами пользователей и 800 партнерами, в числе которых Microsoft, Apple, Intel, AMD, Dell, HP, и IBM.

Обязанности:

  • разработка на C++ графического интерфейса пользователя и программных библиотек для многопользовательского кросс-платформенного приложения, управляющего работой виртуальных машин Parallels;
  • участие в проектировании архитектуры клиентской части приложения и библиотек программного интерфейса;
  • участие в проектировании интерфейса и сценариев работы пользователя;
  • полная занятость, ежедневное присутствие в офисе (работа удаленно исключается);
  • работа в интенсивном ритме, со сжатыми сроками в большой команде разработчиков в постоянном взаимодействии со смежными командами;

Требования:

  • опыт разработки ПО – не менее 5 лет (личное участие в разработке кода!),
  • опыт в разработке GUI приложений не менее 2 лет;
  • опыт разработки на C++ не менее 3 лет;
  • уровень владения С++, ООП: эксперт;
  • обязательно наличие опыта разработки многопользовательских многопоточных приложений для работы в многоплатформенной среде: как минимум: любая Unix-система (Linux, FreeBSD, Mac OS X) + Windows;
  • опыт использования библиотеки Qt – не менее 1 года;
  • опыт практического использования XML;
  • опыт работы в составе группы программистов;
  • опыт использования систем версионирования (SVN, CVS, проч.) и багтрекинга (Bugzilla, др.);
  • активное применение методики TTD (test driven development);
  • знание скриптовых языков (Python) приветствуется;
  • опыт разработки приложений для Mac OS X (Carbon, Cocoa, Objective C) - большой плюс.

Компенсация и льготы:

  • размер заработной платы определяется по результатам собеседования (в зависимости от имеющегося у кандидата опыта и профессиональных навыков);
  • медицинская страховка (включает стоматологическое обслуживание)
  • бесплатные обеды и кофе брейки;
  • офис компании распологается в Москве, ст.м. «Отрадное»;
  • корпоративный транспорт от ст. м. «Речной вокзал», «Отрадное», г. Долгопрудный.

Ждем Ваши резюме на E-mail: innav@parallels.com

Большое спасибо за проявленный интерес к Parallels, одной из самых быстроразвивающихся компаний в мире!


HURD
  • jtootf

UI Continuations

"...диалоговые окна, собирающие аргументы для процедур, часто создают эфемерные, неестественные прерывания нормального потока выполнения программы, заставляя пользователя вносить данные как можно быстрее с целью возобновить нормальное поведение программы..."

в статье, озаглавленной User Interface Continuations, авторы предлагают иной подход к запросу у пользователя необходимой для работы приложения информации - непрерывное и добровольное накопление данных, и выполнение тех или иных процедур тогда, когда данных для их вызова становится достаточно. сама аккумулируемая таким образом информация (контекст основного потока выполнения) является first-class object, и может быть сохранена в любой момент для дальнейшего использования; сам поток выполнения таким образом не прерывается. в данную концепцию элементарно ложится, например, понятие истории контекста - возможность повторного использования настроек без сохранения/извлечения их из специфического носителя (файла, записи реестра, etc), и шаблонов настроек

читать здесь (статья в PDF, english, 108.94 Kb)
  • Current Music
    Camille Saint-Saens - Allegro Non Troppo
  • Tags
    ,

C++ FQA

Думаю, многим известен С++ FAQ lite Marshall`a Cline - замечательная подборка коротких статей, затрагивающих различные аспекты С++. Он заслуживает внимания сам по себе, но сегодня хотелось бы дать ссылку на другой FAQ, созданный ему в пику: С++ Frequently Questioned Answers (FQA). Автор сего замечательного опуса (yousefk) дает ответы на те же вопросы, но в несколько другом ключе. Критика - вот его конек. И, как правило, достаточно интересная. Вывод, напрашивающийся после прочтения: С++ - язык со многими недостатками. Возможно, документ следовало назвать С--. Впрочем, судите сами. Время так или иначе проведете с пользой и совсем не скучая.

За ссылку спасибо "тру-программисту"

CWnd::GetSafeHwnd()

Каждый, кто использовал MFC, знает о существовании функции HWND CWnd::GetSafeHwnd(). Почему "safe"? Достаточно взглянуть на реализацию:

HWND CWnd::GetSafeHwnd() const
{
     return this == NULL ? NULL : m_hWnd;
}

Очевидно, что обращение к этой функции через нулевой указатель на объект абсолютно корректно и не приведет ни к каким катастрофическим последствиям:

CWnd* pwnd = 0;
HWND hwnd = pwnd->GetSafeHwnd(); // hwnd will be set to 0

Аналогичным образом реализован CWnd::operator HWND(). Следует, однако, заметить, что хотя вызов невиртуальной функции через нулевой указатель в реализации С++ от Microsoft и легален, согласно стандарту, поведение кода с подобными изысками не определено.

(no subject)

PDFCHM - тысячи книг по программированию в отличном качестве, включая самые последние новинки. Требуется простая регистрация. Дает скачивать две в сутки с одного IP.
Seraphini

Вопрос

Я новичок в WPF. Вот какой вопрос. Есть ListView, в нем DataTemplate, который показывает данные из некоторого Xml. В Xml есть элементы с тремя аттрибутами: name, value и controlType. Для отображения аттрибута name у меня в темплэйте TextBlock, а для value должен быть или TextBox, или ComboBox, в зависимости от значения третьего аттрибута controlType. Как бы мне такое сделать?

Xml:

<elements>
<element name="ProjectProperty1" value="1" elementType="project" elementId="1" controlType="1"></element>
<element name="ProjectProperty2" value="2" elementType="project" elementId="1" controlType="2"></element>
<element name="ComponentProperty1" value="1" elementType="component" elementId="1" controlType="1"></element>
<element name="ComponentProperty2" value="2" elementType="component" elementId="1" controlType="2"></element>
</elements>

XAML:

<ListView Name="listView1"
Margin="-4,-26,3.90322580645159,0" Height="50" VerticalAlignment="Top" Grid.ColumnSpan="2">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Name="gridInner" ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120px"/>
<ColumnDefinition Width="40px"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Name="propertyName" Text="{Binding XPath=@name}" />
<TextBox Grid.Column="1" Name ="propertyValue"
Text="{Binding XPath=@value}" />

</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

Вот, там, где выделенный красным TextBox, должен быть иногда TextBox, а иногда ComboBox, в зависимости от значения аттрибута controlType в Xml.

Hi WPF!

Windows Presentation Foundation (or WPF), formerly code named Avalon, is the graphical subsystem feature of the .NET Framework 3.0 (formerly called WinFX). It provides a consistent programming model for building applications and provides a clear separation between the UI and the business logic. A WPF application can be deployed on the desktop or hosted in a web browser. It also enables richer control, design, and development of the visual aspects of Windows programs. It aims to unify a host of application services: user interface, 2D and 3D drawing, fixed and adaptive documents, advanced typography, vector graphics, raster graphics, animation, data binding, audio and video. Read more

А здесь небольшой обзор и введение в WPF на русском.