home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / Software / TemaCD / tcvpa / data1.cab / MyFileGroup / INCLUDE / tcWinApp.hpp < prev    next >
C/C++ Source or Header  |  1999-06-03  |  27KB  |  883 lines

  1. #ifndef _INC_TCWINAPP_HPP
  2. #define _INC_TCWINAPP_HPP
  3. #ifdef BUILD_TCWINAPPLIB
  4. #define TCWINAPPLIB __declspec(dllexport)
  5. #else
  6. #ifdef BUILD_LOCAL
  7. #define TCWINAPPLIB
  8. #else
  9. #define TCWINAPPLIB __declspec(dllimport)
  10. #endif
  11. #endif
  12.  
  13. #include <String.hpp>
  14. #include <Array.hpp>
  15. #include <WUtils.hpp>
  16. #include <Registry.hpp>
  17. #include <UseGDI.hpp>
  18. #include <EvMaster.hpp>
  19. #include <MENU.hpp>
  20. #include <Splitter.hpp>
  21.  
  22. #define AWindow TC_CWindow
  23.  
  24. #define TC_IDC_TOOLBAR        1101
  25. #define TC_IDC_STATUSBAR    1102
  26. #define TC_IDC_AREA            1111
  27. #define TC_IDC_SIMPLE        1100
  28.  
  29. #define TC_SB_AREA_VERT        1
  30. #define TC_SB_AREA_HORZ        2
  31.  
  32. // *********************************
  33. #define WS_SPLITTER            1
  34. #define WS_SPLITHORZ        2
  35. #define WS_SPLITFIX2        8
  36. #define WS_SPLITSWAP        32
  37. #define WS_SPLITNOMOUSE        64
  38. // *********************************
  39.  
  40. /*
  41.  
  42. int PASCAL WinMain(
  43.     HINSTANCE hInst,
  44.     HINSTANCE hPrevInst,
  45.     LPSTR sCmdLine,
  46.     int nCmdShow )
  47. {
  48.     tcProg = new Program();
  49.     tcApp = new AppWindow();
  50.     return tcWinMain(hInst,hPrevInst,sCmdLine,nCmdShow);
  51. }
  52. */
  53.  
  54. class TC_CMenuItem;
  55. class TC_CDragDrop;
  56. class TC_CProgram;
  57. class TC_CWindow;
  58.  
  59. class TC_CToolbarMaster;
  60. class TC_CToolbarButton;
  61.  
  62. struct TC_DragDrop;
  63. struct TC_Event_WM;
  64. struct TC_Event_CM;
  65. struct TC_Event_NM;
  66. struct TC_Event_WIN;
  67.  
  68. typedef TC_TArrayPTR <TC_CWindow> TCArrayWindow;
  69. struct _CWS
  70. {
  71.     int x,y,cx,cy;
  72.     int id;
  73.     int level;
  74.     int unit_size, unit_pos;
  75.     int grow_l, grow_t, grow_r, grow_b;
  76.     int zoom;
  77.     int typeflags;
  78.  
  79.     DWORD style, xstyle;
  80.     COLORREF textcolor, backcolor;
  81.  
  82.     char * text;
  83.     char * name;
  84.     char * font;
  85.     char * wclass;
  86. };
  87.  
  88. struct _ZCWS
  89. {
  90.     HWND    hwnd;
  91.     HFONT    hfont;
  92.     int  cx_char, cy_char;
  93. };
  94.  
  95. struct _CWSS
  96. {
  97.     _CWS    cws;
  98.     HWND    hwnd_parent;
  99.     _ZCWS    zcws[32];
  100. };
  101.  
  102. #define ZERO_CWS()    memset(&_cws,0,sizeof(_cws));
  103.  
  104. #define BEGIN_CWS(h) \
  105.     _CWSS _cwss;memset(&_cwss,0,sizeof(_cwss));\
  106.     _cwss.hwnd_parent=h;\
  107.     _CWS &_cws=_cwss.cws;
  108.  
  109. #define BEGIN_CWS_POPUP        BEGIN_CWS(tcHWndMain)
  110. #define BEGIN_CWS_FORM        BEGIN_CWS(frame->m_HWnd)
  111.  
  112. #define _VP_BEGIN_CWS
  113. #define _VP_END_CWS
  114.  
  115. #define CWSF_TABCONTROL        1
  116. #define CWSF_SPLITTER        2
  117. #define CWSF_SPLIT_HORZ        4
  118. #define CWSF_SPLIT_FIX2        8
  119. #define CWSF_TABITEM        16
  120. #define CWSF_SPLITITEM        32
  121. #define CWSF_SPLITITEMLAST    64
  122. //#define CWSF_TABITEMLAST    128
  123. #define CWSF_AREA            256
  124.  
  125. #define _D_CREATE_FORM    FromCWS( &_cwss );
  126.  
  127. #define _D_CREATE_WINDOW    \
  128.     _d_window = new _d_class( _d_args );\
  129.     _d_window->FromCWS(&_cwss);
  130.  
  131. struct TC_WinPosStruct
  132. {
  133. short
  134.     x, y, cx, cy,    // window size
  135.     ccx, ccy,        // window client size
  136.     mincx, mincy,
  137.     maxcx, maxcy;
  138.  
  139. WORD    set;        // mask 1-x,y  2-cx,cy  4-ccx,ccy
  140. };
  141. struct TC_WinGrowStruct
  142. {
  143. char
  144.     l,
  145.     t,
  146.     r,
  147.     b;
  148. };
  149. struct TC_WinColorStruct
  150. {
  151.     COLORREF f;
  152.     COLORREF b;
  153. };
  154. struct TC_DragDrop
  155. {
  156. int
  157.     act,    // action TC_CDragDrop::ddStart, TC_CDragDrop::ddMove .....
  158.     x, y,    // mouse pos
  159.     ret;
  160. };
  161. enum
  162. {
  163.     EvT_NONE,
  164.  
  165.     EvT_WM_1,    /* id=msg        TC_Event_WM   WM_....    */
  166.     EvT_WM_2,    /* id=msg        TC_Event_WM   WM_....    */
  167.  
  168.     EvT_ALL_CM,    /* id=0            TC_Event_CM   WM_COMMAND (all notify=HIWORD(wParam) */
  169.     EvT_ALL_NM,    /* id=0            TC_Event_NM   WM_NOTIFY  (all NMHDR.code) */
  170.  
  171.     EvT_CM,        /* id=notify    TC_Event_CM   WM_COMMAND */
  172.     EvT_NM,        /* id=code        TC_Event_NM   WM_NOTIFY  */
  173.  
  174.     EvT_KB_1,    /* id=key        TC_Event      WM_KEYDOWN */
  175.     EvT_KB_2,    /* id=key        TC_Event      WM_KEYDOWN */
  176.  
  177.     EvT_CHR_1,    /* id=char        TC_Event      WM_CHAR    */
  178.     EvT_CHR_2,    /* id=char        TC_Event      WM_CHAR    */
  179.  
  180.     EvT_ACCEL,    /* id=MAKELONG(vk,mod)  TC_Event         */
  181.  
  182.     EvT_WIN,    /* id=EVWIN_...    TC_Event_WIN             */
  183. };
  184.  
  185. enum // event.id
  186. {
  187.     EVWIN_NONE,
  188.     EVWIN_CREATE,    // ---
  189.  
  190.     EVWIN_ACCEL,    // TC_Event_WIN::aw[0] === VK_...
  191.                     // TC_Event_WIN::aw[1] === 1-Shift, 2-Control, 4-Alt
  192.  
  193.     EVWIN_CTLCOLOR,    // TC_Event_WIN::msg
  194.     EVWIN_DRAWITEM,    // TC_Event_WIN::msg
  195.     EVWIN_DD,        // struct DRAGDROP
  196. };
  197.  
  198. // WM_....
  199. struct TC_Event_WM
  200.  : TC_Event
  201. {
  202.     //  uMsg = event.id
  203.     WPARAM    wParam;
  204.     LPARAM    lParam;
  205.     LRESULT    lRet;
  206.     BOOL    done1;
  207.  
  208.     TC_Event_WM() { lRet = 0; done1 = FALSE; }
  209. };
  210. // WM_COMMAND
  211. struct TC_Event_CM
  212.  : TC_Event
  213. {
  214.     WPARAM    wParam;
  215.     LPARAM    lParam;
  216.     LRESULT    lRet;
  217.     BOOL    done1;
  218.  
  219.     TC_CWindow * rec;    // WM_NOTIFY receiver
  220.  
  221.     TC_Event_CM() { event.type = EvT_CM; done1 = FALSE; }
  222. };
  223. // WM_NOTIFY
  224. struct TC_Event_NM
  225.  : TC_Event
  226. {
  227.     WPARAM    wParam;
  228.     NMHDR    * nh;
  229.     LRESULT    lRet;
  230.     BOOL    done1;
  231.  
  232.     TC_CWindow * rec;    // WM_NOTIFY receiver
  233.  
  234.     TC_Event_NM() { event.type = EvT_NM; done1 = FALSE; }
  235. };
  236. // CTLCOLOR, DRAWITEM, ....
  237. struct TC_Event_WIN
  238.  : TC_Event
  239. {
  240.     union
  241.     {
  242. /*        int        i;
  243.         char    c;
  244.         long    l;
  245.         short    h;
  246.         void    *ptr;
  247.         POINT    point;
  248.         SIZE    size;
  249.         RECT    rect;*/
  250.  
  251.         void    *ptr;
  252.         DWORD    dw;
  253.         WORD    aw[128];
  254.         long    adw[64];
  255.         char    sz[256];
  256.         TC_DragDrop dd;
  257.  
  258.         struct
  259.         {
  260.             UINT    uMsg;
  261.             WPARAM    wParam;
  262.             LPARAM    lParam;
  263.             LRESULT    lRet;
  264.         }
  265.         msg;
  266.     };
  267.  
  268.     TC_Event_WIN() { event.type = EvT_WIN; }
  269. };
  270.  
  271.  
  272. enum
  273. {
  274. WCT_UNKNOWN,
  275. WCT_STATIC,
  276. WCT_EDIT,
  277. WCT_BUTTON,
  278. WCT_LISTBOX,
  279. WCT_COMBOBOX,
  280. WCT_SCROLL,
  281.  
  282. WCT_TREEVIEW,        // 7
  283. WCT_LISTVIEW,
  284. WCT_TABCONTROL,
  285. WCT_TOOLBAR,
  286. WCT_STATUSBAR,
  287. WCT_HEADERCONTROL,
  288. WCT_PROGRESSBAR,
  289. WCT_TRACKBAR,
  290. WCT_UPDOWN,            // 15
  291.  
  292. WCT_TcWindow,
  293. WCT_TcArea,
  294.  
  295. WCT_TEXT /* = */,
  296. WCT_RECT,
  297. WCT_ICON,
  298. WCT_BITMAP,
  299. WCT_ECOMBO,
  300. WCT_LCOMBO,
  301. WCT_PUSH,
  302. WCT_CHECK,
  303. WCT_RADIO,
  304. WCT_GROUP,
  305.  
  306. //WCT_SYS_END /* = */
  307.  
  308. };
  309. #define gszCls_STATIC                tc_wclass_ALL[1]
  310. #define gszCls_static                tc_wclass_ALL[1]
  311. #define gszCls_Static                tc_wclass_ALL[1]
  312.  
  313. #define gszCls_EDIT                    tc_wclass_ALL[2]
  314. #define gszCls_edit                    tc_wclass_ALL[2]
  315. #define gszCls_Edit                    tc_wclass_ALL[2]
  316.  
  317. #define gszCls_BUTTON                tc_wclass_ALL[3]
  318. #define gszCls_button                tc_wclass_ALL[3]
  319. #define gszCls_Button                tc_wclass_ALL[3]
  320.  
  321. #define gszCls_LISTBOX                tc_wclass_ALL[4]
  322. #define gszCls_listbox                tc_wclass_ALL[4]
  323. #define gszCls_Listbox                tc_wclass_ALL[4]
  324. #define gszCls_ListBox                tc_wclass_ALL[4]
  325.  
  326. #define gszCls_COMBOBOX                tc_wclass_ALL[5]
  327. #define gszCls_combobox                tc_wclass_ALL[5]
  328. #define gszCls_Combobox                tc_wclass_ALL[5]
  329. #define gszCls_ComboBox                tc_wclass_ALL[5]
  330.  
  331. #define gszCls_SCROLLBAR            tc_wclass_ALL[6]
  332.  
  333. #define gszCls_SysTreeView32        tc_wclass_ALL[7]
  334. #define gszCls_SysListView32        tc_wclass_ALL[8]
  335. #define gszCls_SysTabControl32        tc_wclass_ALL[9]
  336. #define gszCls_ToolbarWindow32        tc_wclass_ALL[10]
  337. #define gszCls_msctls_statusbar32    tc_wclass_ALL[11]
  338. #define gszCls_SysHeader32            tc_wclass_ALL[12]
  339. #define gszCls_msctls_progress32    tc_wclass_ALL[13]
  340. #define gszCls_msctls_trackbar32    tc_wclass_ALL[14]
  341. #define gszCls_msctls_updown32        tc_wclass_ALL[15]
  342.  
  343. #define gszCls_WINDOW    tc_wclass_ALL[16]
  344. #define gszCls_Window    tc_wclass_ALL[16]
  345. #define gszCls_window    tc_wclass_ALL[16]
  346. #define gszCls__WINDOW    tc_wclass_ALL[16]
  347. #define gszCls__Window    tc_wclass_ALL[16]
  348. #define gszCls__window    tc_wclass_ALL[16]
  349.  
  350. #define gszCls_AREA        tc_wclass_ALL[17]
  351. #define gszCls_Area        tc_wclass_ALL[17]
  352. #define gszCls_area        tc_wclass_ALL[17]
  353.  
  354. #define gszCls_BLOCK    tc_wclass_ALL[17]
  355. #define gszCls_Block    tc_wclass_ALL[17]
  356. #define gszCls_block    tc_wclass_ALL[17]
  357.  
  358. #define gszCls_PDIALOG    tc_wclass_ALL[17]
  359. #define gszCls_CDIALOG    tc_wclass_ALL[17]
  360.  extern  TCWINAPPLIB HWND tcHWndMain ;
  361.  extern  TCWINAPPLIB HWND tcHWndMDI ;
  362.  extern  TCWINAPPLIB HWND tcHWndTooltip ;
  363.  extern  TCWINAPPLIB TC_CProgram* tcProg ;
  364.  extern  TCWINAPPLIB TC_CWindow* tcApp ;
  365.  extern  TCWINAPPLIB HINSTANCE tcHInst ;
  366.  extern  TCWINAPPLIB HICON tcHMainIcon ;
  367.  extern  TCWINAPPLIB TC_TArrayPTR <TC_CWindow> tcPopups ;
  368.  extern  TCWINAPPLIB HCURSOR tcHCurSplitV ;
  369.  extern  TCWINAPPLIB HCURSOR tcHCurSplitH ;
  370.  extern  TCWINAPPLIB HIMAGELIST tcLbCheckHIL ;
  371.  extern  TCWINAPPLIB TC_CString tcMenuStr_SC_SIZE ;
  372.  extern  TCWINAPPLIB TC_CString tcMenuStr_SC_MOVE ;
  373.  extern  TCWINAPPLIB TC_CString tcMenuStr_SC_MINIMIZE ;
  374.  extern  TCWINAPPLIB TC_CString tcMenuStr_SC_MAXIMIZE ;
  375.  extern  TCWINAPPLIB TC_CString tcMenuStr_SC_RESTORE ;
  376.  extern  TCWINAPPLIB TC_CString tcMenuStr_SC_CLOSE ;
  377.  extern  TCWINAPPLIB TC_CString tcMenuStr_SC_NEXTWINDOW ;
  378.  extern  TCWINAPPLIB TC_CString tc_wclass_MAIN ;
  379.  extern  TCWINAPPLIB TC_CString tc_wclass_MDI ;
  380.  extern  TCWINAPPLIB char* tc_wclass_ALL [256];
  381. TCWINAPPLIB void _tcCreate_MDICLIENT (int mnu_idx)  ;
  382. TCWINAPPLIB HWND tcCreate_MDI_Window ()  ;
  383. TCWINAPPLIB HWND tcCreate_Popup_Window (HWND par,DWORD style,DWORD xstyle, BOOL dlg)  ;
  384. TCWINAPPLIB TC_CWindow* tcNewWin ()  ;
  385. LRESULT CALLBACK TCWINDOWPROC (HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)  ;
  386. LRESULT CALLBACK TCDIALOGPROC (HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)  ;
  387. extern char tcSPLIT_H_CUR2 [];
  388. extern char tcSPLIT_V_CUR2 [];
  389. extern char tcSPLIT_H_CUR [];
  390. extern char tcSPLIT_V_CUR [];
  391. TCWINAPPLIB int tcWinMain (HINSTANCE hInst,HINSTANCE /*hPrevInst*/,LPSTR sCmdLine,int nCmdShow)  ;
  392. TCWINAPPLIB void tcTransDispMSG (MSG *msg)  ;
  393. TCWINAPPLIB BOOL tcTranslateAccel (MSG * msg)  ;
  394. TCWINAPPLIB BOOL tcTryCallWindowEvent (HWND hwnd, TC_Event *ev)  ;
  395. TCWINAPPLIB TC_CWindow* tcCurMDIWindow ()  ;
  396. TCWINAPPLIB BOOL tcSetFocus (HWND h_wnd)  ;
  397. TCWINAPPLIB int tcMsgBox (UINT flg, LPCSTR title, LPCSTR fmt, ...)  ;
  398. TCWINAPPLIB HINSTANCE tcLoadLibrary (LPCTSTR lpLibFileName)  ;
  399. TCWINAPPLIB FARPROC tcProcAddress (HINSTANCE hi, LPCSTR lpProcName)  ;
  400. TCWINAPPLIB void tcRegPath (TC_CString &path)  ;
  401. TCWINAPPLIB TC_CString tcRegPath ()  ;
  402. TCWINAPPLIB BOOL _tcSplit_Get (HWND hWnd, HWND *hwnd1, HWND *hwnd2, int *fix, int *horz)  ;
  403. TCWINAPPLIB BOOL tcEv_Wm_Paint_None (TC_Event_WM *e)  ;
  404. TCWINAPPLIB TC_CWindow* tcHWnd2Win (HWND hwnd)  ;
  405. TCWINAPPLIB void tcAddHWnd2Win (TC_CWindow * win)  ;
  406. TCWINAPPLIB void tcDelHWnd2Win (HWND hwnd)  ;
  407. TCWINAPPLIB HFONT tcMSFont (UINT op=0)  ;
  408. TCWINAPPLIB HFONT tcSMFont (UINT op=0)  ;
  409. TCWINAPPLIB int tcCyMSFont ()  ;
  410. TCWINAPPLIB int tcCySMFont ()  ;
  411. TCWINAPPLIB BOOL tcSplitCommandLine (LPCSTR src, TC_CArrayString &dst, BOOL no_quote)  ;
  412.  
  413. // **********************************************************************
  414. class TCWINAPPLIB TC_CProgram 
  415. {
  416. public:  static  int m_MDIMenuIndex ;
  417. public:  static  TC_CMenu* mainMenu ;
  418. public:   TC_CProgram ()  ;
  419. public: virtual  ~TC_CProgram ()  ;
  420. public: virtual int AdjustWinType (HWND hwnd)  ;
  421. public: virtual void End ()  ;
  422. public: virtual void MakeRegPath (TC_CString &path)  ;
  423. public: virtual TC_CWindow* NewWin (_CWSS * cwss)  ;
  424. public: virtual BOOL Start ()  ;
  425. public: virtual void GetRegNames (TC_CString &comp, TC_CString &prod, TC_CString &user)  =0 ;
  426.  
  427. }; // end of class TC_CProgram
  428.  
  429. // **********************************************************************
  430.  
  431. // **********************************************************************
  432. class TCWINAPPLIB TC_CWindow 
  433.     : public TC_CEventMaster
  434. {
  435. public:
  436.  
  437. enum
  438. {
  439.     WRUN_MDI,
  440.     WRUN_MODAL,
  441.     WRUN_POPUP,
  442.     WRUN_CHILD
  443. };
  444. public:
  445.  
  446. struct TC_BitSetStruct
  447. {
  448.     unsigned    noAutoDel    : 1;
  449.     unsigned    noClose        : 1;
  450.     unsigned    noChildFocus: 1;
  451.  
  452.     unsigned    isModal        : 1;
  453.     unsigned    isModalLoop    : 1;
  454.  
  455.     unsigned    isDlgProc    : 1;    // for ClassName::sDLG && DM_SETDEFID
  456.     unsigned    isStdDlg    : 1;    // Auto:: Ok,Cancel,Yes,No
  457.  
  458.     unsigned    isFormRootArea    : 1;
  459.     unsigned    isFormFrame        : 1;
  460.  
  461.     unsigned    haveCanvas        : 1;
  462.     unsigned    hide_toolbar    : 1;
  463.     unsigned    hide_statusbar    : 1;
  464.  
  465.     unsigned    area_scroll    : 2;
  466.     unsigned    scroll_foc    : 1;
  467.  
  468.     unsigned    isHide        : 1;
  469.     unsigned    initHide    : 1;
  470.     unsigned    zoom        : 1;
  471.  
  472.     unsigned    destruction    : 1;
  473.     unsigned    tooltip        : 1;
  474.     unsigned    noGrow        : 1;
  475.     unsigned    centered    : 1;
  476.  
  477.     unsigned    skip_WM_SIZE    : 1;
  478.     unsigned    block        : 1;
  479.     unsigned    fixminsize    : 1;    // for form_area_window
  480. };
  481. public:  HWND m_HWnd ;
  482. public:  HWND m_HWnd_Focus ;
  483. public:  HFONT m_HFont ;
  484. public:  BYTE m_WCType ;
  485. public:  TC_WinPosStruct m_Pos1 ;
  486. public:  TC_WinGrowStruct m_Grow ;
  487. public:  TC_WinColorStruct m_Color ;
  488. public:  char* m_WinName ;
  489. public:  int m_Process ;
  490. public:  int m_ModalReturn ;
  491. public:  TC_BitSetStruct m_F ;
  492. public:  WNDPROC m_OldWndProc ;
  493. public:   TC_CWindow ()  ;
  494. private:  void _Constr ()  ;
  495. public: virtual  ~TC_CWindow ()  ;
  496. public:  BOOL Is_Modal ()  ;
  497. public:  BOOL Is_MDI ()  ;
  498. public:  BOOL Is_Frame ()  ;
  499. public:  BOOL Is_Dialog ()  ;
  500. public:  BOOL Is_WSPopup ()  ;
  501. public:  BOOL Is_WSChild ()  ;
  502. public:  BOOL Is_Hide ()  ;
  503. public:  BOOL Is_Enabled ()  ;
  504. public:  BOOL Is_Destruction ()  ;
  505. public:  BOOL Is_Centered ()  ;
  506. public:  DWORD WStyle ()  ;
  507. public:  DWORD WXStyle ()  ;
  508. public:  int GetID ()  ;
  509. public:  TC_CWindow* GetFrame ()  ;
  510. public:  TC_CWindow* GetDialog ()  ;
  511. public:  TC_CWindow* GetForm ()  ;
  512. public:  TC_CWindow* GetParent ()  ;
  513. public:  void GetText (TC_CString &dst, BOOL trm=FALSE)  ;
  514. public:  TC_CString GetText ()  ;
  515. public:  long GetInt (BOOL * is_empty=0)  ;
  516. public:  long GetInt (long def, long min, long max)  ;
  517. public:  int GetRunMode ()  ;
  518. public:  SIZE ClientSize ()  ;
  519. public:  SIZE WindowSize ()  ;
  520. public:  void GetCtrlBounds (int *maxx, int *maxy)  ;
  521. public:  TC_CWindow* GetToolbar ()  ;
  522. public:  void SetText (LPCSTR text)  ;
  523. public:  void SetInt (long val)  ;
  524. public:  void SetClientSize (int cx,int cy)  ;
  525. public:  void SetClientSize (HWND hwndC)  ;
  526. public:  void SetStdEv_Scrl (UINT opt)  ;
  527. public:  void SetFont (HFONT hfont, BOOL dr=TRUE)  ;
  528. public:  void SetIcon (LPCSTR name)  ;
  529. public:  void SetTooltip (LPCSTR text, int tb_id=0)  ;
  530. public:  void SetTBBitmapRc (LPCSTR bmp_name, int cx)  ;
  531. public:  void AddTBItem (int chk, int iidx, int cmd, LPCSTR tip, RECT *prc=0)  ;
  532. public:  int AddTBBitmapRc (LPCSTR bmpname, int cx, HINSTANCE hinst=0)  ;
  533. public:  void AddThickFrame ()  ;
  534. public:  void DoSubclass (HWND hwnd)  ;
  535. public:  int ModalMsgLoop ()  ;
  536. public: static HWND _HWndFromCWS (_CWSS * cwss)  ;
  537. public:  void FromCWS (_CWSS * cwss)  ;
  538. public:  void Run_Block ()  ;
  539. public:  TC_CWindow* CreateToolbarRc (LPCSTR bmp_name, int cx, TC_CWindow *tb=0, HINSTANCE hi=0)  ;
  540. public:  TC_CWindow* CreateToolbarBuf (LPCSTR bmp_buf, int cx, TC_CWindow *tb=0)  ;
  541. public:  TC_CWindow* CreateStatusbar (TC_CWindow *sb=0)  ;
  542. public:  void RegisterPopup ()  ;
  543. public:  void Show (BOOL show, BOOL set=TRUE)  ;
  544. public:  BOOL Enable (BOOL enbl)  ;
  545. public:  void Move (int x,int y,int cx,int cy)  ;
  546. public:  void Move (const RECT *prc)  ;
  547. public:  void Close (int ret_=0)  ;
  548. public:  void FixPos1 ()  ;
  549. public:  void FixPositions ()  ;
  550. public:  BOOL Activate ()  ;
  551. public:  void Redraw (BOOL erase=0)  ;
  552. public:  void Centre ()  ;
  553. public:  void RemoveTooltip ()  ;
  554. public:  void InitFocus ()  ;
  555. public:  void SwitchTab (int new_idx)  ;
  556. public:  LRESULT SendMsg (UINT uMsg, WPARAM wParam=0, LPARAM lParam=0)  ;
  557. public:  LRESULT CallOldProc (UINT uMsg,WPARAM wParam,LPARAM lParam)  ;
  558. public: static LRESULT CALLBACK _NewWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  559. public: static LRESULT CALLBACK _Def_MdiChildProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  560. public: static LRESULT CALLBACK _Def_FrameProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  561. public: static LRESULT CALLBACK _Dlg_DlgProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  562. public:  int Form_Run (int run_mode, HWND hwnd_par, TC_CWindow * frame=0)  ;
  563. public:  void Form_RunChild (HWND h_tmp, BOOL a_size=FALSE)  ;
  564. public:  TC_CWindow* Form_Area ()  ;
  565. public:  HWND DlgItem_HWnd (int id)  ;
  566. public:  void DlgItem_GetText (int id, TC_CString &dst)  ;
  567. public:  void DlgItem_SetText (int id, LPCSTR text)  ;
  568. public:  void DlgItem_Enable (int id, BOOL enbl)  ;
  569. public:  void WinPos_Read ()  ;
  570. public:  void WinPos_Write ()  ;
  571. public:  void Try_Split_WriteReg ()  ;
  572. public:  void Try_Split_ReadReg ()  ;
  573. public:  void FrameWinName (TC_CString &dst)  ;
  574. public:  void WCReset ()  ;
  575. public:  int WCGetCheck ()  ;
  576. public:  void WCSetCheck (int chk)  ;
  577. public:  int WCAddString (LPCSTR str)  ;
  578. public:  void WCDelString (int index)  ;
  579. public:  int WCInsertString (int index, LPCSTR str)  ;
  580. public:  void WCGetString (int index, TC_CString &dst)  ;
  581. public:  TC_CString WCGetString (int index)  ;
  582. public:  void WCSetItemData (int index, ULONG dw)  ;
  583. public:  ULONG WCGetItemData (int index)  ;
  584. public:  void WCSetCurSel (int index)  ;
  585. public:  void WCSetCaretIndex (int index)  ;
  586. public:  int WCGetCurSel ()  ;
  587. public:  int WCGetCaretIndex ()  ;
  588. public:  int WCGetCount ()  ;
  589. public:  int WCGetSelItems (TCArrayINT *arr)  ;
  590. public:  void WCLimitText (int len)  ;
  591. public:  void WCSetReadOnly (BOOL set)  ;
  592. public:  int WCGetCurTab ()  ;
  593. public: virtual LRESULT _SysMsgProc (UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  594. public:  void _Sys_Check_TTP_Msg (UINT uMsg,WPARAM wParam,LPARAM lParam)  ;
  595. public:  void _Sys_Wm_Activate (int act)  ;
  596. public:  void _Sys_Wm_MDIActivate (HWND hwndAct)  ;
  597. public:  void _Sys_Wm_NcDestroy ()  ;
  598. public:  void _Call_OnSize ()  ;
  599. public:  void _Sys_FixFocus ()  ;
  600. public:  void _Sys_Wm_Setfocus2 ()  ;
  601. public:  void _Sys_OnParentSize (TC_CWindow * par)  ;
  602. public:  void _Unsubclass ()  ;
  603. public:  void _Sys_FixChildrenPos (BOOL release=FALSE)  ;
  604. public:  void _Sys_ChildrenReadReg ()  ;
  605. public:  void _Sys_ChildrenCallOnSize ()  ;
  606. public:  BOOL StdEv_Create (TC_Event *)  ;
  607. public:  BOOL StdEv_Create_Block (TC_Event*)  ;
  608. public:  BOOL StdEv_Close (TC_Event *e)  ;
  609. public:  BOOL StdEv_Close1 (TC_Event *)  ;
  610. public:  BOOL StdEv_Hide (TC_Event*)  ;
  611. public:  BOOL StdEv_Wm_Destroy (TC_Event *)  ;
  612. public:  BOOL StdEv_Wm_Enable (TC_Event_WM *e)  ;
  613. public:  BOOL StdEv_Wm_MenuSelect_Main (TC_Event_WM *e)  ;
  614. public:  BOOL StdEv_Wm_Paint (TC_Event_WM * e)  ;
  615. public:  BOOL StdEv_Wm_WPC2 (TC_Event_WM *e)  ;
  616. public:  BOOL StdEv_Wm_Size2 (TC_Event_WM * e)  ;
  617. public:  BOOL StdEv_Wm_Focus1 (TC_Event *)  ;
  618. public:  BOOL StdEv_Wm_CtlColor (TC_Event_WM *e)  ;
  619. public:  BOOL StdEv_Wm_DrawItem (TC_Event_WM *e)  ;
  620. public:  BOOL StdEv_Wm_MeasureItem (TC_Event_WM *e)  ;
  621. public:  BOOL StdEv_Wm_KeyDown1 (TC_Event_WM *e)  ;
  622. public:  BOOL StdEv_Wm_KeyDown2 (TC_Event_WM *e)  ;
  623. public:  BOOL StdEv_Wm_KeyChr1 (TC_Event_WM *e)  ;
  624. public:  BOOL StdEv_Wm_KeyChr2 (TC_Event_WM *e)  ;
  625. public:  BOOL StdEv_Wm_Notify (TC_Event_WM * e)  ;
  626. public:  BOOL StdEv_Wm_Command (TC_Event_WM * e)  ;
  627. public:  BOOL StdEv_Wm_Cmd_Main (TC_Event_WM *e)  ;
  628. public:  BOOL StdEv_Canvas_Wm_Size (TC_Event_WM * e)  ;
  629. public:  BOOL StdEv_My_Wm_Notify (TC_Event_NM * e)  ;
  630. public:  BOOL StdEv_My_Wm_Cmd (TC_Event_CM * e)  ;
  631. public:  BOOL StdEv_ACCEL (TC_Event_WIN * e)  ;
  632. public:  BOOL StdEv_My_CtlColor (TC_Event_WIN * e)  ;
  633. public:  BOOL StdEv_Scrl_Wm_Size (TC_Event_WM * e)  ;
  634. public:  BOOL StdEv_Scrl_Wm_VScroll (TC_Event_WM *e)  ;
  635. public:  BOOL StdEv_Scrl_Wm_HScroll (TC_Event_WM *e)  ;
  636. public:  BOOL StdEv_Tab_Wm_Size2 (TC_Event_WM *e)  ;
  637. public:  BOOL StdEv_Tab_Switch (TC_Event_NM *enh)  ;
  638. public:  BOOL StdEv_Pb_NoFoc (TC_Event*)  ;
  639. public: virtual void* GetInterface (LPCSTR name)  ;
  640. public: virtual const char* GetClassName ()  ;
  641. public: virtual void WinName (TC_CString &dst)  ;
  642. public: virtual void Read_Registry ()  ;
  643. public: virtual BOOL Form_Creator (TC_CWindow * frame)  ;
  644. public: virtual BOOL Form_OnCreate ()  ;
  645.  
  646. }; // end of class TC_CWindow
  647.  
  648. // **********************************************************************
  649.  
  650. // **********************************************************************
  651. class TCWINAPPLIB TC_CAbout 
  652.     : public TC_CWindow
  653. {
  654. public:  static  TC_CString Caption ;
  655. public:  static  TC_CString Text ;
  656. public: static void Run ()  ;
  657. public:   TC_CAbout ()  ;
  658. public:  BOOL Ev_Create (TC_Event *)  ;
  659. public:  BOOL Ev_Wm_SetFocus (TC_Event *)  ;
  660. public: virtual void* GetInterface (LPCSTR name)  ;
  661. public: virtual const char* GetClassName ()  ;
  662.  
  663. }; // end of class TC_CAbout
  664.  
  665. // **********************************************************************
  666.  
  667. // **********************************************************************
  668. class TCWINAPPLIB TC_COpenSaveFile 
  669. {
  670. public:  TC_CString Title ;
  671. public:  TC_CString File ;
  672. public:  TC_CString Path ;
  673. public:  TC_CString DefExt ;
  674. public:  TC_CString Filters ;
  675. public:  int FilterIndex ;
  676. public:   TC_COpenSaveFile ()  ;
  677. public:  BOOL GetOpenName ()  ;
  678. public:  BOOL GetSaveName ()  ;
  679.  
  680. }; // end of class TC_COpenSaveFile
  681.  
  682. // **********************************************************************
  683.  
  684. // **********************************************************************
  685. class TCWINAPPLIB TC_CFileChooser 
  686.     : public TC_CWindow
  687. {
  688. public:  TC_CWindow* mc_FilePath ;
  689. public:  TC_COpenSaveFile* m_O ;
  690. public:  BOOL bSave ;
  691. public:  TC_COpenSaveFile _m_OSF ;
  692. public:   TC_CFileChooser ()  ;
  693. public: virtual void* GetInterface (LPCSTR name)  ;
  694. public: virtual const char* GetClassName ()  ;
  695. public:  BOOL Form_Creator (TC_CWindow *frame)  ;
  696. public: TC_CWindow * mc_PbSel;
  697. public:  BOOL Ev_Click (TC_Event *)  ;
  698.  
  699. }; // end of class TC_CFileChooser
  700.  
  701. // **********************************************************************
  702.  
  703. // **********************************************************************
  704. class TCWINAPPLIB TC_CPathChooserDlg 
  705.     : public TC_CWindow
  706. {
  707. public: static BOOL Run (TC_CString * dst)  ;
  708. public: static char img_bmp [];
  709. public:  static  HIMAGELIST hImgLst ;
  710. public:  TC_CString* pStrDest ;
  711. public:   TC_CPathChooserDlg ()  ;
  712. public:  BOOL _Run ()  ;
  713. public: TC_CWindow * mc_Tree;
  714. public: TC_CWindow * mc_Path;
  715. public:  void Init ()  ;
  716. public:  BOOL Ev_Done (LPVOID)  ;
  717. public:  BOOL Ev_Wm_Notify (TC_Event_WM *e)  ;
  718. public: static int _sort_func (const void *p1, const void *p2)  ;
  719. public:  void Fill_Item (HTREEITEM hPar)  ;
  720. public:  void Sel_Chg (HTREEITEM hitem)  ;
  721. public:  void Chk_ClrFlg (HTREEITEM hItem)  ;
  722.  
  723. }; // end of class TC_CPathChooserDlg
  724.  
  725. // **********************************************************************
  726.  
  727. // **********************************************************************
  728. class TCWINAPPLIB TC_CPathChooser 
  729.     : public TC_CWindow
  730. {
  731. public:  TC_CWindow* mc_Path ;
  732. public:   TC_CPathChooser ()  ;
  733. public: virtual void* GetInterface (LPCSTR name)  ;
  734. public: virtual const char* GetClassName ()  ;
  735. public:  BOOL Form_Creator (TC_CWindow *frame)  ;
  736. public:  BOOL Ev_Click (TC_Event *)  ;
  737.  
  738. }; // end of class TC_CPathChooser
  739.  
  740. // **********************************************************************
  741.  
  742. // **********************************************************************
  743. class TCWINAPPLIB TC_CDragDrop 
  744. {
  745. public: 
  746. enum  {
  747.  ddStart,
  748.  ddMove,
  749.  ddEnd,
  750.  ddCancel,
  751.  ddStop,
  752. };
  753. public:
  754.  
  755. typedef BOOL (*TST_PROC)(HWND,UINT,WPARAM,LPARAM);
  756. public: static void Use (TC_CWindow * win)  ;
  757. public: static BOOL Worked ()  ;
  758. public: static void DrawHWnd (HWND hwnd)  ;
  759. public: static char dd_curs_one [];
  760. public: static char dd_curs_one_p [];
  761. public: static char dd_curs_more [];
  762. public: static char dd_curs_more_p [];
  763. public: static char dd_curs_no [];
  764. public:  static  HWND hWnd ;
  765. public:  static  WNDPROC oldWndProc ;
  766. public: static LRESULT CALLBACK _WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  767. public: static void _Initialize (HWND hwnd)  ;
  768. public:  static  TC_CWindow* pWin ;
  769. public:  static  POINT Pt ;
  770. public:  static  int Cap ;
  771. public:  static  int ok_Post ;
  772. public:  static  HWND hwnd_Draw ;
  773. public:  static  TCArrayULONG aProcChk ;
  774. public:  static  TCArrayULONG aProcSet ;
  775. public: static void Clear ()  ;
  776. public: static BOOL MsgProc (UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  777. public: static BOOL _Proc_ListBox (HWND lb, UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  778. public: static BOOL Ev_ButtonDown (TC_Event_WM *e)  ;
  779. public: static void _Use_Std (TC_CWindow * win)  ;
  780. public: static int _OkStart (int x, int y)  ;
  781. public: static void _Init ()  ;
  782.  
  783. }; // end of class TC_CDragDrop
  784.  
  785. // **********************************************************************
  786.  
  787. // **********************************************************************
  788. struct TCWINAPPLIB TC_Former 
  789. {
  790. public: 
  791. enum  {
  792.  T_EDIT,
  793.  T_LCOMBO,
  794.  T_CHECK,
  795.  T_AREA,
  796.  T_GROUP,
  797.  T_MLEDIT,
  798.  T_WRAPEDIT,
  799.  T_IMGCOMBO,
  800.  T_VSCRLGRP,
  801. };
  802. public: 
  803. enum  {
  804.  PB_NONE,
  805.  PB_TEXT,
  806.  PB_PICT,
  807.  PBF_NOFOCUS = 8,
  808. };
  809. public: 
  810. enum  {
  811.  AL_LEFT,
  812.  AL_RIGHT,
  813.  AL_CENTER,
  814. };
  815. public:  int ctrlType ;
  816. public:  int pushType ;
  817. public:  int align ;
  818. public:  int vchars ;
  819. public:  int maxlen ;
  820. public:  BOOL readonly ;
  821. public:  char* Label ;
  822. public:  char* pushText ;
  823. public:  TC_CWindow* wLabel ;
  824. public:  TC_CWindow* wCtrl ;
  825. public:  TC_CWindow* wPush ;
  826. private: static void _clr_posgrow (TC_CWindow *win)  ;
  827. private: static BOOL _Paint_AsGroup (TC_Event *e)  ;
  828. private: static BOOL _VScrlCaptArea (TC_Event_WM *e)  ;
  829. public: static void Build (TC_CWindow *area, TC_Former * src, int num, int id_1, int y_0)  ;
  830.  
  831. }; // end of class TC_Former
  832.  
  833. // **********************************************************************
  834. #define ADD_THIS_TB_BTN(type,iidx,func,dw_u,cls,ttp)    \
  835.     Add(this,type,iidx,0,\
  836.     (C_EVENT_HANDLER)((BOOL(cls::*)(TC_Event*))func),\
  837.     dw_u,ttp)
  838.  
  839. #define ADD_THIS_TB_CMD_BTN(type,iidx,cmd,func,dw_u,cls,ttp)    \
  840.     Add(this,type,iidx,cmd,\
  841.     (C_EVENT_HANDLER)((BOOL(cls::*)(TC_Event*))func),\
  842.     dw_u,ttp)
  843.  
  844.  
  845. // **********************************************************************
  846. class TCWINAPPLIB TC_CToolbarButton 
  847.     : public TC_CEventMaster
  848. {
  849. public:  int m_Cmd ;
  850. public:  int m_ImgIdx ;
  851. public:  TC_CToolbarMaster* m_Tb ;
  852. public:   TC_CToolbarButton (TC_CToolbarMaster *tb)  ;
  853. public:   ~TC_CToolbarButton ()  ;
  854. public: virtual void* GetInterface (LPCSTR name)  ;
  855. public: virtual const char* GetClassName ()  ;
  856.  
  857. }; // end of class TC_CToolbarButton
  858.  
  859. // **********************************************************************
  860.  
  861. // **********************************************************************
  862. class TCWINAPPLIB TC_CToolbarMaster 
  863.     : public TC_CEventMaster
  864. {
  865. public:  TC_TArrayPTR <TC_CToolbarButton> m_Buttons ;
  866. public:  int m_FirstCMD ;
  867. public:  TC_CWindow * m_TbWin ;
  868. public:   TC_CToolbarMaster (TC_CWindow *tb)  ;
  869. public:   ~TC_CToolbarMaster ()  ;
  870. public: virtual void* GetInterface (LPCSTR name)  ;
  871. public: virtual const char* GetClassName ()  ;
  872. public:  TC_CToolbarButton* Add (TC_CEventMaster *obj, UINT type, int imgidx, int cmd, C_EVENT_HANDLER func, DWORD dwuser, LPCSTR ttp)  ;
  873. public:  BOOL EatCommand (int cmd)  ;
  874. public:  BOOL Ev_WmCmd (TC_Event_CM *e)  ;
  875.  
  876. }; // end of class TC_CToolbarMaster
  877.  
  878. // **********************************************************************
  879. BOOL Dll_Start ()  ;
  880. void Dll_End ()  ;
  881.  
  882. #endif // _INC_TCWINAPP_HPP
  883.