Application Framework > ビットマップ・エディター・アプリケーション > 手順 3:ビットマップの変更および保存 > 文書ビューに通知を追加
 
文書ビューに通知を追加
文書の変更を通知するための BitmapDocument::refreshViews メソッドを呼び出すために使用された DrawRectangleCommand メソッド (この手順については既
述)。ここでは、このメソッドを実装します。
void
BitmapDocument::refreshViews(const IlvRegion& region)
{
notifyViews(IlvGetSymbol("BitmapHasChanged"), 0, &region);
}
このメソッドは、指定した四角形を引数として与え、BitmapHasChanged メッセージをブロードキャストします。メッセージをキャッチするために、BitmapView がそのインターフェースでメソッドを宣言します。
IlvDvBeginInterface(BitmapView)
Method1(BitmapHasChanged, bitmapHasChanged, IlAny, region)
IlvDvEndInterface1(IlvDvFormView)
*Method1 マクロの最初の引数は、メッセージ名です。
*2 番目の引数は、メッセージ BitmapHasChanged を受け取るときに呼び出される BitmapView のメソッドです。
*3 番目の引数は、bitmapHasChanged メソッドを呼び出すときに渡される最初の引数のタイプです。
*4 番目の引数は、bitmapHasChanged メソッドを呼び出すときに渡される最初の引数の名前です。
メモ:インターフェース宣言では、簡単なタイプのみがサポートされています。変更された四角形がどれかを知るためにIlvRegion が必要になるため、IlAny
(つまり、non-typed ポインター) が使用されます。
以下に bitmapHasChanged メソッドのコードを示します。
void
BitmapView::bitmapHasChanged(IlAny region)
{
IlvRegion redrawRegion(*(IlvRegion*)region);
IlvContainer* container = IlvContainer::GetContainer(_icon);
// Deal with the container transformer
if (container->getTransformer())
redrawRegion.apply(container->getTransformer());
// Optimization:Clip using the visible size of the container
IlvRect rect;
container->sizeVisible(rect);
redrawRegion.intersection(rect);
// Then redraw the region
container->bufferedDraw(redrawRegion);
}

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.