Я занимаюсь разработкой приложения для виджетов Windows 10.По сути, мне нужно, чтобы его можно было перетаскивать на рабочий стол с размытым черным прозрачным фоном.
Вот пример изображения моего целевого продукта.
У меня естьнашел начало процесса создания формы в C ++ довольно сложным.Поскольку, когда я создавал обычное приложение Windows Form через Visual Studio, я не мог спроектировать форму, я решил использовать скрытый подход.Я создал пустой проект CLR, а затем перешел на Project -> Add Item -> UI
.Пока это мой единственный код:
MyForm.cpp
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
[STAThreadAttribute]
int main(array<String^>^ args) {
Application::EnableVisualStyles;
Application::SetCompatibleTextRenderingDefault(false);
gameGauge::MyForm form;
Application::Run(%form);
return 0;
}
MyForm.h
#pragma once
namespace gameGauge {
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>
/// Summary for MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->SuspendLayout();
//
// MyForm
//
this->AllowDrop = true;
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(472, 227);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
this->Name = L"gameGauge";
this->Text = L"gameGauge";
this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
}
};
}
Это просто пустая форма.Я нашел несколько человек, которые успешно реализовали этот эффект .
Как видно из источника № 2, код написан для C #.Если бы я свободно говорил с C ++, как и с другими языками, я бы просто переписал код из Source # 2, чтобы сопровождать мой проект C ++.Проблема в следующем: Понятия не имею, что я делаю.
Я почти не понимаю, как прошел процесс создания простой формы.Я не знаю, как даже применить эту функцию SetWindowCompositionAttribute
к моему проекту.Я не знаю, куда бы я вставил его в код, который я включил.
Кроме того, возможны ли округленные границы на окне (как показано на исходном изображении) с помощью C ++?
Этот эффект жизненно важен для функциональности моего проекта.Если вы, ребята, можете мне помочь, это будет очень ценно.Спасибо экспертам!
Обновление: я просто собираюсь использовать C #.C ++ непрактичен для виджета.Сейчас я использую WPF с C #, и это намного проще!