修复BUTTON控件关联状态BUG
This commit is contained in:
parent
f397231416
commit
fb462ebd04
|
@ -139,6 +139,19 @@ int dlg_base::select_combo_text(HWND combo, const wchar_t* text)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
std::wstring dlg_base::get_wnd_text(HWND h)
|
||||||
|
{
|
||||||
|
int len = GetWindowTextLengthW(h);
|
||||||
|
wchar_t* buf = new wchar_t[len + 8];
|
||||||
|
std::wstring ret(L"");
|
||||||
|
|
||||||
|
memset(buf, 0, (len + 8) * 2);
|
||||||
|
GetWindowTextW(h, buf, len + 2);
|
||||||
|
ret = buf;
|
||||||
|
delete[] buf;
|
||||||
|
|
||||||
|
return std::move(ret);
|
||||||
|
}
|
||||||
|
|
||||||
BOOL dlg_base::handle_message(UINT msg, WPARAM wp, LPARAM lp)
|
BOOL dlg_base::handle_message(UINT msg, WPARAM wp, LPARAM lp)
|
||||||
{
|
{
|
||||||
|
@ -284,6 +297,48 @@ int dlg_base::get_string_width(const wchar_t* str)
|
||||||
|
|
||||||
return size.cx;
|
return size.cx;
|
||||||
}
|
}
|
||||||
|
bool dlg_base::get_item_rect(UINT id, LPRECT r, bool client)
|
||||||
|
{
|
||||||
|
if (client)
|
||||||
|
return GetClientRect(GetDlgItem(hwnd_, id), r) == TRUE;
|
||||||
|
else
|
||||||
|
return GetWindowRect(GetDlgItem(hwnd_, id), r) == TRUE;
|
||||||
|
}
|
||||||
|
std::wstring dlg_base::get_item_text(UINT id)
|
||||||
|
{
|
||||||
|
return std::move(dlg_base::get_wnd_text(get_item(id)));
|
||||||
|
}
|
||||||
|
int dlg_base::get_width_diff_as_text_length(UINT id)
|
||||||
|
{
|
||||||
|
RECT r = { 0 };
|
||||||
|
|
||||||
|
get_item_rect(id, &r);
|
||||||
|
|
||||||
|
return get_string_width(get_item_text(id).c_str()) - RECT_W(r);
|
||||||
|
}
|
||||||
|
void dlg_base::offset_item(UINT id, int dx, int dy)
|
||||||
|
{
|
||||||
|
RECT r = { 0 };
|
||||||
|
|
||||||
|
get_item_rect(id, &r, false);
|
||||||
|
OffsetRect(&r, dx, dy);
|
||||||
|
screen_2_client(&r);
|
||||||
|
MoveWindow(get_item(id), r.left, r.top, RECT_W(r), RECT_H(r), FALSE);
|
||||||
|
}
|
||||||
|
void dlg_base::expand_item(UINT id, int dx, int dy)
|
||||||
|
{
|
||||||
|
RECT r = { 0 };
|
||||||
|
|
||||||
|
get_item_rect(id, &r, false);
|
||||||
|
r.right += dx;
|
||||||
|
r.bottom += dy;
|
||||||
|
screen_2_client(&r);
|
||||||
|
MoveWindow(get_item(id), r.left, r.top, RECT_W(r), RECT_H(r), FALSE);
|
||||||
|
}
|
||||||
|
bool dlg_base::set_item_text(UINT id, const wchar_t* text)
|
||||||
|
{
|
||||||
|
return SetWindowTextW(GetDlgItem(hwnd_, id), text) == TRUE;
|
||||||
|
}
|
||||||
void dlg_base::show_scroll_bar(int bar, bool show)
|
void dlg_base::show_scroll_bar(int bar, bool show)
|
||||||
{
|
{
|
||||||
DWORD style = GetWindowLong(hwnd(), GWL_STYLE);
|
DWORD style = GetWindowLong(hwnd(), GWL_STYLE);
|
||||||
|
@ -971,7 +1026,7 @@ void dlg_page::set_ctrl_value(HWND ctrl, SANE_Value_Type type, void* val, bool o
|
||||||
{
|
{
|
||||||
if (type == SANE_TYPE_BOOL)
|
if (type == SANE_TYPE_BOOL)
|
||||||
{
|
{
|
||||||
DWORD id = GetWindowLong(ctrl, GWL_ID);
|
DWORD id = GetWindowLong(ctrl, GWL_ID) - dlg_page::dyn_id_base;
|
||||||
HWND host = (HWND)GetPropW(ctrl, dlg_page::property_host.c_str());
|
HWND host = (HWND)GetPropW(ctrl, dlg_page::property_host.c_str());
|
||||||
|
|
||||||
if (IsWindow(host) && (id == id_custom_area_ || id == id_custom_gamma_))
|
if (IsWindow(host) && (id == id_custom_area_ || id == id_custom_gamma_))
|
||||||
|
|
|
@ -52,6 +52,7 @@ public:
|
||||||
static bool get_max_size(SIZE& dst, const SIZE& src); // return whether changed dst
|
static bool get_max_size(SIZE& dst, const SIZE& src); // return whether changed dst
|
||||||
static bool get_max_size(SIZE& dst, int cx, int cy); // return whether changed dst
|
static bool get_max_size(SIZE& dst, int cx, int cy); // return whether changed dst
|
||||||
static int select_combo_text(HWND combo, const wchar_t* text);
|
static int select_combo_text(HWND combo, const wchar_t* text);
|
||||||
|
static std::wstring get_wnd_text(HWND h);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void set_ui_event_notify(void(__stdcall* notify)(int, void*, void*), void* param);
|
void set_ui_event_notify(void(__stdcall* notify)(int, void*, void*), void* param);
|
||||||
|
@ -64,6 +65,12 @@ public:
|
||||||
BOOL set_font(HFONT font);
|
BOOL set_font(HFONT font);
|
||||||
HFONT get_font(void);
|
HFONT get_font(void);
|
||||||
int get_string_width(const wchar_t* str);
|
int get_string_width(const wchar_t* str);
|
||||||
|
bool get_item_rect(UINT id, LPRECT r, bool client = true);
|
||||||
|
std::wstring get_item_text(UINT id);
|
||||||
|
int get_width_diff_as_text_length(UINT id); //
|
||||||
|
void offset_item(UINT id, int dx, int dy);
|
||||||
|
void expand_item(UINT id, int dx, int dy);
|
||||||
|
bool set_item_text(UINT id, const wchar_t* text);
|
||||||
void show_scroll_bar(int bar = SB_VERT, bool show = true);
|
void show_scroll_bar(int bar = SB_VERT, bool show = true);
|
||||||
bool track_mouse_hover(void);
|
bool track_mouse_hover(void);
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,6 +31,17 @@
|
||||||
#define IDC_EDIT_INPUT 1018
|
#define IDC_EDIT_INPUT 1018
|
||||||
#define IDC_EDIT_OUTPUT 1019
|
#define IDC_EDIT_OUTPUT 1019
|
||||||
#define IDC_LIST1 1020
|
#define IDC_LIST1 1020
|
||||||
|
#define IDC_STATIC_UNIT 1021
|
||||||
|
#define IDC_STATIC_DPI 1022
|
||||||
|
#define IDC_STATIC_AREA 1023
|
||||||
|
#define IDC_STATIC_LEFT 1024
|
||||||
|
#define IDC_STATIC_TOP 1025
|
||||||
|
#define IDC_STATIC_W 1026
|
||||||
|
#define IDC_STATIC_H 1027
|
||||||
|
#define IDC_STATIC_SCHEME 1028
|
||||||
|
#define IDC_STATIC_COLOR 1029
|
||||||
|
#define IDC_STATIC_INPUT 1030
|
||||||
|
#define IDC_STATIC_OUTPUT 1031
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
|
@ -38,7 +49,7 @@
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 109
|
#define _APS_NEXT_RESOURCE_VALUE 109
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1021
|
#define _APS_NEXT_CONTROL_VALUE 1032
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue