OSDN Git Service

・BoardItemOnCreateThread を追加。
authoryoffy <yoffy>
Mon, 17 Nov 2003 15:57:19 +0000 (15:57 +0000)
committeryoffy <yoffy>
Mon, 17 Nov 2003 15:57:19 +0000 (15:57 +0000)
res/ExternalBoardPlugIn/BoardItem.pas

index 93e7a32..fb9e108 100644 (file)
@@ -153,6 +153,16 @@ type
        TBoardItemOnDownloadEvent = function : TDownloadState of object;
 
        // *************************************************************************
+       // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
+       // *************************************************************************
+       TBoardItemOnCreateThreadEvent = function(
+               inSubject       : string;                                       // \83X\83\8c\83^\83C
+               inName          : string;                                       // \96¼\91O(\83n\83\93\83h\83\8b)
+               inMail          : string;                                       // \83\81\81[\83\8b\83A\83h\83\8c\83X
+               inMessage       : string                                        // \96{\95
+       ) : TDownloadState of object;   // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
+
+       // *************************************************************************
        // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
        // *************************************************************************
        TBoardItemOnEnumThreadEvent = procedure(
@@ -173,12 +183,14 @@ type
        TBoardItem = class(TObject)
        private
                // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
-               FInstance                       : DWORD;
+               FInstance                                                       : DWORD;
 
                // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
-               FOnDownload             : TBoardItemOnDownloadEvent;
+               FOnDownload                                             : TBoardItemOnDownloadEvent;
+               // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
+               FOnCreateThread                         : TBoardItemOnCreateThreadEvent;
                // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
-               FOnEnumThread   : TBoardItemOnEnumThreadEvent;
+               FOnEnumThread                                   : TBoardItemOnEnumThreadEvent;
                // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81\82³\82ê\82½
                FOnFileName2ThreadURL   : TBoardItemOnFileName2ThreadURLEvent;
 
@@ -232,8 +244,9 @@ type
 
        public
                // ===== \83C\83x\83\93\83g
-               property        OnDownload              : TBoardItemOnDownloadEvent             read FOnDownload write FOnDownload;
-               property        OnEnumThread    : TBoardItemOnEnumThreadEvent   read FOnEnumThread write FOnEnumThread;
+               property        OnDownload                      : TBoardItemOnDownloadEvent                     read FOnDownload write FOnDownload;
+               property        OnCreateThread  : TBoardItemOnCreateThreadEvent read FOnCreateThread write FOnCreateThread;
+               property        OnEnumThread            : TBoardItemOnEnumThreadEvent           read FOnEnumThread write FOnEnumThread;
                property        OnFileName2ThreadURL    : TBoardItemOnFileName2ThreadURLEvent   read FOnFileName2ThreadURL write FOnFileName2ThreadURL;
 
                // ===== ThreadItem \82É\8eæ\93¾\81^\90Ý\92è\89Â\94\\82È\83v\83\8d\83p\83e\83B
@@ -302,6 +315,7 @@ begin
        inherited Create;
        FInstance                                               := inInstance;
        OnDownload                                              := nil;
+       OnCreateThread                          := nil;
        OnEnumThread                                    := nil;
        OnFileName2ThreadURL    := nil;
 
@@ -673,6 +687,43 @@ begin
 end;
 
 // *************************************************************************
+// \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
+// *************************************************************************
+function       BoardItemOnCreateThread(
+       inInstance      : DWORD;                                // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
+       inSubject               : PChar;                                // \83X\83\8c\83^\83C
+       inName                  : PChar;                                // \96¼\91O(\83n\83\93\83h\83\8b)
+       inMail                  : PChar;                                // \83\81\81[\83\8b\83A\83h\83\8c\83X
+       inMessage               : PChar                                 // \96{\95
+) : TDownloadState; stdcall;   // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
+var
+       context                 : Pointer;
+       boardItem               : TBoardItem;
+begin
+
+       try
+               repeat
+                       context := Pointer( ThreadItemGetLong( inInstance, tipContext ) );
+                       if not Assigned( context ) then
+                               Break;
+
+                       if not (TObject( context ) is TBoardItem) then
+                               Break;
+
+                       boardItem := TBoardItem( context );
+                       if not Assigned( boardItem.OnCreateThread ) then
+                               Break;
+
+                       Result := boardItem.OnCreateThread( string( inSubject ), string( inName ), string( inMail ), string( inMessage ) );
+                       Exit;
+               until True;
+       except end;
+
+       Result := dsError;
+
+end;
+
+// *************************************************************************
 // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
 // *************************************************************************
 procedure BoardItemOnEnumThread(
@@ -745,6 +796,7 @@ exports
        BoardItemCreate,
        BoardItemDispose,
        BoardItemOnDownload,
+       BoardItemOnCreateThread,
        BoardItemOnEnumThread,
        BoardItemOnFileName2ThreadURL;