2006/10/13(金)ncurses::自作ライブラリ

ラッパクラスを作成中.

単なるウィンドウを作成するクラスと,スクロールウィンドウまではできた.次は,Treeを扱うウィンドウを作成する予定.

使い方のサンプルプログラム書いたら,テスト公開してみる.でも,かなり手抜きクラスだったり,いろいろ使い回してるせいで大変なことになってると,先にいいわけしておく.

現在の疑問点

  • Ctrlキーが押されてるか調べる方法が分からない.

追記

とりあえず,ncursesのソース落としてきて,サンプルプログラムを読んだ.単に文字コードと0x1fのandを取ればいいらしい> #define CTRL(x) ((x) & 0x1f) <

で,新たな問題点\Ctrl+Qとかは,プログラム側に来る前に持って行かれてしまうのですが(汗)\tty呼んで,使いたいコントロールコードはいじっておく必要があるのか

2006/08/26(土)VSEE の設定

パスの追加

SDKやDirectXをインストールしただけでは使えないので,インクルードパスとライブラリパスを設定します.

インクルードパスの設定

インストール先によってパスは違うので気を付けてください.

VSEE_include.JPG

ライブラリパスの設定

インストール先によってパスは違うので気を付けてください.あと,DirectXのライブラリは,32ビット用であるx86と64ビット用であるx64があります.自分の環境に合っているほうを指定してください.

VSEE_lib.JPG

実行パスの設定

インストール先によってパスは違うので気を付けてください.

VSEE_exec.JPG

プロジェクトの作成に関する設定

リンクライブラリの追加

F:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults\corewin_express.vsproject

AdditionalDependencies="kernel32.lib"

AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"

に変更します

作成プロジェクトの変更

F:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1041\AppSettings.htmの441行目から444行目をコメントアウトします

	WIN_APP.disabled = true;
	WIN_APP_LABEL.disabled = true; 
	DLL_APP.disabled = true; 
	DLL_APP_LABEL.disabled = true;

//	WIN_APP.disabled = true;
//	WIN_APP_LABEL.disabled = true; 
//	DLL_APP.disabled = true; 
//	DLL_APP_LABEL.disabled = true;

に変更します

これで,新しいプロジェクト - Visual C++ - Win32 - Win32コンソールアプリケーションからWindowsアプリケーションを作成できるようになります

関連記事

前(Visual Studio 2005 Express Edition)

2006/08/25(金)Visual Studio 2005 Express Edition

気づいたら

Visual Studio 2005 Express の無償ダウンロードを継続的に提供することになりました。

だそうです.大学のPCに入れていただけだったので,この機会に自宅のPCにも入れることにする.

Visual Studio Express Edition

MSDN

Visual Studio Expressにリンクがありますが,一応リンクを貼っておきます

追記

VSEEのCDイメージにはMSDN 2005 EEが入っていました.DLする必要はなさそうです.

SDK

標準では.NETしか入っていないので,SDKをDLしてくる.

DirectX SDK

使わないと思うけど,一応落としておいてみる.

ちなみに,Direct3D 10とか入っているようですが,Windows Vista RC1以降でない場合,インストールするなという注意書きがあります.

DirectX End-User Runtimes

一般ユーザ向け?メモ

d3dx9_**.dllが見つかりませんとか言われて実行でき無い場合があります.その場合,ランタイムの最新版が必要になります.

本来DirectXのリリースバージョンに影響されないプログラムを書くべきなんでしょうけどね.

注意

beta版とかプレビュー版が入っている場合,先にアンインストールしておく必要があるようです.

関連記事

続き(Visual Studio 2005 Express Editionの設定)

2006/08/08(火)VC++ 2005 EE

久しぶりに,Windowsプログラムを書いてみた.VC6は古いので,この春にMicrosoftが配付していた,Microsoft Visual C++ 2005 Express Editionをいじってみた.で,フリーであっただけのことはあって,リソースエディタは入ってないし,MFC等の古いライブラリも無し.そのため,地道にSDKで書くことに...

とりあえず,ステータスバーを付けて,ウィンドウを3分割し,それぞれサイズ変更できるようにするだけなんだけど... MFCを使っていたときよりも自由度は高いけど,メッセージ処理とかが大変.WM_SIZEイベントの発生するタイミングとか不明なのでどうにも怪しいことに.かなり微妙な線を行きながら,なんとか1日掛けて作り上げた.

めもオブジェクトのメソッドをウィンドウプロシージャにするための逃げ道.\スタティックメンバを作っておき,ウィンドウのユーザデータにオブジェクトを入れてしまう.\あとは,ウィンドウからオブジェクトを取り出して,メソッドを呼び出す.

// ウィンドウプロシージャ
static LRESULT CALLBACK Tree::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    WNDPROC ParentWndProc = (WNDPROC)GetWindowLongPtr(hWnd, GWL_USERDATA);
    return CallWindowProc(ParentWndProc, hWnd, message, wParam, lParam);
}

int Init(...)
{
    // ウィンドウプロシージャの登録
    tree->m_ParentWndProc = (WNDPROC)SetWindowLongPtr(tree->m_hWnd, GWL_WNDPROC, (LONG)WndProc);
    SetWindowLongPtr(tree->m_hWnd, GWL_USERDATA, (DWORD)tree->m_ParentWndProc);
...
}