ダイアログウィンドウにメニューバーを作るには?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
akindo
記事: 14
登録日時: 10年前

ダイアログウィンドウにメニューバーを作るには?

#1

投稿記事 by akindo » 10年前

Win32APIをいじっているのですが、ダイアログにメニューバーを表示する事ができません。

下記のサイトの方法を試してみたのですが、どうやらリソースの書き方が
現在の方式とあっていないようでそのままやるとエラーが出ます。
http://wisdom.sakura.ne.jp/system/winap ... win84.html

ネットで調べてみても、リソースエディタを使う方法ぐらいしか出てきません。
しかし、私の環境はVisual Studio Express 2013 for Desktopで
このリソースエディタを使う事が出来ません。
http://ppp-lab.sakura.ne.jp/win32c/028.html
http://www.g-ishihara.com/mfc_me_01.htm

また、ResEditというフリーのリソースエディタを使っているのですが
これにメニューバーをつける機能が有りません。私が知らないだけの可能性もあります。

よろしくお願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ダイアログウィンドウにメニューバーを作るには?

#2

投稿記事 by みけCAT » 10年前

とりあえずプロジェクト一式をアップロードして、エラーメッセージを提示していただけると答えやすいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Bull
記事: 149
登録日時: 11年前

Re: ダイアログウィンドウにメニューバーを作るには?

#3

投稿記事 by Bull » 10年前

akindo さんが書きました:下記のサイトの方法を試してみたのですが、どうやらリソースの書き方が
現在の方式とあっていないようでそのままやるとエラーが出ます。
http://wisdom.sakura.ne.jp/system/winap ... win84.html
リソーススクリプトに

コード:

#include <windows.h>
を加えてみてください。
それで、コンパイルができるようになるはずです。

akindo
記事: 14
登録日時: 10年前

Re: ダイアログウィンドウにメニューバーを作るには?

#4

投稿記事 by akindo » 10年前

プロジェクトをアップしました
http://www1.axfc.net/u/3373230

エラー文は以下の通りです。

エラー 1 error RC2135: file not found: POPUP c:\Users\USER\documents\visual studio 2013\Projects\Win32Study2\Win32Study2\Win32Study2.rc 25 1 Win32Study2
エラー 2 error RC2135: file not found: MENUITEM c:\Users\USER\documents\visual studio 2013\Projects\Win32Study2\Win32Study2\Win32Study2.rc 26 1 Win32Study2
エラー 3 error RC2135: file not found: MENUITEM c:\Users\USER\documents\visual studio 2013\Projects\Win32Study2\Win32Study2\Win32Study2.rc 27 1 Win32Study2
エラー 4 error RC2135: file not found: MENUITEM c:\Users\USER\documents\visual studio 2013\Projects\Win32Study2\Win32Study2\Win32Study2.rc 28 1 Win32Study2
エラー 6 error RC2135: file not found: DIALOG c:\Users\USER\documents\visual studio 2013\Projects\Win32Study2\Win32Study2\Win32Study2.rc 32 1 Win32Study2
エラー 5 error RC2135: file not found: 40003 c:\Users\USER\documents\visual studio 2013\Projects\Win32Study2\Win32Study2\Win32Study2.rc 29 1 Win32Study2

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ダイアログウィンドウにメニューバーを作るには?

#5

投稿記事 by みけCAT » 10年前

とりあえずDev-C++ 5.7.1 (gcc 4.8.1)でビルドした所、
そのままでは_tWinMain周りでエラー及びリソースコンパイラのout of memoryエラーが出ましたが、
マクロ定義を追加し、Win32Study2.rcをUnicode BOM付きからSJISに変換してコンパイルした所、
コンパイルは通りました。しかし、実行してもすぐに終了してしまいます。
添付ファイル
test_rev1.zip
テストしたソースコードとバイナリ
(22.36 KiB) ダウンロード数: 121 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ダイアログウィンドウにメニューバーを作るには?

#6

投稿記事 by みけCAT » 10年前

InitInstance関数がFALSEを返しているようなのでGetLastErrorで調べた所、
「ウィンドウ クラスを見つけることができません。」と出ました。
そこで、MyRegisterClass関数でszWindowClassにCreateWindowに渡しているウィンドウクラス名を入れるようにしたところ、
ウィンドウが表示され、リソースで設定されたメニューも表示されました。

Visual Studioではテストしていません。
添付ファイル
test_rev2.zip
テストに使用したソースコードとバイナリ(修正後)
(22.78 KiB) ダウンロード数: 125 回
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Bull
記事: 149
登録日時: 11年前

Re: ダイアログウィンドウにメニューバーを作るには?

#7

投稿記事 by Bull » 10年前

Visual Studio でビルドする場合は、"{" を "BEGIN" に "}" を "END" に変更してみてください。
基本的には、"{ }" でもコンパイルできるはずなんですが、"BEGIN" と "END" を使う方が
無難ですね。

CreateWindow() あたりのバグは既に指摘されているとおりですね。

ISLe()

Re: ダイアログウィンドウにメニューバーを作るには?

#8

投稿記事 by ISLe() » 10年前

2箇所、{の前にあるはずの空白が欠けています。
それがコンパイルエラーの原因です。

書き損じと言ってしまえばそれまでですが、思い込みという根の深い問題がありそうです。

リソースと直接関係の無いコードは、方式の違いでなく、VisualStudioが統合開発環境のために埋め込んでいるものです。
ResEditで新規作成した場合はこのようなソースファイルにはならないので何かしら説明にない手順を踏んでいるはずなのですが。
#Expressにこのようなテンプレートってありましたっけ。

Visual Studio Community 2013であれば、無償で、リソースエディタが(MFCも)使えます。


ResEditでは、DIALOGリソースのプロパティにMenuというのがありますね。
試したところ、なぜか選択肢がおかしなふうに表示されて選択できないのですが。

akindo
記事: 14
登録日時: 10年前

Re: ダイアログウィンドウにメニューバーを作るには?

#9

投稿記事 by akindo » 10年前

ISLe()さんの方法を試したらうまくいきました。どうも有難うございました

閉鎖

“C言語何でも質問掲示板” へ戻る