00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SO_WIN_ERROR_CONSOLE_H__
00025 #define _SO_WIN_ERROR_CONSOLE_H__
00026
00027 #include <Inventor/Win/SoWinComponent.h>
00028
00029 class SbThreadMutex;
00030
00066 class SoConsole : public SoWinComponent
00067 {
00068
00069 public :
00073 SoConsole(SoWidget parent = NULL,
00074 const char *name = NULL,
00075 SbBool buildInsideParent = TRUE);
00076
00080 virtual ~SoConsole();
00081
00085 HWND getConsoleHandle(void);
00086
00090 static void setMaxNumMessages(int);
00091
00095 void printMessage(const SbString& str);
00096
00097 private:
00098 void commonConstructor();
00099 HWND handleToConsole;
00100
00101
00102 static char *stringBuffer;
00103
00104 static unsigned int maxNumMessages;
00105 static unsigned int numMessages ;
00106
00107
00108 static void clearStringBuffer(void);
00109
00110
00111 static POINT upLeftCtrlCorner;
00112 static POINT upLeftClearButtonCorner;
00113 static POINT upLeftSaveButtonCorner;
00114 static POINT upLeftCloseButtonCorner;
00115 static RECT initDlgSize;
00116
00117
00118 void copyString(const char *string, char *intoString);
00119
00120
00121 char *addString(const SbString& newString);
00122
00123
00124 void formatString(SbString& newString);
00125
00126 int countChar(const char *source, char toCount);
00127
00128 char *changeCarriageReturn(const SbString& str, int n);
00129
00130 private:
00131 SoWidget buildWidget(SoWidget parent);
00132
00133
00134 static WBOOL CALLBACK dialogWndProc(Hwnd hdlg, UINT message, WPARAM wParam, LPARAM lParam);
00135 static WBOOL CALLBACK editWndProc(Hwnd hdlg, UINT message, WPARAM wParam, LPARAM lParam);
00136
00137 static void onCommand(Hwnd hdlg, int id, Hwnd hCtrl, UINT codeNotify);
00138
00139 SoWidget mgrWidget;
00140
00141 SbThreadMutex* m_classMtx;
00142 SbThreadId_t m_threadId;
00143 HICON m_ivIcon;
00144
00145 static bool s_controlIsDown;
00146 };
00147
00148 #endif
00149
00150
00151