CreateParams Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
De benodigde informatie wordt ingekapseld bij het maken van een besturingselement.
public ref class CreateParams
public class CreateParams
type CreateParams = class
Public Class CreateParams
- Overname
-
CreateParams
Voorbeelden
In het volgende codevoorbeeld wordt een Button afgeleide klasse gemaakt met de naam MyIconButton en wordt de implementatie geboden die nodig is voor de knop om een pictogram weer te geven in plaats van een afbeelding. De CreateParams eigenschap wordt uitgebreid en een waarde toegevoegd aan de Style eigenschap waardoor de knop een Icon in plaats van een Image.
#include <windows.h>
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Runtime::InteropServices;
using namespace System::Diagnostics;
using namespace System::IO;
public ref class MyIconButton: public Button
{
private:
Icon^ icon;
public:
MyIconButton()
{
// Set the button's FlatStyle property.
FlatStyle = ::FlatStyle::System;
}
MyIconButton( Icon^ ButtonIcon )
{
// Set the button's FlatStyle property.
FlatStyle = ::FlatStyle::System;
// Assign the icon to the private field.
this->icon = ButtonIcon;
// Size the button to 4 pixels larger than the icon.
this->Height = icon->Height + 4;
this->Width = icon->Width + 4;
}
protected:
property System::Windows::Forms::CreateParams^ CreateParams
{
virtual System::Windows::Forms::CreateParams^ get() override
{
// Extend the CreateParams property of the Button class.
System::Windows::Forms::CreateParams^ cp = __super::CreateParams;
// Update the button Style.
cp->Style |= 0x00000040; // BS_ICON value
return cp;
}
}
public:
property System::Drawing::Icon^ Icon
{
System::Drawing::Icon^ get()
{
return icon;
}
void set(System::Drawing::Icon^ value)
{
icon = value;
UpdateIcon();
this->Height = icon->Height + 4;
this->Width = icon->Width + 4;
}
}
protected:
virtual void OnHandleCreated( EventArgs^ e ) override
{
Button::OnHandleCreated( e );
// Update the icon on the button if there is currently an icon assigned to the icon field.
if ( icon != nullptr )
{
UpdateIcon();
}
}
private:
void UpdateIcon()
{
IntPtr iconHandle = IntPtr::Zero;
// Get the icon's handle.
if ( icon != nullptr )
{
iconHandle = icon->Handle;
}
// Send Windows the message to update the button.
SendMessage( (HWND)Handle.ToPointer(), 0x00F7, 1, (int)iconHandle );
/*BM_SETIMAGE value*/
/*IMAGE_ICON value*/
}
public:
[DllImport("user32.dll")]
static LRESULT SendMessage(HWND hWnd, int msg, int wParam, int lParam);
};
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.IO;
public class MyIconButton : Button
{
private Icon icon;
public MyIconButton()
{
// Set the button's FlatStyle property.
FlatStyle = FlatStyle.System;
}
public MyIconButton(Icon ButtonIcon)
: this()
{
// Assign the icon to the private field.
this.icon = ButtonIcon;
// Size the button to 4 pixels larger than the icon.
this.Height = icon.Height + 4;
this.Width = icon.Width + 4;
}
protected override CreateParams CreateParams
{
get
{
// Extend the CreateParams property of the Button class.
CreateParams cp = base.CreateParams;
// Update the button Style.
cp.Style |= 0x00000040; // BS_ICON value
return cp;
}
}
public Icon Icon
{
get
{
return icon;
}
set
{
icon = value;
UpdateIcon();
// Size the button to 4 pixels larger than the icon.
this.Height = icon.Height + 4;
this.Width = icon.Width + 4;
}
}
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
// Update the icon on the button if there is currently an icon assigned to the icon field.
if (icon != null)
{
UpdateIcon();
}
}
private void UpdateIcon()
{
IntPtr iconHandle = IntPtr.Zero;
// Get the icon's handle.
if (icon != null)
{
iconHandle = icon.Handle;
}
// Send Windows the message to update the button.
SendMessage(Handle, 0x00F7 /*BM_SETIMAGE value*/, 1 /*IMAGE_ICON value*/, (int)iconHandle);
}
// Import the SendMessage method of the User32 DLL.
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
}
Imports System.Windows.Forms
Imports System.Drawing
Imports System.IO
Imports System.Security.Permissions
Public Class MyIconButton
Inherits Button
Private ButtonIcon As Icon
Public Sub New()
MyBase.New()
' Set the button's FlatStyle property.
Me.FlatStyle = System.Windows.Forms.FlatStyle.System
End Sub
Public Sub New(ByVal Icon As Icon)
MyBase.New()
' Assign the icon to the private field.
Me.ButtonIcon = Icon
' Size the button to 4 pixels larger than the icon.
Me.Height = ButtonIcon.Height + 4
Me.Width = ButtonIcon.Width + 4
End Sub
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim SecPerm As New SecurityPermission(SecurityPermissionFlag.UnmanagedCode)
SecPerm.Demand()
' Extend the CreateParams property of the Button class.
Dim cp As System.Windows.Forms.CreateParams = MyBase.CreateParams
' Update the button Style.
cp.Style = cp.Style Or &H40 ' BS_ICON value
Return cp
End Get
End Property
Public Property Icon() As Icon
Get
Return ButtonIcon
End Get
Set(ByVal Value As Icon)
ButtonIcon = Value
UpdateIcon()
' Size the button to 4 pixels larger than the icon.
Me.Height = ButtonIcon.Height + 4
Me.Width = ButtonIcon.Width + 4
End Set
End Property
<SecurityPermission(SecurityAction.Demand, UnmanagedCode := True)> _
Protected Overrides Sub OnHandleCreated(ByVal e As EventArgs)
MyBase.OnHandleCreated(e)
' Update the icon on the button if there is currently an icon assigned to the icon field.
If Me.ButtonIcon IsNot Nothing Then
UpdateIcon()
End If
End Sub
Private Sub UpdateIcon()
Dim IconHandle As IntPtr = IntPtr.Zero
' Get the icon's handle.
If Me.Icon IsNot Nothing Then
IconHandle = Icon.Handle
End If
' Send Windows the message to update the button.
' BM_SETIMAGE (second parameter) and IMAGE_ICON (third parameter).
SendMessage(Handle, &HF7, &H1, IconHandle.ToInt32())
End Sub
' Declare the SendMessage function.
Declare Auto Function SendMessage Lib "user32" (ByVal hWnd As IntPtr, _
ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
End Class
In het volgende codevoorbeeld wordt een exemplaar van een standaard Button besturingselement en een exemplaar van het afgeleide besturingselement gemaakt, MyIconButtongemaakt in het bovenstaande voorbeeld. In dit voorbeeld is vereist dat er een Icon bestand met de naam Default.ico zich op dezelfde locatie bevindt als de toepassing. Wanneer de toepassing wordt gestart, wordt het Default pictogram weergegeven op de MyIconButton knop. Als het Default pictogram niet aanwezig is, is het knopvlak leeg. Wanneer op de standaard Button wordt geklikt, wordt er een OpenFileDialog vak weergegeven, zodat u een nieuw pictogram kunt selecteren om weer te geven op het MyIconButtonpictogram.
public ref class MyApplication: public Form
{
private:
MyIconButton^ myIconButton;
Button^ stdButton;
OpenFileDialog^ openDlg;
public:
MyApplication()
{
try
{
// Create the button with the default icon.
myIconButton = gcnew MyIconButton( gcnew System::Drawing::Icon( String::Concat( Application::StartupPath, "\\Default.ico" ) ) );
}
catch ( Exception^ ex )
{
// If the default icon does not exist, create the button without an icon.
myIconButton = gcnew MyIconButton;
#if defined(DEBUG)
Debug::WriteLine( ex );
#endif
}
finally
{
stdButton = gcnew Button;
// Add the Click event handlers.
myIconButton->Click += gcnew EventHandler( this, &MyApplication::myIconButton_Click );
stdButton->Click += gcnew EventHandler( this, &MyApplication::stdButton_Click );
// Set the location, text and width of the standard button.
stdButton->Location = Point(myIconButton->Location.X,myIconButton->Location.Y + myIconButton->Height + 20);
stdButton->Text = "Change Icon";
stdButton->Width = 100;
// Add the buttons to the Form.
this->Controls->Add( stdButton );
this->Controls->Add( myIconButton );
}
}
private:
void myIconButton_Click( Object^ /*Sender*/, EventArgs^ /*e*/ )
{
#undef MessageBox
// Make sure MyIconButton works.
MessageBox::Show( "MyIconButton was clicked!" );
}
void stdButton_Click( Object^ /*Sender*/, EventArgs^ /*e*/ )
{
// Use an OpenFileDialog to allow the user to assign a new image to the derived button.
openDlg = gcnew OpenFileDialog;
openDlg->InitialDirectory = Application::StartupPath;
openDlg->Filter = "Icon files (*.ico)|*.ico";
openDlg->Multiselect = false;
openDlg->ShowDialog();
if ( !openDlg->FileName->Equals( "" ) )
{
myIconButton->Icon = gcnew System::Drawing::Icon( openDlg->FileName );
}
}
};
int main()
{
Application::Run( gcnew MyApplication );
}
public class MyApplication : Form
{
private MyIconButton myIconButton;
private Button stdButton;
private OpenFileDialog openDlg;
static void Main()
{
Application.Run(new MyApplication());
}
public MyApplication()
{
try
{
// Create the button with the default icon.
myIconButton = new MyIconButton(new Icon(Application.StartupPath + "\\Default.ico"));
}
catch (Exception ex)
{
// If the default icon does not exist, create the button without an icon.
myIconButton = new MyIconButton();
Debug.WriteLine(ex.ToString());
}
finally
{
stdButton = new Button();
// Add the Click event handlers.
myIconButton.Click += new EventHandler(this.myIconButton_Click);
stdButton.Click += new EventHandler(this.stdButton_Click);
// Set the location, text and width of the standard button.
stdButton.Location = new Point(myIconButton.Location.X, myIconButton.Location.Y + myIconButton.Height + 20);
stdButton.Text = "Change Icon";
stdButton.Width = 100;
// Add the buttons to the Form.
this.Controls.Add(stdButton);
this.Controls.Add(myIconButton);
}
}
private void myIconButton_Click(object Sender, EventArgs e)
{
// Make sure MyIconButton works.
MessageBox.Show("MyIconButton was clicked!");
}
private void stdButton_Click(object Sender, EventArgs e)
{
// Use an OpenFileDialog to allow the user to assign a new image to the derived button.
openDlg = new OpenFileDialog();
openDlg.InitialDirectory = Application.StartupPath;
openDlg.Filter = "Icon files (*.ico)|*.ico";
openDlg.Multiselect = false;
openDlg.ShowDialog();
if (openDlg.FileName != "")
{
myIconButton.Icon = new Icon(openDlg.FileName);
}
}
}
Public Class Form1
Inherits System.Windows.Forms.Form
Friend WithEvents MyStdButton As System.Windows.Forms.Button
Friend WithEvents MyIconButton As MyIconButton
Friend WithEvents OpenDlg As OpenFileDialog
Public Sub New()
MyBase.New()
Try
' Create the button with the default icon.
MyIconButton = New MyIconButton(New Icon(Application.StartupPath + "\Default.ico"))
Catch ex As Exception
' If the default icon does not exist, create the button without an icon.
MyIconButton = New MyIconButton()
System.Diagnostics.Debug.WriteLine(ex.ToString())
Finally
MyStdButton = New Button()
'Set the location, text and width of the standard button.
MyStdButton.Location = New Point(MyIconButton.Location.X, _
MyIconButton.Location.Y + MyIconButton.Height + 20)
MyStdButton.Text = "Change Icon"
MyStdButton.Width = 100
' Add the buttons to the Form.
Me.Controls.Add(MyStdButton)
Me.Controls.Add(MyIconButton)
End Try
End Sub
Public Shared Sub Main()
Application.Run(New Form1())
End Sub
Private Sub MyStdButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyStdButton.Click
' Use an OpenFileDialog to allow the user to assign a new image to the derived button.
OpenDlg = New OpenFileDialog()
OpenDlg.InitialDirectory = Application.StartupPath
OpenDlg.Filter = "Icon files (*.ico)|*.ico"
OpenDlg.Multiselect = False
OpenDlg.ShowDialog()
If OpenDlg.FileName <> "" Then
MyIconButton.Icon = New Icon(OpenDlg.FileName)
End If
End Sub
Private Sub MyIconButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyIconButton.Click
' Make sure MyIconButton works.
MessageBox.Show("MyIconButton was clicked!")
End Sub
End Class
Opmerkingen
De informatie in een CreateParams kan worden gebruikt om informatie over de initiële status en het uiterlijk van een besturingselement door te geven. De meeste Control afgeleide besturingselementen overschrijven de CreateParams eigenschap om de juiste waarden door te geven of aanvullende informatie in de CreateParams.
Zie De macro CreateWindow, de functie CreateWindowEx en createSTRUCT structure voor meer informatie over het maken van besturingsparameters.
Note
De constanten die worden gebruikt om de Style, ExStyleen ClassStyle eigenschappen in te stellen, worden gedefinieerd in het headerbestand Winuser.h. Dit bestand wordt geïnstalleerd door de Platform SDK of Visual Studio.
Constructors
| Name | Description |
|---|---|
| CreateParams() |
Initialiseert een nieuw exemplaar van de CreateParams klasse. |
Eigenschappen
| Name | Description |
|---|---|
| Caption |
Hiermee haalt u de initiële tekst van het besturingselement op of stelt u deze in. |
| ClassName |
Hiermee wordt de naam van de Windows-klasse opgehaald of ingesteld waaruit het besturingselement moet worden afgeleid. |
| ClassStyle |
Hiermee haalt u een bitsgewijze combinatie van klassestijlwaarden op of stelt u deze in. |
| ExStyle |
Hiermee haalt u een bitsgewijze combinatie van uitgebreide vensterstijlwaarden op of stelt u deze in. |
| Height |
Hiermee haalt u de initiële hoogte van het besturingselement op of stelt u deze in. |
| Param |
Hiermee wordt aanvullende parameterinformatie opgehaald of ingesteld die nodig is om het besturingselement te maken. |
| Parent |
Hiermee haalt u het bovenliggende besturingselement op of stelt u dit in. |
| Style |
Hiermee haalt u een bitsgewijze combinatie van vensterstijlwaarden op of stelt u deze in. |
| Width |
Hiermee haalt u de initiële breedte van het besturingselement op of stelt u deze in. |
| X |
Hiermee haalt u de eerste linkerpositie van het besturingselement op of stelt u deze in. |
| Y |
Hiermee haalt u de bovenste positie van de oorspronkelijke locatie van het besturingselement op of stelt u deze in. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. |