Annotation of OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp, Revision 1.21
1.1 noro 1: // asir32guiView.cpp : CAsir32guiView クラスの動作の定義を行います。
2: //
3:
4: #include "stdafx.h"
5:
6: #include "asir32gui.h"
7: #include "asir32guiDoc.h"
8: #include "asir32guiView.h"
9: #include "FatalDialog.h"
1.3 noro 10: #include <direct.h>
1.6 noro 11: #include <io.h>
1.1 noro 12:
13: #ifdef _DEBUG
14: #define new DEBUG_NEW
15: #undef THIS_FILE
16: static char THIS_FILE[] = __FILE__;
17: #endif
18:
1.5 noro 19: // const TextBufferSize = 32768;
1.19 ohara 20: const int TextBufferSize = 16384;
1.1 noro 21:
22: CAsir32guiView *theView;
23:
24: extern "C"
25: {
26: char *prev_hist(void), *next_hist(void), *search_hist(char *p);
27: void read_input_history(),write_input_history();
28: void init_input_history();
29: void add_hist(char *p), reset_traverse(void);
30: void asir_terminate(void);
31: void Main(int,char*[]);
32: void loadfile(char *);
33: void put_line(char *);
34: void send_intr(void);
35: void insert_to_theView(char *);
36: void get_rootdir(char *,int,char *);
37: extern int bigfloat, prtime, prresult;
38: extern char *asir_libdir;
1.2 noro 39: extern int asirgui_kind;
1.1 noro 40:
41: void insert_to_theView(char *str)
42: {
43: (void)theView->Insert(str);
44: }
45: void flush_log()
46: {
47: if ( theView->Logging )
48: theView->OnFileLog();
49: }
50: }
51:
52: /////////////////////////////////////////////////////////////////////////////
53: // CAsir32guiView
54:
55: IMPLEMENT_DYNCREATE(CAsir32guiView, CEditView)
56:
57: BEGIN_MESSAGE_MAP(CAsir32guiView, CEditView)
58: //{{AFX_MSG_MAP(CAsir32guiView)
59: ON_WM_KEYDOWN()
60: ON_WM_CHAR()
61: ON_WM_LBUTTONUP()
62: ON_WM_RBUTTONDOWN()
63: ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
64: ON_COMMAND(ID_FILE_LOG, OnFileLog)
65: ON_COMMAND(ID_ASIRHELP, OnAsirhelp)
66: ON_UPDATE_COMMAND_UI(ID_FILE_LOG, OnUpdateFileLog)
67: ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
1.3 noro 68: ON_COMMAND(IDR_FONT, OnFont)
69: ON_WM_CREATE()
1.6 noro 70: ON_COMMAND(ID_CONTRIBHELP, OnContribhelp)
1.9 noro 71: ON_WM_SIZE()
1.11 noro 72: ON_COMMAND(ID_DSOLV, OnDsolv)
73: ON_COMMAND(ID_GNUPLOT, OnGnuplot)
74: ON_COMMAND(ID_OKDIFF, OnOkdiff)
75: ON_COMMAND(ID_OKDMODULE, OnOkdmodule)
76: ON_COMMAND(ID_OM, OnOm)
77: ON_COMMAND(ID_PFPCOH, OnPfpcoh)
78: ON_COMMAND(ID_PLUCKER, OnPlucker)
79: ON_COMMAND(ID_SM1, OnSm1)
80: ON_COMMAND(ID_TIGERS, OnTigers)
81: ON_COMMAND(ID_TODOPARAMETRIZE, OnTodoparametrize)
1.1 noro 82: //}}AFX_MSG_MAP
83: // 標準印刷コマンド
84: // ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
85: // ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
86: // ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
87: END_MESSAGE_MAP()
88:
89: /////////////////////////////////////////////////////////////////////////////
90: // CAsir32guiView クラスの構築/消滅
91:
92: CAsir32guiView::CAsir32guiView()
93: {
94: // TODO: この場所に構築用のコードを追加してください。
95: static int tmpView_created = 0;
96:
97: init_input_history();
98: read_input_history();
99: DebugMode = 0;
100: DebugInMain = 0;
1.9 noro 101: // MaxLineLength = 80;
1.1 noro 102: LogStart = 0;
103: Logging = 0;
104: Logfp = NULL;
105: ResetIndex();
106: theView = this;
107: }
108:
109: CAsir32guiView::~CAsir32guiView()
110: {
111: write_input_history();
112: }
113:
114: BOOL CAsir32guiView::PreCreateWindow(CREATESTRUCT& cs)
115: {
116: // TODO: この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを
117: // 修正してください。
118:
119: m_dwDefaultStyle = dwStyleDefault & ~ES_AUTOHSCROLL ;
120: m_dwDefaultStyle &= ~WS_HSCROLL;
121: return CCtrlView::PreCreateWindow(cs);
122: }
123:
124: /////////////////////////////////////////////////////////////////////////////
125: // CAsir32guiView クラスの描画
126:
127: void CAsir32guiView::OnDraw(CDC* pDC)
128: {
129: CAsir32guiDoc* pDoc = GetDocument();
130: ASSERT_VALID(pDoc);
131:
132: // TODO: この場所にネイティブ データ用の描画コードを追加します。
133: }
134:
135: /////////////////////////////////////////////////////////////////////////////
136: // CAsir32guiView クラスの印刷
137:
138: BOOL CAsir32guiView::OnPreparePrinting(CPrintInfo* pInfo)
139: {
140: // デフォルトの印刷準備
141: return DoPreparePrinting(pInfo);
142: }
143:
144: void CAsir32guiView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
145: {
146: // TODO: 印刷前の特別な初期化処理を追加してください。
147: }
148:
149: void CAsir32guiView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
150: {
151: // TODO: 印刷後の後処理を追加してください。
152: }
153:
154: /////////////////////////////////////////////////////////////////////////////
155: // CAsir32guiView クラスの診断
156:
157: #ifdef _DEBUG
158: void CAsir32guiView::AssertValid() const
159: {
160: CEditView::AssertValid();
161: }
162:
163: void CAsir32guiView::Dump(CDumpContext& dc) const
164: {
165: CEditView::Dump(dc);
166: }
167:
168: CAsir32guiDoc* CAsir32guiView::GetDocument() // 非デバッグ バージョンはインラインです。
169: {
170: ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAsir32guiDoc)));
171: return (CAsir32guiDoc*)m_pDocument;
172: }
173: #endif //_DEBUG
174:
175: /////////////////////////////////////////////////////////////////////////////
176: // CAsir32guiView クラスのメッセージ ハンドラ
177:
178: void CAsir32guiView::PutChar(int c)
179: {
1.8 noro 180: int i,len;
1.1 noro 181: char buf[2];
182:
1.8 noro 183: if ( EndPos >= sizeof(Buffer)-1 ) {
184: Beep(); return;
185: }
1.1 noro 186: for ( i = EndPos-1; i >= CurrentPos; i-- )
1.8 noro 187: Buffer[i+1] = Buffer[i];
1.1 noro 188: Buffer[CurrentPos] = (char)c;
1.8 noro 189: // buf[0] = (char)c; buf[1] = 0;
190: // Insert(buf,FALSE);
191: len = GetWindowTextLength();
192: if ( len+1 >= TextBufferSize )
193: DeleteTop();
194: CEditView::OnChar(c, 1, 0);
1.1 noro 195: CurrentPos++;
196: EndPos++;
197: }
198:
199: void CAsir32guiView::DeleteChar(int count) {
200: int i,s,e;
201: char null = 0;
202:
203: if ( count > (EndPos-CurrentPos) )
204: count = EndPos - CurrentPos;
1.15 noro 205: if ( count > 0 ) {
1.1 noro 206: EndPos -= count;
207: for ( i = CurrentPos; i < EndPos; i++ )
208: Buffer[i] = Buffer[i+count];
209: GetEditCtrl().GetSel(s,e);
210: GetEditCtrl().SetSel(s,s+count);
211: GetEditCtrl().ReplaceSel(&null);
212: }
213: }
214:
215: void CAsir32guiView::Insert(char *buf,BOOL wrap)
216: {
217: char t[BUFSIZ*4];
218: char *p,*q,c;
219: int len;
220: int i;
221:
222: if ( wrap ) {
223: i = GetEditCtrl().LineLength(-1);
224: for ( p = t, q = buf; (c = *p++ = *q++) != 0; )
225: if ( c == '\r' ) {
226: *p++ = *q++; i = 0;
227: } else if ( (*q != '\r') && (++i == MaxLineLength) ) {
228: *p++ = '\r'; *p++ = '\r'; *p++ = '\n'; i = 0;
229: }
230: p = t;
231: } else
232: p = buf;
233: len = GetWindowTextLength();
234: if ( strlen(p) + len >= TextBufferSize )
235: DeleteTop();
236: GetEditCtrl().ReplaceSel(p);
237: }
238:
239: void CAsir32guiView::DeleteTop()
240: {
241: const char *p,*q;
242: const char *buf;
243: char null = 0;
1.20 ohara 244: int len,len0;
1.1 noro 245:
246: buf = LockBuffer();
247: len0 = len = strlen(buf);
248: for ( p = buf; len >= TextBufferSize/2; ) {
249: q = strchr(p,'\n');
250: if ( !q ) {
251: len = 0; break;
252: } else {
253: q++; len -= (q-p); p = q;
254: }
255: }
256: if ( Logging ) {
1.4 noro 257: if ( len < LogStart )
258: LogStart -= len;
259: else {
260: fwrite(buf+LogStart,1,len-LogStart,Logfp);
261: LogStart = 0;
262: }
1.1 noro 263: }
264: UnlockBuffer();
265: if ( q ) {
266: GetEditCtrl().SetSel(0,len);
267: GetEditCtrl().ReplaceSel(&null);
268: }
269: UpdateCursor(EndPos);
270: }
271:
272: void CAsir32guiView::UpdateCursor(int pos)
273: {
274: int s;
275: int len;
276:
277: if ( pos < 0 || pos > EndPos )
278: Beep();
279: else {
280: len = GetWindowTextLength();
281: CurrentPos = pos;
282: s = len-EndPos+CurrentPos;
283: GetEditCtrl().SetSel(s,s);
284: }
285: }
286:
287: void CAsir32guiView::ReplaceString(char *str)
288: {
289: UpdateCursor(0); DeleteChar(EndPos);
290: Insert(str,FALSE);
291: strcpy(Buffer,str);
292: EndPos = CurrentPos = strlen(str);
293: }
294:
295: void CAsir32guiView::Beep(void) {
296: ::MessageBeep(0xffffffff);
297: }
298:
299: void CAsir32guiView::Paste(void) {
1.8 noro 300: char buf[2*BUFSIZ];
301: const char *src;
302: char c;
303: int i,j,l;
304: HGLOBAL hClip;
305:
306: if ( asirgui_kind == ASIRGUI_MESSAGE ) {
307: Beep(); return;
308: }
1.2 noro 309:
1.8 noro 310: if ( OpenClipboard() == FALSE ) {
311: Beep(); return;
1.1 noro 312: }
313: hClip = GetClipboardData(CF_TEXT);
314: src = (const char *)::GlobalLock(hClip);
1.10 noro 315: if ( !src || (l=strlen(src)) >= sizeof(Buffer)-EndPos ) {
1.1 noro 316: ::CloseClipboard();
317: Beep(); return;
318: }
1.8 noro 319: for ( i = j = 0; i < l; i++ )
320: if ( (c = src[i]) != '\n' && c != '\r' )
321: buf[j++] = c;
322: buf[j] = 0;
1.1 noro 323: ::GlobalUnlock(hClip);
324: ::CloseClipboard();
325: GetEditCtrl().ReplaceSel(buf);
1.10 noro 326: l = strlen(buf);
327: for ( i = EndPos-1; i >= CurrentPos; i-- )
328: Buffer[i+l] = Buffer[i];
329: for ( j = 0, i = CurrentPos; j < l; j++, i++ )
330: Buffer[i] = buf[j];
331: EndPos += l; CurrentPos += l;
1.1 noro 332: }
333:
334: #define CTRL(c) (c)&0x1f
335:
336: void CAsir32guiView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
337: {
338: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
339: char *exp_result;
340:
341: switch ( nChar ) {
342: case VK_LEFT:
343: UpdateCursor(CurrentPos-1); return;
344: case VK_RIGHT:
345: UpdateCursor(CurrentPos+1); return;
346: case VK_DELETE:
347: DeleteChar(1); return;
348: case VK_UP:
349: if ( (exp_result = prev_hist()) != 0 )
350: ReplaceString(exp_result);
351: else
352: Beep();
353: return;
354: case VK_DOWN:
355: if ( (exp_result = next_hist()) != 0 )
356: ReplaceString(exp_result);
357: else
358: Beep();
359: return;
360: default:
361: break;
362: }
363: CEditView::OnKeyDown(nChar, nRepCnt, nFlags);
364: }
365:
366: void CAsir32guiView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
367: {
368: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
369: char *exp_result;
1.13 noro 370: char tmp[BUFSIZ];
1.1 noro 371:
1.2 noro 372: if ( asirgui_kind == ASIRGUI_MESSAGE ) {
373: Beep(); return;
374: }
375:
1.1 noro 376: switch ( nChar ) {
377: case CTRL('M'): case CTRL('J'):
378: UpdateCursor(EndPos);
379: Buffer[EndPos] = 0;
380: reset_traverse();
381: if ( Buffer[0] == '!' ) {
382: exp_result = search_hist(Buffer+1);
383: if ( exp_result )
384: ReplaceString(exp_result);
385: else {
386: UpdateCursor(0); DeleteChar(EndPos); Beep();
387: }
388: return;
389: } else {
390: add_hist(Buffer);
391: put_line(Buffer);
392: ResetIndex();
393: nChar = CTRL('M');
394: }
395: break;
396: case CTRL('N'):
397: if ( (exp_result = next_hist()) != 0 )
398: ReplaceString(exp_result);
399: else
400: Beep();
401: return;
402: case CTRL('P'):
403: if ( (exp_result = prev_hist()) != 0 )
404: ReplaceString(exp_result);
405: else
406: Beep();
407: return;
408: case CTRL('A'):
409: UpdateCursor(0); return;
410: case CTRL('E'):
411: UpdateCursor(EndPos); return;
412: case CTRL('F'):
413: UpdateCursor(CurrentPos+1); return;
414: case CTRL('B'):
415: UpdateCursor(CurrentPos-1); return;
416: case CTRL('K'):
417: DeleteChar(EndPos-CurrentPos); return;
418: case CTRL('U'):
419: UpdateCursor(0); DeleteChar(EndPos); return;
420: case CTRL('D'):
421: DeleteChar(1); return;
422: case CTRL('H'):
423: if ( CurrentPos > 0 ) {
424: UpdateCursor(CurrentPos-1); DeleteChar(1);
425: } else
426: Beep();
427: return;
428: case CTRL('C'):
429: send_intr();
430: /* wake up the engine */
1.13 noro 431: tmp[0] = 0;
432: put_line(tmp);
1.1 noro 433: return;
434: default :
435: if ( nChar >= 0x20 && nChar < 0x7f )
436: PutChar(nChar);
437: else
438: Beep();
439: return;
440: }
441: CEditView::OnChar(nChar, nRepCnt, nFlags);
442: }
443:
444: void CAsir32guiView::OnLButtonUp(UINT nFlags, CPoint point)
445: {
446: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
447: GetEditCtrl().Copy(); UpdateCursor(EndPos);
448: CEditView::OnLButtonUp(nFlags, point);
449: }
450:
451: void CAsir32guiView::OnRButtonDown(UINT nFlags, CPoint point)
452: {
453: // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
454: Paste();
455:
456: // CEditView::OnRButtonDown(nFlags, point);
457: }
458:
459: void CAsir32guiView::OnFileOpen()
460: {
461: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
462: char cmd[BUFSIZ*2]; // XXX
463: char *p;
1.3 noro 464: static char errmsg[BUFSIZ];
465: static char prevdir[BUFSIZ];
1.1 noro 466:
1.3 noro 467: if ( !prevdir[0] ) {
468: get_rootdir(prevdir,sizeof(prevdir),errmsg);
469: strcat(prevdir,"\\lib");
470: }
471:
472: _chdir(prevdir);
1.1 noro 473: CFileDialog fileDialog(TRUE);
1.14 noro 474: fileDialog.m_ofn.lpstrInitialDir = prevdir;
1.1 noro 475: if ( fileDialog.DoModal() == IDOK ) {
476: CString pathName = fileDialog.GetPathName();
477: sprintf(cmd,"load(\"%s\");",pathName);
478: for ( p = cmd; *p; p++ )
479: if ( *p == '\\' )
480: *p = '/';
481: put_line(cmd);
1.20 ohara 482: strcpy(cmd,pathName);
483: p = strrchr(cmd,'\\');
1.3 noro 484: if ( p ) {
485: *p = 0;
1.20 ohara 486: strcpy(prevdir,cmd);
1.3 noro 487: }
1.1 noro 488: }
489: }
1.21 ! ohara 490: void CAsir32guiView::viewHtmlHelp(char *help)
! 491: {
! 492: #if _MSC_VER < 1300
! 493: /* Visual C++ 6.0 */
! 494: char root[BUFSIZ],errmsg[BUFSIZ], helpfile[BUFSIZ];
! 495: get_rootdir(root,sizeof(root),errmsg);
! 496: sprintf(helpfile,"%s\\help\\%shelp.chm",root,help);
! 497: ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0);
! 498: #endif
! 499: }
1.1 noro 500:
501: void CAsir32guiView::OnAsirhelp()
502: {
503: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 504: viewHtmlHelp("asir");
1.1 noro 505: }
506:
507: void CAsir32guiView::OnFileLog()
508: {
509: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
510: if ( !Logging ) {
511: CFileDialog fileDialog(TRUE);
512: if ( fileDialog.DoModal() == IDOK ) {
513: CString logfile = fileDialog.GetPathName();
514: Logfp = fopen(logfile,"ab");
515: if ( Logfp ) {
516: LogStart = GetWindowTextLength();
517: Logging = 1;
518: }
519: }
520: } else {
521: const char *buf;
522: buf = LockBuffer();
523: fwrite(buf+LogStart,1,strlen(buf)-LogStart,Logfp);
524: UnlockBuffer();
525: fclose(Logfp);
526: Logging = 0;
527: }
528: }
529:
530: void CAsir32guiView::OnUpdateFileLog(CCmdUI* pCmdUI)
531: {
532: // TODO: この位置に command update UI ハンドラ用のコードを追加してください
533: if ( Logging )
534: pCmdUI->SetCheck(1);
535: else
536: pCmdUI->SetCheck(0);
537: }
538:
539: void CAsir32guiView::OnEditPaste()
540: {
541: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
542: Paste();
1.3 noro 543: }
544:
1.9 noro 545: void CAsir32guiView::UpdateMetrics()
546: {
547: TEXTMETRIC tm;
548: RECT r;
549:
550: GetEditCtrl().GetRect(&r);
551: CDC *pDC = GetDC();
552: pDC->SelectObject(GetFont());
553: pDC->GetTextMetrics(&tm);
554: MaxLineLength = (r.right-r.left)/tm.tmAveCharWidth-1;
555: }
556:
1.3 noro 557: void CAsir32guiView::OnFont()
558: {
559: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
560: int ret;
1.9 noro 561: LOGFONT lf;
562:
563: GetFont()->GetLogFont(&lf);
564: CFontDialog fd(&lf,CF_EFFECTS | CF_SCREENFONTS | CF_FIXEDPITCHONLY);
1.3 noro 565: static CFont *f = 0;
566:
567: ret = fd.DoModal();
568: if ( ret == IDOK ) {
569: fd.GetCurrentFont(&lf);
570: if ( f )
571: delete f;
572: f = new CFont;
573: f->CreateFontIndirect(&lf);
574: SetFont(f);
1.9 noro 575: UpdateMetrics();
1.3 noro 576: }
577: }
578:
579: int CAsir32guiView::OnCreate(LPCREATESTRUCT lpCreateStruct)
580: {
581: if (CEditView::OnCreate(lpCreateStruct) == -1)
582: return -1;
583:
584: // TODO: この位置に固有の作成用コードを追加してください
1.9 noro 585:
1.3 noro 586: LOGFONT logFont; memset(&logFont, 0, sizeof(LOGFONT));
587: logFont.lfHeight = 20;
588: logFont.lfCharSet = DEFAULT_CHARSET;
589: strcpy(logFont.lfFaceName, "Terminal");
590: CFont *f = new CFont;
591: f->CreateFontIndirect(&logFont);
592: SetFont(f);
1.9 noro 593: UpdateMetrics();
1.3 noro 594: GetEditCtrl().LimitText(nMaxSize);
1.9 noro 595: GetEditCtrl().SetTabStops(m_nTabStops);
1.3 noro 596:
597: return 0;
1.6 noro 598: }
599:
600: void CAsir32guiView::OnContribhelp()
601: {
602: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 603: viewHtmlHelp("cman");
1.6 noro 604: }
605:
1.11 noro 606: void CAsir32guiView::OnSize(UINT nType, int cx, int cy)
607: {
608: CEditView::OnSize(nType, cx, cy);
609:
610: // TODO: この位置にメッセージ ハンドラ用のコードを追加してください
611: UpdateMetrics();
612: }
613:
614: void CAsir32guiView::OnDsolv()
615: {
616: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 617: viewHtmlHelp("dsolv");
1.11 noro 618: }
619:
620: void CAsir32guiView::OnGnuplot()
621: {
622: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 623: viewHtmlHelp("gnuplot");
1.11 noro 624: }
625:
626: void CAsir32guiView::OnOkdiff()
627: {
628: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 629: viewHtmlHelp("ok_diff");
1.11 noro 630: }
631:
632: void CAsir32guiView::OnOkdmodule()
633: {
634: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 635: viewHtmlHelp("ok_dmodule");
1.11 noro 636: }
637:
638: void CAsir32guiView::OnOm()
639: {
640: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 641: viewHtmlHelp("om");
1.11 noro 642: }
643:
644: void CAsir32guiView::OnPfpcoh()
645: {
646: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 647: viewHtmlHelp("pfpcoh");
1.11 noro 648: }
649:
650: void CAsir32guiView::OnPlucker()
651: {
652: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 653: viewHtmlHelp("plucker");
1.11 noro 654: }
655:
656: void CAsir32guiView::OnSm1()
657: {
658: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 659: viewHtmlHelp("sm1");
1.11 noro 660: }
661:
662: void CAsir32guiView::OnTigers()
1.6 noro 663: {
1.11 noro 664: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 665: viewHtmlHelp("tigers");
1.9 noro 666: }
667:
1.11 noro 668: void CAsir32guiView::OnTodoparametrize()
1.9 noro 669: {
1.11 noro 670: // TODO: この位置にコマンド ハンドラ用のコードを追加してください
1.21 ! ohara 671: viewHtmlHelp("todo_parametrize");
1.1 noro 672: }
1.16 noro 673:
674: BOOL CAsir32guiView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
675: {
676: // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
677:
678: BOOL ret = CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
679: FILE *fp = fopen("asirgui.hnd","w");
1.17 noro 680: char *temp;
681:
1.18 noro 682: if ( fp ) {
1.17 noro 683: fprintf(fp,"%d",(unsigned int)theView->m_hWnd);
684: fclose(fp);
1.18 noro 685: if ( temp = getenv("TEMP") ) {
686: int len;
687: char *name;
688:
689: len = strlen(temp);
690: name = (char *)malloc(len+BUFSIZ);
691: sprintf(name,"%s\\asirgui.hnd",temp);
692: fopen(name,"w");
693: fprintf(fp,"%d",(unsigned int)theView->m_hWnd);
694: fclose(fp);
695: }
1.17 noro 696: }
1.16 noro 697: return ret;
698: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>