내가 잊어버릴까봐 기록. 

 

에디트창에서 오디오창을 키운다. 

 

알트를 누른뒤에 줄이거나 키울 소리 앞뒤에 점을 찍는다.  점을 찍은 부분안에 다시 2개의 점을 찍으면 사다리꼴모양으로 자연스럽게 소리를 줄일수 있다.

 

내 기침소리가 나서 소리를 완전지운모습. 

 

-끝-

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


visual studio 2012를 설치 후에 WDK를 설치하면 해당 옵션이 생긴다.




참고 : http://social.msdn.microsoft.com/Forums/en-US/wdk/thread/64a4f2ff-8f6e-4783-9477-a63a70d1ff10/



WDK kit download


http://msdn.microsoft.com/en-US/windows/hardware/hh852362



YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


CDC 클래스

나머지/SW 2013. 2. 15. 10:33

GDI(Graphic Device Interface): 윈도 시스템은 디바이스 드라이브를 이용하여 하드웨어에 독립적인 프로그래밍을 할 수 있다. 장치 의존적인 하드웨어 구동은 디바이스 드라이브가 담당하고, 윈도 운영체제는 디바이스 드라이브를 구동하는 식이다. 따라서 애플리케이션 프로그램은 하드웨어 종류애 상관없이 동일한 명령을 사용하여 그래픽 출력을 처리할 수 있고 하드웨어 독립적이 될 수 있다. 이러한 전반적인 윈도제공 그래픽 환경을 GDI라고 한다.

DC(Device Context): 그래픽에 필요한 모든 옵션을 한곳에 모아놓은 구조체를 말한다.
선그리기, 글꼴처리, 비트맵과 팔레트 옵션, 영역처리 등의 그래픽을 처리하는 모든 옵션들을 DV에 모아놓고 제어할 수 있도록 되어있다.

CDC(Class of Device Context): MFC에서 제공하는 DC클래스이다. 즉, CDC는 MFC에서 DC를 클래스로 구현해 놓은 것이다. 그래픽에 필요한 모든 기능은 CDC에 있으므로 화면에 뭔가를 출력하려고 하는 경우에는 CDC클래스의 인스턴스(instance)을 얻어와서 이용하여야 한다. DC는 시스템 자원이므로 얻어와서 사용 후 반드시 반납해 주어야 한다.

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. ghd pas cher france 2013.04.08 01:05  댓글주소  수정/삭제  댓글쓰기

    보통의 경우라면,남편이 직장으로 나가고 아내는 집에서 살림을 하겠지만,

  2. tory burch shoes sale 2013.04.09 16:58  댓글주소  수정/삭제  댓글쓰기

    보통의 경우라면,남편이 직장으로 나가고 아내는 집에서 살림을 하겠지만,



[C++, MFC] CWinThread

나머지/SW 2013. 2. 14. 14:28

MSDN


CWinThread Class
http://msdn.microsoft.com/ko-kr/library/48xz4yz9%28v=vs.100%29.aspx

Multithreading: Creating Worker Threads
http://msdn.microsoft.com/ko-kr/library/69644x60%28v=vs.100%29.aspx

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


게임의 특수한 비주얼씬을 연출할 때 사용되는 것으로 이펙트(Effect)라고 한다. 

- 2D 게임에 쓰는 그래픽 이펙트는 하드웨어나 컴퍼넌트가 지원해 주지 않으므로 프로그래머가 직접 만들어야 한다. 


3.1 반투명 

2D 게임 그래픽에서 물체가 겹쳤을 때 마치 두 이미지가 섞여 보이는데 이것을 반투명이라고 한다. 


==> 걍 50% 알파블렌딩이라고 생각하시면 됩니다. ^^; 


구현 계산식은 아래와 같다. 

R = 뒷 이미지 R / 2 + 앞 이미지 R / 2 

G = 뒷 이미지 G / 2 + 앞 이미지 G / 2 

B = 뒷 이미지 B / 2 + 앞 이미지 B / 2 

이 방법은 계산이 쉽고 쉬운 계산식에 비해서 효과가 좋다 

- 예를 들어 색상 값인 RGB( 0, 0, 0)인 검은 배경에 RGB(255, 255, 255)의 흰점이 만난다면 반투명색은 RGB(122, 122, 122)인 회색이 된다는 원리이다. 



3.2 광원 효과 

두 이미지가 만나면 빛이 비추는 듯한 느낌을 주는 효과를 광원 효과라고 한다. 계산 원리는 반투명과 비슷하지만 계산식은 아래와 같다 

R = 뒷 이미지 R + 앞 이미지 R 

G = 뒷 이미지 G + 앞 이미지 G 

B = 뒷 이미지 B + 앞 이미지 B 

이렇게 하면 두 이미지가 겹치면서 밝아져 버린다. 빛의 원리와 같다. 이식에서 RGB각 요소가 255를 넘을 수 없기 때문에 계산 후 RGB값이 255를 넘게 되면 255로 값을 고정시켜야 한다. 



알파블렌딩 (alpha-blending) 

2반투명과 비슷한 효과이다. 다른 점은 알파값을 이용하여 투명한 명한 정도의 농도를 조절할 수 있다는 점에서 그냥 반투명과는 다르다. 즉 알파블렌딩을 이용하면 완전한 색의 캐릭터에서 점차적으로 투명해지는 캐릭터를 만들 수 있고 거의 완전한 투명에 가까운 캐릭터도 만들어 낼 수 있다. 알파블렌딩의 계산식은 다음과 같다. 


R = 뒷 이미지 R * (100 - Alpha) / 100 + 앞 이미지 R * Alpha / 100 

G = 뒷 이미지 G * (100 - Alpha) / 100 + 앞 이미지 G * Alpha / 100 

B = 뒷 이미지 B * (100 - Alpha) / 100 + 앞 이미지 B * Alpha / 100 


- Alpha값은 투명화의 정도를 의미한다. 



3.4. 팔레트 조작 

다른 용어로는 컬러 인덱스 조절이라고도 한다. 

팔레트의 주 기능은 256 게임을 만들어도 6만 가지 색을 쓰는 게임처럼 만들 수 있단 것이다. 

이미 출력된 색을 바꿔주는 효과를 팔레트 애니메이션이라고 한다. 

- 이미 출력되고 있는 색이 붉은 색이라면 붉은 색을 지정한 인덱스 값을 알맞게 변화해서 프레임의 변화 없이 바로 애니메이션을 만들어 낼 수 있는 그래픽 효과이다. 


위 설명이 워낙 잘 나와 있어서~ 


두개의 이미지를 찍을때~ 예를 들어 아이템창이 있을때~ 마우스를 가져다 놓으면~ 


뒤에 아이템이 비취면서 관련된 설명이 나오져? 많이들 사용하는것 같습니다. ^^ 


덧붙쳐서~ 구현된 이펙트 효과중~ 그레이는 


R G B의 색상에 대해서~ R*20 G*50 B*30색상을 적당히 섞어서 100으로 나눈 색상의 값을 그레이 색상으로 출력했습니다. ^^; 


팔레트의 조작에 대해서는 가장 대표적인 게임이 디아블로나~ 스타크래프트를 보셔서 잘 이해가 될듯 합니다. 


팔레트의 조작은 적은용량과 빠른 속도를 구현하기 위해서 쓰고 있습니다. 요즘은 모바일쪽에서 많이들 쓰는것 같습니다. ^^ 


글구 블렌딩은 효과는 계산이 무지 많아지기 때문에~ 대체적으로 검정색으로 효과를 냅니다. 일반적으로 잘 먹고여~ ^^ 


그럼 멋진 겜 만드시기 바랍니다. ^^; 


----------------------------------------------------


출처 : Daum MobileCreater의 시간  님의 글입니다.

       http://www.codesos.com 

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. pandora beads 2013.04.20 02:03  댓글주소  수정/삭제  댓글쓰기

    평가를 받는다



파일포맷을 변환해야되서 라이브러리를 찾던도중 Magick++이 눈에 들어와서 사용하기로 결정


사용법은 매우 쉽다.


방법은


1.다운로드

2.visual studio 설정(2010 ver 사용)

3.실행


1.  다운로드

 ftp://ftp.imagemagick.org/pub/ImageMagick/windows/

   ImageMagick-windows.zip 다운로드

  

    C:\image\ImageMagick-windows\ImageMagick-6.8.1\VisualMagick\configure경로에서 

     configure.exe 클릭



C:\image\ImageMagick-windows\ImageMagick-6.8.1\VisualMagick 경로에

VisualDynamicMT.sln 파일이 생긴다.

         빌드


C:\image\ImageMagick-windows\ImageMagick-6.8.1\VisualMagick\bin

C:\image\ImageMagick-windows\ImageMagick-6.8.1\VisualMagick\lib

위 두경로에 뭔가 많이 생김


라이브러리는 프로젝트가있는 폴더에 다 옴기자 

(system32에 옴겨도 된다.)


2. visual studio 설정



헤더파일경로 추가

(설치경로)

(설치경로)\Magick++\lib


라이브러리 경로 추가

(설치경로)\VisualMagick\lib


라이브러리 추가

CORE_DB_Magick++_.lib (디버그 버전)

CORE_RL_Magick++_.lib (릴리즈 버전)


3. 실행


#include "stdafx.h"

#include <Magick++.h>

using namespace Magick;


//#pragma comment (lib "lib이름") 


int _tmain(int argc, _TCHAR* argv[])

{

const char * path = "C:\image\ImageMagick-windows\ImageMagick-6.8.1\VisualMagick\bin";


InitializeMagick(path);


Image master;

master.read("C:\\image\\bmp\\lena.bmp");

master.blur();

master.write("C:\\image\\bmp\\lena_temp1.bmp");

return 0;

}


파란색글자는 꼭 추가해야한다.


관련사진과 사이트는 아래에 있다.


관련사이트

Magick++ 공식사이트            http://www.imagemagick.org  

블로그                              http://kbdyj.tistory.com/category/%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4

Magick++ 설명한파일        http://www.docstoc.com/docs/429912/Magick-chapter-1-to-6















YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. escorte 2013.05.03 03:36  댓글주소  수정/삭제  댓글쓰기

    난 당신의 게시물을 흥미로운 것은 도움이되었습니다

  2. 별님(d1) 2014.09.30 16:11 신고  댓글주소  수정/삭제  댓글쓰기

    이렇게 편리한 라이브러리가 있었다는 것을 뒤늦게 알게 된게 아쉽습니다.
    게시물 잘보고 갑니다.

  3. 이진우 2015.10.27 10:57  댓글주소  수정/삭제  댓글쓰기

    안녕하세요? 푸른길님 메일주소를 찾을수 없어서 이곳에 댓글을 남깁니다.다름이 아니라 혹시 ImageMagick을 MFC에서 사용하시고 계신건가요? Dialog MFC에서 작업을 해보려고하는데요 InitializeImagemagick을 어떻게 해주어야하는지 모르겠습니다. 혹시 가능하시면 이메일 주소도 부탁드립니다.



에러

1>LIBCMT.lib(sprintf.obj) : error LNK2005: _sprintf already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(sprintf.obj) : error LNK2005: _sprintf_s already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(tidtable.obj) : error LNK2005: __encoded_null already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(winxfltr.obj) : error LNK2005: ___CppXcptFilter already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in msvcrtd.lib(MSVCR100D.dll)

1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrtd.lib(cinitexe.obj)

1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrtd.lib(cinitexe.obj)

1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)

1>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrtd.lib(cinitexe.obj)

1>LINK : warning LNK4098: defaultlib 'msvcrtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

1>LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

1>C:\File\Dev\USB\Image\GrayImage\GrayImage\Debug\GrayImage.dll : fatal error LNK1120: 1 unresolved externals





warning libcmt.lib

해결방법
같은 모드로 컴파일한 라이브러리와 메인코드를 링크
메인프로젝트의 디폴트라이브러리를 몇개 무시
프로젝트 옵션에서 경고가 지적해준데로 /NODEFAULTLIB:????.lib

각 컴파일 모드 별로 무시해야 하는 라이브러리

To use this run-time library Ignore these libraries

 사용할 런타임 라이브러리

 무시해야 하는 라이브러리
단일 스레드(libc.lib)  libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
  다중 스레드(libcmt.lib)  libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
DLL을 사용하는 다중 스레드
(msvcrt.lib)
 libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
  디버그 단일 스레드(libcd.lib)  libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
디버그 다중 스레드(libcmtd.lib)  libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib
  DLL을 사용하는 디버그 다중 스레드
(msvcrtd.lib)
 libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib


예제 : /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib

출처 :  http://blog.bagesoft.com/221
출처 :  MSDN   http://msdn.microsoft.com/ko-kr/library/6wtdswk0(v=vs.100).aspx


LNK2019에러에 대해
http://sadiles.blog.me/10072075057




Resolving LNK4098: defaultlib 'MSVCRT' conflicts with
CRT란 C Run-Time Lib
출처 : http://stackoverflow.com/questions/3007312/resolving-lnk4098-defaultlib-msvcrt-conflicts-with



런타임 라이브러리
[C/C++] - [코드 생성] - [런타임 라이브러리]를 보면 아래와 같이 4가지 선택 사항이 있다.
 
- 다중 스레드(/MT) : 릴리즈 모드시. 정적으로 링크
- 다중 스레드 디버그(/MTd) : 디버그 모드시. 정적으로 링크
- 다중 스레드 DLL(/MD) : 릴리즈 모드시. 동적으로 링크
- 다중 스레드 디버그 DLL(/MDd) : 디버그 모드시. 동적으로 링크
 
다중 스레드 디버그(/MTd)로 변경한 경우, 만일 MFC를 사용하고 있는 경우,
[속성] - [일반] - [MFC 사용]을 정적 라이브러리에서 MFC 사용 으로 변경해야함
 
왜냐하면, 라이브러리를 링크할 때 정적으로 해주도록 했으니, 라이브러리를 쓸 경우도 정적 라이브러리를 쓰도록 변경해줘야 하는 것이다.
출처 :  http://blog.naver.com/PostView.nhn?blogId=ksa3824&logNo=70124184896

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. moncler españa 2013.01.04 16:33  댓글주소  수정/삭제  댓글쓰기

    Le parti indépendantiste flamand N-VA a rejetté mercredi un projet de compromis qui aurait ouvert la voie à une sortie de crise en Belgique, après 206 jours d'impasse politique, http://www.moncleroutletespain.com/ moncler online, tout en laissant la porte ouverte à des discussions avec les autres partis. "La N-VA a des remarques fondamentales sur la note du conciliateur Johan Vande Lanotte", http://www.moncleroutletespain.com/ moncler chaquetas, le document de synthèse de 60 pages qui a été soumis aux sept partis engagés dans des négociations suspendues depuis octobre, http://www.moncleroutletespain.com/ http://www.moncleroutletespain.com/, pour servir de base à une éventuelle reprise, http://www.moncleroutletespain.com/ moncler, a-t-elle indiqué dans un communiqué. Le parti nationaliste "les lui transmettra ainsi qu'aux six autres partis", les trois néderlandophones --CDV chrétien démocrate, SPA socialiste et verts de Groen--- et les trois francophones --PS, http://www.moncleroutletespain.com/ moncler españa, Ecolo et centristes du CDHG. "On verra si ces remarques sont acceptables pour les autres partis. On pourra alors conclure si engager des négociations finales a un sens", a ajouté la Nouvelle Alliance flamande (N-VA), http://www.moncleroutletespain.com/ moncler outlet.Related articles:


    http://perry.tistory.com/70 http://perry.tistory.com/70

    http://cometkorea.tistory.com/148 http://cometkorea.tistory.com/148



윈도우8 드라이버 파일은 더이상 WDK 빌드하질못하기 때문에  비쥬얼 스튜디오 2012에서 빌드했습니다.



비쥬얼스튜디오2012 열기->컨버트 소스/디렉토리에서 WDK의 디바이스 드라이버 소스파일 클릭 



그럼 자동으로 컨버팅이되고 오른쪽버튼눌러서 빌드하면 됩니다...





테스트해보니 윈도우8에서 되다가 안되네요... -ㅅ- 왜이러지.. 잘 됬었는데... 아무튼 드라이버  DLL파일은 제대로 만들어지네요.

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


[MFC] Updatadata()

나머지/SW 2012. 11. 1. 12:14

※ UpdateData 함수를 이용한 데이터 전송
UpdateData 함수는 매개변수를 이용하여 양방향 전송을 제어합니다.
아래의 그림에 보인 바와 같이 UpdateData 함수의 매개변수로 TRUE를 주면
사용자가 컨트롤에 입력한 값이 Value형 멤버 변수로 전송되고,
UpdateData 함수의 매개변수로FALSE를 주면 Value형 멤버 변수에 설정되어 있는 값이
컨트롤로 전송되어 이 값이 화면에 출력 됩니다.

※ CDialog 클래스에서 기본적으로 호출하고 있는 UpdateData 함수
CDialog 클래스에서는 프로그래머들의 편의를 위해, 기본적으로 UpdateData 함수를 두 번 호출해 주고 있습니다.
OnInitDialog 함수 안에서 UpdateData(FALSE)를 호출해주고, OnOK 함수 안에서 UpdateData(TRUE)를 호출해줍니다.
CDialog 클래스는 왜 이러한 일을 해 주고 있을까요?

  • 대화상자 시작 시 UpdateData(FALSE) 호출
    OnInitDialog 함수는 대화상자를 초기화 하기 위해 호출되는 함수입니다.
    이때, UpdateData(FALSE)가 호출되면, Value형 멤버 변수에 설정된 값이 컨트롤로 전송되어 화면에 나타나게 됩니다.
    즉, 대화상자가 화면에 나타나는 순간에 Value형 멤버 변수에 설정된 초기값이 화면에 출력되는 것이지요.
  • 대화상자 종료 시 UpdateData(TRUE) 호출
    OnOK 함수는 입력을 마치고 대화상자가 종료될 때 호출되는 함수입니다.
    이때, UpdateData(TRUE)가 호출되면, 사용자가 컨트롤에 입력해 놓은 값이 Value형 멤버 변수에 저장됩니다.

주의
대화상자를 처리할 때 주의할 점은 사용자가 컨트롤에 입력한 값과 이 컨트롤에 연결된 Value형 멤버 변수에
저장된 값이 항상 같은 상태로 유지되는 것은 아니라는 점입니다. 즉, 사용자가 컨트롤에 어떤 값을 입력하면
컨트롤에 입력된 값은 변경되지만, 이 값이 바로 Value형 멤버 변수에 반영되는 것은 아니라는 것입니다.
UpdateData(TRUE)를 호출하고 난 다음에야 비로소, 컨트롤에 입력된 값이 Value형 멤버 변수에 저장됩니다.
물론, OnOK 함수에서 UpdateData(TRUE)가 호출되고 있으므로 확인 버튼을 눌러 대화상자가 종료된 후에는
컨트롤에 입력되었던 값이 Value형 멤버 변수에 저장된 상태가 됩니다.
하지만, 만약 그 전에 컨트롤에 입력된 값을 Value형 멤버 변수에 반영되도록 하고 싶으면 UpdateData(TRUE)를 명시적으로 호출해 주어야 합니다.


출처 : http://kmdigit.egloos.com/3132286

MSDN : http://msdn.microsoft.com/en-us/library/t9fb9hww(v=vs.80).aspx

유용한 정보 얻으셨으면 아래 광고나 손가락 클릭해주세요~  (로그인 불필요합니다)

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. pandora jewellery 2013.04.09 19:34  댓글주소  수정/삭제  댓글쓰기

    너의 천사가 되어줄께



Class Wizard로 CWinThread를 상속받은 MyThread를 만든다.

 그리고 dlg같은 스레드를 쓰려는 클래스의 맴버변수로

 CWinThread* m_pWinThread; 를 만든다.


 다음은 스레드 생성


 m_pWinThread = AfxBeginThread(RUNTIME_CLASS(MyThread)); 


 다음은 윈스레드의 메세지 핸들링 방법이다.

 MyThread가 받을 메세지로 TM_MYMSG라는 것이 

 Resource.h에 있다고 치자. 없으면 쓰자

 #define TM_MYMSG                       700

 그리고 MyThread.h에 void MyMsg();를 하고


 BEGIN_MESSAGE_MAP(MyThread, CWinThread)

    //{{AFX_MSG_MAP(TestWinThread)

        // NOTE - the ClassWizard will add and 

        // remove mapping macros here.

    //}}AFX_MSG_MAP

    ON_THREAD_MESSAGE(TM_MYMSG,MyMsg)

 END_MESSAGE_MAP()


 이렇게 하면  TM_MYMSG가 윈스레드로 오면 MyMsg() 함수가 불리게 된다.


 dlg에서 

 ((MyThread*)m_pWinThread)->PostThreadMessage(TM_MYMSG,0,0);


 다음은 윈스레드를 죽이는 방법이다.

 ((MyThread*)m_pWinThread)->PostThreadMessage(WM_QUIT,0,0);    

 이렇게 하면 죽게 된다.

 그리고 한번 AfxBeginThread로 생기게 되면 속안에서 

  CreateThread를 호출하면서 스레드 객체가 생기며 CWinThread의 

 경우 Run함수가 호출된다. CwinThread::Run안에서 메세지 루프가 돌게 된다.


출처 : http://blog.naver.com/hushath/100009524349


MSDN은 필수 

http://msdn.microsoft.com/en-us/library/48xz4yz9(v=vs.100).aspx


유용한 정보 얻으셨으면 아래 광고나 손가락 클릭해주세요~  (로그인 불필요합니다)

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST