FC2ブログ


この冬・さるのダイジェスト

   自然観察 [2019/03/12]
3.11でしたね。8年も経ったなんて、速いな~。
まだまだ大変な状況な人達がたくさんいるんだな。
しっかりしなくちゃ。


さて、さるの棲む地域も、平地はだいぶ雪がなくなりました。
昨年度に比べれば、過酷さは若干緩かったかな。

ここ最近、(たぶんだれも興味のない)プログラミングのことしか書いてないので、
どうでもいいゴミ写真で少しインターバル入れときます。

■2018/12上旬
雪の降り始めの時期は、こんなもん。
車ごとの初滑りもたしかこの日。やばかった。
20181209_z.jpg

■2018/12中旬
親戚(甥っ子)が釣ってきたハタハタいただきました。
「俺もイキテー」もう何年も行ってない。
20181218_y.jpg
今シーズンは不漁で、型も小さかったとのこと。
確かにちいせ。
新しい内にと思って、さっそく焼いて、酒のつまみにしてやったぜ。
20181218_z.jpg

さる家に棲んでるハルです。
対面キッチンのここが定位置1です。
周囲に睨みを効かせ、あわよくばおやつを頂ける場所。
20181216_z.jpg

年を越して・・・

続きを読む

スポンサーサイト





VS2017-はじめの1/10歩(10):ボタンの色を変える

   プログラミング [2019/03/11]

VS2017を使うんだけど慣れてないからVS6でまずは作ってます。
→ナレーション再生と音声認識を使う
  →そのため音声データの作り方(多言語対応)
  →ナレーション(.WAV)再生のサンプルコード
  →音声認識のサンプルコード
→VS6で作ったC/C++コードをVS2017に持って行って.cppレベルで共通にする方法
→ダイアログベースのプログラム
  →背景に画像(.BMP)を使う
  →ラベルを透かす
  →ボタンの色を変える←今回

と来てます。
これまでと違って、さらに必要性は低いかな。

個別に色んなボタンを配置するというよりは、
「このプログラムではこの色が【ボタン】です。」的なデザインを前提にしてます。

始めます。
ラベルのときのWM_CTLCOLORSTATICと同じようなWM_CTLCOLORBTNというWMメッセージが存在します。
でも、このときに色チェンジをできるのか?と思いきや・・できないみいです。
なぜだ?

ともかく、ボタンコントロールの場合は、オーナードローって属性にして、
「自分で描きます」って宣言しないといけない。

まずは、リソースエディタを使って、ダアイアログに乗っけたボタンのスタイルに「オーナー描画」とあるのでそれを設定してください。
指定すると、そのボタンを「描画する必要があるとき」に、ダイアログのウィンドウプロジジャにWM_DRAWITEMメッセージがデバイスコンテキストハンドルとともにやって来ます。

以下のような処理をウィンドウプロシジャ中に加えます。
//---------------------------------------------
//****** ボタンコントロールの背景色設定
//※以下ではできない。
//case WM_CTLCOLORBTN:
// return ChangeColor((HDC)wParam, RGB(255,255,255), RGB(255,64,64), &g_hBrsBtn);

//******* オーナードローボタン描画
case WM_DRAWITEM:
{
LPDRAWITEMSTRUCT podraw = (LPDRAWITEMSTRUCT) lParam;
DrawButtonCtrl(hDlg, podraw);
return TRUE;
} //end WM_DRAWITEM
//---------------------------------------------


で実際の描画の中身は、・・・






続きを読む



VS2017-はじめの1/10歩(9):ラベルを透かす

   プログラミング [2019/03/10]
ダイアログベースのプログラムを作る場合に「背景に画像を貼る」の続きの話になります。

画像を描いたその上に各種コントロールが表示されます。
画像を貼ってみて分かるのですが、
エディットやボタン等の入力とか機能を持ったコントロールはいいのですが、
「見出し」として付けてるラベル(スタティックコントロール)も矩形で背景が塗りつぶされていると、なんか格好悪い。

ドーンと目立たせたい場合とは別に、隣のコントロールの説明的にラベルを貼ってるだけなので、文字さえ見えれば、後ろは透けていいことがある。

で、透けさせる方法です。
他でもいくらでも解説してくれてるから、さるがいい加減な説明をする必要はないのですが、
前から言ってるように、さる自身のための備忘録ですから。

始めます。

まずは、
1)VSのリソースエディタで、ラベルを貼る際に透けさせたいラベルのプロパティ(拡張スタイル)に「透明」を選択します。
これだけでもスケスケになるんだったかな?・・・ならなかった気がします。
2)特に固定文字列を表示するだけで、他の機能を持たせるつもりがない場合、透けさせるラベルのIDはデフォルトのIDC_STATICのまま共通としておきます。

3)透けさせるのには処理コードが必要です。
ダイアログのウィンドウプロシジャ内に以下のようなWM_CTLCOLORSTATICメッセージを処理するコードを追加します。
//---------------------------------------------
//****** スタティックコントロールの背景色設定
case WM_CTLCOLORSTATIC:
if (GetDlgCtrlID((HWND) lParam) == IDC_STATIC) {
return BeTransparent((HDC)wParam);
}
else if (GetDlgCtrlID((HWND) lParam) == IDC_STTITLE) {
return ChangeColor((HDC)wParam, RGB(0,0,0), RGB(128,255,255), &g_hBrsTitle);
}
break;
//---------------------------------------------

勢いが余って透けさせないラベルの処理もはいっちゃったので、後でそっちの説明もします。
ともかくスケスケにしたいラベルのIDはIDC_STATICなのでそのIDでWM_CTLCOLORSTATICが来たら、
BeTransparentという関数を呼びます。
こんな処理です。
//---------------------------------------------
//name :BeTransparent
//function :スタテックコントロールを透過にする。
// リソースエディタでIDC_STATICのコントロールの「透過」設定が必要。
//parameter :hDc -対象コントロールのデバイスコンテキストハンドル
//global :なし
//return :ブラシハンドル(NULL_BRUSH)

LRESULT BeTransparent(
HDC hDc)
{
HBRUSH hbr;

SetBkMode(hDc, TRANSPARENT);
hbr = (HBRUSH) GetStockObject(NULL_BRUSH);
return (LRESULT) hbr;
}
//---------------------------------------------

文字背景色を透明にして、背景塗りつぶし用のブラシ(透明)をリターンします。
ブラシのハンドルは、WM_CTLCOLORSTATICの処理結果のリターン値になります。

これだけです。

では、背景色/文字色を変更する方も・・・

続きを読む



VS2017-はじめの1/10歩(8):ダイアログの背景に画像を使う

   プログラミング [2019/03/09]
タイトルには含まれませんが、目指しているのは
「タブレット的な、向きな、らしいアプリを作ってみる」です。
では、らしいアプリ」ってなんだよ・・・んー・・・分かんないね。

今回は、比較的にありがちな、「ダイアログの背景に画像を貼る」です。
お前に言われなくてもな話。

早速ですが、
外部変数を3つほど。
//---------------------------------------------
HBITMAP g_hBgBmp = NULL; //背景画像のBitmapハンドル
HBITMAP g_hPrvBmp = NULL; //元の背景画像のBitmapハンドル
HDC g_hDcBase = NULL; //画像描画用コピー元hDC
//---------------------------------------------


ダイアログのウィンドウプロジシャのWM_INITDIALOGとかで
//---------------------------------------------
//背景ビットマップ描画準備(全ダイアログ共通)
g_hBgBmp = (HBITMAP) LoadImage(g_hInst, "背景.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if (g_hBgBmp) {
g_hDcBase = CreateCompatibleDC(hdc);
g_hPrvBmp = (HBITMAP) SelectObject(g_hDcBase, g_hBgBmp);
}
//---------------------------------------------

カレントディレクトリ上に「背景.bmp」という名前のWindowsビットマップ形式のファイルがあるものとしてます。

先に後始末のためにWM_DESTROYとかで
//---------------------------------------------
if (g_hPrvBmp != NULL) SelectObject(g_hDcBase, g_hPrvBmp);
if (g_hBgBmp != NULL) DeleteObject(g_hBgBmp);
//---------------------------------------------

まあ、プログラムを終わらせるだけならいらないかもしれないけど、「躾」として入れます。

で、ダイアログではあまりしないWM_PAINTの処理を入れます。
//---------------------------------------------
//******* 描画処理
case WM_PAINT:
DrawBackGround(hDlg, NULL);
break;
//---------------------------------------------

関数化してあるのは、ダイアログを複数使うようなプログラムで、共通の背景画像を使うことを想定してます。

関数の中身は、・・・


続きを読む



VS2017-はじめの1/10歩(7):そろそろVS6→VS2017

   プログラミング [2019/03/03]
使い慣れてないVS2017は何かとストレスになるので、
VS6である程度つくってVS2017に持ってく話なのですが、「持ってく」ところに話が辿りついてませんね。


例えば、VS6で”Hello World!”ってメインウィンドウに出すウィンドウプログラムを作ったとします。
(・・・手順は説明しませんよ。余りにも基本的なんで。)

VS6作成のプロジェクトをフォルダ毎コピーして、「元の名前vs2017」と名前を付けたとします。
フォルダ内の.dswファイルをVS2017で「開き」ます。
 →何か変換するから「元には戻せないよ」的なメッセージが表示されます。OKを応答します。
VS2017だと(さる的には違和感のある)右側にクラス/リソース/ソースファイルリスト的なものが表示されます。
 いきなりビルドします。メニューの[ビルド]-[(Xxxxプロジェクト)のビルド]ですね。注)
HelloWorldならたぶん何事もなくビルドが通るハズ。
→動かせます。

これだけです。ここしばらく書いていたメインテーマ「VS2017-はじめの1/10歩」は終了ー
ってなっちゃいますね。

注)VS2017のビルド対象・・・は、x86です。
(64bit環境しかインストールしてないとできないと思う。
 ・・・とはいうものの32/64bit環境のインストールで選べるんだっけ?)


でもね、それでもVS2017で、あれこれ付けたしでプログラムに機能追加して行こうと思うと、
使い方わかんないから大変なのよ。
アイコン1個追加しようと思うだけで、調べまくらないとできない!
(一回、調べて納得したけど忘れた。何か追加インストールしないといけなかったような・・・
先にpython環境として使い始めて、必要コンポーネント?(numpy、cmake、openCV、dlib、・・・・)のインストールとかで触りまくったのであまりよく覚えてない。

ならば、ということで

①VS6で編集/デバッグして、②VS2017でリビルドして、
③うまくいかない部分を直す

をやってます。
VS2017使い方の解説を期待して読み始めた方には申し訳ないですが、そっちは他のサイトをご覧ください。

さあ、またまた前置きが長いですが、
今回は、標準関数とかの話にします。


続きを読む



カレンダー
02 | 2019/03 | 04
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
プロフィール

さるもすなる

Author:さるもすなる
さるです。別HPサイト「さるもすなる」から侵食してきました。 山菜/きのこ、それとタイトルにしたPPバンド籠のことをメインに徒然に・・・・暇を持て余したさるの手仕事:男手芸のブログってことで。

最新記事
最新コメント
月別アーカイブ
カテゴリ
天気予報

-天気予報コム- -FC2-








本家のHPのトップ
山菜や茸の話です
PPバンドの籠作品と作り方です
投稿をお待ちしております



ブログランキング・にほんブログ村へ にほんブログ村 ハンドメイドブログへ



マニュアルのお申し込み



検索フォーム
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR