Comment définir l’application Windows Forms (C ++) pour avoir un arrière-plan Aero / Glass?

Je travaille sur la création d’une application Windows Forms en C ++ à l’aide de Visual Studio 2010 Pro. Je souhaitais créer un arrière-plan transparent, c’est-à-dire, en utilisant l’effet Aero Glass, similaire à la manière dont il entoure le bas de l’interface utilisateur dans le visualiseur de photos Windows. À ce stade, j’ai parcouru toutes les fonctions et, bien que vous puissiez changer de couleur et d’opacité, ce n’est pas exactement ce que je recherche. Je veux ce bel effet de verre flou.

J’ai démarré ce projet à partir du code modèle fourni par Visual Studio. Je n’ai donc pas vraiment beaucoup de liens. Je viens d’append quelques éléments de la boîte à outils et de les lier aux fonctions du fichier Form1.h. Je m’excuse pour mon manque de consortingbution, je suis assez nouveau dans la programmation d’interface utilisateur Windows; J’aimerais pouvoir append plus d’informations. Par souci de simplicité, voici le code Form1.h:

#pragma once namespace Secret { //my project's name is "Secret" using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; ///  /// Summary for Form1 ///  public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: Add the constructor code here // } protected: ///  /// Clean up any resources being used. ///  ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::RichTextBox^ richTextBox1; private: System::Windows::Forms::TextBox^ textBox1; private: Microsoft::VisualBasic::PowerPacks::ShapeContainer^ shapeContainer1; private: Microsoft::VisualBasic::PowerPacks::RectangleShape^ rectangleShape1; private: Microsoft::VisualBasic::PowerPacks::LineShape^ lineShape1; private: Microsoft::VisualBasic::PowerPacks::OvalShape^ ovalShape2; private: Microsoft::VisualBasic::PowerPacks::OvalShape^ ovalShape1; protected: private: ///  /// Required designer variable. ///  System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code ///  /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///  void InitializeComponent(void) { this->button1 = (gcnew System::Windows::Forms::Button()); this->richTextBox1 = (gcnew System::Windows::Forms::RichTextBox()); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->shapeContainer1 = (gcnew Microsoft::VisualBasic::PowerPacks::ShapeContainer()); this->lineShape1 = (gcnew Microsoft::VisualBasic::PowerPacks::LineShape()); this->ovalShape2 = (gcnew Microsoft::VisualBasic::PowerPacks::OvalShape()); this->ovalShape1 = (gcnew Microsoft::VisualBasic::PowerPacks::OvalShape()); this->rectangleShape1 = (gcnew Microsoft::VisualBasic::PowerPacks::RectangleShape()); this->SuspendLayout(); // // button1 // this->button1->Location = System::Drawing::Point(107, 171); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(75, 23); this->button1->TabIndex = 0; this->button1->Text = L"Save"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); // // richTextBox1 // this->richTextBox1->Location = System::Drawing::Point(12, 12); this->richTextBox1->Name = L"richTextBox1"; this->richTextBox1->Size = System::Drawing::Size(260, 126); this->richTextBox1->TabIndex = 1; this->richTextBox1->Text = L""; this->richTextBox1->TextChanged += gcnew System::EventHandler(this, &Form1::richTextBox1_TextChanged); // // textBox1 // this->textBox1->Location = System::Drawing::Point(13, 145); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(259, 20); this->textBox1->TabIndex = 2; this->textBox1->Text = L"filename.txt"; // // shapeContainer1 // this->shapeContainer1->Location = System::Drawing::Point(0, 0); this->shapeContainer1->Margin = System::Windows::Forms::Padding(0); this->shapeContainer1->Name = L"shapeContainer1"; this->shapeContainer1->Shapes->AddRange(gcnew cli::array(4) {this->lineShape1, this->ovalShape2, this->ovalShape1, this->rectangleShape1}); this->shapeContainer1->Size = System::Drawing::Size(290, 268); this->shapeContainer1->TabIndex = 3; this->shapeContainer1->TabStop = false; // // lineShape1 // this->lineShape1->Name = L"lineShape1"; this->lineShape1->X1 = 14; this->lineShape1->X2 = 270; this->lineShape1->Y1 = 228; this->lineShape1->Y2 = 228; // // ovalShape2 // this->ovalShape2->Location = System::Drawing::Point(135, 207); this->ovalShape2->Name = L"ovalShape2"; this->ovalShape2->Size = System::Drawing::Size(20, 44); // // ovalShape1 // this->ovalShape1->Location = System::Drawing::Point(16, 208); this->ovalShape1->Name = L"ovalShape1"; this->ovalShape1->Size = System::Drawing::Size(252, 42); // // rectangleShape1 // this->rectangleShape1->Location = System::Drawing::Point(14, 206); this->rectangleShape1->Name = L"rectangleShape1"; this->rectangleShape1->Size = System::Drawing::Size(257, 46); // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->BackColor = System::Drawing::SystemColors::Control; this->BackgroundImageLayout = System::Windows::Forms::ImageLayout::None; this->ClientSize = System::Drawing::Size(290, 268); this->Controls->Add(this->textBox1); this->Controls->Add(this->richTextBox1); this->Controls->Add(this->button1); this->Controls->Add(this->shapeContainer1); this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::Fixed3D; this->MaximizeBox = false; this->Name = L"Form1"; this->Text = L"Secret"; this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { } private: System::Void richTextBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) { } private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } }; } 

Merci pour toute aide! Je vous en suis reconnaissant.

Ce que vous recherchez, c’est l’API DWM (Desktop Window Manager), en particulier la fonction DwmExtendFrameIntoClientArea .

Voici un code C # qui montre comment procéder: CodeProject

Veillez également à ne pas étendre le cadre lorsque la composition du bureau est activée, sinon vous rencontrerez des problèmes .