この C++ Builder 2009 アプリを入手しました。それは絶望的ではありません - それはデモですが、それは私をスコッチに駆り立てています. 私は今、シングルモルトでいっぱいなので、助けを求めなければなりません.
このアプリには、メイン フォームとすべてが機能するその他の機能があります。何かがおかしいと思う理由はありません。別のフォーム「TfoPNGload」を追加し、いくつかのコンポーネントを追加しましたが、特に異常はありませんでした。インスタンスをオンデマンドで作成できるように、自動作成リストから外しました。
テストとして、メイン フォームに SpeedButton を配置し、クリックで 'TfoPNGload' フォームのインスタンスを作成し、それを Show() しました。
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
myPNGform=new TfoPNGload(NULL);
myPNGform->Show();
}
これもうまくいきました - ボタンをクリックすると、フォームがポップアップしました。
すべてが正常です。
メッセージハンドラーを追加したところ、メッセージを送信する前でも異常になりました。関数とマクロを追加して、メッセージハンドラーにしました。
class TfoPNGload : public TForm
{
__published: // IDE-managed Components
TImage *Image1;
TPanel *Panel1;
TSpeedButton *SpeedButton1;
TTimer *tiSlideShow;
TLabel *Label1;
void __fastcall tiSlideShowTimer(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
private:
PNGload *myLoad;
void __fastcall filesLoaded(TObject *Sender);
protected:
public: // User declarations
__fastcall TfoPNGload(TComponent* Owner);
MESSAGE void __fastcall WMAPP(TMessage& msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_APP, TMessage, WMAPP)
END_MESSAGE_MAP(TfoPNGload)
vector<PNGtask*> *PNGresult;
int vecSize;
};
次に、ボタンをクリックしてフォームを作成すると、古典的な「スタック オーバーフロー」メッセージ ボックスが表示されます。
マクロをコメントアウトすると:
// BEGIN_MESSAGE_MAP
// MESSAGE_HANDLER(WM_APP, TMessage, WMAPP)
// END_MESSAGE_MAP(TfoPNGload)
..フォームは問題なく作成されます。
まだメッセージを投稿しているわけではありません。マクロを処理するだけで、フォーム作成時にオーバーフローが発生するようです。とにかくWMAPP関数は空です。
このようなものを見た人はいますか?
プッシュが押し寄せた場合、回避策があります。メイン フォームで同じマクロを使用すると機能するため、代わりにそこに投稿してから、「TfoPNGload」フォームを呼び出すことができます。それはおそらくうまくいくでしょうが、それは私のコード構造を混乱させます.TBHは、そのままでは従うのが難しいです:((
Rgds、マーティン