2006/10/13(金)ncurses::自作ライブラリ
ラッパクラスを作成中.
単なるウィンドウを作成するクラスと,スクロールウィンドウまではできた.次は,Treeを扱うウィンドウを作成する予定.
使い方のサンプルプログラム書いたら,テスト公開してみる.でも,かなり手抜きクラスだったり,いろいろ使い回してるせいで大変なことになってると,先にいいわけしておく.
現在の疑問点
Ctrlキーが押されてるか調べる方法が分からない.
追記
とりあえず,ncursesのソース落としてきて,サンプルプログラムを読んだ.単に文字コードと0x1fのandを取ればいいらしい> #define CTRL(x) ((x) & 0x1f) <
で,新たな問題点\Ctrl+Qとかは,プログラム側に来る前に持って行かれてしまうのですが(汗)\tty呼んで,使いたいコントロールコードはいじっておく必要があるのか
2006/10/05(木)ncurses::バッファリング?
出力がバッファリングされてるのか,端末上に変更が反映されない.
それとも,他の所に問題があるのだろうか?
2006/10/04(水)ncurses
使ってみたけど,いまいち使い勝手が悪い
ncurses単体で使うのではなく,何かラッパを作らないとやっていけない
それとも,ncurses上で使えるラッパがあるのだろうか
2006/08/26(土)VSEE の設定
パスの追加
SDKやDirectXをインストールしただけでは使えないので,インクルードパスとライブラリパスを設定します.
インクルードパスの設定
インストール先によってパスは違うので気を付けてください.
ライブラリパスの設定
インストール先によってパスは違うので気を付けてください.あと,DirectXのライブラリは,32ビット用であるx86と64ビット用であるx64があります.自分の環境に合っているほうを指定してください.
実行パスの設定
インストール先によってパスは違うので気を付けてください.
プロジェクトの作成に関する設定
リンクライブラリの追加
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アプリケーションを作成できるようになります
関連記事
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
使わないと思うけど,一応落としておいてみる.
- DirectX Download
- DirectX Software Development Kit (08/2006)
- DirectX Software Developer Kit - Symbol Files (08/2006)
ちなみに,Direct3D 10とか入っているようですが,Windows Vista RC1以降でない場合,インストールするなという注意書きがあります.
DirectX End-User Runtimes
一般ユーザ向け?メモ
d3dx9_**.dllが見つかりませんとか言われて実行でき無い場合があります.その場合,ランタイムの最新版が必要になります.
本来DirectXのリリースバージョンに影響されないプログラムを書くべきなんでしょうけどね.
注意
beta版とかプレビュー版が入っている場合,先にアンインストールしておく必要があるようです.
関連記事
2006/08/11(金)MIPSの場合
というわけで,MIPSで平方根を求めるプログラム.fmulとfdivが,それぞれ乗算,除算に相当しています.
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); ... }
2006/07/30(日)ncurses
2006/06/26(月)ncurses
パスワードの変更コマンドを作成するためにいろいろ実験中。
CUIの管理は、やはり、ncursesが無難そうだ。
パスワード変更コマンドに必須だと思われる機能
- ローカルエコーさせずにキー入力を受け付ける \ncursesのnoechoを使えばできる模様
- 暗号化した状態で、メモリにデータを読み込む (dump対策) \乱数を用いてメモリをかき混ぜること位はしたいが...
2006/06/25(日)多段make
ソースファイルとプラグインを一括コンパイルするために,多段makeに挑戦.
とりあえずのメモです.きちんと出来るようになったら,詳細を書きます.
ディレクトリ構造
album3.1/ src/ plugin/ plugin1/ plugin2/ plugin3/ plugin/
ターゲットとなるMakefileは,{album3.1,src,plugin,plugin{1,2,3}}/Makefile
makeファイル
album3.1/Makefile
CC = gcc all: $(MAKE) -C src
album3.1/src/Makefile
INCLUDE += -I . all: here plugins here: # このフォルダでコンパイルする内容 plugins: $(MAKE) -C plugin
album3.1/src/plugin/Makefile
INCLUDE += -I ../.. SUBDIRS = $(shell find * -type d) all: list='$(SUBDIRS)'; for subdir in $$list; do \ $(MAKE) -C $$subdir || exit 1;\ done clean: list='$(SUBDIRS)'; for subdir in $$list; do \ $(MAKE) clean -C $$subdir;\ done
album3.1/src/plugin/plugin1/Makefile
# 各プラグインにおまかせ # ただし,INCLUDEを上書きしないように注意 all: # 適当にコンパイル
album3.1/src/plugin/MakefileにおいてENTRIES = $(shell find * -type d)をしてるけど,現在のフォルダにあるディレクトリ一覧を取り出す手段は無いのでしょうか?
誰か分かるかた教えてください.