0

アプリにズームイン機能を実装しようとしています。ズームインを選択した場合、グラフは水平方向に 2 倍に拡大して、ウィンドウにグラフの半分だけが表示されるようにし、ウィンドウのサイズに関係なく残りの半分を表示するにはスクロールする必要があります。

ズーム倍率のズーム変数があります。次に onDraw(CDC &pDC) で:

//...set pen and others...
CRect rect;
GetClientRect(rect);
for (int x=0; x < zoomFactor*rect.Width(); x++)
    //....draw the graph

次に onToolsZoomin() で:

void CMyGraphView::OnToolsZoomin()
{
    zoom *= 2;
    CRect rect;
    GetClientRect(rect);
    CSize sizeTotal;
    sizeTotal.cx = zoom*rect.Width();
    sizeTotal.cy = 0;
    SetScrollSizes(MM_TEXT, sizeTotal);
    this->RedrawWindow();
}

これを実行すると、ウィンドウにグラフの半分を正しく描画させることができ、グラフの半分だけを示すスクロールバーが表示されます。しかし、スクロールしようとすると、元の位置 (左下) に戻り、グラフの残りの半分が表示されません。

4

1 に答える 1

0

両方の関数のパラメーターは同じではありません。それが問題の最初の理由である可能性があります。OnToolsZoominを呼び出すと思われるコードを入れていただけますか? WM_VSCROLL または WM_HSCROLL メッセージを通じて処理されますか? 関数 OnToolsZoomin はまったく呼び出されていますか? スクロールバーは正しく初期化されていますか (スクロール範囲)?

于 2013-02-20T13:27:20.187 に答える