ページ 11

APIで背景の色?

Posted: 2009年4月15日(水) 21:35
by 遠藤
WindowsAPIを使いフリーソフトを作ろうかと考えています。
添付した中にあります右の画像が現在の私が作れたものです。
左が本についていたものになります。
左の背景見たく灰色?にしたいのですがソースの何処を変えればいいのでしょうか・・・?

また日曜~月曜までボタンを作り
それぞれに10文字程度のメモ欄を5個づつ持たせようと
しているのですがソースの書く場所がどこにすればよいのかがわかりません><

Re:APIで背景の色?

Posted: 2009年4月15日(水) 22:47
by ランド
背景については、ウィンドウクラスを登録する箇所に
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
とあるので、WHITE_BRUSHを所定の灰色のブラシに変更するとお望みの結果になるかと。
GRAY_BRUSH?の他にも灰色が何種類かあったと思いますので、調べてみてください。

Re:APIで背景の色?

Posted: 2009年4月15日(水) 23:04
by スレ
調べてみたのですが添付したツールの灰色はないようです・・・。

Re:APIで背景の色?

Posted: 2009年4月16日(木) 00:13
by ランド
すみません、無い場合を考慮していませんでした。
CreateSolidBrush関数でブラシを作成できますので、そちらを利用してみて下さい。
RGB(210,210,210)あたりがそれらしく見えましたが、具体的なRGBの数値は見つけられませんでした。

画像ツールにてRGB数値を抽出しても明度の有無で違った雰囲気に・・・

Re:APIで背景の色?

Posted: 2009年4月16日(木) 00:16
by スレ
なるほど・・・
調べていたらダイアログボックス?みたいなのでも作れることを調べたのですが
フリーソフトなどのツール制作は
こちらでやるのが一般的なのでしょうか?

Re:APIで背景の色?

Posted: 2009年4月16日(木) 00:58
by lbfuvab
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
          ↓
wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
で無理ですか?

Re:APIで背景の色?

Posted: 2009年4月16日(木) 07:30
by toyo
ダイアログですね
ダイアログリソース作って表示するのが簡単です
ちょっと作ってみました

Re:APIで背景の色?

Posted: 2009年4月17日(金) 00:26
by 遠藤
toyoさん
それです><

ダイアログリソースってどうやって描画するのでしょうか?

やはり私が作ったもの?はいらないんでしょうか?

またメモ書きをテキストなどに吐き出したいのですができますでしょうか?

質問ばかりですいません><

Re:APIで背景の色?

Posted: 2009年4月17日(金) 00:51
by 遠藤
私もダイアログリソース作ってみました・・・
これであってるのでしょうか・・・?

Re:APIで背景の色?

Posted: 2009年4月17日(金) 07:34
by toyo
それでいいですよ
有料版のVisual C++ならリソースエディタがついてるのでそれで作れます
無料版にはリソースエディタがないのですがフリーのリソースエディタがあるのでそれを使っても作れます
中身は普通のテキストなので頑張ればメモ帳でも作れますが

私は粂井さんの「猫でもわかる」のサイトを参考にさせてもらっています。
http://www.kumei.ne.jp/c_lang/sdk/sdk_14.htm
http://www.kumei.ne.jp/c_lang/sdk/sdk_22.htm

Re:APIで背景の色?

Posted: 2009年4月17日(金) 23:38
by 遠藤
返信ありがとうございます。

サイトを見ながら作ったのですがエラーが起こります・・・。

またクリックすると項目が変わりテキスト欄に入れた文字を吐き出したり
自動的に書き込んだりできるようにしたいです。

どのようにかけばいいのでしょうか?

Re:APIで背景の色?

Posted: 2009年4月18日(土) 04:13
by 遠藤
上記から少し変えたものです。
エラーはなくなったのですが表示ができないです・・・。

またダイアログでのイベントの取得方法(ボタンをクリックしたら~など)がわからないです・・・。

Re:APIで背景の色?

Posted: 2009年4月18日(土) 07:33
by toyo
main.cppを以下のように換えてみてください
#include <windows.h>
#include "resource.h"

LRESULT CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
                   LPSTR lpsCmdLine, int nCmdShow)
{
    DialogBox(hCurInst, MAKEINTRESOURCE(MYDIALOG1), NULL, (DLGPROC)DlgProc);
    return 0;
}

LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
    TCHAR buf[256];
    switch (msg) {
        case WM_INITDIALOG:
            return TRUE;
        case WM_COMMAND:
            switch (LOWORD(wp))
            {
            case IDOK1: // 日曜ボタンをクリックしたときの処理
                return TRUE;
            case IDCANCEL: // ×で閉じるときの処理
                //エディットボックスの内容は以下のようにして取得
                GetWindowText(GetDlgItem(hDlg, IDC_EDIT5), buf, 256);
                //確認用に表示してみる
                MessageBox(hDlg, buf, TEXT("TEXT5"), MB_OK);
                EndDialog(hDlg, IDCANCEL);
                return TRUE;
            }
            break;
    }
    return FALSE;
}

Re:APIで背景の色?

Posted: 2009年4月18日(土) 13:38
by 遠藤
toyoさん
回答本当にありがとうございます。

コピペさせていただきました。

しかし起動すると月曜が選ばれている?状態になってしまいます。
これを、できれば起動した日にちの曜日にクリックを合わせたいです。

また、ファイルを読み込んだり、書きだしたりはテキスト等で吐き出そうとしているのですが
GetWindowText(GetDlgItem(hDlg, IDC_EDIT5), buf, 256);
で取得したものをどうすればよいのかがわかりません。

選択されている曜日によって表示したり書き換えたりする内容を変えたいです。
自分用のテレビ欄?を保存できるツールをつくりたいんです。

お時間がありましたら一度作っていただけないでしょうか?
もちろん甘いことを言っているのは承知ですので
気が向きましたらでかまいません。

Re:APIで背景の色?

Posted: 2009年4月20日(月) 17:19
by toyo
年月日の表示とボタンにフォーカスまで作ってみました
リソースファイルとヘッダを一部変えています
ファイルの書き込みは普通に
fp = fopen("memo.txt", "w");
fputs(buf);
fclose(fp);
みたいなのでいいのでは

Re:APIで背景の色?

Posted: 2009年4月26日(日) 23:44
by 遠藤
遅れてすいません

toyoさんありがとうございました。

少し自分で改造してみますねw