電子書籍の厳選無料作品が豊富!

当方、只今C言語でWin32APIを呼び出し、Windowsアプリを開発中です。
そこで質問なのですが、以下の手順で作業した場合、抽出される実行ファイルが実行できません。

どなたかお分かりになる方、助言の方よろしくお願いします。

1.名前、住所をリッチテキストに入力し、OKボタンを押下後、メッセージボックス  にて”○○さんの住所は○○です”と表示されるソースコードを"bcc32 -W source.cpp"でコンパイル。

2.BCCFormで作成したリソースファイルを"brc32 dialog.rc source.exe"で結合。

3.source.exeを実行するが、動作しない。

ちなみに環境はWindowsXPSP3です。
下記にまず、ソースコードを表示します。

/* ソース */
/* ファイル名 source.cpp */
#if 1
/* ダイアログボックスを出す */
#include <windows.h>
#include "Resdialog.h"

BOOL CALLBACK MyDlgProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(
HINSTANCE hCurInst,
HINSTANCE hPrevInst,
LPSTR lpsCmdLine,
int nCmdShow)
{
DialogBox(hCurInst, "MYDLG", NULL, (DLGPROC)MyDlgProc);
return 0;
}

BOOL CALLBACK MyDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
char szBuf[128], szBuf1[64], szBuf2[64];

switch(msg){
case WM_COMMAND:
switch (LOWORD(wp)){
case IDCANCEL:
EndDialog(hDlg, IDCANCEL);
return TRUE;
case IDOK:
GetDlgItemText(hDlg, IDC_RICHEDIT102, szBuf1, (int)sizeof(szBuf1));
GetDlgItemText(hDlg, IDC_RICHEDIT103, szBuf2, (int)sizeof(szBuf2));
wsprintf(szBuf, "あなたの住所は%sで、氏名は%sです", szBuf1, szBuf2);
MessageBox(hDlg, szBuf, "ダイアログボックス", MB_OK);
return TRUE;
}
return FALSE;
}
return FALSE;
}
#endif

そして、リソーススクリプトです。

/* リソーススクリプト */
/* ファイル名 dialog.rc */
//-----------------------------------------
// BCCForm Ver 2.41
// An Easy Resource Editor for BCC
// Copyright (c) February 2002 by ysama
//-----------------------------------------
#include"Resdialog.h"

//----------------------------------
// ダイアログ (MYDLG)
//----------------------------------
MYDLG DIALOG DISCARDABLE 0, 0, 270, 117
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT
CAPTION "Form"
FONT 8, "MS 明朝"
{
CONTROL "名前", IDC_LABEL100, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 10, 10, 46, 18
CONTROL "住所", IDC_LABEL101, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 10, 41, 47, 17
CONTROL "", IDC_RICHEDIT102, "RICHEDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 88, 8, 159, 25
CONTROL "", IDC_RICHEDIT103, "RICHEDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 88, 40, 160, 24
CONTROL "OK", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 49, 85, 61, 18
CONTROL "Cancell", IDCANCELL, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 165, 84, 56, 18
}

そして、リソースヘッダです。

/* リソースヘッダ */
/* ファイル名Resdialog.h */
//-----------------------------------------
// BCCForm Ver 2.41
// Header File for Resource Script File
// Copyright (c) February 2002 by ysama
//-----------------------------------------
//---------------------
// ダイアログリソース
//---------------------
// ダイアログ MYDLG
#defineIDC_LABEL100100
#defineIDC_LABEL101101
#defineIDC_RICHEDIT102102
#defineIDC_RICHEDIT103103
#defineIDCANCELL105

//---------------------
// メニューリソース
//---------------------

//---------------------
// イメージリソース
//---------------------

//---------------------
// ストリングテーブル
//---------------------

//--------------------
// アクセラレーター
//--------------------

A 回答 (1件)

 こんばんは。



 当方はBCCに関しては良くわかりませんが、ダイアログIDの指定方法に問題があって、ダイアログ作成に失敗しているのでは。
 (理由は以下URLの7~8氏の回答を参考)
 http://oshiete1.goo.ne.jp/qa3251741.html

 DialogBox(hCurInst, "MYDLG", NULL, (DLGPROC)MyDlgProc);

 ではなく、

 DialogBox(hCurInst, MAKEINTRESOURCE(MYDLG), NULL, (DLGPROC)MyDlgProc);

 となるのでは。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!