CMainFrameからCPppView::OnFilePrintPreview()を呼びたい

このQ&Aのポイント
  • 環境はWIN98 VC++6.0 MFCです。以下のコードで左クリックにて印刷プレビューが開きます。
  • しかし、CMainFrameから呼び出すとエラーが発生します。どうすればCMainFrame内で使えるようになりますか?
  • MainFrm.cppには 'OnFilePrintPreview' の宣言が必要です。
回答を見る
  • ベストアンサー

CMainFrameからCPppView::OnFilePrintPreview();を呼びたい。

環境はWIN98 VC++6.0 MFCです。 以下のようなコードで左クリックにて印刷プレビューが開きます。 void CPppView::OnLButtonDown(UINT nFlags, CPoint point) { CPppView::OnFilePrintPreview(); CView::OnLButtonDown(nFlags, point); } これをCMainFrameから呼びたくて、以下のようにしました。 #include "pppView.h" void CMainFrame::OnMenuitem32771() { CPppView::OnFilePrintPreview(); } すると以下のようなエラーが出てしまいます。 どうすればCMainFrame内で使えるようになりますか? よろしくご指導ください。 MainFrm.cpp c:\windows\デスクトップ\ppp\pppview.h(21) : error C2143: 構文エラー : ';' が '*' の前に必要です。 c:\windows\デスクトップ\ppp\pppview.h(21) : error C2501: 'CPppDoc' : 識別名を宣言するのに、型が指定されていません。 c:\windows\デスクトップ\ppp\pppview.h(21) : error C2501: 'GetDocument' : 識別名を宣言するのに、型が指定されていません。 C:\WINDOWS\デスクトップ\ppp\MainFrm.cpp(113) : error C2248: 'OnFilePrintPreview' : protected メンバ (クラス 'CView' で宣言されている)にアクセスできません。 c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(3660) : 'OnFilePrintPreview' の宣言を確認してください。 C:\WINDOWS\デスクトップ\ppp\MainFrm.cpp(113) : error C2352: 'CView::OnFilePrintPreview' : 静的でないメンバ関数の中で呼び出しが正しくありません。 c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(3660) : 'OnFilePrintPreview' の宣言を確認してください。 cl.exe の実行エラー

  • mk1234
  • お礼率94% (1832/1940)

質問者が選んだベストアンサー

  • ベストアンサー
noname#5537
noname#5537
回答No.1

PostMessage(WM_COMMAND, ID_FILE_PRINT_PREVIEW);

mk1234
質問者

お礼

回答ありがとうございます。 こう言う時にPostMessage()を使うのですね。 あれからいろいろ考えて非常に単純なことですが、ウィザードを使ってクラス名をCMainFrameにしてオブジェクトIDでID_FILE_PRINT_PREVIEW選ぶだけで出来ました。 お騒がせしました。

関連するQ&A

  • atlbase.h と afxwin.hの同時定義

    こんにちは、honiyonです。  VC++で、MFCを用いてNT用のサービスプログラムを作成しています。  ATL COM AppWizardで、サービスアプリケーションを選択したので、atlbase.hが StdAfx.hに宣言されています。  CString型を使いたいので、該当cppファイルに、afxwin.hをincludeしました。 何故か StdAfx.hより先に afxwin.hをincludeすると、CStringの定義が正しくされないようなので、後にもってきています。 #include "StdAfx.h" #include <AfxWin.h">  この状態だと、atlbase.h, AfxWin.h双方で windows.hをincludeしているようで、AfxWin.hが参照する afxv_w32.hで、以下のようなエラーが発生します。 fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>  この問題を回避するために、atlbase.hやAfxWin.hを改造して回避出来そうですが、それは今後別のものを作る時の支障になりそうなので避けたいです。  その他の方法で回避する事は出来ないでしょうか?  宜しくお願いします(..

  • 左ボタンアップを作動するようにするには

    環境 VC++6.0 MFC 久々にさわってほとんど忘れてしまってるので、 教えて下さい。 タイトルバー無しのウィンドウを動かせるように、左ボタンダウン時に以下のように、PostMessageを追加しました。 そうすると、左ボタンアップが動かなくなったのですが、どうすれば動くようになるのですか? void CABCView::OnLButtonDown(UINT nFlags, CPoint point) { PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); CView::OnLButtonDown(nFlags, point); } void CABCView::OnLButtonUp(UINT nFlags, CPoint point) { AfxMessageBox("9"); CView::OnLButtonUp(nFlags, point); }

  • VC++2005でLAPACKを使用するとエラーが出る

    タイトルの通りなのですが,VC++2005でLAPACKを使用するとエラーが出て,困っています. vc\include\clapack.h(1486) : error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。 vc\include\clapack.h(1486) : error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。 vc\include\clapack.h(1486) : warning C4091: '' : 変数が何も宣言されていないときは、'char' の左辺を無視します。 vc\include\clapack.h(1486) : error C2143: 構文エラー : ';' が ',' の前にありません。 vc\include\clapack.h(1486) : error C2059: 構文エラー : ',' vc\include\clapack.h(1486) : error C2059: 構文エラー : ')' vc\include\clapack.h(2861) : error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。 vc\include\clapack.h(2861) : error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。 vc\include\clapack.h(2861) : warning C4091: '' : 変数が何も宣言されていないときは、'char' の左辺を無視します。 vc\include\clapack.h(2861) : error C2143: 構文エラー : ';' が ',' の前にありません。 vc\include\clapack.h(2861) : error C2059: 構文エラー : ',' vc\include\clapack.h(2861) : error C2059: 構文エラー : ')' 主にhttp://sakura.math.kyushu-u.ac.jp/wiki/index.php?%E8%A8%88%E7%AE%97%E6%A9%9F%E8%A8%AD%E5%AE%9A%2FCLAPACKを参考にして作成しているのですが・・・上手くいきません.詳しい方,ご教授お願い致します.

  • ソースファイルの分割について

    a.h クラスの定義 a.cpp クラスのメンバ関数の定義 b.h #include "a.h" クラスの定義 b.cpp クラスのメンバ関数の定義 ----c.cpp---- #include "a.h" #include "b.h" a.hで定義したクラスの宣言 b.hで定義したクラスの宣言 メインの処理 ----------------------------------------- b.cppで定義しているクラスのメンバ関数にて a.cppで定義したクラスのメンバ変数にアクセスしたいのです。 どうするのが一番良いのでしょうか? a.cppにメンバ変数を返すだけの関数を定義してb.cppでc.cppで宣言したa.hのクラスを extern宣言してみたのですがエラーが出てコンパイルが通らないです。

  • SendMessage();の使い方

    よろしくお願いします。 <環境> WIN98 VC++6.0 MFC SDIにてウィンドウをクリックすると、モードレスダイアログ1とモーダルダイア ログ2が開くようにしました。 void CMy222View::OnLButtonDown(UINT nFlags, CPoint point) { CDlg1 *dlg; dlg = new CDlg1; dlg->Create(IDD_DIALOG1); dlg->ShowWindow(SW_SHOW); CDlg2 dlg2; dlg2.DoModal(); CView::OnLButtonDown(nFlags, point); } ダイアログ2のボタン押し下げにてダイアログ1のボタン1を押し下げたいのですが 、どのようにすれば実現できるのでしょうか? void CDlg2::OnButton2() { SendMessage(); //■ここの書き方が分かりません CDialog::OnOK(); } 宜しくお願いいたします。

  • VC++ のコンパイルエラーについて

    現在、解説書に記載されているコードをVC++でコンパイルできるか試しながらC++を独習中です。エラーの原因と対応が分からず困っております。どなかたご教示よろしくお願いします。 日付を表示するプログラムで米国表示か英国表示にするか列挙型の宣言と静的メンバーをヘッダーファイルに記載し、フラッグの定義と初期化をするプログラムをコンパイルしました。 ---クラス定義(ファイル名:date.h)--- #include <iostream.h> class date{ ----------------------- enum Lang {USA, UK}; static Lang format; public: ----------------------- }; ---メンバー関数定義(ファイル名:date.cpp)--- #include <string.h> #include <ctype.h> #include <stdlib.h> #include "date.h" ----------------------- Lang date::format = USA; ----------------------- ---------------------------------------- このファイルをコンパイルした結果、下記のエラーメッセージが表示されました。 エラー発生箇所は上記「Lang date::format = USA;」でした --------------------構成: date - Win32 Debug-------------------- コンパイル中... date.cpp date.cpp(17) : error C2501: 'Lang' : 識別名を宣言するのに、型が指定されていません。 date.cpp(17) : error C2239: 無効なトークン 'tag::id' が 'Lang' の宣言の後にあらわれました。 date.cpp(17) : error C2321: 構文エラー : 予期しない 'date::format' です。 cl.exe の実行エラー date.obj - エラー 3、警告 0 ----------------------------------------------------------------------------- エラーの原因と解決方法が分かりません。 よろしくお願いします。

  • VC++.netの初心者です。ShowCursor()の記述の仕方がわ

    VC++.netの初心者です。ShowCursor()の記述の仕方がわかりません こんにちは、VC++.netの初心者です フォーム上でカーソルを消したいのでいろいろ試したのですが ShowCursor() の関数を使えば良い所までわかったのですが うまく、ビルド出来ないで困っています #include "windows.h" とcppに書き足して、イベントの発生する文に ShowCursor(false); と記述したのですが : error C3861: 'SetCursorPos': 識別子が見つかりませんでした と、エラーが出てしまいます 何か定義しないとだめなのでしょうか? 具体的にどのように記述すれば良いのでしょうか ヒントになるものでも良いので よろしくお願いします。 

  • VC++ 6.0 でのCMainFrameクラスの作り方を教えてくださ

    VC++ 6.0 でのCMainFrameクラスの作り方を教えてください OSはWindows XPです。 MainFrame.cpp MainFraem.h ファイルはどちらもない状態です。 新規作成方法を教えてください。

  • VC++2005で言語拡張切ってみたら大量のエラー

    VC++2005にて、言語拡張を切る(/Za)と、以下のようなエラーが36個ほど出ます。 ~略~\platformsdk\include\winnt.h(477) : error C2467: 無名の 'struct' の宣言が誤っています。 ~略~\platformsdk\include\winnt.h(495) : error C2467: 無名の 'struct' の宣言が誤っています。 そして、コンパイルできなくなります… なんというか、これはマイクロソフトの陰謀ということでいいのでしょうか? 報告例) http://agpg.seesaa.net/article/12818703.html

  • 構文エラーについて教えてください

    申し訳ありません、初心者なので教えてください。 VC2005を使ってプログラミングをしております。 エラーは、以下のようになっております。 見づらいと思いますが、ご親切な方、よろしくお願いします。 申し訳ありません、初心者なので教えてください。 VC2005を使ってプログラミングをしております。 エラーは、以下のようになっております。 見づらいと思いますが、ご親切な方、よろしくお願いします。 c:\program files\microsoft platform sdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\dxlib.h(1529) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(6) : error C3872: '0x3000': この文字を識別子で使用することはできません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C3872: '0x3000': この文字を識別子で使用することはできません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(7) : error C3872: '0x3000': この文字を識別子で使用することはできません c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(8) : error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。 c:\documents and settings\yu-ki-pippi\デスクトップ\dxlib_vc\サンプルプログラム実行用フォルダ\test.cpp(8) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ブラウザ情報ファイルを作成しています... Microsoft Browse Information Maintenance Utility Version 8.00.50727 Copyright (C) Microsoft Corporation. All rights reserved. ビルドログは "file://c:\Documents and Settings\yu-ki-pippi\デスクトップ\DxLib_VC\サンプルプログラム実行用フォルダ\Debug\BuildLog.htm" に保存されました。 DxLib - エラー 7、警告 2 #include "Dxlib.h" struct CharaData{ int x; //左上座標 int y; int ghandle; //画像ハンドル int life;   //ライフ int image_w; //イメージの大きさ int image_h; int bounds_w; //判定領域の大きさ int bounds_h; }; *エラーをクリックするとこの部分でエラーが出てしまいます。

専門家に質問してみよう