File & Folder Dialog 개량하기
Maxscript에서는 getOpenFileName,getSavePath.. 의 함수를 이용해 Dialog을 생성합니다.
그런데 이런 Dialog는 XP에서 사용하던 예전 모습으로 보여지는데요.
Win7 이상을 사용하는 이때에 말이죠.
(사용성도 조금 아쉽고.. 무엇보다 간지력이 떨어진다는거죠.)
File Select
이를 DotNet를 사용해 Dialog를 개량 할 수 있는데요.
OpenFileDialog를 가지고 한번 해보겠습니다.
<Maxscript함수로 구현>
getOpenFileName caption:"Open File" types:"All Files (*.*)|*.*|"
<DotNet으로 구현>
dno_OpenFileDialog = dotNetObject "System.Windows.Forms.OpenFileDialog"
dno_OpenFileDialog.Filter = "All Files (*.*)|*.*"
dno_OpenFileDialog.showDialog()
dno_OpenFileDialog.FileName
사용하기가 훨씬 더 좋죠.
DotNet으로 하면 MultiSelect도 지원되니 사용해볼만 하겠죠.
Folder Select
Folder 선택 기능인 getSavePath 함수를 대신 할 DotNet 기능은 FolderBrowserDialog입니다.
그런데 FolderBrowserDialog는 Maxscript 함수인 getSavePath기능과 Dialog가 같습니다.
다른 창들은 다 개량 되었으나 FolderBrowserDialog는 예전 XP에서 사용하던 그대론데요.
Vista에서는 개량 된 FolderBrowserDialog를 사용 할 수 있었으나, Win7으로 오면서 다시 XP에서 사용하던 Dialog로 돌아 갔더군요.
대신 Vista에 처럼 볼 수 있는 API를 따로 제공했는데요.
그런데 MSDN에 CodePack의 주소를 찾을 수 없습니다.
(이유는 잘 모르겠지만...)
그래서 아래 Dll을 첨부 합니다.
microsoft.windowsapicodepack.dll
microsoft.windowsapicodepack.shell.dll
32bit : C:\Windows\System32\
64bit : C:\Windows\SysWOW64\
또한 이를 해결한 블로그가 있어 추가로 소개 합니다.
아래 경로로 가시면 Ookii.Dialogs를 받을 수 있습니다.
http://www.ookii.org/Software/Dialogs/
가서 받기 귀찮으면 아래 링크
여기에 Vista용 FolderBrowserDialog를 사용 할 수 있는 API가 들어 있습니다.
(Ookii.Dialogs.chm을 참고하세요.)
<Maxscript함수로 구현>
getSavePath()
<DotNet으로 구현>
-- windowsapicodepack --
dotNet.loadAssembly (microsoft.windowsapicodepack.shell.dll 의 경로) -- Dll Load가 안되어 있다면
dotNet.loadAssembly (microsoft.windowsapicodepack.dll 의 경로)
dno_CommonOpenFileDialog = dotNetObject "Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog"
dno_CommonOpenFileDialog.IsFolderPicker = true
dno_CommonOpenFileDialog.showDialog()
dno_CommonOpenFileDialog.FileName
-- Ookii.Dialogs --
dllPath = Ookii.Dialogs.dll의 경로 주소
dotNet.loadAssembly dllPath
dno_VistaFolderBrowserDialog = dotNetObject "Ookii.Dialogs.VistaFolderBrowserDialog"
dno_VistaFolderBrowserDialog.showDialog()
dno_VistaFolderBrowserDialog.SelectedPath
두 방법다 결과는 같습니다.
'Max' 카테고리의 다른 글
Maxscript Editor의 색상을 변경해보자 (1) | 2014.08.13 |
---|---|
Viewport에 Faces Index 보여주기 (0) | 2014.07.29 |
Maxscript Editor의 Output Pane 활용하기 (0) | 2014.06.20 |
Maxscript 디렉토리 관리하기 (0) | 2014.06.17 |
Maxscript 스레드 함수에 파라미터 받기 (0) | 2014.06.09 |