stlab.adobe.com Adobe Systems Incorporated

platform_widget_utils.hpp

Go to the documentation of this file.
00001 /*
00002     Copyright 2005-2007 Adobe Systems Incorporated
00003     Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
00004     or a copy at http://stlab.adobe.com/licenses.html)
00005 */
00006 
00007 /****************************************************************************************************/
00008 
00009 #ifndef ADOBE_UI_CORE_OS_UTILITIES_HPP
00010 #define ADOBE_UI_CORE_OS_UTILITIES_HPP
00011 
00012 /****************************************************************************************************/
00013 
00014 #define WINDOWS_LEAN_AND_MEAN 1
00015 #include <windows.h>
00016 
00017 #include <adobe/config.hpp>
00018 
00019 #include <adobe/future/windows_cast.hpp>
00020 #include <adobe/layout_attributes.hpp>
00021 #include <adobe/name_fwd.hpp>
00022 #include <adobe/widget_attributes.hpp>
00023 
00024 #include <boost/filesystem/path.hpp>
00025 
00026 #include <string>
00027 
00028 /****************************************************************************************************/
00029 
00030 namespace hackery {
00031 
00032 /****************************************************************************************************/
00033 
00034 std::string convert_utf(const WCHAR* buffer, std::size_t size);
00035 std::string convert_utf(const WCHAR* buffer);
00036 
00037 #ifndef ADOBE_PLATFORM_CYGWIN
00038     std::wstring convert_utf(const CHAR* buffer, std::size_t size);
00039     std::wstring convert_utf(const CHAR* buffer);
00040 
00041     inline std::wstring convert_utf(const std::string& name)
00042     { return convert_utf(name.c_str(), name.size()); }
00043 #endif
00044 
00045 /****************************************************************************************************/
00046 
00047 } // namespace hackery
00048 
00049 /****************************************************************************************************/
00050 
00051 namespace adobe {
00052 
00053 /****************************************************************************************************/
00054 
00055 namespace implementation {
00056 
00057 /****************************************************************************************************/
00058 
00059 typedef HWND platform_control_type;
00060 
00061 /****************************************************************************************************/
00062 
00063 std::string get_window_title(HWND window);
00064 
00065 inline std::string get_control_string(HWND control)
00066 { return implementation::get_window_title(control); }
00067 
00068 void get_control_bounds(HWND control, RECT& bounds);
00069 
00070 void set_control_bounds(HWND control, const place_data_t& place_data);
00071 
00072 template <typename T>
00073 inline std::string get_field_text(T& x)
00074 { return get_control_string(x.control_m); }
00075 
00076 template <>
00077 inline std::string get_field_text<HWND>(HWND& x)
00078 { return get_control_string(x); }
00079 
00080 /****************************************************************************************************/
00081 
00082 template <typename T>
00083 inline bool is_focused(T& control)
00084 { return is_focused(control.control_m); }
00085 
00086 template <>
00087 inline bool is_focused(HWND& control)
00088 { return ::GetFocus() == control; }
00089 
00090 /****************************************************************************************************/
00091 
00092 void throw_last_error_exception(const char* file, long line);
00093 
00094 /****************************************************************************************************/
00095 
00096 } // namespace implementation
00097 
00098 /****************************************************************************************************/
00099 
00100 //
00107 //
00108 
00109 bool forward_message(UINT message, WPARAM wParam, LPARAM lParam, LRESULT& forward_result);
00110 
00111 /****************************************************************************************************/
00112 
00113 //
00117 //
00118 
00119 void set_font(HWND window, int uxtheme_type);
00120 
00121 /****************************************************************************************************/
00122 
00123 inline void set_control_visible(HWND control, bool make_visible)
00124 {
00125     assert(control);
00126 
00127     ::ShowWindow(control, make_visible ? SW_SHOWNORMAL : SW_HIDE);
00128 }
00129 
00130 /****************************************************************************************************/
00131 
00132 inline void set_control_enabled(HWND control, bool make_enabled)
00133 {
00134     assert(control);
00135 
00136     ::EnableWindow(control, make_enabled);
00137 }
00138 
00139 /****************************************************************************************************/
00140 
00141 bool context_menu(HWND parent,
00142                   long x, long y,
00143                   const name_t* first,
00144                   const name_t* last,
00145                   name_t& result);
00146 
00147 /****************************************************************************************************/
00148 
00149 LONG_PTR get_user_reference(HWND control);
00150 
00151 /****************************************************************************************************/
00152 
00153 template <typename T>
00154 void set_user_reference(HWND control, T data)
00155 {
00156     assert(control);
00157 
00158     ::SetWindowLongPtr(control, GWLP_USERDATA, hackery::cast<LONG>(data));
00159 }
00160 
00161 /****************************************************************************************************/
00162 
00163 modifiers_t convert_modifiers(ULONG os_modifiers);
00164 modifiers_t convert_modifiers(BYTE  keyboard_state[256]);
00165 
00166 modifiers_t modifier_state();
00167 
00168 /****************************************************************************************************/
00169 
00170 } // namespace adobe
00171 
00172 /****************************************************************************************************/
00173 
00174 #ifndef ADOBE_THROW_LAST_ERROR
00175     #define ADOBE_THROW_LAST_ERROR adobe::implementation::throw_last_error_exception(__FILE__, __LINE__)
00176 #endif
00177 
00178 /****************************************************************************************************/
00179 
00180 #endif
00181 
00182 /****************************************************************************************************/

Copyright © 2006-2007 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google