CBitmapButtonを継承してマウスオーバー時に画像を変化させるようにする。

Posted on Sun 30 August 2009 in Windows

デフォルトのCBitmapButtonだとマウスオーバー時の画像を読み込んで
表示させてくれないので、CBitmapButtonを継承して機能を付け足しました。

Create()で作成して、LoadBitmapsで画像を読み込みます。
その他のAutoLoadなどには対応していません。

ヘッダー

#pragma once
class CHoverBitmapButton :
public CBitmapButton
{
  public:
    CHoverBitmapButton() : m_isHover(false) {};
    ~CHoverBitmapButton(){};
    BOOL LoadBitmaps(
      UINT nIDBitmapResource,
      UINT nIDBitmapResourceHov,
      UINT nIDBitmapResourceSel=0,
      UINT nIDBitmapResourceFocus=0,
      UINT nIDBitmapResourceDisabled=0);
    void DrawItem(LPDRAWITEMSTRUCT lpDis);
  protected:
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    LRESULT OnMouseHover(WPARAM wp …

Continue reading

TreeViewコントロール 選択されたアイテムの文字列を取得するには

Posted on Fri 28 August 2009 in Windows • Tagged with Windows

まず、親ウィンドウでWM_NOTIFYを捕まえる。
WM_NOTIFYでTreeViewのイベントが送られてくるのでこれを処理する。
このときLPARAMにはNMTREEVIEW構造体のアドレスが入っている。

 LPNMTREEVIEW lpnmtview = (LPNMTREEVIEW)lp;
if(lpnmtview->hdr.idFrom != IDC_CONFIG_TREE) return;
switch(lpnmtview->hdr.code){
  case NM_CLICK: //ツリーアイテムクリック時
    break;
  case TVN_SELCHANGED: //ツリーアイテム選択変更時
    break;
}

このように
lpnmtview->hdr.idFromにツリービューのIDが、
lpnmtview->hdr.codeのイベントのIDが入っている。

クリックイベント時にはまだ、アイテムは選択されていないので、
NM_CLICKを捕まえて、選択アイテムを取得するというやり方では上手くいかない。

なので、TVN_SELCHANGED時に、選択アイテムを取得するという方法で行います。
このとき、送られてくる、NMTREEVIEW構造体に選択されているTVITEMが入ってるが、
このTVITEMのラベル名は正しく格納されていないので自分で取得する必要がある。

コード例は以下のようになる。

 LPNMTREEVIEW lpnmtview = (LPNMTREEVIEW)lp;
if …

Continue reading

Ubuntu9.04 netbook remixのインストール

Posted on Thu 27 August 2009 in PC

Ubuntu9.04 netbook remixをEeePC 1002HAEにインストールした。
インストール直後のWindowsではCドライブ80GBとDドライブ60GBにパーティションが分かれており、(他に4GBほどのリカバリー用のパーティションがついている。)
このDドライブにインストールすることにした。

1GBのSDカードにインストールイメージを書き込み、
誘導にしたがってインストールを行った。

f:id:hiroki0:20090826210238j:image

起動も結構早くていい感じ。

参考URL

http://blog.browncat.org/2009/05/ubuntu_904_netbook_remix.html


ホスト内のWebページをたどりリンクされているファイルを抜き出すスクリプト

Posted on Thu 06 August 2009 in Ruby

Hprocotを利用して、HTMLページでaタグのhref属性でリンクされているファイルを抜き出すスクリプトを書いてみた。
リンクされているのが同じホスト内のhtmlならそのhtmlもパースします。

#!ruby -Ks
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'uri'
class GetWebFile

  def initialize()
    @file_ary = []
  end

  def parse_url(url)
    root_uri = URI(url)
    begin
      doc=''
      begin
        timeout(1){
          doc = Hpricot(open(url))
        }
        rescue TimeoutError => to
          warn to
        return
      end

      (doc/"a").each do |atag|
        if atag['href'].nil …

Continue reading

バックアップファイルが作成されるディレクトリの指定

Posted on Wed 05 August 2009 in xyzzy

xyzzyは編集ファイルと同じディレクトリにhoge.1~みたいなバックアップファイルを作ります。
この設定のままだと作業ディレクトリにバックアップファイルがたくさんできて困るので、以下の方法で別のディレクトリにバックアップファイルを作ります。

(require "backup")
(setq *backup-directory* "D:/backup/")
(setq *hierarchic-backup-directory* t)

PSDデータのフォーマット

Posted on Sun 02 August 2009 in ペイントツール

PSDファイルの構成

PSDファイルは、先頭から以下の順で構成されている。
値はビッグエンディアンで格納されているのでリトルエンディアンへの変換が必要

[Header]
[Color Mode Data Block]
[Image Resources Block]
[Layer and Mask Information Block]
[Image Data]

Header

[4byte] Signature "8BPS"が入ってるらしい [2byte] Version バージョン [6byte] Reserved 0で無いといけない [2byte] channels カラーチャンネル数 (例えば、RGBAだと4) [4byte] rows 画像の高さ [4byte] columns 画像の幅 [2byte] Depth 1pixelのデータ深度 [2byte] color_mode カラーモード

  • カラーモード
    • 0 Bitmap …

Continue reading

ssh経由でgit

Posted on Sun 28 June 2009 in サーバー管理

Git ExtensionsからSSH経由でgitを使うためにWinSCPについてくるPuttyGen等で作成する。 Git Extensionsで使用するsshのppkキーはssh1のものでないとエラーがでる。 Urlはこんな感じで指定する。

[ssh](http://d.hatena.ne.jp/keyword/ssh)://@:/var/repos/hogehoge.git

gitサーバからソースを取ってきて、編集してサーバに変更を反映する

Posted on Mon 20 April 2009 in サーバー管理

リポジトリを新規作成

  • フォルダを新規作成
  • [フォルダを右クリック]→[Git Extensions]→[Browse]でGit Extensionsを起動
  • [Initialize new repository]で初期化
  • pullダイアログを開いてRemote repositoryにgitサーバのリポジトリを指定してpull

ローカルリポジトリで作業

  • ソースを変更したらCommitダイアログを開く
  • [Add many files]→[add files]→[commit]で変更したものを全てローカルリポジトリにcommitできる

サーバにpush

  • pushダイアログを開いてRemote repositoryにgitサーバのリポジトリを指定してpush

git addしたくないファイルを指定する。

Posted on Tue 14 April 2009 in Git

Git Extensionsのメニューから.gitgnoreの編集ダイアログを出す。

[Settings] -> [Edit .gitgnore]

.gitgnoreの編集

.gitgnoreの設定方法

# '#' で始まる行は無視されます
# foo.txt という名前の全てのファイルを無視する
foo.txt
# (生成された) html ファイルは無視する
*.html
# foo.html は例外とし、手でメンテナンスします
!foo.html
# object と archive ファイルは無視する
*.[oa]

[Add default]ボタンを押すと、大抵の邪魔なファイルを取り除くように設定される。

参考

http://www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html#ignoring-files


Debian上にgitサーバーを立てる

Posted on Tue 14 April 2009 in サーバー管理

gitとgitデーモン起動用のパッケージをインストール

#apt-get install git-core git-daemon-run

daemonの起動スクリプト編集

そのままの設定では面倒なこと(http://d.hatena.ne.jp/fuzzy2/20090228/p2)になるので、git-daemonの起動スクリプトを編集する。

#vi /etc/sv/git-daemon/run
#exec git-daemon --verbose --base-path=/var/cache /var/cache/git
exec git-daemon --verbose --base-path=/var/repos --export-all --enable=receive-pack 

リポジトリの作成

ローカルリポジトリの作成

$ mkdir -p …

Continue reading