На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Прозрачность формы-гаджета , Исчезла прозрачность
    Решил сделать гаджет-песочные часы. Вставил на форму Image1, в нём Bitmap с изображением песочных часов. Те области часов, которые должны быть прозрачными, я залил красным цветом. Далее задал свойства формы:
    ExpandedWrap disabled
      //---------------------------------------------------------------------------
      void __fastcall TForm1::FormCreate(TObject *Sender)
      {
      Form1->Color=255;
      Form1->TransparentColor=true;
      Form1->TransparentColorValue=255;
      }
      //---------------------------------------------------------------------------

    Пока всё хорошо. Далее вставил найденный в Интернете код, позволяющий убрать системные кнопки окна, значок моего приложения в панеле задач, сделать так, чтобы моё окно не сворачивалсоь и его можно было перемещать левой мышкой:
    ExpandedWrap disabled
      //---------------------------------------------------------------------------
      bool SetToDesktop() {
        HWND listViewhwnd = FindWindowA("Progman", NULL);
        if(listViewhwnd) {
          listViewhwnd = FindWindowExA(listViewhwnd, NULL, "SHELLDLL_DefView", NULL);
          if(listViewhwnd) {
            listViewhwnd = FindWindowExA(listViewhwnd, NULL, "SysListView32", NULL);
            if(listViewhwnd) {
              Form1->BorderStyle = bsNone;
              ::SetParent(Form1->Handle, listViewhwnd);
              return true;
            }
          }
        }
        return false;
      }
      //---------------------------------------------------------------------------
      __fastcall TForm1::TForm1(TComponent* Owner)
          : TForm(Owner)
      {
        if(!SetToDesktop())ShowMessage("Ошибка SetToDesktop");
      }
      //---------------------------------------------------------------------------
      void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
                int X, int Y)
      {
        long SC_DRAGMOVE = 0xF012;
        if(Button == mbLeft) {
        ReleaseCapture();
        SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
        }
      }
      //---------------------------------------------------------------------------

    Теперь мой гаджет стал красным, прозрачность исчезла, т.е. свойство Form1->TransparentColor=true не работает. Тогда я задал свойство TransparentColor=true в инспекторе объектов в свойствах формы. При запуске приложения форму вообще перестало быть видно. Строка, из-за которой перестала работать прозрачность формы:
    ExpandedWrap disabled
      ::SetParent(Form1->Handle, listViewhwnd);

    Язык C++Builder 2009. Операционная система Windows Vista. Какими мыслями поделитесь, в каком направлении мне рыть? Попробую в других операционных системах и других версиях C++Builder.
    Сообщение отредактировано: manemale -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0246 ]   [ 17 queries used ]   [ Generated: 18.04.24, 23:13 GMT ]