mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
cppkore uses string/wstring as StringBase while we use std::string/std::wstring as string/wstring. Changed all types in cppkore to String/WString instead.
190 lines
6.1 KiB
C++
190 lines
6.1 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include "Control.h"
|
|
#include "StringBase.h"
|
|
#include "ListBase.h"
|
|
#include "ImmutableStringBase.h"
|
|
#include "DrawMode.h"
|
|
#include "FlatStyle.h"
|
|
#include "ComboBoxStyle.h"
|
|
|
|
namespace Forms
|
|
{
|
|
// Displays an editing field and a list control.
|
|
class ComboBox : public Control
|
|
{
|
|
public:
|
|
ComboBox();
|
|
virtual ~ComboBox() = default;
|
|
|
|
// Gets whether the control is drawn by Windows or by the user.
|
|
DrawMode GetDrawMode();
|
|
// Sets whether the control is drawn by Windows or by the user.
|
|
void SetDrawMode(DrawMode Value);
|
|
|
|
// Gets the width of the drop down box in a combo box.
|
|
uint32_t DropDownWidth();
|
|
// Sets the width of the drop down box in a combo box.
|
|
void SetDropDownWidth(uint32_t Value);
|
|
|
|
// Gets the Height of the drop down box in a combo box.
|
|
uint32_t DropDownHeight();
|
|
// Sets the Height of the drop down box in a combo box.
|
|
void SetDropDownHeight(uint32_t Value);
|
|
|
|
// Indicates whether the DropDown of the combo is currently dropped down.
|
|
bool DroppedDown();
|
|
// Sets whether the DropDown of the combo is currently dropped down.
|
|
void SetDroppedDown(bool Value);
|
|
|
|
// Gets the flat style appearance of the button control.
|
|
FlatStyle GetFlatStyle();
|
|
// Sets the flat style appearance of the button control.
|
|
void SetFlatStyle(FlatStyle Value);
|
|
|
|
// Gets if the combo should avoid showing partial Items.
|
|
bool IntegralHeight();
|
|
// Sets if the combo should avoid showing partial Items.
|
|
void SetIntegralHeight(bool Value);
|
|
|
|
// Gets the height of an item in the combo box.
|
|
int32_t ItemHeight();
|
|
// Sets the height of an item in the combo box.
|
|
void SetItemHeight(int32_t Value);
|
|
|
|
// Gets the maximum number of items to be shown in the dropdown portion
|
|
// of the ComboBox. This number can be between 1 and 100.
|
|
uint8_t MaxDropDownItems();
|
|
// Sets the maximum number of items to be shown in the dropdown portion
|
|
// of the ComboBox. This number can be between 1 and 100.
|
|
void SetMaxDropDownItems(uint8_t Value);
|
|
|
|
// Gets the maximum length of the text the user may type into the edit control of a combo box.
|
|
uint32_t MaxLength();
|
|
// Sets the maximum length of the text the user may type into the edit control of a combo box.
|
|
void SetMaxLength(uint32_t Value);
|
|
|
|
// Gets the [zero based] index of the currently selected item in the combos list.
|
|
// Note If the value of index is -1, then the ComboBox is
|
|
// set to have no selection.
|
|
int32_t SelectedIndex();
|
|
// Sets the [zero based] index of the currently selected item in the combos list.
|
|
// Note If the value of index is -1, then the ComboBox is
|
|
// set to have no selection.
|
|
void SetSelectedIndex(int32_t Value);
|
|
|
|
// Gets the selected text in the edit component of the ComboBox.
|
|
String SelectedText();
|
|
// Sets the selected text in the edit component of the ComboBox.
|
|
void SetSelectedText(const String& Value);
|
|
|
|
// Gets length, in characters, of the selection in the editbox.
|
|
int32_t SelectionLength();
|
|
// Sets length, in characters, of the selection in the editbox.
|
|
void SetSelectionLength(int32_t Value);
|
|
|
|
// Gets the [zero-based] index of the first character in the current text selection.
|
|
int32_t SelectionStart();
|
|
// Sets the [zero-based] index of the first character in the current text selection.
|
|
void SetSelectionStart(int32_t Value);
|
|
|
|
// Gets the type of combo that we are right now.
|
|
ComboBoxStyle DropDownStyle();
|
|
// Sets the type of combo that we are right now.
|
|
void SetDropDownStyle(ComboBoxStyle Value);
|
|
|
|
// Selects the text in the editable portion of the ComboBox at the
|
|
void Select(int32_t Start, int32_t Length);
|
|
|
|
// The items contained in the combo box.
|
|
struct ComboBoxItemCollection
|
|
{
|
|
ComboBoxItemCollection(ComboBox* Owner);
|
|
~ComboBoxItemCollection() = default;
|
|
|
|
// Adds an item to the combo box.
|
|
void Add(const imstring& Value);
|
|
// Inserts an item to the combo box.
|
|
void Insert(int32_t Index, const imstring& Value);
|
|
// Removes all items from the combo box.
|
|
void Clear();
|
|
// Checks if the combo box contains the value.
|
|
bool Contains(const imstring& Value);
|
|
// Gets the index of the item, if any.
|
|
int32_t IndexOf(const imstring& Value);
|
|
// Removes an item at the specified index.
|
|
void RemoveAt(int32_t Index);
|
|
// Removes an item from the combo box.
|
|
void Remove(const imstring& Value);
|
|
// Gets the count of items in the combo box.
|
|
uint32_t Count();
|
|
|
|
// Iterater classes
|
|
String* begin() const;
|
|
String* end() const;
|
|
|
|
protected:
|
|
// Internal references
|
|
ComboBox* _Owner;
|
|
List<String> _Items;
|
|
} Items;
|
|
|
|
// We must define control event bases here
|
|
virtual void OnHandleCreated();
|
|
virtual void OnSelectedItemChanged();
|
|
virtual void OnSelectedIndexChanged();
|
|
virtual void OnDropDownClosed();
|
|
|
|
// We must define event handlers here
|
|
EventBase<void(*)(Control*)> SelectedItemChanged;
|
|
EventBase<void(*)(Control*)> SelectedIndexChanged;
|
|
EventBase<void(*)(Control*)> DropDownClosed;
|
|
|
|
// Override WndProc for specific combo box messages.
|
|
virtual void WndProc(Message& Msg);
|
|
|
|
protected:
|
|
// Get custom control creation parameters for this instance.
|
|
virtual CreateParams GetCreateParams();
|
|
|
|
// Sets the text and background colors of the DC, and returns the background HBRUSH.
|
|
virtual uintptr_t InitializeDCForWmCtlColor(HDC Dc, int32_t Message);
|
|
|
|
// Internal routine to add an item.
|
|
int32_t NativeAdd(const char* Value);
|
|
// Internal routine to clear the items.
|
|
void NativeClear();
|
|
// Internal routine to insert an item.
|
|
int32_t NativeInsert(int32_t Index, const char* Value);
|
|
// Internal routine to remove an item.
|
|
void NativeRemoveAt(int32_t Index);
|
|
|
|
private:
|
|
// Internal cached flags
|
|
FlatStyle _FlatStyle;
|
|
DrawMode _DrawMode;
|
|
ComboBoxStyle _DropDownStyle;
|
|
|
|
// Internal show partial items
|
|
bool _IntegralHeight;
|
|
|
|
// Internal size of dropdown
|
|
int32_t _DropDownWidth;
|
|
int32_t _DropDownHeight;
|
|
int32_t _SelectedIndex;
|
|
|
|
// Internal children
|
|
HWND _ChildEdit;
|
|
HWND _ChildListBox;
|
|
|
|
// Internal maximum items
|
|
uint8_t _MaxDropDownItems;
|
|
|
|
// Internal maximun length
|
|
uint32_t _MaximumLength;
|
|
|
|
// We must define each window message handler here...
|
|
void WmReflectCommand(Message& Msg);
|
|
};
|
|
} |