IEコンポーネント

[戻る]
まいまい 2005/09/01(木) 13:11:59
以前お世話になったものです。
今eMbedded Visual C++4.0を使っています。
それで以前インターネットエクスプローラーのように
ブラウザのような 普通にネットの画面を表示できる物を作る質問をしました。

それで今回MFCが良いという話でしたので

新規作成 → 
void CHtmlView::OnInitialUpdate()  クラスの作成 →
Navigate2(_T("http://wwwほにゃらら"),NULL,NULL);

と作成した所、    error C2065: 'Navigate2' : undeclared identifier
とエラーがでてしまいました。これはNavigate2が無いと言う事でしょうか?
どうしたらよいのでしょうか。
他のやり方が良いのでしょうか。

tib 2005/09/01(木) 13:25:23
この書き方では肝心の所が読み取れないのですが、CHtmlViewもしくはCHtmlViewから派生
させたクラスのメソッドとして呼んでいないのではないでしょうか。

PATIO 2005/09/01(木) 13:31:33
下手に省略せずにまとまったコードを載せた方がいいと思いますよ。
特に出ているエラーの内容からすると実際のコードを見ないと
何ともいえないような感じのないようですし。

まいまい 2005/09/02(金) 11:49:13
CHTmlViewの全てと言うとこういう事ですか??

// htmlView.cpp : implementation of the CHtmlView class
//

#include "stdafx.h"
#include "html.h"

#include "htmlDoc.h"
#include "htmlView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHtmlView

IMPLEMENT_DYNCREATE(CHtmlView, CView)

BEGIN_MESSAGE_MAP(CHtmlView, CView)
    //{{AFX_MSG_MAP(CHtmlView)
        // NOTE - the ClassWizard will add and remove mapping macros here.
        //    DO NOT EDIT what you see in these blocks of generated code!
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHtmlView construction/destruction

CHtmlView::CHtmlView()
{
    // TODO: add construction code here

}

CHtmlView::~CHtmlView()
{
}

BOOL CHtmlView::PreCreateWindow(CREATESTRUCT& cs)
{
    // TODO: Modify the Window class or styles here by modifying
    //  the CREATESTRUCT cs

    return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CHtmlView drawing

void CHtmlView::OnDraw(CDC* pDC)
{
    CHtmlDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

    // TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CHtmlView diagnostics

#ifdef _DEBUG
void CHtmlView::AssertValid() const
{
    CView::AssertValid();
}

void CHtmlView::Dump(CDumpContext& dc) const
{
    CView::Dump(dc);
}

CHtmlDoc* CHtmlView::GetDocument() // non-debug version is inline
{
    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHtmlDoc)));
    return (CHtmlDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CHtmlView message handlers

void CHtmlView::OnInitialUpdate() 
{
    CView::OnInitialUpdate();
    
    // TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
//    Navigate2(_T("http://www-kobayashi.ctrl.titech.ac.jp/~mtanaka/vc/HelloWorld/
"),NULL,NULL);
}

RAPT 2005/09/02(金) 23:02:21
…もしかして、自作クラスとして、CHtmlViewクラスを定義している?

普通はMFCだったら、CHtmlViewクラスの *派生クラス* を作成し、
その中で CHtmlView::Navigate2() を呼び出します。

RAPT 2005/09/02(金) 23:03:27
もしくは、別のクラス内で、CHtmlView をメンバに持って操作する。

まいまい 2005/09/06(火) 18:17:10
あのう、お恥ずかしい話なんですが
派生クラスがコピーってのはわかったんですが
どれをどのようにコピーするのかがよくわかりません。
ご教授お願いできないでしょうか

まいまい 2005/09/06(火) 18:20:48
クラス名の後に、: とコピー元のクラス名を付けてクラスを宣言します。
という事なのですが、

CHtmlViewクラスの *派生クラス* を作成というのは
例えば
class maimai :CHtmlView()
で
その中で  
Navigate2(_T("http://www-kobayashi.ctrl.titech.ac.jp/~mtanaka/vc/HelloWorld/
"),NULL,NULL);   と記述するのでしょか??

まいまい 2005/09/06(火) 18:23:07
あっ!!
その前に どうもCHtmlViewクラスがないようなのですが
新規作成のさいにCHtmlViewを作るような操作があるのでしょうか。

dairygoods 2005/09/06(火) 19:38:50
そもそもサポート外なのでは?
http://forums.belution.com/ja/vc/000/254/04.shtml

PATIO 2005/09/07(水) 14:07:46
WindowsCEの場合、Windowsのサブセットと言う位置づけなので全てのコンポーネントが
そろっているわけではないし、APIとかMFCとかも全てサブセットと言う位置づけだったは
ずです。
なのでWindowsCEでの開発はかなり制約が大きいですし、そもそも組み込み機器の場合は
リソースに制約があるのでPCのようにメモリを湯水のように使うロジックではきちんと
動作する事が期待できません。
この辺は、最初に設計する時点から考慮に入れておかないと厳しい事になる場合が多いです。
また、組み込み機器と言う性質上、APIの全てがMSから提供されているわけではないので
ものによっては実装依存と言う事もあります。
最悪の場合は、ダミー実装(中身は空)なんてのもありえますし。
この辺は自分がターゲットにしている機器で何が出来て何が出来ないのかきちんと把握す
る必要があります。

古いスレッドには追加発言できません。