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

화면보호기 기능을 활성 / 비활성화 하기

//Screen Saver 비활성화.
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 대화상자에 동적으로 바뀌게 하면 이런 실수를 방지할 수 있다.


#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

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

TortoiseSVN 1.4.8 !!

http://tortoisesvn.net/themes/logo.png 그림이 표시되지 않았습니다. 에러가 있습니다.

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

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

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

2008/02/21

확일 확장자 검색 - 도대체 이 놈이 무슨파일이지?

프로그래밍을 하다보면 파일을 해석해야 하는 경우가 종종 생긴다. 잘 알려진 파일의 경우 좀 쉽게 정보를 얻을 수 있지만 종종 처음 보는 녀석을 분석해야하는 경우도 생긴다.

오래전에 그런 일로 알아 둔 사이트가 있었는데 오늘 다시 검색을 해봐야하는데 기억이 나지를 않아 다시 확장자를 검색할 수 있는 사이트를 찾아보았다.

언제 또 사용하게 될지 몰라 포스팅을 해두어야 겠다.

FileExt
Wotsit
Original Post :
http://neodreamer-dev.tistory.com/63

2008/02/19

굿모닝팝스 MP3 재생기 v3

굿모닝팝스 MP3 재생기 v3

기존의 프로그램은 XML 을 주먹구구 식으로 해석을 해서 리스트를 작성했는데 이번에는 XML Component 를 사용하여 XML 파싱을 해서 리스트를 만들었다.
그래서 Screen English 도 제목이 정상적으로 출력이 된다. 아마도 이것이 마지막 버전이 될 것이다.

개선 사항.
. XML Parsing 을 통해 날짜별 타이틀과 Screen English 타이틀 변경
. 재생중 다른 날짜를 선택하여 다운로드 가능
. 기타 작은 버그(^^*)




최신버전 다운로드
Original Post :
http://neodreamer-dev.tistory.com/62

2008/02/16

Color Picker

사용자 삽입 이미지

아주 오래 전에 필요에 의해서 만들어 놓은 프로그램인데 아주 가끔 사용 할 일이 생긴다.
다른건 눈에 보이는데로 직관적인데 Picker 메뉴는 기능이 눈에 띄지 않는다.
이 기능은 마우스 포인터 위치의 색상을 갖고 오는 기능으로 버튼을 클릭한채로 드래그를 하면 커서위치에서 사방 15pixel 의 영역을 좌상단 색상미리보기 영역에 작게 표시해준다.

2008/02/13

Delphi 2008 에 대하여 설문 조사가 진행중 입니다.

Borland 에서 CodeGear 로 개발툴 사업이 분리되면서 개발툴 사업의 진행이 빨라졌고 개발자들의 의견에 좀 더 귀를 귀울이고 있네요.

개발툴의 업그레이드 버전 개발시 개발자로 부터 많은 의견을 접수 하는 것 같습니다. 이번에는 델파이 2008 에 대한 설문 조사가 한글로 올라와 있어 보다 쉽게 참여할 수 있네요.

The 2008 Delphi Survey 참여하기
Original Post :
http://neodreamer-dev.tistory.com/59

2008/02/12

URLDownloadToFile 수행시 진행상황 파악하기

URLDownloadToFile 함수를 이용하여 URL 로부터 다운을 받을때 이 함수만을 단독으로 이용하면 받는동안 진행상황을 파악할 수 없으며 다운로드가 종료될때까지 다른 작업을 수행 할 수 없다.

진행상황을 파악하기 위해서는 CallBack 함수를 이용해야 하고, 진행중 다른 작업을 하려면 Thread로 동작을 하거나 Application에 다른 작업을 하도록 해주어야 한다.

GMPmp3 의 업그레이드 버전인 v2 를 만들기 위해 이 방법을 사용하였다.

진행 상황을 파악하기 위한 CallBack 함수는 IBindStatusCallback 인터페이스를 상속 받아 구현한다.
함수 중 OnProgress 함수가 진행 중 계속 호출되어 이 함수내에 다운로드 진행상황을 처리해주면 된다.

CallBack 함수 소스 보기

2008/02/11

내 멋대로 윈도우 모양 만들기

예전에는 윈도우를 원하는 모양으로 만들기 위해 원하는 모양의 마스크 영상을 만들어 영상의 외곽포인트를 구해 SetWindowRgn를 이용하였는데 이제는(windows 2000 이상) 마스크 영상과 SetLayeredWindowAttributes 함수 만으로 간단하게 해결 할 수 있다.

아래 이미지는 예제 프로그램을 실행하였을때의 실행화면 이다.

사용자 삽입 이미지


마스크 영상으로는 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

굿모닝팝스 MP3 재생기 v2

사용자 삽입 이미지

얼마전에 굿모닝 팝스 MP3 를 다운로드하거나 재생하는 프로그램에 대하여 포스팅 한 적이 있었다. 포스팅 할때는 업그레이드 계획이 없었는데 직접사용하다 보니 불편한 점이 있어 개선을 하였다.

다운로드 중에는 다른 작업을 할 수가 없어서 다운로드 폼을 새로 추가하여 다운로드시에도 재생을 하거나 다른 날짜의 GMP를 들을 수 있도록 수정하였다.
사용자 삽입 이미지

다음 버전으로는 지금의 콤보박스에 의한 리스트 출력에서 리스트 박스에 의한 출력으로 바꾸고 멀티 다운로드를 지원해볼까 생각 중이다.

2008/02/09

ISO 시디 이미지 편집 툴 MagicISO

Magic ISO 메인
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