忘れる前に覚書。優しい文章を目指します。
ザ・覚書 ザ・覚書
出来るだけ子供にも、わかりやすいように書いて行きたいと思います。

PCバージョンでサイトを表示しています。

【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?
ページを見て下さって、 ありがとうございます。この内容に関する情報があれば下の掲示板にでも書き込み下さい。

C言語 とにかく自力でウィンドウ


  スポンサーリンク

☆C言語 とにかく自力でウィンドウ
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る

下は、OS Windowsの場合です。

とにかくウィンドウを手書きで自作したい場合、VCではこんな感じに書きます。
メッセージプロシージャに処理したいメッセージを書いていけば色々遊べます。

(VBやDelpaiやC++Builderは、簡単にウィンドウが出来て 処理も書けるので便利かもしれませんが、
その作り方に従わないといけないので自由度にかけます。
メッセージの仕組みもよくわかりませんし。APIも使いにくいです。
正直、書いてて面白くないです。
よって遊ぶなら、これをベースが一番楽しいです。わたしは。
これならWindowsAPIも直書き出来るんですよ。
個人の意見です)



//ウィンドウの作成
#include <windows.h>

//WINDOWSでは、同じアプリケーションを複数起動できるため、
//複数実行する場合はアプリケーションのコピーを実行。
//このコピーのことをインスタンスという。

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szClassNme[] = "ウィンドウクラス・ネーム";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
                   LPSTR lpszCmdLine, int nCmdShow)
{
    HWND hWnd;
    MSG msg;
    WNDCLASS myProg;

    // インスタンスハンドルを調べ、初回起動の時に限ってウィンドウの外観を定義する。
    if (!hPreInst) {
        myProg.style            =CS_HREDRAW | CS_VREDRAW;     // 条件のサイズ変更があったら全体を描き直す
                                //CS_HREDRAW(水平方向のサイズ変更があったら全体を描き直す)、CS_VREDRAW(垂直方向のサイズ変更で全体を描き直す)
        myProg.lpfnWndProc      =WndProc;                     // ウィンドウプロシージャの名前
        myProg.cbClsExtra       =0;                           // メモリ領域の追加設定・普通は0
        myProg.cbWndExtra       =0;                           // メモリ領域の追加設定・普通は0
        myProg.hInstance        =hInstance;                   // インスタンスを登録
        myProg.hIcon            =NULL;                        // ウィンドウクラスにアイコンを登録
        myProg.hCursor          =LoadCursor(NULL, IDC_ARROW); // ウィンドウクラスにカーソルを登録
        myProg.hbrBackground    =(HBRUSH)GetStockObject(WHITE_BRUSH); // 背景を登録
        myProg.lpszMenuName     =NULL;                        // メニューの名前を登録
        myProg.lpszClassName    =szClassNme;                  // クラス名を登録
        if (!RegisterClass(&myProg))
            return FALSE;
    }

    // ウィンドウを作る(hWnd は  ウィンドウのハンドル)
    hWnd = CreateWindow(szClassNme,   // クラス名
        "ウィンドウ表示プログラミング", // ウィンドウタイトル
        WS_OVERLAPPEDWINDOW,          // ウィンドウスタイル
        CW_USEDEFAULT,                // X座標
        CW_USEDEFAULT,                // Y座標
        CW_USEDEFAULT,                // ウィンドウの横幅
        CW_USEDEFAULT,                // ウィンドウの高さ
        NULL,                         // 親ウィンドウハンドル、子供ウィンドウを作るとき必要(親を作るときはNULL)
        NULL,                         // メニューハンドル(クラスメニューの時はNULL)
                                      // (クラスメニューというのは、WNDCLASSに登録されたメニュー)
        hInstance,                    // インスタンスハンドル
        NULL);                        // ウィンドウ作成データ(NULLにしておく)
    
    ShowWindow(hWnd, nCmdShow);       // 画面上にどのように表示するか
                                      // 第2引数:SW_SHOW(位置、大きさをそのままで)
                                      //          SW_SHOWMAXIMIZED(最大表示)
                                      //          SW_SHOWMINIMIZED(アイコン表示)
                                      //          SW_HIDE(隠しウィンドウにする)

    UpdateWindow(hWnd);               // プロシージャにWM_PAINTメッセージを送る(ウィンドウ表示)
    
    // メッセージループ(送られてくるメッセージをここで翻訳してプロシージャに送る)(WM_QUITメッセージが来るまで)
    while (GetMessage(&msg, NULL, 0, 0))   // メッセージを取り出す
    {
        TranslateMessage(&msg);            // キーが押下されたとき仮想キーメッセージを出す
        DispatchMessage(&msg);             // ウィンドウプロシージャにメッセージを送る
    }
    return (msg.wParam);
}

// メッセージプロシージャ(メインウィンドウ、メッセージ処理)
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg) 
    {
        case WM_DESTROY:              // ウィンドウ破棄メッセージ
            PostQuitMessage(0);       // WM_QUITを送り出しWinMain関数のループを終了
            break;
        default:                      // その他のメッセージ
            return(DefWindowProc(hWnd, msg, wParam, lParam)); // アプリケーションの提供しないメッセージにデフォルトメッセージ処理を提供
    }
    return (0L);
}


実行時のイメージ。
こんなのできます。
これだけなら、「だからどうした」ですが、これがすべてのはじまりです。
これをベースに、アプリケーションとゲームとかを作っていったりします。

下のイメージは、縮小しています。
  とにかく自力でウィンドウ



記述:2010年12月頃
別サイトより移動:2012年1月頃


(一言掲示板は、下の方にあります。)

Twitter Facebook Google+ はてな Pocket LINE


  スポンサーリンク


Amazonで『プログラミング C言語』を検索
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ

苦しんで覚えるC言語

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新・明解C言語 入門編 (明解シリーズ)

Cディレクティブ入門: もうひとつのCプログラミング

プログラミング言語C 第2版 ANSI規格準拠

C言語で学ぶ コンピュータ科学とプログラミング
amazonで検索
商品更新日時:
2017/03/27 03:29:37

12歳からはじめるゼロからのC言語ゲームプログラミング教室【電子書籍】[ 大槻有一郎 ]

13歳からはじめるゼロからのC言語ゲームプログラミング教室 初級編【電子書籍】[ 大槻有一朗 ]

開発ツールを使って学ぶ!C言語プログラミング【電子書籍】[ 坂井 弘亮 ]

猫でもわかるC言語プログラミング 第3版【電子書籍】[ 粂井 康孝 ]

コンピュータのしくみがよくわかる! C言語プログラミングなるほど実験室【電子書籍】[ 矢沢久雄 ]

C言語で学ぶ コンピュータ科学とプログラミング【電子書籍】[ 小高 知宏 ]
楽天ウェブサービスセンター
商品更新日時:
2017/03/28 00:58:30

一言掲示板です。なにかありましたら以下に書いて書き込みボタンを押して下さい。
管理人による書き込みの確認後、荒らし書き込みでない場合に表示させていただきます。
悪意ある書き込みや挑発的な書き込みと思われる内容は、表示させません。
その為、ちょっと書き込みから表示までに時間がかかってしまいます。ご了承下さい。

(新機能)URLの書き込みも可能にしましたが、内容と関係のないリンクの表示はしないと思います。
また自サイトへのリンクURL書き込みの場合、相互リンクもお願い致します。
お名前

コメント






本日、よく見られるページ
EXCEL(エクセル)で日本地図
おへその位置がずれる原因は?
「~をば」ってどういう意味?
労働者が、会社を訴える時の手続き方法
地球から月までの距離
家庭用の普通のコンセントは、何Wまで使えるのか?
188日周期で大きな地震が起こっているらしい
2011年03月11日 地震覚書 14時47分~16時02分
2013年 ノートンインターネットセキュリティとノートンセキュリティの違い
C言語 strtokでは連続トークンを正しく読み込まない
  スポンサーリンク

今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ