пятница, 12 декабря 2008 г.

Tips & tricks WinForms .NET

"Отзывчивое окно"

У class System.Windows.Forms.Form, есть свойство Opacity, достаточно установить его значение в 99%, и мы получаем отзывычивое окошко если на заднем фоне имеется, какое то окно с активной перерисовкой. Нет тормозов при перемещении окна. Думаю это аппаратный альфебленд, на видеокарте.(такой трюк провернуть через WIN 32 API, не удалось появлялись глюки с выпаданием пикселей).

"WinFormSingleton" NoneSafeThread

Как сделать из Form подобиее синглтона ? смотрим ниже код

  1. #region WindowFromsSingleton   
  2.    
  3. private FormSingleton m_oFormSingleton = null;   
  4.    
  5. private void ShowFormSingleton(object sender, EventArgs e)   
  6. {   
  7.   if (null == m_oFormSingleton)   
  8.   {   
  9.     m_oFormSingleton = new FormSingleton();   
  10.     m_oFormSingleton.Show();   
  11.    
  12.     m_oFormXmlTrackSettings.Closed += new EventHandler(FormSingleton_Closed);   
  13.   }   
  14. }   
  15. private void FormSingleton_Closed(object sender, EventArgs e)   
  16. {   
  17.   m_oFormSingleton.Closed -= new EventHandler(FormSingleton_Closed);   
  18.   m_oFormSingleton = null;   
  19.  
  20.   
  21. #endregion  

вторник, 29 июля 2008 г.

Дауншифтинг

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

Дауншифтинг (англ. downshifting, замедление или ослабление какого-то процесса) —сленговый термин, обозначающий жизненную философию «жизни ради себя», «отказа от чужих целей» (также применяется синоним Simple living).
В классическом понимании дауншифтинг — это всегда выбор между доходами и стрессами и душевным комфортом за меньшее вознаграждение. Обычно, уходя из бизнеса или со стрессовой работы, люди преследуют такие цели, как получение большего количества времени на увлечения или на семью. (содрано с вики).

Все желающие могут поподробнее изучить это по двум линкам -
http://ru.wikipedia.org/wiki/%D0%94%D0%B0%D1%83%D0%BD%D1%88%D0%B8%D1%84%D1%82%D0%B8%D0%BD%D0%B3
http://community.livejournal.com/ru_downshift

пятница, 20 июня 2008 г.

Установка имени потока в msvc.

При отладке в Microsoft Visual Studio 2005/2008 (с++), потокам в режиме debug-breakpoints можно задать имена. Поиск по мсдн ничего толком не дал. По остальным источникам, оказалось что есть вот такая функция, даже работает. (проверено )) Вот исходный код, пользуемся.

  1. /* Установка имени для потока в отладчике */   
  2. void SetThreadName ( DWORD nThreadID, const char* pThreadName )   
  3. {   
  4.     struct   
  5.     {   
  6.         DWORD dwType; // Должно быть 0x1000   
  7.         LPCSTR szName; // Указатель на строку с именем   
  8.         DWORD dwThreadID; // Идентификатор потока ( -1 для текущего )   
  9.         DWORD dwFlags; // Зарезервировано ( должно быть 0 )   
  10.     }    
  11.    
  12.     info = { 0x1000, pThreadName, nThreadID, 0 };   
  13.    
  14.     __try   
  15.     {   
  16.         // 0x406D1388 - магическое число, которое сообщает отладчику имя потока   
  17.         RaiseException ( 0x406D1388, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info );   
  18.     }   
  19.     __except ( EXCEPTION_CONTINUE_EXECUTION )   
  20.     {   
  21.    
  22.     }   
  23. }