メニューの書式を指定して終了ボタンを非活性にする方法

このQ&Aのポイント
  • リソースでスタイルを指定して終了ボタンを非活性にすることは可能でしょうか?
  • MENUITEMの書式に終了ボタンを非活性にするオプションは存在しないようです。
  • ファイルメニュー中の終了ボタンを非活性にする方法について教えてください。
回答を見る
  • ベストアンサー

メニューの書式

下の終了(&E)という文字を非活性にしたいのですが、リソースでそのようなスタイルっぽいことは指定できるのでしょうか? MENUITEM "終了(&E)", IDM_EXIT, DISABLED のような書式はないのでしょうか? #include "example.h" PROGRAM MENU DISCARDABLE BEGIN POPUP "ファイル(&F)" BEGIN MENUITEM "開く(&A)...", IDM_OPEN MENUITEM SEPARATOR MENUITEM "終了(&E)", IDM_EXIT END POPUP "ヘルプ(&H)" BEGIN MENUITEM "バージョン情報(&A)", IDM_ABOUT MENUITEM "ヘルプを表示(&H)", IDM_HELP END END

質問者が選んだベストアンサー

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

>下の終了(&E)という文字を非活性にしたいのですが VCのリソースエディタでしょうか? 非活性とは何のことなのかわかりませんが、 淡色表示にするなら MENUITEM "終了(&E)", メニューのID, GRAYED でできそうです。

関連するQ&A

  • メニューリソースのオプションのGRAYEDについて

    IDR_MENU1 MENU { POPUP "ファイル(&F)" { MENUITEM "新規作成(&N)",IDM_NEW MENUITEM "終了(&X)",IDM_EXIT,GRAYED } POPUP "ヘルプ(&H)",GRAYED { MENUITEM "バージョン情報(&V)",IDM_VERSION } } このコードでGRAYDに指定しているコマンド"終了"の文字が灰色にならず、選択可能になります。どうしたらGRAYEDの設定が反映されるでしょうか?

  • メニューバーのメニューメッセージについて

    メニューバーのメニューの上にマウスが乗った時にWM_MENUSELECT が送られてくるのはわかったのですが、下記のリソースファイルで※1や※2のところで同じようにマウスが乗った時かどうかを調べるにはどうしたらいいですか? ステータスバーに文字を表示したいのですが、※1や※2のところの場合はどうしたらいいのかわかりません。 //リソースファイル IDR_ID1 MENU BEGIN  POPUP "ファイル"//※1  BEGIN    MENUITEM "新規" IDM_1     POPUP "オプション"//※2     BEGIN       MENUITEM "項目1"  IDM_2     END  END END // あと、VisualStudio2010で開発していて、MFCは使用していません。 よろしくお願いします。

  • error RC2104について

    いつもお世話になってます。 VS2005でC++を用いてWindowsアプリケーションを作成してます。 今までのリソーススクリプトに   MENUITEM "ヘルプ(&H)", IDM_HELP またヘッダースクリプトに   #define IDM_HELP 600 を追加したところ、以下のようなエラーが出ました。   error RC2104 : undefined keyword or key name: IDM_HELP ------------------------------ Webで調べていろいろ試してみたのですが改善されません。 ソースファイルに   #include <winuser.h> を追加したり、ヘッダーファイルに   #ifdef IDC_HELP   #undef IDC_HELP   #endif   #define IDC_HELP (-1) を追加してもだめでした。 まだまだ未熟な知識ですので、とても困っております。 ぜひご教授お願いいたします。

  •  動的に作成したメニュー名を変更したい

     動的に作成したメニューを メニュー名だけ変更しても、下記のメニュー名になりません。  どうしてもわからず困っています。 どうぞよろしくお願いします。 bCreate = menuWidthCommands.CreateMenu(); bCreate = popupMenu.CreatePopupMenu (); bCreate = popupMenu.AppendMenu ( MF_STRING, 32123 /*ID_SEPARATOR*/ , "a" ); bCreate = popupMenu.AppendMenu ( MF_STRING, 32124 /*ID_SEPARATOR*/ , "b" ); bCreate = popupMenu.AppendMenu ( MF_STRING, 32125 /*ID_SEPARATOR*/ , "c" ); bCreate = popupMenu.AppendMenu ( MF_STRING, 32126 /*ID_SEPARATOR*/ , "d" ); bCreate = popupMenu.AppendMenu ( MF_STRING, 32127 /*ID_SEPARATOR*/ , "e" ); bCreate = popupMenu.AppendMenu ( MF_STRING, 32128 /*ID_SEPARATOR*/ , "f" ); bCreate = popupMenu.AppendMenu ( MF_STRING, 32129 /*ID_SEPARATOR*/ , "g" ); bCreate = menuWidthCommands.AppendMenu ( MF_POPUP, ( UINT ) popupMenu.Detach (), "_POPUP_" );

  • トランザクション

    データベースのトランザクションで Aというデータがあるとき begin から始まって end で終了ですが その間に read(A) write(A:A*100) という処理を行ったとき 実際にA*100が書き込まれるのは end したときなのか write したときなのか どちらですか?

  • windowsプログラミング

    windowsプログラミングを始めたばかりの者です。 サンプルのhelloを書き換えたりして勉強しています。 都合上Fortranのサブルーチンを呼び出さなくてはいけないのですが、どうやってもうまくいきません。外部シンボルがエラーになってしまうのです。 windowsプログラミングでない場合はCからFortranを呼び出せたのですが・・・。 switch( wmId ) {   case IDM_ABOUT:      DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX,hWnd, (DLGPROC)About);      break;   case IDM_EXIT:      DestroyWindow( hWnd );      break;   case IDM_AAA:      BBB();----->これを呼び出したい!      MessageBox(hWnd , "終了しました", title,MB_OK | MB_ICONEXCLAMATION);      break;   default:      return DefWindowProc( hWnd, message,wParam, lParam ); } どこにプロトタイプ宣言や関数を書いていいのか等よく分かりません。詳しい方、ご教授よろしく願います。

  • LOOP処理について

    条件に当てはまる値を10件SELECTし、 INSERTしたいのですが試せる環境がなく確認できない状態です。 もしテーブルを全件みて該当データがない場合も処理終了と したいのですが下記のような書き方でよいのでしょうか? どなたかご助言いただけないでしょうか?お願いします。 BEGIN WHILE (10=i) LOOP SELECT A INTO AA FROM TBL_A WHERE A = "xxx" INSERT INTO TBL_B (A_ID)VALUES(AA) EXIT WHEN (10=i) ; END LOOP; DBMS_OUTPUT.PUT_LINE('呼び出されます'); END;

  • セレクトメニューの連動、そしてページへのリンク

    [セレクトメニューA] > [セレクトメニューB] > [セレクトメニューC] …というような、まずAで選び、それに対応したメニューBのうちのひとつを選び、そして最後にCのうちのひとつを選ぶと、 (たとえば、Cのセレクトメニューには Yahoo Google Excite のようなのがあり、それらを選択すると、) あらかじめ設定しておいた該当するページへ行く、というようなしくみはどのように作ればいいのでしょうか? ネット上を探し回って、自分で組み立てて作ってみましたが、 <!-- menu = [  ["A","B","C","D"],  ["E","F","G"],  ["H"] ]; function setMenu(n) { len = document.myForm.sb.options.length; for (i=len-1; i>=0; i--) { document.myForm.sb.options[i] = null; } for (i=0; i<menu[n].length; i++) { document.myForm.sb.options[i] = new Option(menu[n][i],menu[n][i]); } } menuItem = [  ["Z"],  ["Y","X","W","V"],  ["U","T","S","R"] ]; function setMenuItem(a) { len = document.myForm.s.options.length; for (c=len-1; c>=0; c--) { document.myForm.s.options[c] = null; } for (c=0; c<menuItem[a].length; c++) { document.myForm.s.options[c] = new Option(menuItem[a][c],menuItem[a][c]); } } // --> ───────────────── <form name="myForm"> <select name="a" onchange="setMenu(this.selectedIndex)"> <option checked selected>セレクトA</option> <option value="A">A</option> <option value="E">E</option> <option value="H">H</option> </select> &gt; <select name="sb" onchange="setMenuItem(this.selectedIndex)"> <option selected> </option> </select>&nbsp;&gt; <select name="s" onChange="popJump(this)"> <option selected > </option> </select> </form> …と、3つを連動させるまでにはいたったのですが、最後の、「セレクトCを選んだときに該当ページへジャンプ」というのができません。 このプログラムにどのような修正を加えればよいのでしょうか? よろしくお願いいたします。

  • コマンドバーに配置したコマンド(ボタン?)をコマンド入力でHIDDENにしたい

    現在、eMbedded Visual C++ 3.0を使い、PocketPc用のアプリケーションを作っています。 MFCは使わずにAPIオンリーです。 ターゲットはCASSIOPEIA E800 ちょっとマイナー?ですが、産業用PDAです。 アプリケーションの下部にコマンドバーを配置し、バージョン情報などを表示させています。 二つ作ったコマンドのうち一つを開発段階のデバッグ用に使用したいと思っています。 デバッグ用コマンドのほうは普段(一般ユーザに)は見えなくなっていて 隠しコマンド入力で表示されるようにしたいのです。 メニューアイテムプロパティーの中にある非表示チェックボタンをチェックすると デバッグ用コマンドの表示が消え、リソースファイル"| TBSTATE_HIDDEN" が追加されます。 従って、ソースコード内でTBSTATE_HIDDENを操作すればいいとは思いますが、 その操作方法について調べてもわかりませんでした。 やりかたを教えてください。よろしくお願いします。 因みに、リソースファイルは下記になっています。 /****************************************************************************/ IDM_MENU SHMENUBAR MOVEABLE PURE BEGIN IDM_MENU, 3, I_IMAGENONE, IDM_MAIN_COMMAND1, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_HELP, 0, 0, I_IMAGENONE, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, NOMENU, I_IMAGENONE, IDM_MAIN_COMMAND2, TBSTATE_ENABLED | TBSTATE_HIDDEN, ←--ここ TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_DEBUG, 0, 1, END /****************************************************************************/

  • verilog で「*」を使って2の補数形式の乗算って・・・

    加算器、減算器 どうやらうまくいったようでやっと乗算器を作っています。それで早速質問ですが、2の補数形式を「*」をつかって作りたいのですが、次のようにやると文法エラーになってしまいます。 ****************************** module mul(a,b,q); input [15:0] a,b; output [32:0] q; reg [32:0] q; always@(a or b) begin if((a == 16'h8000) || (b == 16'h8000)) $monitor("error"); else if((a[15] == 0) && (b[15] == 0)) q = a * b; else if((a[15] == 0) && (b[15] == 1)) begin q =a * (~b+1); q = ~q+1; end else if((a[15] == 1) && (b[15] == 0)) begin q =(~a+1) * b; q = ~q+1; end elseif((a[15] == 1) && (b[15] == 1)) q = (~a + 1) * (~b + 1); else q = a * b; end endmodule ******************************** 内容は q = (~a + 1) * (~b + 1); (mul.v,28|16): expecting a semicolon(';') けれどどこが間違っているのか… ちなみにalways@(a[15] or b[15])のように書き換えるとシミュレーションできるのですが、結果があっていません。 どなたか教えてくださいm(_ _)m