Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/TTXSamples/TTXResizeMenu/TTXResizeMenu.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 82 by maya, Mon Apr 14 14:51:21 2008 UTC revision 87 by doda, Mon Jun 23 12:40:20 2008 UTC
# Line 7  Line 7 
7  #include <string.h>  #include <string.h>
8    
9  #define ORDER 5900  #define ORDER 5900
10    #define SECTION "Resize Menu"
11    
12  resize_list[][2] = {  unsigned int def_resize_list[][2] = {
13          {80, 37},          {80, 37},
14          {120, 52},          {120, 52},
15          {80, 24},          {80, 24},
# Line 16  resize_list[][2] = { Line 17  resize_list[][2] = {
17  };  };
18    
19  #define ID_MENUID_BASE 36500  #define ID_MENUID_BASE 36500
20  #define MENUID_MAX (sizeof(resize_list)/sizeof(resize_list[0]))  #define MAX_MENU_ITEMS 20
21    
22  static HANDLE hInst; /* Instance handle of TTX*.DLL */  static HANDLE hInst; /* Instance handle of TTX*.DLL */
23    
# Line 25  typedef struct { Line 26  typedef struct {
26    PComVar cv;    PComVar cv;
27    HMENU ResizeMenu;    HMENU ResizeMenu;
28    BOOL ReplaceTermDlg;    BOOL ReplaceTermDlg;
29      PReadIniFile origReadIniFile;
30      unsigned int MenuItems;
31      unsigned int ResizeList[MAX_MENU_ITEMS][2];
32  } TInstVar;  } TInstVar;
33    
34  static TInstVar FAR * pvar;  static TInstVar FAR * pvar;
# Line 33  static TInstVar FAR * pvar; Line 37  static TInstVar FAR * pvar;
37  static TInstVar InstVar;  static TInstVar InstVar;
38    
39  void InitMenu() {  void InitMenu() {
40    int i, x, y;    unsigned int i, x, y;
41    char tmp[20];    char tmp[20];
42    
43    if (pvar->ResizeMenu != NULL) {    if (pvar->ResizeMenu != NULL) {
# Line 42  void InitMenu() { Line 46  void InitMenu() {
46    
47    pvar->ResizeMenu = CreateMenu();    pvar->ResizeMenu = CreateMenu();
48    
49    for (i=0; i<MENUID_MAX; i++) {    for (i=0; i < pvar->MenuItems; i++) {
50      x = resize_list[i][0];      x = pvar->ResizeList[i][0];
51      y = resize_list[i][1];      y = pvar->ResizeList[i][1];
52      if (x == 0)      if (i < 15) {
53        _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "height: %d(&%x)", y, i+1);        if (x == 0)
54      else if (y == 0)          _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "height: %u(&%x)", y, i+1);
55        _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "width: %d(&%x)", x, i+1);        else if (y == 0)
56      else          _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "width: %u(&%x)", x, i+1);
57        _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "%dx%d(&%x)", x, y, i+1);        else
58            _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "%ux%u(&%x)", x, y, i+1);
59        }
60        else if (i < 35) {
61          if (x == 0)
62            _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "height: %u(&%c)", y, 'a' + i - 9);
63          else if (y == 0)
64            _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "width: %u(&%c)", x, 'a' + i - 9);
65          else
66            _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "%ux%u(&%c)", x, y, 'a' + i - 9);
67        }
68        else {
69          if (x == 0)
70            _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "height: %u", y);
71          else if (y == 0)
72            _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "width: %u", x);
73          else
74            _snprintf_s(tmp, sizeof(tmp), _TRUNCATE, "%ux%u", x, y);
75        }
76      InsertMenu(pvar->ResizeMenu, -1, MF_BYPOSITION, ID_MENUID_BASE+i, tmp);      InsertMenu(pvar->ResizeMenu, -1, MF_BYPOSITION, ID_MENUID_BASE+i, tmp);
77    }    }
78  }  }
79    
80  static void PASCAL FAR TTXInit(PTTSet ts, PComVar cv) {  static void PASCAL FAR TTXInit(PTTSet ts, PComVar cv) {
81      int i;
82    
83    pvar->ts = ts;    pvar->ts = ts;
84    pvar->cv = cv;    pvar->cv = cv;
85    pvar->ReplaceTermDlg = FALSE;    pvar->ReplaceTermDlg = FALSE;
86    pvar->ResizeMenu = NULL;    pvar->ResizeMenu = NULL;
87    
88      pvar->MenuItems = sizeof(def_resize_list)/sizeof(def_resize_list[0]);
89    
90      for (i=0; i < pvar->MenuItems; i++) {
91        pvar->ResizeList[i][0] = def_resize_list[i][0];
92        pvar->ResizeList[i][1] = def_resize_list[i][1];
93      }
94    
95    InitMenu();    InitMenu();
96  }  }
97    
# Line 76  static void PASCAL FAR TTXGetUIHooks(TTX Line 107  static void PASCAL FAR TTXGetUIHooks(TTX
107    return;    return;
108  }  }
109    
110    static void PASCAL FAR ResizeMenuReadIniFile(PCHAR fn, PTTSet ts) {
111      unsigned int i, x, y;
112      char Key[20], Buff[100];
113    
114      (pvar->origReadIniFile)(fn, ts);
115    
116      for (i=0; i<MAX_MENU_ITEMS; i++) {
117        _snprintf_s(Key, sizeof(Key), _TRUNCATE, "ResizeMenu%d", i+1);
118        GetPrivateProfileString(SECTION, Key, "\n", Buff, sizeof(Buff), fn);
119    
120        if (sscanf(Buff, "%u , %u", &x, &y) == 2) {
121          if (x == 0 && y == 0) {
122            break;
123          }
124          if (x > TermWidthMax ) {
125            x = TermWidthMax;
126          }
127          if (y > TermHeightMax ) {
128            y = TermHeightMax;
129          }
130          pvar->ResizeList[i][0] = x;
131          pvar->ResizeList[i][1] = y;
132        }
133        else {
134          break;
135        }
136      }
137    
138      if (i == 0) {
139        pvar->MenuItems = sizeof(def_resize_list)/sizeof(def_resize_list[0]);
140    
141        for (i=0; i < pvar->MenuItems; i++) {
142          pvar->ResizeList[i][0] = def_resize_list[i][0];
143          pvar->ResizeList[i][1] = def_resize_list[i][1];
144        }
145      }
146      else {
147        pvar->MenuItems = i;
148      }
149    }
150    
151    static void PASCAL FAR TTXGetSetupHooks(TTXSetupHooks FAR * hooks) {
152      pvar->origReadIniFile = *hooks->ReadIniFile;
153      *hooks->ReadIniFile = ResizeMenuReadIniFile;
154    }
155    
156  static void PASCAL FAR TTXModifyMenu(HMENU menu) {  static void PASCAL FAR TTXModifyMenu(HMENU menu) {
157    MENUITEMINFO mi;    MENUITEMINFO mi;
158    
# Line 92  static void PASCAL FAR TTXModifyMenu(HME Line 169  static void PASCAL FAR TTXModifyMenu(HME
169    
170  static int PASCAL FAR TTXProcessCommand(HWND hWin, WORD cmd) {  static int PASCAL FAR TTXProcessCommand(HWND hWin, WORD cmd) {
171    int num;    int num;
172    if (cmd >= ID_MENUID_BASE && cmd < ID_MENUID_BASE + MENUID_MAX) {    if (cmd >= ID_MENUID_BASE && cmd < ID_MENUID_BASE + pvar->MenuItems) {
173      num = cmd - ID_MENUID_BASE;      num = cmd - ID_MENUID_BASE;
174      if (resize_list[num][0] > 0)      if (pvar->ResizeList[num][0] > 0)
175        pvar->ts->TerminalWidth = resize_list[num][0];        pvar->ts->TerminalWidth = pvar->ResizeList[num][0];
176      if (resize_list[num][1] > 0)      if (pvar->ResizeList[num][1] > 0)
177        pvar->ts->TerminalHeight = resize_list[num][1];        pvar->ts->TerminalHeight = pvar->ResizeList[num][1];
178      pvar->ReplaceTermDlg = TRUE;      pvar->ReplaceTermDlg = TRUE;
179    
180      // Call Setup-Terminal dialog      // Call Setup-Terminal dialog
# Line 113  static TTXExports Exports = { Line 190  static TTXExports Exports = {
190    
191    TTXInit,    TTXInit,
192    TTXGetUIHooks,    TTXGetUIHooks,
193    NULL, // TTXGetSetupHooks,    TTXGetSetupHooks,
194    NULL, // TTXOpenTCP,    NULL, // TTXOpenTCP,
195    NULL, // TTXCloseTCP,    NULL, // TTXCloseTCP,
196    NULL, // TTXSetWinSize,    NULL, // TTXSetWinSize,

Legend:
Removed from v.82  
changed lines
  Added in v.87

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26