Differences From Artifact [037c81af9c06936e]:
- File        
src/win32/oledlg.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
 
 
To Artifact [5675873348358744]:
- File        
src/win32/oledlg.d
- 
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate] 
 - 
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
 
  480          HRESULT GetLinkUpdateOptions(DWORD, PDWORD);                                 480          HRESULT GetLinkUpdateOptions(DWORD, PDWORD);
  481          HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL);                   481          HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL);
  482          HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, B     482          HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, B
  483          HRESULT OpenLinkSource(DWORD);                                               483          HRESULT OpenLinkSource(DWORD);
  484          HRESULT UpdateLink(DWORD, BOOL, BOOL);                                       484          HRESULT UpdateLink(DWORD, BOOL, BOOL);
  485          HRESULT CancelLink(DWORD);                                                   485          HRESULT CancelLink(DWORD);
  486  }                                                                                    486  }
  487  alias IOleUILinkContainerW* LPOLEUILINKCONTAINERW;                               |   487  alias IOleUILinkContainerW LPOLEUILINKCONTAINERW;
  488                                                                                       488  
  489  interface IOleUILinkContainerA : IUnknown                                            489  interface IOleUILinkContainerA : IUnknown
  490  {                                                                                    490  {
  491          HRESULT QueryInterface(REFIID, PVOID*);                                      491          HRESULT QueryInterface(REFIID, PVOID*);
  492          ULONG AddRef();                                                              492          ULONG AddRef();
  493          ULONG Release();                                                             493          ULONG Release();
  494          DWORD GetNextLink(DWORD);                                                    494          DWORD GetNextLink(DWORD);
................................................................................................................................................................................
  496          HRESULT GetLinkUpdateOptions(DWORD, PDWORD);                                 496          HRESULT GetLinkUpdateOptions(DWORD, PDWORD);
  497          HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL);                    497          HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL);
  498          HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL     498          HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL
  499          HRESULT OpenLinkSource(DWORD);                                               499          HRESULT OpenLinkSource(DWORD);
  500          HRESULT UpdateLink(DWORD, BOOL, BOOL);                                       500          HRESULT UpdateLink(DWORD, BOOL, BOOL);
  501          HRESULT CancelLink(DWORD);                                                   501          HRESULT CancelLink(DWORD);
  502  }                                                                                    502  }
  503  alias IOleUILinkContainerA* LPOLEUILINKCONTAINERA;                               |   503  alias IOleUILinkContainerA LPOLEUILINKCONTAINERA;
  504                                                                                       504  
  505  struct OLEUIEDITLINKSW {                                                             505  struct OLEUIEDITLINKSW {
  506          DWORD cbStruct;                                                              506          DWORD cbStruct;
  507          DWORD dwFlags;                                                               507          DWORD dwFlags;
  508          HWND hWndOwner;                                                              508          HWND hWndOwner;
  509          LPCWSTR lpszCaption;                                                         509          LPCWSTR lpszCaption;
  510          LPFNOLEUIHOOK lpfnHook;                                                      510          LPFNOLEUIHOOK lpfnHook;
................................................................................................................................................................................
  538          LPFNOLEUIHOOK lpfnHook;                                                      538          LPFNOLEUIHOOK lpfnHook;
  539          LPARAM lCustData;                                                            539          LPARAM lCustData;
  540          HINSTANCE hInstance;                                                         540          HINSTANCE hInstance;
  541          LPCWSTR lpszTemplate;                                                        541          LPCWSTR lpszTemplate;
  542          HRSRC hResource;                                                             542          HRSRC hResource;
  543          HGLOBAL hMetaPict;                                                           543          HGLOBAL hMetaPict;
  544          CLSID clsid;                                                                 544          CLSID clsid;
  545          WCHAR szIconExe[MAX_PATH];                                               |   545          WCHAR[MAX_PATH] szIconExe;
  546          int cchIconExe;                                                              546          int cchIconExe;
  547  }                                                                                    547  }
  548  alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW;                       548  alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW;
  549                                                                                       549  
  550  struct OLEUICHANGEICONA {                                                            550  struct OLEUICHANGEICONA {
  551          DWORD cbStruct;                                                              551          DWORD cbStruct;
  552          DWORD dwFlags;                                                               552          DWORD dwFlags;
................................................................................................................................................................................
  555          LPFNOLEUIHOOK lpfnHook;                                                      555          LPFNOLEUIHOOK lpfnHook;
  556          LPARAM lCustData;                                                            556          LPARAM lCustData;
  557          HINSTANCE hInstance;                                                         557          HINSTANCE hInstance;
  558          LPCSTR lpszTemplate;                                                         558          LPCSTR lpszTemplate;
  559          HRSRC hResource;                                                             559          HRSRC hResource;
  560          HGLOBAL hMetaPict;                                                           560          HGLOBAL hMetaPict;
  561          CLSID clsid;                                                                 561          CLSID clsid;
  562          CHAR szIconExe[MAX_PATH];                                                |   562          CHAR[MAX_PATH] szIconExe;
  563          int cchIconExe;                                                              563          int cchIconExe;
  564  }                                                                                    564  }
  565  alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA;                       565  alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA;
  566                                                                                       566  
  567  struct OLEUICONVERTW {                                                               567  struct OLEUICONVERTW {
  568          DWORD cbStruct;                                                              568          DWORD cbStruct;
  569          DWORD dwFlags;                                                               569          DWORD dwFlags;
................................................................................................................................................................................
  653          LPCWSTR lpszCaption;                                                         653          LPCWSTR lpszCaption;
  654          LPFNOLEUIHOOK lpfnHook;                                                      654          LPFNOLEUIHOOK lpfnHook;
  655          LPARAM lCustData;                                                            655          LPARAM lCustData;
  656          HINSTANCE hInstance;                                                         656          HINSTANCE hInstance;
  657          LPCWSTR lpszTemplate;                                                        657          LPCWSTR lpszTemplate;
  658          HRSRC hResource;                                                             658          HRSRC hResource;
  659          OPENFILENAMEW* lpOFN;                                                        659          OPENFILENAMEW* lpOFN;
  660          DWORD dwReserved1[4];                                                    |   660          DWORD[4] dwReserved1;
  661          LPOLEUILINKCONTAINERW lpOleUILinkContainer;                                  661          LPOLEUILINKCONTAINERW lpOleUILinkContainer;
  662          DWORD dwLink;                                                                662          DWORD dwLink;
  663          LPWSTR lpszDisplayName;                                                      663          LPWSTR lpszDisplayName;
  664          ULONG nFileLength;                                                           664          ULONG nFileLength;
  665          LPWSTR lpszFrom;                                                             665          LPWSTR lpszFrom;
  666          LPWSTR lpszTo;                                                               666          LPWSTR lpszTo;
  667  }                                                                                    667  }
................................................................................................................................................................................
  674          LPCSTR lpszCaption;                                                          674          LPCSTR lpszCaption;
  675          LPFNOLEUIHOOK lpfnHook;                                                      675          LPFNOLEUIHOOK lpfnHook;
  676          LPARAM lCustData;                                                            676          LPARAM lCustData;
  677          HINSTANCE hInstance;                                                         677          HINSTANCE hInstance;
  678          LPCSTR lpszTemplate;                                                         678          LPCSTR lpszTemplate;
  679          HRSRC hResource;                                                             679          HRSRC hResource;
  680          OPENFILENAMEA *lpOFN;                                                        680          OPENFILENAMEA *lpOFN;
  681          DWORD dwReserved1[4];                                                    |   681          DWORD[4] dwReserved1;
  682          LPOLEUILINKCONTAINERA lpOleUILinkContainer;                                  682          LPOLEUILINKCONTAINERA lpOleUILinkContainer;
  683          DWORD dwLink;                                                                683          DWORD dwLink;
  684          LPSTR lpszDisplayName;                                                       684          LPSTR lpszDisplayName;
  685          ULONG nFileLength;                                                           685          ULONG nFileLength;
  686          LPSTR lpszFrom;                                                              686          LPSTR lpszFrom;
  687          LPSTR lpszTo;                                                                687          LPSTR lpszTo;
  688  }                                                                                    688  }
................................................................................................................................................................................
  695          ULONG Release();                                                             695          ULONG Release();
  696          HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*)     696          HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*)
  697          HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*);       697          HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*);
  698          HRESULT ConvertObject(DWORD, REFCLSID);                                      698          HRESULT ConvertObject(DWORD, REFCLSID);
  699          HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*);                          699          HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*);
  700          HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL);                       700          HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL);
  701  }                                                                                    701  }
  702  alias IOleUIObjInfoW *LPOLEUIOBJINFOW;                                           |   702  alias IOleUIObjInfoW LPOLEUIOBJINFOW;
  703                                                                                       703  
  704  interface IOleUIObjInfoA : IUnknown                                                  704  interface IOleUIObjInfoA : IUnknown
  705  {                                                                                    705  {
  706          HRESULT QueryInterface(REFIID, PVOID*);                                      706          HRESULT QueryInterface(REFIID, PVOID*);
  707          ULONG AddRef();                                                              707          ULONG AddRef();
  708          ULONG Release();                                                             708          ULONG Release();
  709          HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*);        709          HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*);
  710          HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*);       710          HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*);
  711          HRESULT ConvertObject(DWORD, REFCLSID);                                      711          HRESULT ConvertObject(DWORD, REFCLSID);
  712          HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*);                          712          HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*);
  713          HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL);                       713          HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL);
  714  }                                                                                    714  }
  715  alias IOleUIObjInfoA *LPOLEUIOBJINFOA;                                           |   715  alias IOleUIObjInfoA LPOLEUIOBJINFOA;
  716                                                                                       716  
  717  interface IOleUILinkInfoW : IOleUILinkContainerW                                     717  interface IOleUILinkInfoW : IOleUILinkContainerW
  718  {                                                                                    718  {
  719          HRESULT QueryInterface(REFIID, PVOID*);                                      719          HRESULT QueryInterface(REFIID, PVOID*);
  720          ULONG AddRef();                                                              720          ULONG AddRef();
  721          ULONG Release();                                                             721          ULONG Release();
  722          DWORD GetNextLink(DWORD);                                                    722          DWORD GetNextLink(DWORD);
................................................................................................................................................................................
  725          HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL);                   725          HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL);
  726          HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, B     726          HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, B
  727          HRESULT OpenLinkSource(DWORD);                                               727          HRESULT OpenLinkSource(DWORD);
  728          HRESULT UpdateLink(DWORD, BOOL, BOOL);                                       728          HRESULT UpdateLink(DWORD, BOOL, BOOL);
  729          HRESULT CancelLink(DWORD);                                                   729          HRESULT CancelLink(DWORD);
  730          HRESULT GetLastUpdate(DWORD, FILETIME*);                                     730          HRESULT GetLastUpdate(DWORD, FILETIME*);
  731  }                                                                                    731  }
  732  alias IOleUILinkInfoW *LPOLEUILINKINFOW;                                         |   732  alias IOleUILinkInfoW LPOLEUILINKINFOW;
  733                                                                                       733  
  734  interface IOleUILinkInfoA : IOleUILinkContainerA                                     734  interface IOleUILinkInfoA : IOleUILinkContainerA
  735  {                                                                                    735  {
  736          HRESULT QueryInterface(REFIID, PVOID*);                                      736          HRESULT QueryInterface(REFIID, PVOID*);
  737          ULONG AddRef();                                                              737          ULONG AddRef();
  738          ULONG Release();                                                             738          ULONG Release();
  739          DWORD GetNextLink(DWORD);                                                    739          DWORD GetNextLink(DWORD);
................................................................................................................................................................................
  742          HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL);                    742          HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL);
  743          HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL     743          HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL
  744          HRESULT OpenLinkSource(DWORD);                                               744          HRESULT OpenLinkSource(DWORD);
  745          HRESULT UpdateLink(DWORD, BOOL, BOOL);                                       745          HRESULT UpdateLink(DWORD, BOOL, BOOL);
  746          HRESULT CancelLink(DWORD);                                                   746          HRESULT CancelLink(DWORD);
  747          HRESULT GetLastUpdate(DWORD, FILETIME*);                                     747          HRESULT GetLastUpdate(DWORD, FILETIME*);
  748  }                                                                                    748  }
  749  alias IOleUILinkInfoA* LPOLEUILINKINFOA;                                         |   749  alias IOleUILinkInfoA LPOLEUILINKINFOA;
  750                                                                                       750  
  751  struct OLEUIGNRLPROPSW {                                                             751  struct OLEUIGNRLPROPSW {
  752          DWORD cbStruct;                                                              752          DWORD cbStruct;
  753          DWORD dwFlags;                                                               753          DWORD dwFlags;
  754          DWORD dwReserved1[2];                                                    |   754          DWORD[2] dwReserved1;
  755          LPFNOLEUIHOOK lpfnHook;                                                      755          LPFNOLEUIHOOK lpfnHook;
  756          LPARAM lCustData;                                                            756          LPARAM lCustData;
  757          DWORD dwReserved2[3];                                                    |   757          DWORD[3] dwReserved2;
  758          OLEUIOBJECTPROPSW* lpOP;                                                     758          OLEUIOBJECTPROPSW* lpOP;
  759  }                                                                                    759  }
  760  alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW;                          760  alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW;
  761                                                                                       761  
  762  struct OLEUIGNRLPROPSA {                                                             762  struct OLEUIGNRLPROPSA {
  763          DWORD cbStruct;                                                              763          DWORD cbStruct;
  764          DWORD dwFlags;                                                               764          DWORD dwFlags;
  765          DWORD dwReserved1[2];                                                    |   765          DWORD[2] dwReserved1;
  766          LPFNOLEUIHOOK lpfnHook;                                                      766          LPFNOLEUIHOOK lpfnHook;
  767          LPARAM lCustData;                                                            767          LPARAM lCustData;
  768          DWORD dwReserved2[3];                                                    |   768          DWORD[3] dwReserved2;
  769          OLEUIOBJECTPROPSA* lpOP;                                                     769          OLEUIOBJECTPROPSA* lpOP;
  770  }                                                                                    770  }
  771  alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA;                          771  alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA;
  772                                                                                       772  
  773  struct OLEUIVIEWPROPSW {                                                             773  struct OLEUIVIEWPROPSW {
  774          DWORD cbStruct;                                                              774          DWORD cbStruct;
  775          DWORD dwFlags;                                                               775          DWORD dwFlags;
  776          DWORD dwReserved1[2];                                                    |   776          DWORD[2] dwReserved1;
  777          LPFNOLEUIHOOK lpfnHook;                                                      777          LPFNOLEUIHOOK lpfnHook;
  778          LPARAM lCustData;                                                            778          LPARAM lCustData;
  779          DWORD dwReserved2[3];                                                    |   779          DWORD[3] dwReserved2;
  780          OLEUIOBJECTPROPSW* lpOP;                                                     780          OLEUIOBJECTPROPSW* lpOP;
  781          int nScaleMin;                                                               781          int nScaleMin;
  782          int nScaleMax;                                                               782          int nScaleMax;
  783  }                                                                                    783  }
  784  alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW;                          784  alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW;
  785                                                                                       785  
  786  struct OLEUIVIEWPROPSA {                                                             786  struct OLEUIVIEWPROPSA {
  787          DWORD cbStruct;                                                              787          DWORD cbStruct;
  788          DWORD dwFlags;                                                               788          DWORD dwFlags;
  789          DWORD dwReserved1[2];                                                    |   789          DWORD[2] dwReserved1;
  790          LPFNOLEUIHOOK lpfnHook;                                                      790          LPFNOLEUIHOOK lpfnHook;
  791          LPARAM lCustData;                                                            791          LPARAM lCustData;
  792          DWORD dwReserved2[3];                                                    |   792          DWORD[3] dwReserved2;
  793          OLEUIOBJECTPROPSA *lpOP;                                                     793          OLEUIOBJECTPROPSA *lpOP;
  794          int nScaleMin;                                                               794          int nScaleMin;
  795          int nScaleMax;                                                               795          int nScaleMax;
  796  }                                                                                    796  }
  797  alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA;                          797  alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA;
  798                                                                                       798  
  799  struct OLEUILINKPROPSW {                                                             799  struct OLEUILINKPROPSW {
  800          DWORD cbStruct;                                                              800          DWORD cbStruct;
  801          DWORD dwFlags;                                                               801          DWORD dwFlags;
  802          DWORD dwReserved1[2];                                                    |   802          DWORD[2] dwReserved1;
  803          LPFNOLEUIHOOK lpfnHook;                                                      803          LPFNOLEUIHOOK lpfnHook;
  804          LPARAM lCustData;                                                            804          LPARAM lCustData;
  805          DWORD dwReserved2[3];                                                    |   805          DWORD[3] dwReserved2;
  806          OLEUIOBJECTPROPSW *lpOP;                                                     806          OLEUIOBJECTPROPSW *lpOP;
  807  }                                                                                    807  }
  808  alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW;                          808  alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW;
  809                                                                                       809  
  810  struct OLEUILINKPROPSA {                                                             810  struct OLEUILINKPROPSA {
  811          DWORD cbStruct;                                                              811          DWORD cbStruct;
  812          DWORD dwFlags;                                                               812          DWORD dwFlags;
  813          DWORD dwReserved1[2];                                                    |   813          DWORD[2] dwReserved1;
  814          LPFNOLEUIHOOK lpfnHook;                                                      814          LPFNOLEUIHOOK lpfnHook;
  815          LPARAM lCustData;                                                            815          LPARAM lCustData;
  816          DWORD dwReserved2[3];                                                    |   816          DWORD[3] dwReserved2;
  817          OLEUIOBJECTPROPSA* lpOP;                                                     817          OLEUIOBJECTPROPSA* lpOP;
  818  }                                                                                    818  }
  819  alias OLEUILINKPROPSA*  POLEUILINKPROPSA, LPOLEUILINKPROPSA;                         819  alias OLEUILINKPROPSA*  POLEUILINKPROPSA, LPOLEUILINKPROPSA;
  820                                                                                       820  
  821  struct OLEUIOBJECTPROPSW {                                                           821  struct OLEUIOBJECTPROPSW {
  822          DWORD cbStruct;                                                              822          DWORD cbStruct;
  823          DWORD dwFlags;                                                               823          DWORD dwFlags;