Struct Button

Source
pub struct Button(/* private fields */);
Available on crate feature gui only.
Expand description

Native button control.

§Examples

Basic structure of a program with a main window and a button, both created programmatically:

use winsafe::{self as w, co, gui, prelude::*};

fn main() {
    if let Err(err) = Main::create_and_run() {
        w::HWND::NULL
            .MessageBox(&err.to_string(), "Uncaught error", co::MB::ICONERROR)
            .unwrap();
    }
}

#[derive(Clone)]
struct Main {
    wnd: gui::WindowMain,
    btn: gui::Button,
}

impl Main {
    #[must_use]
    fn create_and_run() -> w::AnyResult<i32> {
        let wnd = gui::WindowMain::new(gui::WindowMainOpts {
            title: "Main window".to_owned(),
            ..Default::default()
        });
        let btn = gui::Button::new(
            &wnd,
            gui::ButtonOpts {
                text: "&Click me".to_owned(),
                position: gui::dpi(20, 20),
                ..Default::default()
            },
        );

        let new_self = Self { wnd, btn };
        new_self.events();

        new_self.wnd.run_main(None)
    }

    fn events(&self) {
        let self2 = self.clone();
            self.btn.on().bn_clicked(move || {
            self2.wnd.hwnd().SetWindowText("Button clicked")?;
            Ok(())
        });
    }
}

Implementations§

Source§

impl Button

Source

pub fn on_subclass(&self) -> &WindowEvents

Exposes the subclass events. If at least one event exists, the control will be subclassed.

Note: Subclassing may impact performance, use with care.

§Panics

Panics if the control or the parent window are already created. Events must be set before control and parent window creation.

Source

pub fn on(&self) -> &ButtonEvents

Exposes the specific control events.

§Panics

Panics if the control is already created. Events must be set before control creation.

Source§

impl Button

Source

pub fn new(parent: &(impl GuiParent + 'static), opts: ButtonOpts) -> Self

Instantiates a new Button object, to be created on the parent window with HWND::CreateWindowEx.

§Panics

Panics if the parent window was already created – that is, you cannot dynamically create a Button in an event closure.

Source

pub fn new_dlg( parent: &(impl GuiParent + 'static), ctrl_id: u16, resize_behavior: (Horz, Vert), ) -> Self

Instantiates a new Button object, to be loaded from a dialog resource with HWND::GetDlgItem.

§Panics

Panics if the parent dialog was already created – that is, you cannot dynamically create a Button in an event closure.

Source

pub fn trigger_click(&self)

Fires the click event for the button by sending a bm::Click message.

Trait Implementations§

Source§

impl Clone for Button

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl GuiControl for Button

Source§

fn ctrl_id(&self) -> u16

Returns the control ID, which is defined at control creation. Read more
Source§

fn focus(&self) -> SysResult<()>

If the control belongs to an ordinary window, simply calls HWND:SetFocus. Read more
Source§

impl GuiWindow for Button

Source§

fn hwnd(&self) -> &HWND

Returns the underlying handle for this window. Read more
Source§

fn as_any(&self) -> &dyn Any

Converts a reference to the Any trait. This is useful when storing a collection of polymorphic controls, because Any allows downcasting. Read more
Source§

impl Send for Button

Auto Trait Implementations§

§

impl Freeze for Button

§

impl !RefUnwindSafe for Button

§

impl !Sync for Button

§

impl Unpin for Button

§

impl !UnwindSafe for Button

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.