1

組み込みのVisualC++4でWindowsCE6.0用のアプリケーションを開発しています。

プラットフォーム「PocketPC2003」を使用して、次の簡単なコードで簡単なコンソールアプリケーション(WCEアプリケーション)を作成しました。

#include "stdafx.h"
#include <stdio.h>

int WINAPI WinMain( HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPTSTR    lpCmdLine,
                    int       nCmdShow)
{

    FILE * pFile; 
    char c; 
    pFile=fopen("alphabet.txt","wt");   
    for (c = 'A' ; c <= 'Z' ; c++) {
        putc (c , pFile);
    }   
    fclose (pFile); 
    return 0;
}

この単純なコードは私のWinCE6.0デバイスで正しく機能し、「alphabet.txt」が作成されます。

しかし、ダイアログベースのプロジェクト(WCE MFC AppWizard(exe))を作成し、ダイアログウィンドウを初期化する前にこのコードをプロジェクトのメインクラスに配置すると、機能せず、「alphabet.txt」ファイルが作成されず、アプリが作成されます。メッセージなしでは開きません。

BOOL CFffffApp::InitInstance()
{
    // Standard initialization
    // If you are not using these features and wish to reduce the size
    //  of your final executable, you should remove from the following
    //  the specific initialization routines you do not need.


    FILE * pFile; 
    char c; 
    pFile=fopen("alphabet.txt","wt");   
    for (c = 'A' ; c <= 'Z' ; c++) {
        putc (c , pFile);
    }   
    fclose (pFile); 


    CFffffDlg dlg;
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
        // TODO: Place code here to handle when the dialog is
        //  dismissed with Cancel
    }

    // Since the dialog has been closed, return FALSE so that we exit the
    //  application, rather than start the application's message pump.
    return FALSE;
}

なぜそれが機能しないのですか?どうすればこの問題を解決できますか?

前もって感謝します、

4

2 に答える 2

4

ターゲットデバイスにはMFCランタイムがありますか?それらはまた、あなたのアプリが構築されたものでなければなりません。eVC 4.0はmfcce400.dllを使用していたことに注意してください。これは、Platform Builder 6.0にはまったく付属していません(実際、IIRCMFCはCE6.0 OSカタログにも含まれておらず、Studio '08はデバイスに新しいMFCバージョンを使用していました)。mfcce400バイナリ(eVC SDKに含まれています)をアプリと一緒に配布する必要があります。

于 2012-06-10T00:04:15.397 に答える
-1

私のC++は非常に錆びていますが、それでもコントロールを初期化する必要があります。

CFffffDlg dlg = new CFffffDlg(); // << Initialize the dlg
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)

右?必要なのはそれだけですか?

于 2012-06-09T20:57:42.553 に答える