リボンバーで印刷プレビューがフリーズ – プログラミング – Home

リボンバーで印刷プレビューがフリーズ
 
通知
すべてクリア

[解決済] リボンバーで印刷プレビューがフリーズ


傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

今年もお世話になります。
VFC2010, MFC, SDI アプリで、リボンバーを採用しています。
印刷を行うソフトです。

「印刷プレビュー」を押したところ、リボンバーには「印刷プレビュー」という
カテゴリ(タグ)だけが表示され、ビューに印刷イメージが出ます。
「閉じる」ボタンで閉じれば問題ないのですが、間違って一番右上にある
システムメニューの赤いXボタンを押すと、フリーズしてしまいます。
必ずということではなく、数回の繰り返し後であったり、1回でも生じたりします。

最もシンプルなスケルトンを新しく作ってやってみましたが、再現しました。
関連するコードを下記します。
印刷内容は OnPrint の中に書いています。

// CtestView 印刷

void CtestView::OnFilePrintPreview()
{
#ifndef SHARED_HANDLERS
AFXPrintPreview(this);
#endif
}

BOOL CtestView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 既定の印刷準備
return DoPreparePrinting(pInfo);
}

void CtestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 印刷前の特別な初期化処理を追加してください。
}

void CtestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 印刷後の後処理を追加してください。
}

void CtestView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: ここに特定なコードを追加するか、もしくは基本クラスを呼び出し
てください。

for (int i=0; i<10000; i++) pDC->TextOut(100, 100+i*20, _T(本日は大
雪なり));

CView::OnPrint(pDC, pInfo);
}

1万回も繰り返しているのは、フリーズを出やすくするためです。
1回だけでも、フリーズするときはします。

何か不足のコードがあるでしょうか? どうぞ教えてください。
ちなみに、エクセル2007 で「印刷プレビュー」を押すと、同様に表示されますが、
一番右上にあるシステムメニューの赤いXボタンを押しても、プレビューが閉じます。
出来れば、こうしたいです。

【蛇足かも?】
ずっと昔、VS6.0 から VS.NET に進んだとき、印刷プレビューを閉じると、親ウィンド
ウも閉じるという不具合がありました。
次の1行を追記すればいいと教えて戴いたことがあります。(理由はまだ理解していな
い)
しかし、今回の件にはこの1行の有無は影響ないようです。

CMainFrame::OnClose()
{
if ((m_lpfnCloseProc != NULL) && !(*m_lpfnCloseProc)(this)) return;
}


引用未解決
トピックタグ
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

誤 VFC2010 → 正 VC2010


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

VC2008 SP1 でも同じことをやってみましたが、結果は同じで、フリーズしました。
リボンバーはダメじゃ、こりゃ。


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

英文のフォーラムも探しました。
全く同じ質問がありました。
http://www.experts-
exchange.com/Programming/Languages/.NET/Visual_CPP/Q_26502760.html


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

OSはWINDOW 7ですか?

 WINDOW 7の64bit版を試験的に使っていますが、Windowの更新が思ったより多かった
ですね。
 そのうちSP1がでそうな雰囲気です。
 VC2010がないのでリボンバー関連のソフトは分かりませんが、現状のバグもしくは、
仕様なのかも知れませんね。


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

ITO様、有り難うございます。

> OSはWINDOW 7ですか?

はい、WINDOWS 7 です。
!!!
ビルドした実行ファイルを Windows XP で動作させてみました。
何の問題もありません。フリーズしないのは勿論、システムメニューのXボタンを押し
ても、プレビューが閉じます。

「リボンバー」は VS2010 の新機能として「売り」にしているくせに、マイクロソフト
め! 何たるお粗末。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

ん?
 そういえば、未だWINDOWS 7 のSDKって組んだことないので分かりませんが、
印刷プレビューの表示部分をSDKで組むのは可能ですか?
うまくいくかどうか分からないのでおすすめできません。
昔、WINDOWS9XからWINDOWS2000に切り替わり時にマイクロソフトから
  「印刷のダイアログ部分をSDKで組んでください。」
 といわれたことがあります。


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

SDKは、ほとんどやったことがありません。
リボンバーって、SDKで組めるのでしょうか? すごく厄介なことでしょう。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

> リボンバーって、SDKで組めるのでしょうか? すごく厄介なことでしょう。
確かにそうですね。
 もともと、Frameworkの関数で動いているものをMFCで組めるようにした可能性も
ありますね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました