rendered paste bodyvar Filter = "Image Files |*.png||";
var OPENFILENAME = Interop.Allocate(88);
OPENFILENAME.WriteDWORD(0, OPENFILENAME.Size);
OPENFILENAME.WriteDWORD(4, wnd.Handle);
OPENFILENAME.WriteDWORD(8, 0); //hInstance
OPENFILENAME.WriteDWORD(12, WriteMultiStringW(Interop.Allocate(Filter.length *2 +2), Filter).DataPtr); //lpstrFilter
OPENFILENAME.WriteDWORD(16, 0); //lpstrCustomFilter
OPENFILENAME.WriteDWORD(20, 0); //nMaxCustFilter
OPENFILENAME.WriteDWORD(24, 1); //nFilterIndex
var File = Interop.Allocate((255 +1) *2); //lpstrFile
OPENFILENAME.WriteDWORD(28,File.DataPtr ); //lpstrFile
OPENFILENAME.WriteDWORD(32,255 ); //nMaxFile
OPENFILENAME.WriteDWORD(36, 0); //lpstrFileTitle
OPENFILENAME.WriteDWORD(40, 0); //nMaxFileTitle
OPENFILENAME.WriteDWORD(44, 0); //lpstrInitialDir
var title = "Open Default display picture";
var Title = Interop.Allocate((title.length +1) *2);
OPENFILENAME.WriteDWORD(48, Title.DataPtr); //lpstrTitle
OPENFILENAME.WriteDWORD(52, OFN_DONTADDTORECENT | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST); //Flags
OPENFILENAME.WriteWORD(56, 0); // nFileOffset
OPENFILENAME.WriteWORD(56, 0); // nFileOffset
OPENFILENAME.WriteWORD(58, 0); // nFileExtension
OPENFILENAME.WriteDWORD(60, 0); // lpstrDefExt
OPENFILENAME.WriteDWORD(64, 0); // lCustData
OPENFILENAME.WriteDWORD(68, 0); // lpfnHook
OPENFILENAME.WriteDWORD(72, 0); // lpTemplateName
OPENFILENAME.WriteDWORD(76, 0); // pvReserved
OPENFILENAME.WriteDWORD(80, 0); // dwReserved
OPENFILENAME.WriteDWORD(84, 0); // FlagsEx
Interop.Call("Comdlg32", "GetOpenFileNameW", OPENFILENAME)
var ret = File.ReadString(0);
if(ret){
wnd.SetControlText('albumDefaultCover', ret);
wnd.ImageElmt_SetImageFile("preview", "\\" + ret);
}