반응형
이번에 툴하나를 만들어 보기 위해 윈도우 도킹쪽 관련된 라이브러리를 사용하게 되었다. 
근데, WeifenLuo 라이브러리는 .NET 버전이 2.0 에 맞추어져 있다보니, 현재 사용중이 
개발 환경이 Visual Studio 2010에서 컴파일시 오류가 발생했다. 

대충 어셈블러 어쩌구 하면서 2.0.0.0 이라는 메세지가 뜰것이다 함마디로 닷넷 버전이 
안 맞아서 나오는 메세지다. [ System.Design version=2.0.0... ]

그래서 해결 방법은 우선 해당 프로젝트를 실제 개발하는 프로젝트에 가져와 추가한다. 
WeifenLuo 라이브러리는 소스포지에서 얻을 수 있다. 
svn을 이용해 소스를 받아와서 컴파일을 해야하는데, 역시 기본적인 상황으로 하면
.NET 2.0 버전으로 컴파일된다. 

참고로 Visual Studio 2010버전에서 컴파일을 하면, .NET 4.0 이상 버전에서 컴파일이
된다. 이점을 감안해서 References 의 등록된 System 항목들을 삭제하고, Project의 
Properties 에서 .NET 4.0 으로 옵션을 바꾼 상태에서 System들을 새로 .NET 4.0 버전으로
등록을 해준다. 

이때 System, System.Data, System.Design, System.Drawing, System.Windows.Forms, System.XML
이런 컴포넌트들을 새로운 버전으로 등록해야 한다.

자. 이렇게 해도 문제가 있다. 
바로 System.Design 버전이 안맞다고 나올것이다. 이것은, 기존에 새로 만든 프로젝트의 Properties 정보를
살펴보면, Target framework 정보가 .NET Framework 4 Client Profile 이라는 것이라서 System.Design이
빠져 있기 때문이다. 다시 말해 WeifenLuo  라이브러리에서는 쓰는데, 실제 적용하는 프로젝트에는 
System.Design 이 등록이 안되어 있으니 링크 충돌이 나는 것이다. 

자. 그럼 .NET Framwork 4로 바꾸고 다시 재컴파일을 해보면 쉽게 컴파일이 될것이다. 

자. 그럼 DockPanel을 실제 비쥬얼 스튜디어에서 등록해서 사용하기 위해서는 Toolbox에서 마우스
오른쪽 버튼을 눌러 Choose Itesms... 메뉴를 눌러서 .NET 탭에서 WeifenLuo  라이브러리를 선택해주면
Toolsbox에 해당 콤퍼넌트가 추가되어 있을 것이다. 



반응형
반응형

The below attachment is HTTP Server Source code that supports CGI.


Detail Description:

HTTPSVR is an MFC sample that demonstrates the use of MFC and its Windows Sockets (WinSock) classes in implementing a simple World Wide Web HTTP Server. HTTPSVR turns any computer connected to a network into a publishing platform viewable from any of a number of web browsers available on the market today, such as Microsoft's Internet Explorer.

HTTPSVR also minimally supports the Common Gateway Interface (CGI). You can create forms and execute CGI-compatible server-side applications using the standard hypertext markup language (HTML) tags.

To increase performance, HTTPSVR checks a file's last modified date and compares it to the date sent by the browser in the HTTP If-Modified-Since field. Most browsers will send this field if they already have a copy of the file in their cache. If the file has not been modified since the date of the cached copy, it will send the browser a Not Modified status code instead of downloading the entire file again.


출처 : http://strcpy.com/69

반응형
반응형

#include <boost/signal.hpp> <= 요걸 일단 선언해야 한다. 

class Test
{
public:
typedef boost::signal<bool (const Event& arg), SignalTrue> KeySignal;
KeySignal OnKeyDown;
};
위의 코드에서 signal< void (const float time)> TimeSignal; 이런식으로 호출될 수도 있다. 
위의 코드는 편의상 SignalStopWhenResultTrue라는 객체를 선언했는데, 내부적으로 처리(주로 구분용)되는 것을 하면서 인자로 활용되는 녀석을 선언하는 것이고, 필요 없으면, 그냥 없이 선언해도 된다. 
뒤에 오는 두번째 인자는 키값이라고 보면 된다.

connect()함수를 호출하게 되는데 이때, boost::bind()라는 함수를 사용하게 된다. 
이때, 첫번째 인자는 호출된 함수와 해당 호출될 객체의 주소(파생된 객체가 선언될 경우도 있으니...)

test_.OnKeyDown.connect(boost::bind(&GUISystem::OnKeyDown, &guiSystem_, _1)); <= 인자가 하나일때
test_.OnHotkeyCommand.connect(boost::bind(&GUISystem::OnHotkeyCommand, &guiSystem_, _1, _2)); <= 인자가 두개일때


등록 콜백함수 지우기
boost::signal::connection a = timeManager_->OnRunUpTime.connect(boost::bind(&class::OnRunUpTime, this, _1));
// ....
a.disconnect();


                   http://jangyeol.springnote.com/pages/412787
반응형

+ Recent posts