Форма

  1. Запрещение кнопки закрытия [X] формы
  2. Запрещение кнопки максимизации [[]] формы
  3. Запрещение кнопки минимизации [_] формы
  4. Отмена закрытия формы при нажатии Alt+F4
  5. Отмена закрытия формы при нажатии Alt+F4 (Вариант 2)
  6. Перемещение формы мышью не за заголовок
  7. Изменение размеров формы (развернуть и т.д.)
  8. Как сделать кусок окна прозрачным
  9. Создание новой формы во время работы программы
  10. Как сделать прозрачную форму в W2K/XP
  11. Прозрачное окно с реакцией на нажатия кнопок, панелей
  12. Новая форма как отдельное окно
  13. Приложение без формы
  14. Определения класса окна определённого приложения
  15. [+] Как заполнить канву формы, фоном рабочего стола
  1. Запрещение кнопки закрытия [X] формы

    // Чтобы запретить кнопку закрытия формы, напишите следующий
    // код (Form1- ваша форма, Button1 - кнопка на ней):
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    HMENU MenuHandle = GetSystemMenu(Handle, false);
    if(MenuHandle)
      DeleteMenu(MenuHandle, SC_CLOSE, MF_BYCOMMAND);
    }

  2. Запрещение кнопки максимизации [[]] формы

    // Чтобы запретить кнопку максимизации формы, напишите
    // следующий код (Form1- ваша форма, Button1 - кнопка на ней):
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    HMENU MenuHandle = GetSystemMenu(Handle, false);
    if(MenuHandle)
      DeleteMenu(MenuHandle, SC_MAXIMIZE, MF_BYCOMMAND);
    }
    // ПРИМЕЧАНИЕ: максимизация формы двойным щелчком мыши
    // по заголовку также будет невозможна


  3. Запрещение кнопки минимизации [_] формы

    // Чтобы запретить кнопку минимизации формы, напишите
    // следующий код (Form1- ваша форма, Button1 - кнопка на ней):
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    HMENU MenuHandle = GetSystemMenu(Handle, false);
    if(MenuHandle)
      DeleteMenu(MenuHandle, SC_MINIMIZE, MF_BYCOMMAND);
    }

  4. Отмена закрытия формы при нажатии Alt+F4

    // Чтобы форма не закрывалась при нажатии комбинации клавиш
    // Alt+F4, разместите на форме компонент TActionList(ActionList1),
    // создайте новый TAction(Action1), и в свойстве ShortCut у Action1
    // пропишите комбинацию клавиш Alt+F4, а обработчик события
    // OnExecute должен выглядеть следующим образом
    // (Form1- ваша форма):
    void __fastcall TForm1::Action1Execute(TObject *Sender)
    {
    // чтобы при сохранении C++Builder не уничтожил обработчик
    }

  5. Отмена закрытия формы при нажатии Alt+F4 (Вариант 2)

    //В обpаботчике FormKeyDown пишешь:
    if (Shift.Contains(ssAlt)&&Key==VK_F4) Tag=1;

    //В обpаботчике FormCloseQuery:
    if(Tag)
    {
    CanClose=false;
    Tag=0;
    }

  6. Перемещение формы мышью не за заголовок

    // Напишите следующий обработчик события OnMouseDown формы
    void __fastcall TForm1::FormMouseDown(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);
     }
    }

  7. Изменение размеров формы (развернуть и т.д.)

    // Напишите следующий код:
    Form1->WindowState = wsMaximized; // развернуть
    Form1->WindowState = wsMinimized; // минимизировать
    Form1->WindowState = wsNormal; // первоначальный размер

  8. Как сделать кусок окна прозрачным

    // Для того чтобы сделать кусок формы прозрачным,
    // напишите следующий код:

    //Прямоугольный кусок
    HRGN R1=CreateRectRgn(0, 0, Width, Height);
    HRGN R2=CreateRectRgn(4, 24, Width-4, Height-4);
    CombineRgn(R1, R1,R2, RGN_DIFF);
    SetWindowRgn(Handle, R1, TRUE);

    //Кусок в виде элипса
    HRGN hRgn1 = CreateRectRgn(0, 0, Width, Height);
    HRGN hRgn2 = CreateEllipticRgn(0, 0, Width, Height);
    HRGN hRgn3 = CreateRectRgn(0, 0, Width, Height);
    CombineRgn(hRgn3, hRgn1, hRgn2, RGN_DIFF);
    SetWindowRgn(Handle, hRgn3, TRUE);
    //можно заменить hRgn3 на hRgn2

    //Кусок в виде пятиугольника
    HRGN Reg1, Reg2;
    HRGN Region;
    POINT p[5];
    p[0] = Point(100, 0);
    p[1] = Point(Width-100, 0);
    p[2] = Point(Width, Height/2);
    p[3] = Point(Width/2, Height);
    p[4] = Point(0, Height/2);
    Region = CreatePolygonRgn(p, 5, ALTERNATE);
    SetWindowRgn(Handle, Region, true);

  9. Создание новой формы во время работы программы

    // Для того чтобы создать новую форму напишите:
    // следующих код:

    TForm * Formik= new TForm(this);
    TButton* button=new TButton(Application);
    button->Parent=Formik;
    button->Caption="New Button";
    button->Left=10;
    button->Top=15;
    button->Show();
    Formik->Caption=123;
    Formik->ShowModal();
    delete Formik;

  10. Как сделать прозрачную форму в W2K/XP

    // Для того чтобы сделать прозрачную форму напишите:
    int Transparency = 75;//насколько прозрачным будет окно (0-100%)
    long ExtStyle = GetWindowLong(Handle, GWL_EXSTYLE);
    SetWindowLong(Handle, GWL_EXSTYLE, ExtStyle | WS_EX_LAYERED);
    SetLayeredWindowAttributes(Handle, 0 , (255 * Transparency) / 100,
    LWA_ALPHA);

  11. Прозрачное окно с реакцией на нажатия кнопок, панелей

    // Для того чтобы создать форму напишите:
    void __fastcall TForm1::Photo()
    {
    int X0,Y0;
    bool Flag;
    TRect ScreenRect;
    TCanvas* ScreenCanvas=new TCanvas;
    try
    {
      Top=0;
      Left=Screen->Width;
      Width=Screen->Width;
      Height=Screen->Height;
      ScreenRect=Rect(0,0,Width,Height);
      ScreenCanvas->Handle=GetDC(0);
      Image1->Canvas->CopyRect(ScreenRect, ScreenCanvas,ScreenRect);
      ReleaseDC(Handle,ScreenCanvas->Handle);
      Left=Top;
    } __finally
    {
      delete ScreenCanvas;
    }
    }

  12. Новая форма как отдельное окно

    // Для того чтобы создать новую форму напишите:
    void __fastcall TForm1::CreateParams(TCreateParams& Params)
    {
    TForm::CreateParams(Params);
    Params.WndParent = 0;
    }

  13. Приложение без формы

    Создайте новый проект. Дальше: Project->Remove from project

  14. Определения класса окна определённого приложения

    Для того чтобы определить класс определённого приложения напишите следующий код:

    HWND hWnd=FindWindow(NULL,"Калькулятор");//для русскоязычной Windows
    if (hWnd)
    {
    char buff[100];
    GetClassName(hWnd,buff,100);
    ShowMessage(buff);
    }
    Автор: Srpj Сайт: http://srpj.narod.ru/

  15. Как заполнить канву формы, фоном рабочего стола

    // Напишите следующий код:
    PaintDesktop(Form1->Canvas->Handle);

Наверх
Hosted by uCoz