Computer / VC++

WIN32API: 実行ファイルのパスを取得

GetModuleFileName 関数を使います。

実行ファイルのフルパスが取れるので、実行ファイル名を取ってしまいましょう。

char filePath[MAX_PATH];
char *pt;

GetModuleFileName(ghInst, filePath, MAX_PATH);
pt = strrchr(filePath, '\\');
*pt = '\0';

| | Comments (0)

WIN32API: ファイルを開くダイアログ

GetOpenFileName 関数を使います。
構造体に値を詰め込んで呼び出してあげればOK。

OPENFILENAME ofn;
char filePath[MAX_PATH] = "";
char fileName[MAX_PATH] = "";

ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.lpstrFilter = "テキストファイル(*.txt)\0*.txt\0\0";
ofn.hwndOwner = hWnd;
ofn.lpstrFile = filePath;
ofn.lpstrFileTitle = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.nMaxFileTitle = MAX_PATH;
ofn.Flags = OFN_FILEMUSTEXIST;
ofn.lpstrTitle = "データファイルを開く";

if (GetOpenFileName(&ofn)) {
  ・・・

※ lpstrFilter は「\0」で区切る。一番最後は「\0」2つ並べること。

| | Comments (0)

WIN32API :リソースをファイルに書き出す

リソースとしてexe内に取り込んだファイルを、実行時にファイルに書き出す方法です。

MCIコマンドでは「ファイル」しか取り扱えなかったので、
MP3ファイルを一旦リソースとして取り込んでおいて、
実行時にテンポラリフォルダにファイルを書き出し、再生するようにしました。

>続きを読む

| | Comments (0)

WIN32API :テンポラリフォルダのパス取得

char strBuffer[MAX_PATH];

GetTempPath(MAX_PATH, strBuffer);

| | Comments (0)

WIN32API :エクスプローラを起動する

エクスプローラを外部プロセスとして呼び出すには、

ShellExecute(HWND_DESKTOP, "explore", FolderPah, NULL, NULL, SW_SHOWNORMAL);

とする。

| | Comments (0)

WIN32API :ファイルのコピー

CopyFile(fileOrg, fileDst, TRUE);

でコピーする。

| | Comments (0)

WIN32API :ファイル一括削除

フォルダ内の*.mp3ファイルを一括削除するには、
FindFirstFile() とFindNextFileを使ってループし、
DeleteFile() で削除する。

>続きを読む

| | Comments (0)

WIN32API :フォルダの作成

CreateDirectory(FolderPath, NULL);

で、新規作成します。

| | Comments (0)

猫でもわかるWindowsプログラミング

猫でもわかるWindowsプログラミング 第2版
猫でもわかるWindowsプログラミング 第2版

Windows(Win32API)プログラムは、この本を参考にして作っています。
分かりやすくてお勧めです。

↓その他の猫シリーズ
猫でもわかるC言語プログラミング猫でもわかるネットワークプログラミング 第2版猫でもわかるC#プログラミング猫でもわかるゲームプログラミング

| | Comments (0)

MCI :MP3を再生する

MCIコマンドを使って、MP3ファイルを再生する方法。

>続きを読む

| | Comments (2)

Win32API :カレントディレクトリの取得

GetCurrentDirectory( MAX_PATH, gDataPath );

カレントディレクトリを取得できます。

| | Comments (0)

Win32API :ダイアログ作成

モーダルダイアログ(表示中、親画面が触れないやつ)を表示するには、

>続きを読む

| | Comments (0)

ファイルの読み込み fgets

Win32APIの CreateFile ~ ReadFile でテキストファイルを読み込もうとしたけど、
1行ずつ読み込むのが出来ないっぽい。
MFCのクラスだったら何かあった気がする・・・CStdioFileだっけ?

なので、fgets を使います。

>続きを読む

| | Comments (0)

Win32API :テキスト表示

RECT rc;
SetRect(&rc, 20, 15, 520, 55);

これでウィンドウ上の矩形(くけい)を設定しておいて、

HDC hdc;
PAINTSTRUCT ps;

hdc = BeginPaint(hWnd, &ps);

 SetTextColor(hdc, RGB(128, 128, 128));  // 文字色
 DrawText(hdc, str, (int)strlen(str), &rc, DT_WORDBREAK);

EndPaint(hWnd, &ps);

| | Comments (0)

Win32API :INIファイルの読み書き

設定ファイル(INIファイル)の中身はこんな感じのテキストファイルです。

[Section1]
Key1=value
Key2=value

このフォーマットのファイルの読み書きをしてくれる関数が便利。

>続きを読む

| | Comments (0)

Win32API :ウィンドウ生成

Win32アプリケーションは、まず WinMain 関数からスタートします。

この関数の中でする主なことは、
1.ウィンドウクラスを登録する
2.ウィンドウを生成する。
3.メッセージループを作る。

このあたりは「決まり文句」的なもので、どのアプリケーションでもあまり変わりありません。
一度書いたものを雛形として使いまわすことになりそうですね。

以下、内部ではどんなことをしているのか、覚え書きしておきます。

>続きを読む

| | Comments (0)

Visual Studio 2005 の罠

「最初のWindowsプログラム」を打ち込んで、いざビルド!

と思ったらエラーが大量に・・・
《゚Д゚》 何故にーー!?

どうも、Visual Studio 2005 ではコンパイル時のチェックが厳しくなっている模様。

>続きを読む

| | Comments (0)