00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00047 #ifndef WINSTL_INCL_WINSTL_CONTROL_PANEL_H_FUNCTIONS
00048 #define WINSTL_INCL_WINSTL_CONTROL_PANEL_H_FUNCTIONS
00049
00050 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00051 # define WINSTL_VER_WINSTL_CONTROL_PANEL_H_FUNCTIONS_MAJOR 1
00052 # define WINSTL_VER_WINSTL_CONTROL_PANEL_H_FUNCTIONS_MINOR 0
00053 # define WINSTL_VER_WINSTL_CONTROL_PANEL_H_FUNCTIONS_REVISION 6
00054 # define WINSTL_VER_WINSTL_CONTROL_PANEL_H_FUNCTIONS_EDIT 14
00055 #endif
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071 #ifndef WINSTL_INCL_WINSTL_H_WINSTL
00072 # include <winstl/winstl.h>
00073 #endif
00074
00075 #ifndef STLSOFT_INCL_H_CPL
00076 # define STLSOFT_INCL_H_CPL
00077 # include <cpl.h>
00078 #endif
00079
00080
00081
00082
00083
00084 #if !defined(_WINSTL_NO_NAMESPACE) && \
00085 !defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
00086 # if defined(_STLSOFT_NO_NAMESPACE)
00087
00088 namespace winstl
00089 {
00090 # else
00091
00092
00093 namespace stlsoft
00094 {
00095
00096 namespace winstl_project
00097 {
00098
00099 # endif
00100 #endif
00101
00102
00103
00104
00105
00109 typedef LONG (APIENTRY *control_panel_entry_t)(HWND , UINT , LONG , LONG );
00110
00111
00112
00113
00114
00119 STLSOFT_INLINE BOOL winstl__control_panel_init(control_panel_entry_t entry, HWND hwnd)
00120 {
00121 WINSTL_ASSERT(NULL != entry);
00122
00123 return (*entry)(hwnd, CPL_INIT, 0, 0);
00124 }
00125
00131 STLSOFT_INLINE void winstl__control_panel_uninit(control_panel_entry_t entry, HWND hwnd)
00132 {
00133 WINSTL_ASSERT(NULL != entry);
00134
00135 stlsoft_static_cast(void, (*entry)(hwnd, CPL_EXIT, 0, 0));
00136 }
00137
00143 STLSOFT_INLINE ss_size_t winstl__control_panel_get_count(control_panel_entry_t entry, HWND hwnd)
00144 {
00145 WINSTL_ASSERT(NULL != entry);
00146
00147 return stlsoft_static_cast(ss_size_t, (*entry)(hwnd, CPL_GETCOUNT, 0, 0));
00148 }
00149
00155 STLSOFT_INLINE void winstl__control_panel_inquire(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LPCPLINFO info)
00156 {
00157 WINSTL_ASSERT(NULL != entry);
00158 WINSTL_ASSERT(NULL != info);
00159 WINSTL_ASSERT(index < winstl__control_panel_get_count(entry, hwnd));
00160
00161 stlsoft_static_cast(void, (*entry)(hwnd, CPL_INQUIRE, stlsoft_static_cast(LONG, index), stlsoft_reinterpret_cast(LONG, info)));
00162 }
00163
00169 STLSOFT_INLINE void winstl__control_panel_newinquire(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LPNEWCPLINFO info)
00170 {
00171
00172 union
00173 {
00174 NEWCPLINFOA infoa_;
00175 NEWCPLINFOW infow_;
00176 } u;
00177
00178 WINSTL_ASSERT(NULL != entry);
00179 WINSTL_ASSERT(NULL != info);
00180 WINSTL_ASSERT(sizeof(NEWCPLINFOA) != info->dwSize || sizeof(NEWCPLINFOW) != info->dwSize);
00181 WINSTL_ASSERT(index < winstl__control_panel_get_count(entry, hwnd));
00182
00183 u.infoa_.dwFlags = 0;
00184 u.infoa_.dwHelpContext = 0;
00185 u.infoa_.lData = 0;
00186 u.infoa_.hIcon = NULL;
00187 u.infoa_.szName[0] = L'\0';
00188 u.infoa_.szInfo[0] = L'\0';
00189 u.infoa_.szHelpFile[0] = L'\0';
00190 u.infow_.szName[0] = L'\0';
00191 u.infow_.szInfo[0] = L'\0';
00192 u.infow_.szHelpFile[0] = L'\0';
00193
00194 if(sizeof(NEWCPLINFOW) == info->dwSize)
00195 {
00196
00197 LPNEWCPLINFOW infow = stlsoft_reinterpret_cast(LPNEWCPLINFOW, info);
00198
00199 u.infow_.dwSize = sizeof(NEWCPLINFOW);
00200
00201 stlsoft_static_cast(void, (*entry)(hwnd, CPL_NEWINQUIRE, stlsoft_static_cast(LONG, index), stlsoft_reinterpret_cast(LONG, &u.infow_)));
00202
00203 if( u.infow_.dwSize == sizeof(NEWCPLINFOW) &&
00204 L'\0' != u.infow_.szName[0])
00205 {
00206 *infow = u.infow_;
00207 }
00208 else
00209 {
00210
00211 u.infoa_.dwSize = sizeof(NEWCPLINFOA);
00212
00213 stlsoft_static_cast(void, (*entry)(hwnd, CPL_NEWINQUIRE, stlsoft_static_cast(LONG, index), stlsoft_reinterpret_cast(LONG, &u.infoa_)));
00214
00215 STLSOFT_NS_GLOBAL(MultiByteToWideChar)(0, 0, u.infoa_.szName, -1, infow->szName, STLSOFT_NUM_ELEMENTS(u.infow_.szName));
00216 STLSOFT_NS_GLOBAL(MultiByteToWideChar)(0, 0, u.infoa_.szInfo, -1, infow->szInfo, STLSOFT_NUM_ELEMENTS(u.infow_.szInfo));
00217 STLSOFT_NS_GLOBAL(MultiByteToWideChar)(0, 0, u.infoa_.szHelpFile, -1, infow->szHelpFile, STLSOFT_NUM_ELEMENTS(u.infow_.szHelpFile));
00218 }
00219 }
00220 else
00221 {
00222
00223 LPNEWCPLINFOA infoa = stlsoft_reinterpret_cast(LPNEWCPLINFOA, info);
00224
00225 u.infoa_.dwSize = sizeof(NEWCPLINFOA);
00226
00227 stlsoft_static_cast(void, (*entry)(hwnd, CPL_NEWINQUIRE, stlsoft_static_cast(LONG, index), stlsoft_reinterpret_cast(LONG, &u.infoa_)));
00228
00229 if( u.infoa_.dwSize == sizeof(NEWCPLINFOA) &&
00230 '\0' != u.infoa_.szName[0])
00231 {
00232 *infoa = u.infoa_;
00233 }
00234 else
00235 {
00236
00237 u.infow_.dwSize = sizeof(NEWCPLINFOW);
00238
00239 stlsoft_static_cast(void, (*entry)(hwnd, CPL_NEWINQUIRE, stlsoft_static_cast(LONG, index), stlsoft_reinterpret_cast(LONG, &u.infow_)));
00240
00241 STLSOFT_NS_GLOBAL(WideCharToMultiByte)(0, 0, u.infow_.szName, -1, infoa->szName, STLSOFT_NUM_ELEMENTS(u.infoa_.szName), NULL, NULL);
00242 STLSOFT_NS_GLOBAL(WideCharToMultiByte)(0, 0, u.infow_.szInfo, -1, infoa->szInfo, STLSOFT_NUM_ELEMENTS(u.infoa_.szInfo), NULL, NULL);
00243 STLSOFT_NS_GLOBAL(WideCharToMultiByte)(0, 0, u.infow_.szHelpFile, -1, infoa->szHelpFile, STLSOFT_NUM_ELEMENTS(u.infoa_.szHelpFile), NULL, NULL);
00244 }
00245 }
00246 }
00247
00253 STLSOFT_INLINE BOOL winstl__control_panel_run_data(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LONG data)
00254 {
00255 WINSTL_ASSERT(NULL != entry);
00256
00257 return !stlsoft_static_cast(BOOL, (*entry)(hwnd, CPL_DBLCLK, stlsoft_static_cast(LONG, index), data));
00258 }
00259
00265 STLSOFT_INLINE BOOL winstl__control_panel_run_params_a(control_panel_entry_t entry, HWND hwnd, ss_size_t index, ws_char_a_t const* params)
00266 {
00267 WINSTL_ASSERT(NULL != entry);
00268
00269 return stlsoft_static_cast(BOOL, (*entry)(hwnd, CPL_STARTWPARMSA, stlsoft_static_cast(LONG, index), (LONG)params));
00270 }
00271
00277 STLSOFT_INLINE BOOL winstl__control_panel_run_params_w(control_panel_entry_t entry, HWND hwnd, ss_size_t index, ws_char_w_t const* params)
00278 {
00279 WINSTL_ASSERT(NULL != entry);
00280
00281 return stlsoft_static_cast(BOOL, (*entry)(hwnd, CPL_STARTWPARMSW, stlsoft_static_cast(LONG, index), (LONG)params));
00282 }
00283
00289 STLSOFT_INLINE void winstl__control_panel_stop(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LONG data)
00290 {
00291 WINSTL_ASSERT(NULL != entry);
00292
00293 stlsoft_static_cast(void, (*entry)(hwnd, CPL_STOP, stlsoft_static_cast(LONG, index), data));
00294 }
00295
00296
00297
00298
00299
00300 #ifdef STLSOFT_DOCUMENTATION_SKIP_SECTION
00301 namespace winstl
00302 {
00303 #endif
00304
00305
00306
00307
00308
00309 #ifdef __cplusplus
00310
00311
00312
00313
00314
00319 inline BOOL control_panel_init(control_panel_entry_t entry, HWND hwnd)
00320 {
00321 return winstl__control_panel_init(entry, hwnd);
00322 }
00323
00329 inline void control_panel_uninit(control_panel_entry_t entry, HWND hwnd)
00330 {
00331 winstl__control_panel_uninit(entry, hwnd);
00332 }
00333
00339 inline ss_size_t control_panel_get_count(control_panel_entry_t entry, HWND hwnd)
00340 {
00341 return winstl__control_panel_get_count(entry, hwnd);
00342 }
00343
00349 inline void control_panel_inquire(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LPCPLINFO info)
00350 {
00351 winstl__control_panel_inquire(entry, hwnd, index, info);
00352 }
00353
00359 inline void control_panel_newinquire(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LPNEWCPLINFO info)
00360 {
00361 winstl__control_panel_newinquire(entry, hwnd, index, info);
00362 }
00363
00369 inline BOOL control_panel_run_data(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LONG data)
00370 {
00371 return winstl__control_panel_run_data(entry, hwnd, index, data);
00372 }
00373
00379 inline BOOL control_panel_run_params_a(control_panel_entry_t entry, HWND hwnd, ss_size_t index, ws_char_a_t const* params)
00380 {
00381 return winstl__control_panel_run_params_a(entry, hwnd, index, params);
00382 }
00383
00389 inline BOOL control_panel_run_params_w(control_panel_entry_t entry, HWND hwnd, ss_size_t index, ws_char_w_t const* params)
00390 {
00391 return winstl__control_panel_run_params_w(entry, hwnd, index, params);
00392 }
00393
00399 inline BOOL control_panel_run(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LONG data)
00400 {
00401 return control_panel_run_data(entry, hwnd, index, data);
00402 }
00403
00409 inline BOOL control_panel_run(control_panel_entry_t entry, HWND hwnd, ss_size_t index, ws_char_a_t const* params)
00410 {
00411 return control_panel_run_params_a(entry, hwnd, index, params);
00412 }
00413
00419 inline BOOL control_panel_run(control_panel_entry_t entry, HWND hwnd, ss_size_t index, ws_char_w_t const* params)
00420 {
00421 return control_panel_run_params_w(entry, hwnd, index, params);
00422 }
00423
00429 inline void control_panel_stop(control_panel_entry_t entry, HWND hwnd, ss_size_t index, LONG data)
00430 {
00431 winstl__control_panel_stop(entry, hwnd, index, data);
00432 }
00433
00434
00435
00436 #endif
00437
00438
00439
00440
00441
00442 #ifdef STLSOFT_UNITTEST
00443 # include "./unittest/functions_unittest_.h"
00444 #endif
00445
00446
00447
00448 #ifndef _WINSTL_NO_NAMESPACE
00449 # if defined(_STLSOFT_NO_NAMESPACE) || \
00450 defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
00451 }
00452 # else
00453 }
00454 }
00455 # endif
00456 #endif
00457
00458
00459
00460 #endif
00461
00462