ShowWeb Function
2004-05-24 조경민 bro ( bro@shinbiro.com )
==================================================
웹브라우저 새창, 기존창, 팝업창, 숨은창으로 띄우는 함수

typedef enum
{
        BROWSE_SELF = 0,
        BROWSE_NEW,
        BROWSE_POPUP,
        BROWSE_HIDE
}BROWSE_TYPE;

CString GetPopupURL( LPCTSTR url, int width, int height )
{
        TCHAR szTempPath[MAX_PATH];
        GetTempPath( MAX_PATH, szTempPath );
        // 임시 파일을 만든다.
        TCHAR szTempShortName[MAX_PATH];
        ZeroMemory( szTempShortName, sizeof(szTempShortName) );
        GetTempFileName(szTempPath, _T("bro"), 0, szTempShortName);
        
        TCHAR szTempName[MAX_PATH];
        ZeroMemory( szTempName, sizeof(szTempName) );
        GetLongPathName( szTempShortName, szTempName, MAX_PATH );
        // 생성된 임시파일의 File URL을 리턴한다.
        CString sURL;
        sURL.Format(_T("file://%s"), szTempName );
        
        CString sHTML;
        sHTML.Format(_T(" \
<HTML><SCRIPT language='VBScript'> \r\n\
Sub WIndow_OnLoad \r\n\
  Call Window.Open( \"%s\" , \"\",\"height=%d, width=%d, toolbar=0\", true) \r\n\
End Sub \r\n\
</SCRIPT> \r\n\
<BODY> \r\n\
</BODY> \r\n\
</HTML>"), url, height, width );

        HANDLE hTempFile;
        hTempFile = CreateFile((LPTSTR) szTempName, GENERIC_READ | GENERIC_WRITE,  
                                        0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);                        // no attr. template
        DWORD dwWritten;
        WriteFile( hTempFile, (LPCTSTR)sHTML, (DWORD)sHTML.GetLength(), &dwWritten, NULL );
        CloseHandle(hTempFile);

        return sURL;
}

//==============================================================
// 함수명 : ShowWeb
// 설  명 : 새로운 창으로 웹 브라우저를 띄운다.
// 인  자 : type = 0 self, = 1 new, = 2 popup
// 리턴값 :
//--------------------------------------------------------------
// 작성일     작성자            작성이유
// 2002-11-20 조경민                                Jiransoft(c)
//==============================================================
void ShowWeb( LPCTSTR url, BROWSE_TYPE type /*= BROWSE_SELF*/ )
{
        static bool _first = true;

        if( _first || type == BROWSE_NEW )
        {
                // 새창으로 띄우기
                ShellExecute( NULL, "open", "iexplore.exe",url, NULL, SW_SHOWNORMAL);
                _first = false;
        }
        else
        if( type == BROWSE_POPUP )
        {
                // popup 창으로 띄우기
                ShellExecute( NULL, "open", "iexplore.exe",GetPopupURL( url ), NULL, SW_HIDE);
        }
        else
        if( type == BROWSE_HIDE )
        {
                // hide 무조건 안보이게만 띄우기
                ShellExecute( NULL, "open", "iexplore.exe", url , NULL, SW_HIDE);
        }
        else
        //if( type == BROWSE_SELF )
        {
                // 기존창으로 띄우기
                ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
        }
}

+ Recent posts