#include <Windows.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <tchar.h>
#include <tcl.h>
#include <tk.h>
 
int Tk_AppInit(Tcl_Interp *interp){

  if (Tcl_Init(interp) == TCL_ERROR) {
    return TCL_ERROR;
  }
  if (Tk_Init(interp) == TCL_ERROR) {
    return TCL_ERROR;
  }
  
  TCHAR exedir [MAX_PATH];

  
#if 0 
  GetModuleFileName(NULL, exedir, MAX_PATH);
  _tprintf("%s/n", exedir);
  PathRemoveFileSpec(exedir);
  _tprintf("%s/n", exedir);
#endif

  /*Get the module's full path, and set to the current working directory.*/
  if (!GetModuleFileName(NULL, exedir, MAX_PATH)) {

    TCHAR errmsg[512];
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),0,errmsg,1024,NULL);

    _tprintf( TEXT("The path is %s, and the error is %s/n"), exedir, errmsg );
  }


  if (!PathRemoveFileSpec(exedir)) {

    TCHAR errmsg[512];
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),0,errmsg,1024,NULL);
    _tprintf( TEXT("The target dir is %s, and the error is %s/n"), exedir, errmsg );
  }

  if (!SetCurrentDirectory(exedir)) {

    TCHAR errmsg[512];
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),0,errmsg,1024,NULL);
    _tprintf( TEXT("The working dir is %s, and the error is %s/n"), exedir,errmsg );
  }

  Tcl_EvalFile(interp,"textsweep.tcl");
 
  return TCL_OK;
}


int main(int argc, char **argv) {
  Tk_Main (argc, argv, Tk_AppInit);
  return 0;
} 


// gcc -o test.exe test.c -L/mingw/path/to/library/directory -ltcl86 -ltk86   -DTCL_THREADS=1 

