|
|
| version 1.18, 2007/12/16 14:58:24 | version 1.19, 2008/02/17 01:29:17 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include <stdarg.h> | #include <stdarg.h> |
| #include "resource.h" | |
| #include "strres.h" | #include "strres.h" |
| #include "textfile.h" | #include "textfile.h" |
| #include "oemtext.h" | #include "oemtext.h" |
| #include "dosio.h" | #include "dosio.h" |
| #include "ini.h" | #include "ini.h" |
| #include "menu.h" | |
| #ifdef TRACE | #ifdef TRACE |
| Line 22 | Line 23 |
| #define VIEW_TEXT "£Í£Ó ¥´¥·¥Ã¥¯" | #define VIEW_TEXT "£Í£Ó ¥´¥·¥Ã¥¯" |
| #define VIEW_SIZE 12 | #define VIEW_SIZE 12 |
| typedef struct { | typedef struct |
| { | |
| UINT8 en; | UINT8 en; |
| TEXTFILEH tf; | TEXTFILEH tf; |
| HWND hwnd; | HWND hwnd; |
| Line 37 typedef struct { | Line 39 typedef struct { |
| extern HINSTANCE g_hInstance; | extern HINSTANCE g_hInstance; |
| enum { | |
| IDM_TRACE1 = 3300, | |
| IDM_TRACE2, | |
| IDM_TRACEEN, | |
| IDM_TRACEFH, | |
| IDM_TRACECL | |
| }; | |
| static const TCHAR ProgTitle[] = _T("console"); | static const TCHAR ProgTitle[] = _T("console"); |
| static const TCHAR ClassName[] = _T("TRACE-console"); | static const TCHAR ClassName[] = _T("TRACE-console"); |
| static const TCHAR ClassEdit[] = _T("EDIT"); | static const TCHAR ClassEdit[] = _T("EDIT"); |
| static const TCHAR viewfont[] = _T(VIEW_TEXT); | static const TCHAR viewfont[] = _T(VIEW_TEXT); |
| static const TCHAR trace1[] = _T("TRACE"); | |
| static const TCHAR trace2[] = _T("VERBOSE"); | |
| static const TCHAR traceen[] = _T("Enable"); | |
| static const TCHAR tracefh[] = _T("File out"); | |
| static const TCHAR tracecl[] = _T("Clear"); | |
| static const OEMCHAR crlf[] = OEMTEXT("\r\n"); | static const OEMCHAR crlf[] = OEMTEXT("\r\n"); |
| static TRACEWIN tracewin; | static TRACEWIN tracewin; |
| static HWND hView = NULL; | static HWND s_hView = NULL; |
| static HFONT hfView = NULL; | static HFONT s_hfView = NULL; |
| static HBRUSH hBrush = NULL; | static HBRUSH s_hBrush = NULL; |
| static int viewpos; | static int viewpos; |
| static int viewleng; | static int viewleng; |
| static TCHAR viewbuf[VIEW_BUFFERSIZE * 2]; | static TCHAR viewbuf[VIEW_BUFFERSIZE * 2]; |
| Line 89 static void View_ClrString(void) { | Line 79 static void View_ClrString(void) { |
| viewpos = 0; | viewpos = 0; |
| viewleng = 0; | viewleng = 0; |
| viewbuf[0] = '\0'; | viewbuf[0] = '\0'; |
| SetWindowText(hView, viewbuf); | SetWindowText(s_hView, viewbuf); |
| } | } |
| static void View_AddString(const OEMCHAR *string) { | static void View_AddString(const OEMCHAR *string) { |
| Line 135 static void View_AddString(const OEMCHAR | Line 125 static void View_AddString(const OEMCHAR |
| viewbuf[vpos + vlen + 1] = '\n'; | viewbuf[vpos + vlen + 1] = '\n'; |
| viewbuf[vpos + vlen + 2] = '\0'; | viewbuf[vpos + vlen + 2] = '\0'; |
| viewleng = vlen + 2; | viewleng = vlen + 2; |
| SetWindowText(hView, viewbuf + vpos); | SetWindowText(s_hView, viewbuf + vpos); |
| View_ScrollToBottom(hView); | View_ScrollToBottom(s_hView); |
| } | } |
| // ---- | // ---- |
| static LRESULT CALLBACK traceproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { | static LRESULT onCreate(HWND hWnd) |
| { | |
| HMENU hMenu; | |
| RECT rc; | RECT rc; |
| HMENU hmenu; | |
| switch (msg) { | hMenu = GetSystemMenu(hWnd, FALSE); |
| case WM_CREATE: | menu_addmenures(hMenu, 0, IDR_TRACE, FALSE); |
| hmenu = GetSystemMenu(hWnd, FALSE); | |
| InsertMenu(hmenu, 0, MF_BYPOSITION | MF_STRING, | |
| IDM_TRACE1, trace1); | |
| InsertMenu(hmenu, 1, MF_BYPOSITION | MF_STRING, | |
| IDM_TRACE2, trace2); | |
| InsertMenu(hmenu, 2, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); | |
| InsertMenu(hmenu, 3, MF_BYPOSITION | MF_STRING, | |
| IDM_TRACEEN, traceen); | |
| InsertMenu(hmenu, 4, MF_BYPOSITION | MF_STRING, | |
| IDM_TRACEFH, tracefh); | |
| InsertMenu(hmenu, 5, MF_BYPOSITION | MF_STRING, | |
| IDM_TRACECL, tracecl); | |
| InsertMenu(hmenu, 6, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); | |
| CheckMenuItem(hmenu, IDM_TRACE1, | CheckMenuItem(hMenu, IDM_TRACE_TRACE, |
| (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); |
| CheckMenuItem(hmenu, IDM_TRACE2, | CheckMenuItem(hMenu, IDM_TRACE_VERBOSE, |
| (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED); |
| CheckMenuItem(hmenu, IDM_TRACEEN, | CheckMenuItem(hMenu, IDM_TRACE_ENABLE, |
| (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED); |
| GetClientRect(hWnd, &rc); | GetClientRect(hWnd, &rc); |
| hView = CreateWindowEx(WS_EX_CLIENTEDGE, | s_hView = CreateWindowEx(WS_EX_CLIENTEDGE, |
| ClassEdit, NULL, | ClassEdit, NULL, |
| WS_CHILD | WS_VISIBLE | ES_READONLY | ES_LEFT | | WS_CHILD | WS_VISIBLE | ES_READONLY | ES_LEFT | |
| ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL, | ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL, |
| 0, 0, rc.right, rc.bottom, | 0, 0, rc.right, rc.bottom, |
| hWnd, (HMENU)IDC_VIEW, g_hInstance, NULL); | hWnd, (HMENU)IDC_VIEW, g_hInstance, NULL); |
| if (!hView) { | SendMessage(s_hView, EM_SETLIMITTEXT, (WPARAM)VIEW_BUFFERSIZE, 0); |
| break; | |
| } | |
| SendMessage(hView, EM_SETLIMITTEXT, (WPARAM)VIEW_BUFFERSIZE, 0); | |
| hfView = CreateFont(VIEW_SIZE, 0, 0, 0, 0, 0, 0, 0, | s_hfView = CreateFont(VIEW_SIZE, 0, 0, 0, 0, 0, 0, 0, |
| SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, | SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, |
| DEFAULT_QUALITY, FIXED_PITCH, viewfont); | DEFAULT_QUALITY, FIXED_PITCH, viewfont); |
| if (!hfView) { | if (s_hfView) |
| break; | { |
| } | SendMessage(s_hView, WM_SETFONT, (WPARAM)s_hfView, |
| SendMessage(hView, WM_SETFONT, (WPARAM)hfView, | |
| MAKELPARAM(TRUE, 0)); | MAKELPARAM(TRUE, 0)); |
| hBrush = CreateSolidBrush(VIEW_BGCOLOR); | } |
| SetFocus(hView); | |
| return(TRUE); | |
| case WM_SYSCOMMAND: | s_hBrush = CreateSolidBrush(VIEW_BGCOLOR); |
| switch(wp) { | SetFocus(s_hView); |
| case IDM_TRACE1: | |
| tracewin.en ^= 1; | return TRUE; |
| hmenu = GetSystemMenu(hWnd, FALSE); | } |
| CheckMenuItem(hmenu, IDM_TRACE1, | |
| static LRESULT onSysCommand(HWND hWnd, WPARAM wParam, LPARAM lParam) | |
| { | |
| HMENU hMenu; | |
| hMenu = GetSystemMenu(hWnd, FALSE); | |
| switch(wParam) | |
| { | |
| case IDM_TRACE_TRACE: | |
| tracewin.en ^= 1; | |
| CheckMenuItem(hMenu, IDM_TRACE_TRACE, | |
| (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); |
| break; | break; |
| case IDM_TRACE2: | case IDM_TRACE_VERBOSE: |
| tracewin.en ^= 2; | tracewin.en ^= 2; |
| hmenu = GetSystemMenu(hWnd, FALSE); | CheckMenuItem(hMenu, IDM_TRACE_VERBOSE, |
| CheckMenuItem(hmenu, IDM_TRACE2, | |
| (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED); |
| break; | break; |
| case IDM_TRACEEN: | case IDM_TRACE_ENABLE: |
| tracewin.en ^= 4; | tracewin.en ^= 4; |
| hmenu = GetSystemMenu(hWnd, FALSE); | CheckMenuItem(hMenu, IDM_TRACE_ENABLE, |
| CheckMenuItem(hmenu, IDM_TRACEEN, | |
| (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED); |
| break; | break; |
| case IDM_TRACEFH: | case IDM_TRACE_FILEOUT: |
| if (tracewin.tf != NULL) { | if (tracewin.tf != NULL) |
| textfile_close(tracewin.tf); | { |
| tracewin.tf = NULL; | textfile_close(tracewin.tf); |
| } | tracewin.tf = NULL; |
| else { | } |
| tracewin.tf = textfile_create(OEMTEXT("traceout.txt"), | else |
| 0x800); | { |
| } | tracewin.tf = textfile_create(OEMTEXT("traceout.txt"), |
| hmenu = GetSystemMenu(hWnd, FALSE); | 0x800); |
| CheckMenuItem(hmenu, IDM_TRACEFH, | } |
| CheckMenuItem(hMenu, IDM_TRACE_FILEOUT, | |
| (tracewin.tf)?MF_CHECKED:MF_UNCHECKED); | (tracewin.tf)?MF_CHECKED:MF_UNCHECKED); |
| break; | break; |
| case IDM_TRACECL: | |
| View_ClrString(); | |
| break; | |
| default: | case IDM_TRACE_CLEAR: |
| return(DefWindowProc(hWnd, msg, wp, lp)); | View_ClrString(); |
| } | |
| break; | break; |
| default: | |
| return DefWindowProc(hWnd, WM_SYSCOMMAND, wParam, lParam); | |
| } | |
| return FALSE; | |
| } | |
| static LRESULT CALLBACK traceproc(HWND hWnd, UINT uMsg, | |
| WPARAM wParam, LPARAM lParam) | |
| { | |
| RECT rc; | |
| switch(uMsg) | |
| { | |
| case WM_CREATE: | |
| return onCreate(hWnd); | |
| case WM_SYSCOMMAND: | |
| return onSysCommand(hWnd, wParam, lParam); | |
| case WM_MOVE: | case WM_MOVE: |
| if (!(GetWindowLong(hWnd, GWL_STYLE) & | if (!(GetWindowLong(hWnd, GWL_STYLE) & |
| (WS_MAXIMIZE | WS_MINIMIZE))) { | (WS_MAXIMIZE | WS_MINIMIZE))) |
| { | |
| GetWindowRect(hWnd, &rc); | GetWindowRect(hWnd, &rc); |
| tracecfg.posx = rc.left; | tracecfg.posx = rc.left; |
| tracecfg.posy = rc.top; | tracecfg.posy = rc.top; |
| Line 251 static LRESULT CALLBACK traceproc(HWND h | Line 246 static LRESULT CALLBACK traceproc(HWND h |
| case WM_SIZE: // window resize | case WM_SIZE: // window resize |
| if (!(GetWindowLong(hWnd, GWL_STYLE) & | if (!(GetWindowLong(hWnd, GWL_STYLE) & |
| (WS_MAXIMIZE | WS_MINIMIZE))) { | (WS_MAXIMIZE | WS_MINIMIZE))) |
| { | |
| GetWindowRect(hWnd, &rc); | GetWindowRect(hWnd, &rc); |
| tracecfg.width = rc.right - rc.left; | tracecfg.width = rc.right - rc.left; |
| tracecfg.height = rc.bottom - rc.top; | tracecfg.height = rc.bottom - rc.top; |
| } | } |
| MoveWindow(hView, 0, 0, LOWORD(lp), HIWORD(lp), TRUE); | MoveWindow(s_hView, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); |
| View_ScrollToBottom(hView); | View_ScrollToBottom(s_hView); |
| break; | break; |
| case WM_SETFOCUS: | case WM_SETFOCUS: |
| SetFocus(hView); | SetFocus(s_hView); |
| return(0L); | return(0L); |
| case WM_CTLCOLORSTATIC: | case WM_CTLCOLORSTATIC: |
| case WM_CTLCOLOREDIT: | case WM_CTLCOLOREDIT: |
| SetTextColor((HDC)wp, VIEW_FGCOLOR); | SetTextColor((HDC)wParam, VIEW_FGCOLOR); |
| SetBkColor((HDC)wp, VIEW_BGCOLOR); | SetBkColor((HDC)wParam, VIEW_BGCOLOR); |
| return((LRESULT)hBrush); | return((LRESULT)s_hBrush); |
| case WM_CLOSE: | case WM_CLOSE: |
| break; | break; |
| case WM_DESTROY: | case WM_DESTROY: |
| if (hBrush) { | if (s_hBrush) |
| DeleteObject(hBrush); | { |
| } | DeleteObject(s_hBrush); |
| if (hfView) { | } |
| DeleteObject(hfView); | if (s_hfView) |
| { | |
| DeleteObject(s_hfView); | |
| } | } |
| break; | break; |
| #if 0 | #if 0 |
| Line 287 static LRESULT CALLBACK traceproc(HWND h | Line 285 static LRESULT CALLBACK traceproc(HWND h |
| break; | break; |
| case WM_MOVING: | case WM_MOVING: |
| winloc_movingproc((RECT *)lp); | winloc_movingproc((RECT *)lParam); |
| break; | break; |
| case WM_ERASEBKGND: | case WM_ERASEBKGND: |
| return(FALSE); | return FALSE; |
| #endif | #endif |
| default: | default: |
| return(DefWindowProc(hWnd, msg, wp, lp)); | return DefWindowProc(hWnd, uMsg, wParam, lParam); |
| } | } |
| return(0L); | return FALSE; |
| } | } |
| Line 381 void trace_fmt(const char *fmt, ...) { | Line 379 void trace_fmt(const char *fmt, ...) { |
| vsprintf(buf, fmt, ap); | vsprintf(buf, fmt, ap); |
| #endif | #endif |
| va_end(ap); | va_end(ap); |
| if ((tracewin.en & 4) && (hView)) { | if ((tracewin.en & 4) && (s_hView)) { |
| View_AddString(buf); | View_AddString(buf); |
| } | } |
| if (tracewin.tf != NULL) { | if (tracewin.tf != NULL) { |
| Line 410 void trace_fmt2(const char *fmt, ...) { | Line 408 void trace_fmt2(const char *fmt, ...) { |
| vsprintf(buf, fmt, ap); | vsprintf(buf, fmt, ap); |
| #endif | #endif |
| va_end(ap); | va_end(ap); |
| if ((tracewin.en & 4) && (hView)) { | if ((tracewin.en & 4) && (s_hView)) { |
| View_AddString(buf); | View_AddString(buf); |
| } | } |
| if (tracewin.tf != FILEH_INVALID) { | if (tracewin.tf != FILEH_INVALID) { |
| Line 432 void trace_char(char c) { | Line 430 void trace_char(char c) { |
| #else | #else |
| const OEMCHAR *pdevstr = devstr; | const OEMCHAR *pdevstr = devstr; |
| #endif | #endif |
| if ((tracewin.en & 4) && (hView)) { | if ((tracewin.en & 4) && (s_hView)) |
| { | |
| View_AddString(pdevstr); | View_AddString(pdevstr); |
| } | } |
| if (tracewin.tf != NULL) { | if (tracewin.tf != NULL) { |