MFCスケルトンに新規ファイルを追加する – プログラミング – Home

MFCスケルトンに新規ファイルを追加す...
 
通知
すべてクリア

[解決済] MFCスケルトンに新規ファイルを追加する


north
 north
(@north)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

VC++を初めて1ヶ月のnorthと申します。
現在MFCのダイアログベースを使用して、あらかじめ用意されたスケルトンプログラムに新規で
ファイルを挿入させ、そこに自分で作成した関数を書きたいと思っています。試しに、ボタンが押
されたらエディットボックスに数字が出力されるようなプログラムをつくってみました。
使用環境・OS:windows98se・ソフト:VC++6.0
MFC/ダイアログベース
プロジェクト名→textout1
ファイル→新規作成C++ソースファイル「keisan.cpp」
エディットボックス×1
ボタン×1:classwizardで関数の追加→OK。ID:IDC_EDIT1

BOOL keisanda(CString ss);
void CTextout1Dlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CString ss,takea;

ss=123;
takea=keisanda(ss);
}
////////////////////////////////////////
以下新規追加作成した関数.ファイル名:keisan.cpp
///////////////////////////////////////
#include stdafx.h
#include textout1.h
#include textout1Dlg.h
BOOL keisanda(CString ss)
{
CEdit* myED1=(CEdit*)GetDlgItem(IDC_EDIT1);
CString s1;

s1=ss+ss;
myED1->SetWindowText(s1);
return TRUE;
}

\textout1\keisan.cpp(8) : error C2660: 'GetDlgItem' : 関数が不正な 1 個の実引数を
ともなって呼び出されました。cl.exe の実行エラー

となってしまいます。このエラーは何かのヘッダファイルをインクルードしてなかったり、もしく
は、ダイアログに文字を出力させる場合はスケルトンで作成されたファイルの中でのみで書かなけ
ればいけないといったようなことなのでしょうか?
勉強不足な為質問の仕方自体おかしいかもしれませんが、どうぞご教授よろしくお願いいたしま
す。m(__)m


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

関数keisanda()は、どのクラスにも属さない関数として定義しているため、
その中で使用されるGetDlgItem()は、CWnd::GetDlgItem()ではなく
::GetDlgItem()(WindowsAPI)として解釈されています。
MSDNで調べればわかるとおり、両者は同じ名前でも別物で、引数の数も異なります。

kensakuda()は、CTextout1Dlgのメンバ関数として定義してしまえばよいのでは?


返信引用
north
 north
(@north)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

sugarさんどうもありがとうございました!!
言われたとおりにkeisanda()関数をCTextout1Dlgのメンバ関数として定義したらエラーがなく
なり、文字の出力もできました。3日もこのエラーで悩んでいたので、文字がエディットボック
スに出力されたときは感動ものでした。本当に本当にありがとうございました。m(__)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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