tkUnixInit.c
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:1k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #ifdef WIN32
  2. #include <windows.h>
  3. #endif
  4. #include <tcl.h>
  5. #include <tk.h>
  6. #include <string.h>
  7. int
  8. #if (TK_MAJOR_VERSION < 8)
  9. TkPlatformInit(Tcl_Interp *interp)
  10. #else
  11. TkpInit(Tcl_Interp *interp)
  12. #endif
  13. {
  14. #ifndef WIN32
  15. {
  16. extern void TkCreateXEventSource(void);
  17. TkCreateXEventSource();
  18. }
  19. #endif
  20.         return (TCL_OK);
  21. }
  22. #if (TK_MAJOR_VERSION == 8)
  23. void
  24. TkpGetAppName(Tcl_Interp* interp, Tcl_DString* namePtr)
  25. {
  26.   const char *name;
  27.   char *p;
  28. #ifdef WIN32
  29.     int argc;
  30.     char** argv;
  31. #endif
  32.     name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);
  33. #ifdef WIN32
  34.     if (name != NULL) {
  35. Tcl_SplitPath(name, &argc, &argv);
  36. if (argc > 0) {
  37.     name = argv[argc-1];
  38.     p = strrchr(name, '.');
  39.     if (p != NULL) {
  40. *p = '';
  41.     }
  42. } else {
  43.     name = NULL;
  44. }
  45.     }
  46. #endif
  47.     if ((name == NULL) || (*name == 0)) {
  48. name = "tk";
  49.     }
  50. #ifndef WIN32
  51.     else {
  52. p = strrchr(name, '/');
  53. if (p != NULL) {
  54.     name = p+1;
  55. }
  56.     }
  57. #endif
  58.     Tcl_DStringAppend(namePtr, name, -1);
  59. #ifdef WIN32
  60.     if (argv != NULL) {
  61. ckfree((char *)argv);
  62.     }
  63. #endif    
  64.     
  65. }
  66. void
  67. TkpDisplayWarning(char* msg, char* title)
  68. {
  69. #ifdef WIN32
  70.     MessageBox(NULL, msg, title, MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
  71.     | MB_SETFOREGROUND | MB_TOPMOST);
  72. #else
  73.     Tcl_Channel errChannel = Tcl_GetStdChannel(TCL_STDERR);
  74.     if (errChannel) {
  75. Tcl_Write(errChannel, title, -1);
  76. Tcl_Write(errChannel, ": ", 2);
  77. Tcl_Write(errChannel, msg, -1);
  78. Tcl_Write(errChannel, "n", 1);
  79.     }
  80. #endif
  81. }
  82. #endif