• 締切済み

コマンドバーに配置したコマンド(ボタン?)をコマンド入力で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 /****************************************************************************/

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

コマンドバーって、ツールバーのことですよね? スタイルなどがTBで始まってますし。 ということなら、TB_SETSTATEをSendMessageで送ってください。 詳しい使い方はMSDNなどを。

sobirupa
質問者

お礼

回答ありがとうございます。 メニューバーでした。すみません大きなまちがいですね。 DeleteMenuでメニュー項目を無くすことが出来ました。

関連するQ&A

  • HIDDENについて

    sea_clear_sky8です。 [環境] Win98SE PWS [質問内容] 次のページ、前のページ、最初のページ、最後のページっていうのを作って ページングさせたいのですが、 下記のように一つ一つにHIDDENNを作ると、全部のボタンが表示されている 場合にボタンをクリックすると下記SQLで、Commandオブジェクトのコマンドが設定されていませんとエラーが表示されます。 [SQL] "select * from test_t " & _ "where name like '%" & Request("nm") & "%' " & _ "order by id " & _ "limit " & Request("page_num")*10 & ",10" [最初のページ] response.write "<input type=""Submit"" value=""最初のページ&gt""onclick=""myClick();"">" response.write "<input type=""HIDDEN"" name=""page_num"" value=""&0&"">" [次のページ] response.write "<input type=""Submit"" value=""次の10件&gt""onclick=""myClick();"">" response.write "<input type=""HIDDEN"" name=""page_num"" value=""" & request("page_num")+1 & """>" [前のページ] response.write "<input type=""Submit"" value=""前の10件&gt""onclick=""myClick();"">" response.write "<input type=""HIDDEN"" name=""page_num"" value=""" & request("page_num")-1& """>" [最後のページ] response.write "<input type=""Submit"" value=""最後のページ&gt""onclick=""myClick();"">" response.write "<input type=""HIDDEN"" name=""page_num"" value=""" &Abs(Int(-1*(AllCnt/10)))& """>" エラーの原因は最初のページと最後のページのVALUEの部分のvalue=""&0&""、 value=""" &Abs(Int(-1*(AllCnt/10)))& """の部分の記入の仕方が おかしいか、各ボタンごとにHIDDENを作成しているため、おかしいのでは ないかと考えています。 HIDDENを一個にする方法はありますか、 いろいろ考えていますが、考えつかない状態です。 また、他に原因があればよろしくお願いします。 すいませんが、ご教授願います。 よろしくお願いします。

  • コマンドプロンプトを使用してのコマンドライン引数

    winXPのコマンドプロンプトを利用して 参考書「独習C」を使い、C言語の学習をしています。 その本の7.4の項目~main()の引数~で main(int argc,char *avgv[])を利用すると コマンドラインから引数をとることができるとありますが 私の学習環境ではうまくいきません。 具体的には #include <stdio.h> int main(int argc, char *argv[]) { int i; for(i=1; i<argc; i++) printf("%s ", argv[i]); return 0; } というプログラムを実行しても何も表示されません。 どうすればコマンドライン引数を利用できますか?

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

    メニューバーのメニューの上にマウスが乗った時に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は使用していません。 よろしくお願いします。

  • DEPを止める (Vista コマンド

    ※WindowsVista DEPを止めるために 「bcdedit」と言うコマンドを使用したいです。 DEPを止めるこのコマンドを使用したいのですが Bcdedit /set nx AlwaysOff このサイトの手順のどこで上記のコマンドを入れるのですか?http://www.microsoft.com/あjapan/whdc/driver/tips/debug_vista.mspx 具体的に教えてくれると助かります。 =サイトに書いてある手順 1. システム特権でコマンド プロンプト ウィンドウを開きます。 2. 必要に応じて、グローバルなデバッグ設定を編集します。 3. グローバルなデバッグ設定を表示します。 4. 既存のブート エントリをコピーして、新しいブート エントリを作成します。 5. 新しいブート エントリをブート メニューに追加します。 6. 新しいブート エントリでのデバッグを有効にします。 7. デバッグが新しいブート エントリに設定されていることを確認します。 8. 既定のブート エントリを変更します。 9. コンピューターを再起動します。 これをすべてやるのでしょうか?どこでコマンドを入力するのでしょうか?また失敗などした場合のデメリットはあるのか? ちなみにiTunseを起動する際にDEPが発生します。 原因は不明。こちらのサイトでの対処法を実行してます。 最終的にこの方法しかないと思います。

  • VBA2003: 自作メニューバーを操作したい

    Application.CommandBars("Worksheet Menu Bar").Controls.Add このメソッドを使って Excelのメニューバーに自作メニューを追加しました。 メニューは階層構造になっています。 Excelのシート名によって、このメニューに定義したサブメニューやコマンドを Enabled = True/False で表示制御したいのですが、その方法がわかりません。 よろしくお願いします。

  • コマンドプロンプトからのEOFの入力方法について

    #include <stdio.h> main(){ int cnt[10]; int c; int i; for(i=0; i<10; i++){ cnt[i] = 0; } while((c=getchar())!=EOF){ if(c>='0' && c<='9'){ cnt[c-'0']++; } } for(i=0; i<10; i++){ printf("%d : %d", i, cnt[i]); } } という、キーボードから入力した数値の個数を 表示するプログラムを、VisualC++で、Win32consoleアプリケーションで作ったのですが、 コマンドプロンプトから何個かの数値を入力したあと、Enterキーを押しても 何の反応もありません。 キーボードから「EOF」を入力するにはどうすればよいのでしょうか。 または、どういう状態をEOFと言うのでしょうか。

  • コマンドプロンプトが開きません

    パソコン内のexeファイル(アプリケーションファイル)のほとんどが起動しなくなってしまいました。過去に似た事例に対する対処法を調べたのですが、コマンドプロンプトからコマンド("%"%*)を入力して修正する方法がありました。しかし、「ファイル名を指定して実行」でcommand, command.com, cmdのいずれかを入力しても「このファイルを開けません」というメッセージが出ます。また、イクスプローラからWindows/system32の下にあるcmdやcommandをダブルクリックしても「ファイルを開くプログラムの選択」というメッセージがひらき、DOSの黒い画面が開きません。 そもそもこの現象が起きたのは、ウィルス駆除ソフトの操作を誤ったからかもしれません。ソースネクストのウィルスセキュリティーを搭載しているNECのLaVie LL30/7で発生した不具合です。インターネット接続中にウィルスセキュリティーがMSのFile Associationとかいう更新ダウンロード時に、許可か拒否を選択する警告ダイアログが出ました。何度か拒否のボタンを押したのですが、ダイアログボックスが消えないので、ウィルスセキュリティーを停止しました。その後、パソコンのインターネット起動やメール起動のワンタッチボタンやマウスのスクロールボタンが不能となり、スタートアップメニューにあるExcelやWordのアイコンをクリック「アプリケーションが見つかりません」となってしまいました。但し、既に過去に作成したExcelなどのワークシートアイコンをダブルクリックするとちゃんと開きます。プログラムの関連付けの不具合かと思いますが、コマンドプロンプトが使えない状態なのでどうしてよいかわかりません。どなたか対処法教えていただけますか?

  • VBA コマンドバーを消した後に残る空白部分

    お世話になります。 ExcelVBAで、コマンドバーの類を全て消去した後に残る、 空白部分ができる原因が解りません。 この部分をダブルクリックすると、エラーになって強制終了に なってしまいます。 完全に消してしまいたいのですが、この状況になってしまう、 原因と対策を教えてください。 内容は、『システム』という名のシートにある『ロック』ボタンを 押すと、コマンドバーを全て消去して、Sheet1に切り替わるといった 流れです。 ↓モジュール側 ------------------------------------------------------------- Dim myCB As CommandBar Public Sub onCmdBarAttr() DoEvents With Application For Each myCB In Application.CommandBars myCB.Enabled = True Next myCB .CommandBars("Standard").Visible = True .CommandBars("Formatting").Visible = True .CommandBars("Visual Basic").Visible = True .CommandBars("Worksheet Menu Bar").Enabled = True .CommandBars("CELL").Enabled = True ' タスクバーに表示させる .ShowWindowsInTaskbar = True ' 数式バーを表示 .DisplayFormulaBar = True ' ステータスバーを表示 .DisplayStatusBar = True End With End Sub Public Sub offCmdBarAttr() Dim myCB As CommandBar On Error Resume Next For Each myCB In Application.CommandBars myCB.Enabled = False Next myCB On Error GoTo 0 With Application .CommandBars("Worksheet Menu Bar").Enabled = False .CommandBars("CELL").Enabled = False ' 数式バーを消去 .DisplayFormulaBar = False ' ステータスバーを消去 .DisplayStatusBar = False ' タスクバーに表示させない .ShowWindowsInTaskbar = False End With End Sub ' シートロック Public Sub protectSheet(ByVal stSheetName As String) Application.ScreenUpdating = False ' 一旦シート保護をかけ直す With Worksheets(stSheetName) .Activate .Unprotect .Protect UserInterfaceOnly:=True ' カーソルの移動範囲を設定する .ScrollArea = "$A$1" ' 左上セルを選択 .Range("H16").Select ' 保護されたセルは選択不可にする .EnableSelection = xlNoRestrictions End With Application.ScreenUpdating = True End Sub ' シートロック解除 Public Sub unprotectSheet(ByVal stSheetName As String) ' 一旦シート保護をかけ直す With Worksheets(stSheetName) .Unprotect ' スクロール範囲を解除する .ScrollArea = "" ' 保護されたセルでも選択可能にする .EnableSelection = xlUnlockedCells End With End Sub Public Sub setBookAttribute(ByVal bFlg As Boolean) With Windows(ThisWorkbook.Name) ' タブを設定 .DisplayWorkbookTabs = bFlg ' スクロールバーを設定 .DisplayHorizontalScrollBar = bFlg .DisplayVerticalScrollBar = bFlg ' グリッドを設定 .DisplayGridlines = bFlg ' 行列数表示を設定 .DisplayHeadings = bFlg End With End Sub ↓シート側 ------------------------------------------------------ Private Sub btnProtect_Click() ' アプリケーション全体の処理 Call Module1.offCmdBarAttr ' シート単位の処理 Call Module1.protectSheet("Sheet1") ' ブック単位の処理 Call setBookAttribute(False) Worksheets("Sheet1").Activate End Sub Private Sub btnUnprotect_Click() Call Module1.onCmdBarAttr Call Module1.unprotectSheet("Sheet1") Call setBookAttribute(True) End Sub 以上、よろしくお願いいたします。

  • メニューバーを非表示に 2007

    エクセル2007です。 Application.CommandBars("Worksheet Menu Bar").Enabled = False をしてもメニューバーが非表示になりません。 画像の部分を非表示にしたいです。 そもそもこれはメニューバーではないのでしょうか?

  • エクセル2000VBA コマンドボタンがうまく動きません

    こんにちは、VBA初心者です。 2枚のシートがあり、「入力」というシートの任意のセルを、「出力」という別シートにコピーするという作業をコマンドボタンによって行いたいと思っています。 自分で作ってみたものは、このようになります。 Private Sub 任意の行のコピー・印刷_Click() Application.ScreenUpdating = False 'セル内容コピー Selection.Copy Sheets("出力").Select Range("A9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("入力").Select ActiveCell.Offset(0, 1).Select Application.CutCopyMode = False Selection.Copy Sheets("出力").Select Range("C9").Select (以下略) ところが、これだと 「実行時エラー1004 RangeクラスのSelectメソッドが失敗しました」と表示され、デバッグをかけると6行目のRange("A9").Selectが黄色く反転した状態になります。 どうしてでしょうか。 同じ内容のものをマクロで登録し、実行すると、何の問題もなく動くのですが… ほとほと困っております。 どうかよろしくお願いします。