ページ 1 / 1
[Win32API]レバーコントロール
Posted: 2013年2月10日(日) 13:03
by オカピーα
お久しぶりです、懲りずにC言語のみでごりごり開発をしているオカピーです。
先日、開発中のアプリケーションにレバーコントロールをとりれたのですが、問題が。
レバーコントロール導入の目的はWordやExcelのような移動可能なツールバー実装にありました。
それで、色々と参考にしながらツールバーの導入には成功し、めでたく移動も
出来るようになったのですが、なんだかビジュアルが美しくありません。
というのも、右側の余白が冗長に長くなってしまい、Wordのようなスッキリ感が生まれないのです。
動作には直接関係が無いので気にしなければいいといえばいいのですが、
やはりキッチリとやってみたいです。
右の余白を消して、Wordのようなツールバーにするにはどうしたらいいのでしょうか。
どなたか教えてください。お願いします。
Re: [Win32API]レバーコントロール
Posted: 2013年2月10日(日) 14:53
by taketoshi
何かないかとコードを漁っていたら同様事例を施していたのでアップします。
私も昔つまずいた記憶があります。
レバーコントロール上に移動不可能な検索ボックスを埋め込んでいます。
これをEDITからSTATICウインドウに変えれば、レバーコントロールの余白を有効利用できます。
そもそも、ツールバーの境目をはっきりさせて浮き上がらせたいっていう処理ならば解らないです。
ツールバー作成時のウインドウスタイルの指定とかでいけるんじゃないでしょうか。
以下がレバーコントロール上にエディットボックスを埋め込んでいる辺りのコードです。
元コードはzipに添付しておきます。ご参考にどうぞ。
コード:
///////////////////レバーコントロール上のエディット/////////////////////
HWND CreateEdit(HWND hRebar)
{
HWND hEdit2;
REBARBANDINFO rBand;
//ここをSTATICに変えたうえで以下の rBand.lpText = "検索文字列"; を消すと境界線ができます
hEdit2 = CreateWindow("EDIT","",WS_VISIBLE|WS_CHILD,
0,0,0,0,hRebar,(HMENU)ID_EDIT2,hInstance,NULL);
memset(&rBand,0,sizeof(REBARBANDINFO));
rBand.cbSize = sizeof(REBARBANDINFO);
rBand.fMask = RBBIM_TEXT |
RBBIM_BACKGROUND |
RBBIM_STYLE |
RBBIM_CHILDSIZE |
RBBIM_SIZE |
RBBIM_CHILD |
RBBIM_ID;
rBand.fStyle = RBBS_CHILDEDGE |
RBBS_FIXEDSIZE |
RBBS_NOGRIPPER;
rBand.wID = ID_EDIT2;
rBand.hwndChild = hEdit2;
rBand.cxMinChild = 300;
rBand.cyMinChild = 20;
rBand.cx = 250;
rBand.lpText = "検索文字列";
SendMessage(hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rBand);
memset(&rBand,0,sizeof(REBARBANDINFO));
rBand.fMask = RBBIM_TEXT |
RBBIM_STYLE ;
rBand.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS;
SendMessage(hRebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rBand);
return hEdit2;
}
Re: [Win32API]レバーコントロール
Posted: 2013年2月12日(火) 17:37
by オカピーα
返信ありがとうございます!
しかし・・・せっかくしてくださったのですがやりたいことと少々違います・・・><
余白を消すといいますか、「レバーコントロールのみを浮き上がらせる」方法を模索しているのです。
taketosiさんありがとうございました!
引き続き募集しております!
[追記]
MDI.zipなのですが、リソースファイルとヘッダファイルも添付してもらってもよろしいですか?
実験しようにもしにくいので・・・ お願いします
Re: [Win32API]レバーコントロール
Posted: 2013年2月12日(火) 21:46
by taketoshi
そっかー、お力添えず残念です
プロジェクトを添付しておきますね、汚いですが参考にしてください。
私もやり方が気になってきました。少し調べてみよう。
Re: [Win32API]レバーコントロール
Posted: 2013年2月12日(火) 22:00
by taketoshi
http://rarara.cafe.coocan.jp/cgi-bin/ln ... 070001.txt
過去に同じ議論をされてる方がいらっしゃいました。
SPY++で調べたところワードのメニューのクラス名はMsoCommandBarでした。
自前でウインドウクラスを生成している?感じでした。
私は自前でウインドウクラスを生成した経験がないので、もう少し調べないたどり着けそうにないです。