Си диез / Говнокод #26480 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
public class WindowEx : Window //...
{
        //hwnd окна
        public IntPtr Handle { get; set; }

        private const int GWL_EXSTYLE = (-20);
        private const uint WS_EX_TOPMOST = 0x00000008;

        public void SetTopmost()
        {
            SetTopmost(Handle);
        }

        public static void SetTopmost(IntPtr hWnd)
        {
            SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST));
        }

        public void UnSetTopmost()
        {
            UnSetTopmost(Handle);
        }

        public static void UnSetTopmost(IntPtr hWnd)
        {
            SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) & ~WS_EX_TOPMOST));
        }

        private bool _topmost;
        public new bool Topmost
        {
            set
            {
                if (value)
                {
                    SetTopmost();
                }
                else
                {
                    UnSetTopmost();
                }
                _topmost = value;
            }
            get { return _topmost; }
        }
}

Тру окно. С тру топмостом. Бесполезно чуть менее, чем полностью:
1) Новый топмост не нужен. Оригинальное свойство через SetWindowPos сделает тоже самое (SetWindowPos может менять дополнительный стиль WS_EX_TOPMOST)
2) Handle (hwnd окна) c публичным set. Круто, чё. Следовало бы сделать public IntPtr Handle { get; private set; }

Так я писал код где-то лет 6 назад.

Запостил: Janycz Janycz, (Updated )

Комментарии (0) RSS

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8