ツールバー・ステータスバーの文字列変更 – 固定ページ 2 – プログラミング – Home

ツールバー・ステータスバーの文字列変更
 
通知
すべてクリア

[解決済] ツールバー・ステータスバーの文字列変更

固定ページ 2 / 2

タフマン
 タフマン
(@タフマン)
ゲスト
結合: 16年前
投稿: 26
Topic starter  

皆さん、たくさんのアドバイスありがとうございます。
本当に感謝しております。

akey様
TTN_NEEDTEXTとは何の事を指しておられるのでしょうか?
今回ツールバーは標準的な物だけで良いという事ですので、ツールチップはOSによって
勝手に変わると思いますのでツールチップに関しては操作しなくて良くなりました。
ですが、できましたら後学の為に教えて頂ければ幸いです。

rin様
度々ありがとうございます。
>(CFrameWnd::OnSetMessageString()から呼ばれるCFrameWnd::GetMessageString()内)
とありますがOnSetmessageString()から呼ばれるGetMessageString()内という意味が良く
分かりませんでした。
ステータスバーの変更はできたとの事ですが、上記の方法でできたのでしょうか?
現在、環境がないので、月曜日にでも試してみて分からなければ再度書き込ませて頂きます。

ITO様
私も以前に他の仕事で英語版のOSで動かしてみるとフォントサイズの違いからうまく動
かずに英語版に合わせて作り直したことがあります。
ですので、今回は最初からMS UI Gothicでコーディングするつもりです。
システムに依存するメッセージやダイアログなどは、その国のOSを使うという前提です
ので問題ないと考えております。

subaru様
私もリソースでいけたら楽だろうと考えていたのですが、
データ受信時にリストボックスに動的に表示する文字列等が大量にあり
それも多言語化しなければならないのでリソースでは対応できない事が分かりました。
現在はソース上に構造体として埋め込まれていますが、これもiniファイル化したいと
思っています。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

> システムに依存するメッセージやダイアログなどは、その国のOSを使うという
> 前提ですので問題ないと考えております。
ならよかったです。
日本語OSですべてやろうとしているかと思ってました。

>これもiniファイル化したいと思っています。
 おそらく大丈夫だと思いますが、マイクロソフトはINIファイルを32ビットで
使うことに関しては薦めてません。
重要なファイルにINIファイル形式を使うのは僕もあまり薦められません。
基本データは、別ファイルにとっておいてINIファイルは必要なデータを
コピーして作る程度に考えた方がいいと思います。


返信引用
akey
 akey
(@akey)
ゲスト
結合: 22年前
投稿: 53
 

タフマンさんへ

聞く前に調べましょう。
検索すれば、サンプルや解説が見つけられるはず

>ツールチップ
>TTN_NEEDTEXT
これは通知メッセージなのでON_NOTIFYマクロ等でハンドラを登録して、ハンドラ関数で
文字列を返送する

>ステータスバー
>CFrameWnd::GetMessageString
これは仮想関数なのでCMainFrame等の派生クラスでオーバーライドして、文字列を返送す


返信引用
タフマン
 タフマン
(@タフマン)
ゲスト
結合: 16年前
投稿: 26
Topic starter  

ITO 様
ご助言ありがとうございます。
CSVファイルへの変更なども含めてユーザー等と話あってみたいと思います。

akey様
自分では調べた上で分からなかったので質問させて頂きました。
ご不快に思われたならすみません。

OnSetmessageString()とGetMessageString()について調べているのですが、実装方法が分
かりません。
現在は環境の問題でVC6.0にてテストしています。
CMainFrameのメッセージマップに出てこないのですがどのように実装するのでしょうか?
ご存知の方にはかなり初歩的な質問だとは思いますが、全く分からずに困っています。
よろしくお願いいたします。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

>タフマンさん
>CMainFrameのメッセージマップに出てこないのですがどのように実装するのでしょう
か?
初歩的じゃないかな。
やることは、単にメンバ関数のオーバーライドです
ただし、ヘッダー、メッセージマップ、関数本体、全部手書きする必要があります。
派生元となるソースは、winfrm.cppの中にあります。

>TTN_NEEDTEXT
これ、MFC・SDIでデフォルトで作られるツールバーの場合
どのタイミングでどこへ投げてるんだろうか?
CChildView,CMainFrameのどっちにも届かなかった


返信引用
akey
 akey
(@akey)
ゲスト
結合: 22年前
投稿: 53
 

>これ、MFC・SDIでデフォルトで作られるツールバーの場合
>どのタイミングでどこへ投げてるんだろうか?
>CChildView,CMainFrameのどっちにも届かなかった

すみません、説明が不足してました。

CFrameWndのように通知メッセージを処理すればデフォルトのツールバーの場合でも届く
ようになります
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipText)
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipText)

自前のIDだけでよければ以下のようになります
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText)


返信引用
タフマン
 タフマン
(@タフマン)
ゲスト
結合: 16年前
投稿: 26
Topic starter  

ご報告が遅れて申し訳ありません。
他の部分でハマってましてまだそこに手が付けられていません。

初歩的な事かも知れませんが、ずっとダイアログベースでやってきた私には少し難しいです。
一応本なども調べたのですがOnSetmessageString()とGetMessageString()についての情報
が少なくて。

来週中には手を付けたいのですが、また何か進展がありましたら必ず報告させて頂きます。


返信引用
タフマン
 タフマン
(@タフマン)
ゲスト
結合: 16年前
投稿: 26
Topic starter  

皆様、やっと手が付けられ、解決いたしましたのでご報告します。

教えて頂いたとおり、MainFrm.cppの中でGetMessageString()をオーバーライド(手作業
でなくても出来ました)し、IDを比較してrMessageを変更する事によりステータスバーの
文字列変更ができました。

ツールチップについては、表示しない方向で話がまとまりましたので、今回は作業してお
りません。

皆様の助言、とても参考になりました。ありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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