« 広島に行ってきました | トップページ | OGA例会 »

2006-01-21

プログラム作成中

バッチ処理を行うのに、これまではperlを使っていたのだが、ちょっと物足りなくなってきたので、復習を兼ねてCで組むことにした。最近県立図書館で下記の本を借りていたのはそのせい。

粂井 康孝著: 猫でもわかるWindowsプログラミング 第2版猫でもわかるWindowsプログラミング 第2版
粂井 康孝著
税込価格 : \2,940 (本体 : \2,800)
出版 : ソフトバンクパブリッシング
サイズ : A5判 / 438p
ISBN : 4-7973-2848-7
発行年月 : 2004.10

アスキー書籍編集部編: Win32 API オフィシャルリファレンス 改訂3版 グラフィック/GUI編Win32 API オフィシャルリファレンス 改訂3版
グラフィック/GUI編

アスキー書籍編集部編
税込価格 : \5,460 (本体 : \5,200)
出版 : アスキー
サイズ : B5判 / 771p
ISBN : 4-7561-3748-2
発行年月 : 2001.4

アスキー書籍編集部編: Win32 API オフィシャルリファレンス 改訂3版 Windowsサービス/ネットワーク編Win32 API オフィシャルリファレンス 改訂3版
Windowsサービス/ネットワーク編

アスキー書籍編集部編
税込価格 : \5,460 (本体 : \5,200)
出版 : アスキー
サイズ : B5判 / 757p
ISBN : 4-7561-3749-0
発行年月 : 2001.4

いずれも良書なのでお薦め。

開発環境としてはBorland C++ Compilerがあれば、Windowsプログラムには十分。さらにBCC Developer、BCCFormがあれば、開発がとても楽になる。ただし、BCCには関数の説明が含まれていないので、上記のような本が必要となるので注意。

しかし、久しぶりにCのコーディングをしたら、思い切りスパゲティなソースコードになってしまったよ。orz
しかし、汎用的に使えそうなソースも出来たので、すこしばかり後悔公開してみる。

// エディットコントロール文字列追加関数
int Edit_AddString(HWND hEdit, LPCTSTR lpstr)
{
    int nLineCount, nLineIndex, nLineLength;

    nLineCount = Edit_GetLineCount(hEdit);
    nLineIndex = Edit_LineIndex(hEdit, nLineCount - 1);
    if(nLineIndex < 0)
        return -1;
    nLineLength = Edit_LineLength(hEdit, nLineIndex);
    Edit_SetSel(hEdit, nLineIndex + nLineLength,
            nLineIndex + nLineLength);
    Edit_ReplaceSel(hEdit, lpstr);

    return 0;
}

// 選択解除関数
void Edit_SelectRelease(HWND hEdit)
{
    int nStart, nEnd;

    SendMessage(hEdit, EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd);
    Edit_SetSel(hEdit, nEnd, nEnd);

    return;
}

// コピー可能不可能判定関数
BOOL Edit_IsCopyAvailable(HWND hEdit)
{
    int nStart, nEnd;

    SendMessage(hEdit, EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd);

    if(nStart == nEnd)
        return FALSE;
    else
        return TRUE;
}

// 選択可能不可能判定関数
BOOL Edit_IsSelectAvailable(HWND hEdit)
{
    if(Edit_GetTextLength(hEdit))
        return TRUE;
    else
        return FALSE;
}

hEdit」はエディットコントロールのウィンドウハンドル。エディットコントロール用のマクロを使用しているので、windowsx.hのインクルードが必須となる。EM_GETSELを使ったマクロもあるのだが、オーバーフローを起こす可能性があるので用いていない(詳細はwindowsx.hのEdit_GetSelを参照)。

なお、一応動作確認はしてあるが、使用の際は自己責任でよろしく。

|

« 広島に行ってきました | トップページ | OGA例会 »

コンピュータ・プログラム」カテゴリの記事

書籍・雑誌」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/1757/8264854

この記事へのトラックバック一覧です: プログラム作成中:

« 広島に行ってきました | トップページ | OGA例会 »