どんなソフトウェア作るときでも良く使うけど、結構忘れる(^^;Cの記述をメモってます。

ポインタと先頭アドレス

変数の先頭アドレス

char aaa;

のアドレスは

&aaa

配列の先頭アドレス

char box[3];

のアドレスは

box[0] または box

ポインタのアドレス

char *po;

のアドレスは

&po または po

ポインタの中身を参照するときは

*po

<例>

char aaa;
char *po;

aaa = 'A';
po = &aaa;

とした場合

「po」には「aaa」のアドレスが入って
「*po」で中身の'A'が参照できるようになる

ページトップへ

日付と時間の取得

//現在時刻を取得

CTime ctTime = CTime::GetCurrentTime();

//文字列として表示する

CString csDate = ctTime.Format("%Y/%m/%d %H:%M:%S");

CString csTime = ctTime.Format("%H%M%S");

%Y年(yyyy)
%y年(yy)
%m
%d
%H
%M
%S

ページトップへ

CStringの文字列操作

くっつける

CString csFilename;
csFilename = "20060412";
csFilename = "LOG" + csDate + ".CSV";

結果は

csFilename = "LOG20060412.CSV"

文字列の長さを取得

CString csFilename;
int iSize
csFilename = "LOG20060412.CSV"
iSize=csFilename.GetLength();

結果は

iSize = 15

左端から指定文字数分だけ取得

CString csFilename,csPre;
csFilename = "LOG20060412.CSV";
csPre = csFilename.Left(3)

結果は

csPre = "LOG"

右端から指定文字数分だけ取得

CString csFilename,csFiletype;
csFilename = "LOG20060412.CSV";
csFiletype = csFilename.Right(3)

結果は

csFiletype = "CSV"

真ん中だけ取得

CString csFilename,csDate;
csFilename = "LOG20060412.CSV";
csDate = csFilename.Mid(3,8)

結果は

csDate = "20060412"

数値型の変数をCString型にセット

long nCnt;
nCnt = 15;
csData.Format("%04d",nCnt);

結果は

csData = "0015"

CString型を数値に変換

CString csData;
int iSize;
csData = "1024"
iSize = atoi(csData);

結果は

iSize = 1024

ページトップへ

メッセージボックスの表示

int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );

戻り値
IDABORT失敗
IDCANCELキャンセル
IDYESはい
IDNOいいえ
IDOKOK
IDRETRY再試行
IDIGNORE無視
nType
タイプMB_ABORTRETRYIGNORE[失敗]、[再試行]、 [無視]
タイプMB_OK[OK]
タイプMB_OKCANCEL[OK] [キャンセル]
タイプMB_RETRYCANCEL[再試行] と [キャンセル]
タイプMB_YESNO[はい] と [いいえ]
タイプMB_YESNOCANCEL[はい]、[いいえ]、[キャンセル]
アイコンMB_ICONEXCLAMATION感嘆符 (!)
アイコンMB_ICONINFORMATION インフォメーションマーク(i)
アイコンMB_ICONQUESTION はてなマーク(?)
アイコンMB_ICONSTOPストップ記号
デフォルトMB_DEFBUTTON1最初のボタン(デフォルト)
デフォルトMB_DEFBUTTON22 番目のボタン
デフォルトMB_DEFBUTTON33 番目のボタン

ページトップへ

ファイル操作

オープン時のフラグ
CFile::modeCreate 新規作成。
ファイルが既に存在するときは、ファイルの内容が切り捨てられる。
CFile::modeNoTruncate この値と modeCreate を組み合わせて使用。
作成するファイルが既に存在しても、ファイルの長さを 0 に切り捨てないため、ファイルが新しく作成されるときでも、既存のファイルでも、確実に開かれれる。
CFile::modeRead 読み出し専用で開く。
CFile::modeReadWrite 読み書き両用で開く。
CFile::modeWrite 書き込み専用で開く。
CFile::modeNoInherit ファイルを子プロセスに継承することを防ぐ。
CFile::shareDenyNone 開かれたファイルは、他のプロセスから読み出しまたは書込みのためにアクセスされることを拒否しない。
指定したファイルが他のプロセスにより互換モードで開かれているときは、Create 関数は失敗する。
CFile::shareDenyRead 開かれたファイルは、他のプロセスからの読み出しのためのアクセスを拒否しない。
指定したファイルが他のプロセスにより互換モードまたは読み出しアクセスで開かれているときは、Create 関数は失敗する。
CFile::shareDenyWrite 開かれたファイルは、他のプロセスからの書き込みのためのアクセスを拒否する。
指定したファイルが他のプロセスにより互換モードまたは書き込みアクセスで開かれているときには、Create 関数は失敗する。
CFile::shareExclusive ファイルを排他モードで開く。
開かれたファイルは、他のプロセスからの読み出し/書き込みのアクセスを拒否する。
ファイルが読み出しまたは書き込みアクセスなど他のモードで開かれているときは、現在のプロセスでも構築は失敗する。
CFile::typeText キャリッジ リターンとライン フィードの組み合わせに特別な処理をさせるテキスト モードを設定(派生クラスのみで使用)。
CFile::typeBinary バイナリ モードを設定(派生クラスのみで使用)。

ページトップへ

ダイアログからデータの取得

(クラスウィザードを使用してメンバ変数を追加した場合に有効)
ダイアログ画面のコントロールに入力されたデータがメンバ変数にセットされるのは「OK」ボタンが押されて画面が閉じた時。
画面を表示させたまま、ダイアログ内のデータをメンバ変数に反映させたい場合は

UpdateData(TRUE);


逆に、メンバ変数にセットした値を画面に反映させた場合は

UpdateData(FALSE);

ちなみに、直接ダイアログオブジェクトにセットするには

SetDlgItemText( IDC_TEXT1, "セットしたい文字列");

ページトップへ