=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp,v retrieving revision 1.17 retrieving revision 1.23 diff -u -p -r1.17 -r1.23 --- OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp 2007/02/13 09:20:44 1.17 +++ OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp 2009/04/24 13:19:33 1.23 @@ -17,7 +17,7 @@ static char THIS_FILE[] = __FILE__; #endif // const TextBufferSize = 32768; -const TextBufferSize = 16384; +const int TextBufferSize = 16384; CAsir32guiView *theView; @@ -93,7 +93,6 @@ CAsir32guiView::CAsir32guiView() { // TODO: この場所に構築用のコードを追加してください。 static int tmpView_created = 0; - char errmsg[BUFSIZ],view_handle[BUFSIZ]; init_input_history(); read_input_history(); @@ -105,6 +104,10 @@ CAsir32guiView::CAsir32guiView() Logfp = NULL; ResetIndex(); theView = this; +#if _MSC_VER > 1300 + /* VS2003.NET or later */ + (AfxGetApp())->EnableHtmlHelp(); +#endif } CAsir32guiView::~CAsir32guiView() @@ -242,7 +245,7 @@ void CAsir32guiView::DeleteTop() const char *p,*q; const char *buf; char null = 0; - int len,len0,len1; + int len,len0; buf = LockBuffer(); len0 = len = strlen(buf); @@ -480,22 +483,40 @@ void CAsir32guiView::OnFileOpen() if ( *p == '\\' ) *p = '/'; put_line(cmd); - p = strrchr(pathName,'\\'); + strcpy(cmd,pathName); + p = strrchr(cmd,'\\'); if ( p ) { *p = 0; - strcpy(prevdir,pathName); + strcpy(prevdir,cmd); } } } +void CAsir32guiView::viewHtmlHelp(char *help) +{ + char *helpfile; + char fmt[] = "%s\\help\\%shelp.chm"; + char root[BUFSIZ],errmsg[BUFSIZ]; + get_rootdir(root,sizeof(root),errmsg); + helpfile = (char *)malloc(sizeof(fmt) + strlen(root) + strlen(help)); + sprintf(helpfile,fmt,root,help); +#if _MSC_VER < 1300 + /* Visual C++ 6.0 */ + ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); +#else + CWinApp *top = AfxGetApp(); + top->SetHelpMode(AFX_HELP_TYPE::afxHTMLHelp); + if (top->m_pszHelpFilePath) { + free((void*)top->m_pszHelpFilePath); + } + top->m_pszHelpFilePath = helpfile; + HtmlHelp(HH_DISPLAY_TOPIC, 0); +#endif +} void CAsir32guiView::OnAsirhelp() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\asirhelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); + viewHtmlHelp("asir"); } void CAsir32guiView::OnFileLog() @@ -594,11 +615,7 @@ int CAsir32guiView::OnCreate(LPCREATESTRUCT lpCreateSt void CAsir32guiView::OnContribhelp() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\cmanhelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); + viewHtmlHelp("cman"); } void CAsir32guiView::OnSize(UINT nType, int cx, int cy) @@ -612,110 +629,61 @@ void CAsir32guiView::OnSize(UINT nType, int cx, int cy void CAsir32guiView::OnDsolv() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\dsolvhelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); + viewHtmlHelp("dsolv"); } void CAsir32guiView::OnGnuplot() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\gnuplothelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("gnuplot"); } void CAsir32guiView::OnOkdiff() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\ok_diffhelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("ok_diff"); } void CAsir32guiView::OnOkdmodule() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\ok_dmodulehelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("ok_dmodule"); } void CAsir32guiView::OnOm() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\omhelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("om"); } void CAsir32guiView::OnPfpcoh() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\pfpcohhelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("pfpcoh"); } void CAsir32guiView::OnPlucker() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\pluckerhelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("plucker"); } void CAsir32guiView::OnSm1() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\sm1help.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("sm1"); } void CAsir32guiView::OnTigers() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\tigershelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("tigers"); } void CAsir32guiView::OnTodoparametrize() { // TODO: この位置にコマンド ハンドラ用のコードを追加してください - char root[BUFSIZ],errmsg[BUFSIZ],helpfile[BUFSIZ]; - - get_rootdir(root,sizeof(root),errmsg); - sprintf(helpfile,"%s\\help\\todo_parametrizehelp.chm",root); - ::HtmlHelp(NULL, helpfile, HH_DISPLAY_TOPIC, 0); - + viewHtmlHelp("todo_parametrize"); } BOOL CAsir32guiView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) @@ -726,18 +694,20 @@ BOOL CAsir32guiView::Create(LPCTSTR lpszClassName, LPC FILE *fp = fopen("asirgui.hnd","w"); char *temp; - fprintf(fp,"%d",(unsigned int)theView->m_hWnd); - fclose(fp); - if ( temp = getenv("TEMP") ) { - int len; - char *name; - - len = strlen(temp); - name = (char *)malloc(len+BUFSIZ); - sprintf(name,"%s\\asirgui.hnd",temp); - fopen(name,"w"); + if ( fp ) { fprintf(fp,"%d",(unsigned int)theView->m_hWnd); fclose(fp); + if ( temp = getenv("TEMP") ) { + int len; + char *name; + + len = strlen(temp); + name = (char *)malloc(len+BUFSIZ); + sprintf(name,"%s\\asirgui.hnd",temp); + fopen(name,"w"); + fprintf(fp,"%d",(unsigned int)theView->m_hWnd); + fclose(fp); + } } return ret; }