2008/02/27
Visual Studio 2005 서비스 팩 1 통합 CD/DVD 만들기
Visual Studio 2005 를 설치하다보면 시간이 상당히 소요된다. 거기에 서비스팩1 까지 추가 설치하려면 더 많은 인내심을 요구한다. 그래서 둘을 통합하여 한번에 설치할 수 있는 방법을 찾아 보았다.
그 방법은 다음과 같다.
1. 본체 압축 풀기
명령 프롬프트를 실행하여 다음과 같이 입력합니다.
Visual Studio 2005 CD/DVD가 E 드라이브에 있다고 가정합니다.
D:\VS2005에 압축을 푼다고 가정합니다.
msiexec.exe /a E:\vs_setup.msi TARGETDIR=D:\VS2005 /L*vx install.log
2. 서비스 팩 압축 풀기
1번 과정이 끝나면 서비스 팩을 다운로드 받은 후에 다음과 같이 입력합니다.
D:\VS2005_TEMP에 압축을 푼다고 가정합니다.
VS80sp1-KB926601-X86-ENU.exe /extract D:\VS2005_TEMP
3. 서비스 팩 통합하기
이제 본체에 서비스 팩을 통합합니다.
msiexec.exe /a D:\VS2005\vs_setup.msi /p D:\VS2005_TEMP\VS80sp1-KB926601-X86-ENU.msp /L*vx patch.log
4. 설치하기
CD/DVD 루트 디렉토리에 있는 CAB 파일을 제외한 나머지 파일을 통합이 끝난 디렉토리에 그대로 복사합니다. 단, 같은 파일이 있다면 덮어쓰지 않도록 합니다.
CD 소스를 DVD 로 바꿀경우 Orca 를 이용하여 msi 스크립트를 수정해야 한다.
vs_setup.msi 의 Media 폴더의 VolumeLabel 에 시디의 VolumeLabel 을 DVD
Original Post : http://neodreamer-dev.tistory.com/70
그 방법은 다음과 같다.
1. 본체 압축 풀기
명령 프롬프트를 실행하여 다음과 같이 입력합니다.
Visual Studio 2005 CD/DVD가 E 드라이브에 있다고 가정합니다.
D:\VS2005에 압축을 푼다고 가정합니다.
msiexec.exe /a E:\vs_setup.msi TARGETDIR=D:\VS2005 /L*vx install.log
2. 서비스 팩 압축 풀기
1번 과정이 끝나면 서비스 팩을 다운로드 받은 후에 다음과 같이 입력합니다.
D:\VS2005_TEMP에 압축을 푼다고 가정합니다.
VS80sp1-KB926601-X86-ENU.exe /extract D:\VS2005_TEMP
3. 서비스 팩 통합하기
이제 본체에 서비스 팩을 통합합니다.
msiexec.exe /a D:\VS2005\vs_setup.msi /p D:\VS2005_TEMP\VS80sp1-KB926601-X86-ENU.msp /L*vx patch.log
4. 설치하기
CD/DVD 루트 디렉토리에 있는 CAB 파일을 제외한 나머지 파일을 통합이 끝난 디렉토리에 그대로 복사합니다. 단, 같은 파일이 있다면 덮어쓰지 않도록 합니다.
CD 소스를 DVD 로 바꿀경우 Orca 를 이용하여 msi 스크립트를 수정해야 한다.
vs_setup.msi 의 Media 폴더의 VolumeLabel 에 시디의 VolumeLabel 을 DVD
Original Post : http://neodreamer-dev.tistory.com/70
화면보호기 기능을 활성 / 비활성화 하기
//Screen Saver 비활성화.
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE, 0, 0);
//Screen Saver 활성화.
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, TRUE,
Original Post : http://neodreamer-dev.tistory.com/69
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE, 0, 0);
//Screen Saver 활성화.
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, TRUE,
Original Post : http://neodreamer-dev.tistory.com/69
2008/02/26
실행파일 자신의 버전을 알아오기
프로그램의 About 대화상자에 파일의 버전 번호를 넣는 경우가 흔한데, 이때 Static 컨트롤에 직접 작업을 하여서 기록할 경우 버전 리소스는 수정을 하고 About 대화상자에는 수정을 하지 않는 실수를 종종하는데 이를 방지하기 위해 실행파일의 버전을 읽어와서 About 대화상자에 동적으로 바뀌게 하면 이런 실수를 방지할 수 있다.
Original Post : http://neodreamer-dev.tistory.com/68
#pragma comment(lib, "winmm")
#pragma comment(lib, "version")
DWORD nullHandle, length;
int Version[4] = {1, 0, 0, 0};
TCHAR fileName[MAX_PATH];
GetModuleFileName(NULL, fileName, sizeof(fileName));
length = ::GetFileVersionInfoSize(fileName, &nullHandle);
if (length > 0) {
BYTE *pVerInfo = new BYTE [length];
if (::GetFileVersionInfo (fileName, NULL, length, pVerInfo)) {
UINT verLength;
LPVOID versionPtr;
if (::VerQueryValue(pVerInfo, _T ("\"), &versionPtr, &verLength))
{
VS_FIXEDFILEINFO vi = *(VS_FIXEDFILEINFO*)versionPtr;
// Major 1
Version[0] = vi.dwFileVersionMS>>16;
// Major 2
Version[1] = (vi.dwFileVersionMS<<16)>>16;
// Minor 1
Version[2] = vi.dwFileVersionLS>>16;
// Minor 2
Version[3] = (vi.dwFileVersionLS<<16)>>16;
}
}
delete pVerInfo;
}
CString strProgTitle;
strProgTitle.Format(_T("App v%d.%d.%d.%d"),
Version[0], Version[1], Version[2], Version[3]);
Original Post : http://neodreamer-dev.tistory.com/68
Labels:
C++
,
GetFileVersionInfo
,
TistoryOldPost
,
VerQueryValue
,
파일버전
MFC Static 컨트롤에서 마우스 이벤트 처리 하기
Static 컨트롤에서 마우스 이벤트 처리 하기
Static 컨트롤에서 마우스에 관련된 이벤트를 처리하기 위해서는 Static 컨트롤의 스타일에 SS_NOTIFY를 추가해 주어야한다.
SS_NOTIFY를 추가해 주어야만 Static 컨트롤에서 발생하는 마우스 관련 통지이벤트를 부모에게 보낸다.
+ 생성시 SS_NOTIFY 적용 방법
CRect rcStatic(100, 100, 150, 120);
Static.Create("test", WS_CHILDWINDOW | SS_NOTIFY, rcStatic, this, 1000);
+ 생성후 동적으로 SS_NOTIFY 적용 방법
static.ModifyStyle(0, SS_NOTIFY);
+ 리소스 편집기 창에서의 속성 변경 방법
속성 창에서 Notify 속성을 변경
Original Post : http://neodreamer-dev.tistory.com/67
Static 컨트롤에서 마우스에 관련된 이벤트를 처리하기 위해서는 Static 컨트롤의 스타일에 SS_NOTIFY를 추가해 주어야한다.
SS_NOTIFY를 추가해 주어야만 Static 컨트롤에서 발생하는 마우스 관련 통지이벤트를 부모에게 보낸다.
+ 생성시 SS_NOTIFY 적용 방법
CRect rcStatic(100, 100, 150, 120);
Static.Create("test", WS_CHILDWINDOW | SS_NOTIFY, rcStatic, this, 1000);
+ 생성후 동적으로 SS_NOTIFY 적용 방법
static.ModifyStyle(0, SS_NOTIFY);
+ 리소스 편집기 창에서의 속성 변경 방법
속성 창에서 Notify 속성을 변경
Original Post : http://neodreamer-dev.tistory.com/67
Labels:
CStatic
,
MFC
,
Mouse Notify
,
SS_NOTIFY
,
TistoryOldPost
TortoiseSVN 1.4.8 !!
SubVersion 의 대표적인 Client 툴인 TortoiseSVN 이 업데이트 되었다.
회사에서는 CVS 를 사용하고 있지만 개인적으로는 SVN(무료로 사용하는 SVN)을 사용하고 있다.
TortoiseSVN Webpage
TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi download
TortoiseSVN-1.4.8.12137-x64-svn-1.4.6.msi download
Original Post : http://neodreamer-dev.tistory.com/66
Labels:
Subversion
,
svn
,
SVN Client
,
TistoryOldPost
,
TortoiseSVN
2008/02/25
Bcc32Pch C++Builder IDE Plugin Version 2.77
Bcc32Pch 가 드디어 정식 버전 업이 되었다.
이 툴은 C++ Builder 의 단점인 컴파일 속도를 Precompiled Header 를 이용하여 매우 빠르게 수행할 수 있도록 도와주는 Plugin 이다.
이번 버전 업으로 C++ Builder 6 이하 버전은 공식적으로 지원하지 않게 되었고 C++ Builder 2007 을 지원하게 되었다.
C++ Builder 2007 에서는 MS Build 시스템을 채택을 하여 그 전의 제품 보다는 많은 성능 개선이 되었는데 Bcc32Pch가 그 보다 나은 성능을 보여 줄지는 테스트를 해 봐야 겠다.
Requirements:
* Windows 2000 or newer
* C++Builder 2006 or higher (C++Builder 5 and 6 are not officially supported anymore)
Fearures:
* Advanced precompiled header support (*)
* Real background compilation (Compiler and Linker run in its own processes)
* Own make system that is faster than MSBuild and allows the compile progress dialog to show more exact information
* Speed improvement, also improves IDE Compiler's speed
* Speed improvement for Make Project dependency check (especially for huge projects)
* Compiles .pas files first so the .hpp files exist when the C++ code is compiled.
* Full message pane support with extended error information <
* Can use a detailed message window to show the console output of the commandline tools
* Shows how many files are already compiled
* Shows a progress bar that indicates the compile progress
* Adds Shift+F9 as shortcut for Build project if no other shortcut was assigned
* Makes "Run Without Debugging" visible (BCB 6 only)
* Force Run functionality (no dependency check and compilation, but debugging)
* Load Process functionality allows to debug external applications (BCB 5/6 only)
* Global include directories for IDE and replacement compiler
* External Linker (ilink32.exe) can be used for IDE compilation (BCB 5/6 only)
* Execute foreign makefiles (MAKE, NMAKE, GNUmake) with errors/warnings in the message pane and the possibilty to debug the generated application (requires bcc32 compilation)
* Allows to execute programs before and after the compilation
* Pre-Build, Post-Build, Pre-Link support for C++Builder 2006 and newer
* CodeGuard support
* Support for C++Builder 2006/2007's local options for .cpp files
* Include and project file precaching
* Allows to overwrite the used library files for each project
* bcc32pch Makefile export (BCB 5/6 and C++Builder 2006, C++Builder 2007 with disabled MSBuild)
* External compilation with unsaved files
* CodeInsight errors can be shown in the message pane and the IDE's titlebar is used to indicate that CodeInsight is parsing the code.
* Easier Build Configuration switching in BDS 2006 (new menu item Project/Active Build Configuration)
* IDE Compiler shows the filename when it could not create the file (original only says that a file could not be created)
* Bugfix for BDS 2006 QC #24380 "IOTADebuggerServices.CreateProcess raises access violation"
* Bugfix for BDS 2006 QC #24513 "IOTAFormEditor.Modified returns True for opened formulars"
* BDS 2006 workaround for C++ Compiler buffer overflow for -Ixxx, -Dxxx and -Uxx parameters. /ul> *: The plugin allows to inject a header file into all .cpp files during compilation. In this header file you can include the headers that should be precompiled.
The #pragma hdrstop is inserted below the injected include file.
Bcc32Pch Homepage
Bcc32Pch Download
Original Post : http://neodreamer-dev.tistory.com/65
이 툴은 C++ Builder 의 단점인 컴파일 속도를 Precompiled Header 를 이용하여 매우 빠르게 수행할 수 있도록 도와주는 Plugin 이다.
이번 버전 업으로 C++ Builder 6 이하 버전은 공식적으로 지원하지 않게 되었고 C++ Builder 2007 을 지원하게 되었다.
C++ Builder 2007 에서는 MS Build 시스템을 채택을 하여 그 전의 제품 보다는 많은 성능 개선이 되었는데 Bcc32Pch가 그 보다 나은 성능을 보여 줄지는 테스트를 해 봐야 겠다.
Requirements:
* Windows 2000 or newer
* C++Builder 2006 or higher (C++Builder 5 and 6 are not officially supported anymore)
Fearures:
* Advanced precompiled header support (*)
* Real background compilation (Compiler and Linker run in its own processes)
* Own make system that is faster than MSBuild and allows the compile progress dialog to show more exact information
* Speed improvement, also improves IDE Compiler's speed
* Speed improvement for Make Project dependency check (especially for huge projects)
* Compiles .pas files first so the .hpp files exist when the C++ code is compiled.
* Full message pane support with extended error information <
* Can use a detailed message window to show the console output of the commandline tools
* Shows how many files are already compiled
* Shows a progress bar that indicates the compile progress
* Adds Shift+F9 as shortcut for Build project if no other shortcut was assigned
* Makes "Run Without Debugging" visible (BCB 6 only)
* Force Run functionality (no dependency check and compilation, but debugging)
* Load Process functionality allows to debug external applications (BCB 5/6 only)
* Global include directories for IDE and replacement compiler
* External Linker (ilink32.exe) can be used for IDE compilation (BCB 5/6 only)
* Execute foreign makefiles (MAKE, NMAKE, GNUmake) with errors/warnings in the message pane and the possibilty to debug the generated application (requires bcc32 compilation)
* Allows to execute programs before and after the compilation
* Pre-Build, Post-Build, Pre-Link support for C++Builder 2006 and newer
* CodeGuard support
* Support for C++Builder 2006/2007's local options for .cpp files
* Include and project file precaching
* Allows to overwrite the used library files for each project
* bcc32pch Makefile export (BCB 5/6 and C++Builder 2006, C++Builder 2007 with disabled MSBuild)
* External compilation with unsaved files
* CodeInsight errors can be shown in the message pane and the IDE's titlebar is used to indicate that CodeInsight is parsing the code.
* Easier Build Configuration switching in BDS 2006 (new menu item Project/Active Build Configuration)
* IDE Compiler shows the filename when it could not create the file (original only says that a file could not be created)
* Bugfix for BDS 2006 QC #24380 "IOTADebuggerServices.CreateProcess raises access violation"
* Bugfix for BDS 2006 QC #24513 "IOTAFormEditor.Modified returns True for opened formulars"
* BDS 2006 workaround for C++ Compiler buffer overflow for -Ixxx, -Dxxx and -Uxx parameters. /ul> *: The plugin allows to inject a header file into all .cpp files during compilation. In this header file you can include the headers that should be precompiled.
The #pragma hdrstop is inserted below the injected include file.
Bcc32Pch Homepage
Bcc32Pch Download
Original Post : http://neodreamer-dev.tistory.com/65
Labels:
bcc32pch
,
Building System
,
C++ Builder
,
TistoryOldPost
,
Turbo C++
DelphiSpeedUp 2.73 Released!!
DelphiSpeedUp 은 CodeGear 툴의 IDE 성능 개선 Plugin 이다. IDE 의 속도를 개선해 준다.
Features:
* Improves Delphi/BCB/BDS's load times
* Optimizes often used RTL functions by functions form the FastCode project
* All optimizations are done in memory and do not change any file on disk
* Adds a "Close all and kill" menu item to the "File" menu that terminates the IDE very fast
* The fast termination is used when you close the IDE while pressing the CTRL key.
* Shows waiting cursor while loading designtime package
Supported IDEs:
* C++Builder 5, 6
* Delphi 5, 6, 7
* Borland Developer Studio 2005, 2006
* CodeGear RAD Studio 2007 (December Update)
Homepage
Download
Original Post : http://neodreamer-dev.tistory.com/64
Features:
* Improves Delphi/BCB/BDS's load times
* Optimizes often used RTL functions by functions form the FastCode project
* All optimizations are done in memory and do not change any file on disk
* Adds a "Close all and kill" menu item to the "File" menu that terminates the IDE very fast
* The fast termination is used when you close the IDE while pressing the CTRL key.
* Shows waiting cursor while loading designtime package
Supported IDEs:
* C++Builder 5, 6
* Delphi 5, 6, 7
* Borland Developer Studio 2005, 2006
* CodeGear RAD Studio 2007 (December Update)
Homepage
Download
Original Post : http://neodreamer-dev.tistory.com/64
Labels:
C++ Builder
,
CodeGear
,
Delphi
,
DelphiSpeedUp
,
TistoryOldPost
,
Turbo C++
2008/02/21
확일 확장자 검색 - 도대체 이 놈이 무슨파일이지?
프로그래밍을 하다보면 파일을 해석해야 하는 경우가 종종 생긴다. 잘 알려진 파일의 경우 좀 쉽게 정보를 얻을 수 있지만 종종 처음 보는 녀석을 분석해야하는 경우도 생긴다.
오래전에 그런 일로 알아 둔 사이트가 있었는데 오늘 다시 검색을 해봐야하는데 기억이 나지를 않아 다시 확장자를 검색할 수 있는 사이트를 찾아보았다.
언제 또 사용하게 될지 몰라 포스팅을 해두어야 겠다.
FileExt
Wotsit
Original Post : http://neodreamer-dev.tistory.com/63
오래전에 그런 일로 알아 둔 사이트가 있었는데 오늘 다시 검색을 해봐야하는데 기억이 나지를 않아 다시 확장자를 검색할 수 있는 사이트를 찾아보았다.
언제 또 사용하게 될지 몰라 포스팅을 해두어야 겠다.
FileExt
Wotsit
Original Post : http://neodreamer-dev.tistory.com/63
2008/02/19
굿모닝팝스 MP3 재생기 v3
기존의 프로그램은 XML 을 주먹구구 식으로 해석을 해서 리스트를 작성했는데 이번에는 XML Component 를 사용하여 XML 파싱을 해서 리스트를 만들었다.
그래서 Screen English 도 제목이 정상적으로 출력이 된다. 아마도 이것이 마지막 버전이 될 것이다.
개선 사항.
. XML Parsing 을 통해 날짜별 타이틀과 Screen English 타이틀 변경
. 재생중 다른 날짜를 선택하여 다운로드 가능
. 기타 작은 버그(^^*)
최신버전 다운로드
Original Post : http://neodreamer-dev.tistory.com/62
Labels:
C++ Builder
,
TistoryOldPost
,
Turbo C++
,
TXMLDocument
,
굿모닝 팝스
,
굿모닝팝스 RSS
,
굿모닝팝스 재생기
2008/02/17
C++ Builder 용 OpenCV 1.0 Library & DLL
Borland C++ Compiler 5.5 를 이용하여 만든 Library 및 DLL 파일.
OpenCV Library
OpenCV 대한민국 커뮤니티
Original Post : http://neodreamer-dev.tistory.com/61
OpenCV Library
OpenCV 대한민국 커뮤니티
Original Post : http://neodreamer-dev.tistory.com/61
Labels:
bcc 5.5
,
C++ Builder
,
OpenCV
,
OpenCV DLL
,
OpenCV Library
,
TistoryOldPost
2008/02/16
Color Picker
아주 오래 전에 필요에 의해서 만들어 놓은 프로그램인데 아주 가끔 사용 할 일이 생긴다.
다른건 눈에 보이는데로 직관적인데 Picker 메뉴는 기능이 눈에 띄지 않는다.
이 기능은 마우스 포인터 위치의 색상을 갖고 오는 기능으로 버튼을 클릭한채로 드래그를 하면 커서위치에서 사방 15pixel 의 영역을 좌상단 색상미리보기 영역에 작게 표시해준다.
Original Post : http://neodreamer-dev.tistory.com/60
2008/02/13
Delphi 2008 에 대하여 설문 조사가 진행중 입니다.
Borland 에서 CodeGear 로 개발툴 사업이 분리되면서 개발툴 사업의 진행이 빨라졌고 개발자들의 의견에 좀 더 귀를 귀울이고 있네요.
개발툴의 업그레이드 버전 개발시 개발자로 부터 많은 의견을 접수 하는 것 같습니다. 이번에는 델파이 2008 에 대한 설문 조사가 한글로 올라와 있어 보다 쉽게 참여할 수 있네요.
The 2008 Delphi Survey 참여하기
Original Post : http://neodreamer-dev.tistory.com/59
개발툴의 업그레이드 버전 개발시 개발자로 부터 많은 의견을 접수 하는 것 같습니다. 이번에는 델파이 2008 에 대한 설문 조사가 한글로 올라와 있어 보다 쉽게 참여할 수 있네요.
The 2008 Delphi Survey 참여하기
Original Post : http://neodreamer-dev.tistory.com/59
Labels:
CodeGear
,
Delphi 2008
,
TistoryOldPost
,
개발툴
,
델파이 2008
,
설문조사
2008/02/12
URLDownloadToFile 수행시 진행상황 파악하기
URLDownloadToFile 함수를 이용하여 URL 로부터 다운을 받을때 이 함수만을 단독으로 이용하면 받는동안 진행상황을 파악할 수 없으며 다운로드가 종료될때까지 다른 작업을 수행 할 수 없다.
진행상황을 파악하기 위해서는 CallBack 함수를 이용해야 하고, 진행중 다른 작업을 하려면 Thread로 동작을 하거나 Application에 다른 작업을 하도록 해주어야 한다.
GMPmp3 의 업그레이드 버전인 v2 를 만들기 위해 이 방법을 사용하였다.
진행 상황을 파악하기 위한 CallBack 함수는 IBindStatusCallback 인터페이스를 상속 받아 구현한다.
함수 중 OnProgress 함수가 진행 중 계속 호출되어 이 함수내에 다운로드 진행상황을 처리해주면 된다.
Original Post : http://neodreamer-dev.tistory.com/58
진행상황을 파악하기 위해서는 CallBack 함수를 이용해야 하고, 진행중 다른 작업을 하려면 Thread로 동작을 하거나 Application에 다른 작업을 하도록 해주어야 한다.
GMPmp3 의 업그레이드 버전인 v2 를 만들기 위해 이 방법을 사용하였다.
진행 상황을 파악하기 위한 CallBack 함수는 IBindStatusCallback 인터페이스를 상속 받아 구현한다.
함수 중 OnProgress 함수가 진행 중 계속 호출되어 이 함수내에 다운로드 진행상황을 처리해주면 된다.
CallBack 함수 소스 보기
//---------------------------------------------------------------------------
// Header
#include <vcl.h>
#include <windows.h>
#include <UrlMon.h>
#include <UrlMon.hpp>
#pragma comment(lib,"urlmon.lib")
#pragma comment(lib,"WinInet.lib")
class TCallback : public IBindStatusCallback
{
DWORD m_cRef;
private:
STDMETHODIMP QueryInterface(REFIID riid,void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
STDMETHODIMP GetBindInfo(DWORD *grfBINDF,BINDINFO *bindinfo);
STDMETHODIMP GetPriority(LONG *nPriority);
STDMETHODIMP OnDataAvailable(DWORD grfBSCF,DWORD dwSize,
FORMATETC *formatetc,STGMEDIUM *stgmed);
STDMETHODIMP OnLowResource(DWORD reserved);
STDMETHODIMP OnObjectAvailable(REFIID iid,IUnknown *punk);
STDMETHODIMP OnStartBinding(DWORD dwReserved,IBinding *pib);
STDMETHODIMP OnStopBinding(HRESULT hresult,LPCWSTR szError);
STDMETHODIMP OnProgress(ULONG ulProgress, ULONG ulProgressMax,
ULONG ulStatusCode, LPCWSTR szStatusText);
public:
TfrmDownload* frmDown; // 진행상황을 표시해줄 Form 포인터
TCallback() {m_cRef = 1;};
};
//---------------------------------------------------------------------------
// Source
STDMETHODIMP TCallback::QueryInterface(REFIID riid,void **ppv)
{
*ppv = NULL;
if (riid==IID_IUnknown || riid==IID_IBindStatusCallback) {
*ppv = this;
AddRef();
return S_OK;
}
return E_NOINTERFACE;
}
STDMETHODIMP_(ULONG) TCallback::AddRef()
{
return m_cRef++;
}
STDMETHODIMP_(ULONG) TCallback::Release()
{
if(--m_cRef==0) {
delete this;
return 0;
}
return m_cRef;
}
STDMETHODIMP TCallback::GetBindInfo(DWORD *grfBINDF,BINDINFO *bindinfo)
{
return E_NOTIMPL;
}
STDMETHODIMP TCallback::GetPriority(LONG *nPriority)
{
return E_NOTIMPL;
}
STDMETHODIMP TCallback::OnDataAvailable(DWORD grfBSCF,DWORD dwSize,
FORMATETC *formatetc,STGMEDIUM *stgmed)
{
return E_NOTIMPL;
}
STDMETHODIMP TCallback::OnLowResource(DWORD reserved)
{
return E_NOTIMPL;
}
STDMETHODIMP TCallback::OnObjectAvailable(REFIID iid,IUnknown *punk)
{
return E_NOTIMPL;
}
STDMETHODIMP TCallback::OnStartBinding(DWORD dwReserved,IBinding *pib)
{
return E_NOTIMPL;
}
STDMETHODIMP TCallback::OnStopBinding(HRESULT hresult,LPCWSTR szError)
{
return E_NOTIMPL;
}
STDMETHODIMP TCallback::OnProgress(ULONG ulProgress, ULONG ulProgressMax,
ULONG ulStatusCode, LPCWSTR szStatusText)
{
AnsiString Status;
switch (ulStatusCode)
{
case BINDSTATUS_FINDINGRESOURCE :
Status = "Finding resource " + AnsiString(szStatusText); break;
case BINDSTATUS_CONNECTING :
Status = "Connecting to " + AnsiString(szStatusText); break;
case BINDSTATUS_REDIRECTING :
Status = "Redirecting..."; break;
case BINDSTATUS_BEGINDOWNLOADDATA :
Status = "Start to download " + AnsiString(szStatusText); break;
case BINDSTATUS_DOWNLOADINGDATA :
Status = "Downloading..."; break;
case BINDSTATUS_ENDDOWNLOADDATA :
Status = "Complete downloading " + AnsiString(szStatusText); break;
case BINDSTATUS_BEGINDOWNLOADCOMPONENTS :
Status = "Start to download components"; break;
case BINDSTATUS_INSTALLINGCOMPONENTS :
Status = "Installing components..." ; break;
case BINDSTATUS_ENDDOWNLOADCOMPONENTS :
Status = "Complete downloading components"; break;
case BINDSTATUS_USINGCACHEDCOPY :
Status = "Copying form buffer..."; break;
case BINDSTATUS_SENDINGREQUEST :
Status = "Sending request..."; break;
case BINDSTATUS_CLASSIDAVAILABLE :
Status = "Class ID is available"; break;
case BINDSTATUS_MIMETYPEAVAILABLE :
Status = "MIME type is available"; break;
case BINDSTATUS_CACHEFILENAMEAVAILABLE :
Status = "Cache file name is available"; break;
case BINDSTATUS_BEGINSYNCOPERATION :
Status = "Start sync operation"; break;
case BINDSTATUS_ENDSYNCOPERATION :
Status = "Complete sync operation"; break;
case BINDSTATUS_BEGINUPLOADDATA :
Status = "Start to upload data"; break;
case BINDSTATUS_UPLOADINGDATA :
Status = "Uploading data"; break;
case BINDSTATUS_ENDUPLOADDATA :
Status = "Complete Uploading data"; break;
case BINDSTATUS_PROTOCOLCLASSID :
Status = "Protocol class ID is available"; break;
case BINDSTATUS_ENCODING :
Status = "Encoding..."; break;
case BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE :
Status = "Verified MIME is available"; break;
case BINDSTATUS_CLASSINSTALLLOCATION :
Status = "Class install location"; break;
case BINDSTATUS_DECODING :
Status = "Decoding..."; break;
case BINDSTATUS_LOADINGMIMEHANDLER :
Status = "Loading MIME handler"; break;
case BINDSTATUS_CONTENTDISPOSITIONATTACH :
Status = "Content disposition attach"; break;
case BINDSTATUS_FILTERREPORTMIMETYPE :
Status = "Filter report MIME type"; break;
case BINDSTATUS_CLSIDCANINSTANTIATE :
Status = "Clsid can instantiate"; break;
case BINDSTATUS_IUNKNOWNAVAILABLE :
Status = "Unknown available"; break;
case BINDSTATUS_DIRECTBIND :
Status = "Direct bind"; break;
case BINDSTATUS_RAWMIMETYPE :
Status = "MIME type of the resource, before any code sniffing is done"; break;
case BINDSTATUS_PROXYDETECTING :
Status = "Detecting proxy..."; break;
case BINDSTATUS_ACCEPTRANGES :
Status = "Valid types of range requests for a resource"; break;
default : Status = "";
}
// Application에 다른 메세지를 처리하도록 지시
Application->ProcessMessages();
if (ulProgressMax > 0)
{
// 진행상황을 Progress Bar를 이용하여 표시
double dblRate = ((double)ulProgress / (double)ulProgressMax) * 100.0;
frmDown->prgDownload->Min = 0;
frmDown->prgDownload->Max = 100;
frmDown->prgDownload->Position = static_cast<int>(dblRate);
}
if (frmDown->IsUserCancel())
return E_ABORT;
// Application에 다른 메세지를 처리하도록 지시
Application->ProcessMessages();
return S_OK;
}
//---------------------------------------------------------------------------
// Caller
m_bDownloading = true;
Status.frmDown = this;
LPUNKNOWN pCaller = NULL;
DeleteUrlCacheEntry(m_strURL.c_str());
HRESULT hRet = URLDownloadToFile(pCaller, m_strURL.c_str(),
m_strDst.c_str(), 0, &Status);
if (hRet == S_OK)
{
ShowMessage("다운로드 완료!");
}
else if (hRet == E_ABORT)
{
if (m_bUserCancel == true)
ShowMessage("다운로드가 취소되었습니다.");
else
ShowMessage("다운로드 실패!");
}
m_bDownloading = false;
Close();
Original Post : http://neodreamer-dev.tistory.com/58
Labels:
IBindStatusCallback
,
TistoryOldPost
,
Turbo C++
,
URLDownloadToFile
,
다운로드
2008/02/11
내 멋대로 윈도우 모양 만들기
예전에는 윈도우를 원하는 모양으로 만들기 위해 원하는 모양의 마스크 영상을 만들어 영상의 외곽포인트를 구해 SetWindowRgn를 이용하였는데 이제는(windows 2000 이상) 마스크 영상과 SetLayeredWindowAttributes 함수 만으로 간단하게 해결 할 수 있다.
아래 이미지는 예제 프로그램을 실행하였을때의 실행화면 이다.
마스크 영상으로는 MS Office 2007 에서 따온 영상을 약간 수정하였다.
메인 폼 위에 이미지 컨트롤을 올리고 마스크 영상을 불러들인 후 함수를 호출해주는 것으로 작업이 끝난다.
아래 코드는 폼이 생설할때 수행하는 코드이다.
위의 코드 중에 RGB(1, 1, 1)이 투명 처리를 하기 위한 색상으로 마스크 영상의 투명 부분의 색상을 넣어주면 된다.
Original Post : http://neodreamer-dev.tistory.com/57
아래 이미지는 예제 프로그램을 실행하였을때의 실행화면 이다.
마스크 영상으로는 MS Office 2007 에서 따온 영상을 약간 수정하였다.
메인 폼 위에 이미지 컨트롤을 올리고 마스크 영상을 불러들인 후 함수를 호출해주는 것으로 작업이 끝난다.
아래 코드는 폼이 생설할때 수행하는 코드이다.
this->Color = RGB(1, 1, 1);
SetWindowLong(this->Handle, GWL_EXSTYLE,
GetWindowLong(this->Handle, GWL_EXSTYLE) | WS_EX_LAYERED);
::SetLayeredWindowAttributes(this->Handle,
RGB(1, 1, 1), 0, LWA_COLORKEY);
위의 코드 중에 RGB(1, 1, 1)이 투명 처리를 하기 위한 색상으로 마스크 영상의 투명 부분의 색상을 넣어주면 된다.
Original Post : http://neodreamer-dev.tistory.com/57
Labels:
SetLayeredWindowAttributes
,
TistoryOldPost
,
윈도우 모양
굿모닝팝스 MP3 재생기 v2
얼마전에 굿모닝 팝스 MP3 를 다운로드하거나 재생하는 프로그램에 대하여 포스팅 한 적이 있었다. 포스팅 할때는 업그레이드 계획이 없었는데 직접사용하다 보니 불편한 점이 있어 개선을 하였다.
다운로드 중에는 다른 작업을 할 수가 없어서 다운로드 폼을 새로 추가하여 다운로드시에도 재생을 하거나 다른 날짜의 GMP를 들을 수 있도록 수정하였다.
다음 버전으로는 지금의 콤보박스에 의한 리스트 출력에서 리스트 박스에 의한 출력으로 바꾸고 멀티 다운로드를 지원해볼까 생각 중이다.
Original Post : http://neodreamer-dev.tistory.com/56
2008/02/09
ISO 시디 이미지 편집 툴 MagicISO
MagicISO
하드 디스크가 대용량화 되면서 주요 프로그램을 시디로 보관하지 않고 ISO 이미지로 보관하여 필요할 때 가상시디로 마운트하여 사용을 하는데 프로그램뿐만 아니라 참고 자료 같은 것도 정리하여 ISO 이미지로 만들어 놓으면 나중에 필요시 마운트하여 사용할 수 있고 필요에 따라 바로 CD나 DVD로 만들어 사용할 수 있다.
그런 ISO 이미지를 만들거나 편집을 하기위해 여러 툴이 있겠지만 편집 기능이 우수한 프로그램이 Magic ISO이다. 이제는 업그레이드가 안되고 있는 것으로 보이는데 현재의 기능만으로도 편집및 레코딩이 가능하기에 쉽고 편하게 사용할 수 있다.
Magic ISO 홈페이지
Rapidshare Download #1, #2
Original Post : http://neodreamer-dev.tistory.com/55
2008/02/01
지운 파일 복구하는 R-Studio.
오래전에 한번 사용할 일이 있었는데 이번에 또 유용하게 사용을 하였다.
지운 파일을 복구해 주는 프로그램인데 크기도 작고 기능도 뛰어나 보인다. 보안상 USB 메모리의 내용을 다 지우고 나와야 하는 곳에서 지운 데이터를 살리기 위해 다시 사용해 보았다.
기대 만큼은 아니였지만 그래도 많은 데이터를 살릴 수 있었다. 그런데 하드디스크의 경우는 지우고 포맷을 하여도 심지어 파티션을 지원도 살릴 수 있었는데 플래시의 경우는 좀 다른것 같다. 포맷을 하면 복구하기 어려워 보인다.
단순 삭제의 경우 R-Studio를 사용하면 복구 할 수 있다.
R-Studio Homepage
Rapidshare Download
Original Post : http://neodreamer-dev.tistory.com/54
Labels:
Rstudio
,
TistoryOldPost
,
undelete
,
복구프로그램
,
지운파일복구
Subscribe to:
Posts
(
Atom
)