MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net

1デフォルトの名無しさん2016/09/21(水) 00:20:48.44ID:OfO+mYkd
Microsoft Foundation Classライブラリ専用スレです。

■MFC相談室 mfc21d.dll■
http://hibari.2ch.net/test/read.cgi/tech/1250919279/l50
■MFC リファレンス■
http://msdn.microsoft.com/ja-jp/library/d06h2x6e(v=VS.100).aspx

285デフォルトの名無しさん2018/10/16(火) 10:55:52.13ID:gOw5Bgha
>>284
VS2008のNewControlsサンプルではそういう動作は見られないけど、
再現できるサンプルでもありますか?

286デフォルトの名無しさん2018/10/16(火) 20:59:43.03ID:KuFMVrck
>>285
わざわざ試していただいてありがとうござます!
こちらの環境、Windows10、VisualStudio2017なのでこれが原因っぽいです。
古いVisualStudioで試してみます。
業務アプリなのでサンプルは出しにくいです。申し訳ないです。

2872812018/11/03(土) 20:11:07.69ID:FHfXrfBW
>>282
おお、今頃ですが、ありがとうございました
これでAlt+Tabでもモードレスウインドウが出てくるようになりました !

288デフォルトの名無しさん2018/11/03(土) 20:17:24.87ID:FHfXrfBW
今まで、VC++6.0でずっとやってきました。特にそれで問題なかったからですが、意を決して、
Visual Studio 2017をインストして、古いソースコードを移植しようと思っています

VS2017に古いVC++6.0のdswファイルを読ませたのですが、うまくj変換できないようですが、どうしたら良いでしょうか
VC++6.0からの変換は出来ませんか

289さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 20:20:22.32ID:Z2+VfrEc
ワークスペースはソリューションに変わった。新しくソリューションファイルを作って、そこにC/C++のファイルを追加してビルドだ。

290デフォルトの名無しさん2018/11/03(土) 20:48:27.94ID:FHfXrfBW
インクルードファイルとかいろいろエラーがたくさん出てきたよ
これ相当無理っぽい???

291さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 20:50:34.93ID:Z2+VfrEc
>>290
エラー貼れ

292デフォルトの名無しさん2018/11/03(土) 21:08:57.06ID:FHfXrfBW
取りあえず、簡単に比較するために、VC++6.0でMFCのSDIのデフォルトを作りました
それと比較するため、VS2017でC++のWindowsデスクトップのデスクトップアプリケーションのデフォルトを作りました

すると、VS2017の方はMFC自身を使わないバージョンなのかな、CMainFrmとかIMPLEMENT_DYNCREATEとかなくて
VC6.0++のMainFrm.cppとかを2017の方に持ってきてコンパイルしたらCMainFrmが定義されてないとか
ずらっとたくさん出てきます

293さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:11:31.59ID:Z2+VfrEc
MFCに対応したプロジェクト/ソリューション設定じゃないとダメかも

294デフォルトの名無しさん2018/11/03(土) 21:15:37.09ID:FHfXrfBW
>>293
VS2017で、それを探してるのですが見つからないのですよ
MFCには対応してるのですよね。2015かそれ以前にはすでに対応してると聞いていたのですが
MFCを使ったデフォルトのコード生成はしてくれないとか??? w

295さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:19:34.89ID:uOx37ouV
Visual C++の中にMFCがある。Visual C++という項目がなければ、インストールが間違っている。

296デフォルトの名無しさん2018/11/03(土) 21:23:19.86ID:FHfXrfBW
>>295
メニューのファイルから新規作成、プロジェクトを選ぶと、その中にVisual C++はちゃんとありますよ
で、そこでWindowsデスクトップアプリケーションを選んでデフォルトを作ると、コードはSDKみたいなコードを吐きます
で、Windowsデスクトップウィザードってのがあったので、今これを選択してみたのですが、
アプリケーションの種類をコンソールにすると、その右にあるMFCのチェックボックスが有効になるのですが

297デフォルトの名無しさん2018/11/03(土) 21:24:15.77ID:FHfXrfBW
続き
Windowsアプリケーションってのを選ぶと、MFCのチェックボックスが使用不可になってしまいます

298さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:27:13.99ID:uOx37ouV
MFCアプリが作れないなら、インストールで追加するしかないぜ。

299さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:29:11.91ID:uOx37ouV

300デフォルトの名無しさん2018/11/03(土) 21:29:36.23ID:FHfXrfBW
おいおい、なんだこれ
VS2017で、新規作成、プロジェクトで、Windowsデスクトップウィザードで
コンソールアプリケーションでMFCをチェックしてデフォルトのコードを自動生成してみました
そしてソリューションのビルドしたら、CWinAppが定義されてないとかエラーがわんさか出てきたぞ

おいおい、デフォルトの自動生成コードもビルド出来ないじゃん

301さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:30:32.78ID:uOx37ouV
左下、「探しているものが見つからないとき」

302デフォルトの名無しさん2018/11/03(土) 21:33:48.34ID:FHfXrfBW
>>299
おや、そこが違う。 私のは、

visual C++の下に
Windowsデスクトップ
クロスプラットフォーム
MFC/ATL
テスト
その他
Extensibility

ってなってて、 MFC/ATLのところは
ATLプロジェクト
ってのだけがあります

303デフォルトの名無しさん2018/11/03(土) 21:37:10.59ID:FHfXrfBW
何かインストを失敗してるのかなあ。 あるいはインストするときに何をインストするのかチェックがあったんだが
それを間違えてるのか。 でも俺がチェックをしなかったのはモバイル関係のところくらいだったんだよねえ

304さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:38:58.82ID:uOx37ouV

305さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:40:59.04ID:uOx37ouV
VS2017は頻繁に変更されるもんだから、ちょっと混乱してるみたい。

306デフォルトの名無しさん2018/11/03(土) 21:48:14.06ID:FHfXrfBW
>>304
ありがとう。
右側の概要ってとこが、私のでは、インストールの詳細になっていて、
MFCとATLのサポート
ってのが私のでは、
x86用とx64用のVisualC++ATL
x86用とx64用のVisualC++MFC
ってわかれていて、ATLの方にだけデフォルトではチェックが入っていてMFCの方のチェックは
デフォルトでは外れていました。

チェックして再インストしてみますねw

307さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 21:52:26.12ID:uOx37ouV
インストよりもインスコの方が俗語の通りがいい。

308デフォルトの名無しさん2018/11/03(土) 22:01:09.50ID:FHfXrfBW
ただいま、 再インスコ中です
みなさん、 VS2017をインスコするときは、

MFC はデフォルトでは入らない !!!

ことがわかりました
VS2017をインスコするときは、注意しましょう
インスコするとき、オプションをチェックすると入ります、 多分。今やってるところ

309さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 22:07:33.60ID:uOx37ouV
Qiitaの記事、結構役に立ってるじゃん。責任ある情報技術者なら、Qiitaに記事を書ける程になってもらいたいね。

310 ◆QZaw55cn4c 2018/11/03(土) 22:11:49.30ID:NHF1sC9n
>>309
qitta って査読制ですか?

311デフォルトの名無しさん2018/11/03(土) 22:16:25.81ID:FHfXrfBW
出来ました。
MFCのインストがちゃんとできて、
MFCアプリケーションでデフォルトのMDI作ってみたら、 あら、すげえ

クラスビューなんかが出てくるのねw

312さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 22:18:01.50ID:uOx37ouV
最低限の審査はあると思うぞ。
詳しくは規約を。

313デフォルトの名無しさん2018/11/03(土) 22:30:48.57ID:FHfXrfBW
おや、新しいバージョンだと、
strcpy( a, b )
で、b に CSringとか出来ないんだね。 前の古いバージョンでは出来たのに

CString で返す関数も、char a[10] とかで宣言したのを、古いバージョンでは、retuen a
って出来たんだが、新しいバージョンではエラーになる。 一旦
CString ret;
ret = a;
ってやって、return ret;
ってやったらエラーが消えた

いろいろと細かい修正しないとダメみたいだねえ

314さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/03(土) 22:35:23.28ID:uOx37ouV
暗黙の型キャストのあいまいさが嫌いな人が存在するらしい。

315デフォルトの名無しさん2018/11/03(土) 22:42:34.44ID:FHfXrfBW
>>314
いろいろとありがとう。 今日はとりあえずここまでにしておきます

316デフォルトの名無しさん2018/11/04(日) 14:43:10.46ID:5RY1Lh2I
>>313
きも

317デフォルトの名無しさん2018/11/04(日) 21:56:04.47ID:GQHsCvIR

318デフォルトの名無しさん2018/11/05(月) 10:05:31.23ID:iQgkSIfQ
>>317
これありがとう。LPCWSTRの関係で、めっちゃ詰まってました

319デフォルトの名無しさん2018/11/05(月) 10:35:49.97ID:cQLaagjN
>>313
そもそも、CStringはTCHARを扱うクラスなのに、
_tcscpyではなくstrcpyを使っていたのが間違い

320デフォルトの名無しさん2018/11/05(月) 12:07:09.35ID:iQgkSIfQ
>>319
今は、_tcscpyを使ってもエラーが出るけどな

321デフォルトの名無しさん2018/11/05(月) 12:15:02.40ID:mvX3Qu15
>>320
それはエラーではなくてセキュリティ上の警告では

322デフォルトの名無しさん2018/11/05(月) 12:20:01.12ID:iQgkSIfQ
>>321
そうです。 _sを付けたのを使えって
警告の設定を変更しないとエラーになってコンパイルが通りません
それをプロパティの設定で、Unicodeからマルチバイトに切り替えてコンパイルしたんだけど、どうも
Unicodeのままでうまく切り替わらないようなんですよねえ。 どうなってるのか。 今は時間がないので
またあとでやってみますが

323デフォルトの名無しさん2018/11/05(月) 12:26:42.35ID:mvX3Qu15
>>322
警告だから、それに関してはコンパイルは通る。
他の場所がコンパイルエラーになっているだけかと。

324デフォルトの名無しさん2018/11/05(月) 16:42:29.67ID:Lc5ZfJaA
VS2017ですが、新規作成で、MFCアプリケーションで作った時、
新規作成途中に出てくるSDLのチェックをつけて作成したときと、はずして作成したときと両方してみました

すると、SDLつきの時は、_tcscpyはエラーになってコンパイルできませんが、
SDLをはずして新規作成したのものは、エラーにならずにコンパイルできて実行できます
デフォルトはSDLつきなので、コンパイルできません

次に、新規作成して出来上がったプロジェクトで、
メニューのプロジェクトから一番下のプロパティに入って、構成プロパティ、C/C++の全般にある
SDLチェックというところで、はい(/sdl) いいえ(/sdl-)を切り替えてやってみると、
この切り替えが動作せず、SDLのオン、オフが効きません。 プロジェクトの新規作成のときに設定したものが
残っていて、あとからここのプロパティで変更ができないようです

同じように、プロパティの構成プロパティの全般で、文字セットがデフォルトではUnicode文字セットを使用する
になってるのですが、これをマルチバイト文字セットを使用するにしても
Unicodeのままでマルチバイトにならないようです

バグですかねえ?

325デフォルトの名無しさん2018/11/05(月) 17:14:38.42ID:o5QGnfIr
新規のプロジェクトにマルチバイト使うのやめようぜ

326デフォルトの名無しさん2018/11/05(月) 20:46:10.49ID:fgA77wSW
>>324
VisualStudioCommunity2017で試したが、普通に設定が反映されたぞ。
DebugとRelease、x86とx64で設定が別なのに気づいてないとかじゃないか?

327デフォルトの名無しさん2018/11/05(月) 21:22:43.21ID:Lc5ZfJaA
>>326
できました。多分それです。ありがとうございました

コードの編集画面の上にあるコンボボックスを見ると、Debugとx86になってるのですが、
その状態でプロパティを開くと、なぜか、x64になってました。
なのでプロパティ画面で、上にあるプラットフォームをアクティブ(Win32)に変えると、画面がおかしくなって
びっくりしましたが、画面の再描画ができなかっただけなようで、再びプロパティ画面を出して
アクティブ(Win32)を確認してから、マルチバイトやSDLの変更をしたら、ちゃんと動いたようです

プロパティ画面を開くときは、連動してないので必ず確認してから変更しないといけないということですね

ちなみになんとか誤魔化せないかと思って、 stdafx.h の最初に
#undef UNICODE
#undef_UNICODE
ってやってみたら、コンパイルまでは全部のcppファイルで出来たのですが、リンクで未解決エラーが出て
出来ませんでした

328デフォルトの名無しさん2018/11/05(月) 22:12:55.20ID:fgA77wSW
さすがにそれはおかしいのでVS2017再インストール推奨

329デフォルトの名無しさん2018/11/05(月) 22:23:54.08ID:Lc5ZfJaA
>>328
マジですか。 再インストしようかな

330デフォルトの名無しさん2018/11/05(月) 23:46:35.28ID:2AHpASAJ
_T() ?

331デフォルトの名無しさん2018/11/06(火) 11:56:33.16ID:rqFrnjhJ
>ちなみになんとか誤魔化せないかと思って

>リンクで未解決エラー

MessageBoxA と MessageBoxW とかを自分で書き分けてみると解決するはず

332デフォルトの名無しさん2018/11/11(日) 14:34:30.31ID:vUUak6BF

333デフォルトの名無しさん2018/11/11(日) 17:52:29.57ID:96wp+TZd
しねNG

334デフォルトの名無しさん2018/12/07(金) 17:05:15.69ID:meFvbPH8
MFCのツールバーって、リバーのように、「ツールバーを固定する」の動作はできませんかね。
ユーザーがコマンドを選択したら、その場所から動かすことができなくなるようにしたいのですが。

335デフォルトの名無しさん2018/12/08(土) 16:28:45.38ID:S81QsiH/
subclass化してメッセージループトラップしてmoveをにぎりつぶす

新着レスの表示
レスを投稿する