タイトル

API

タイトル

1,Mouse
2,Window

1,Mouse

APIとは、Windows(OS)が用意している関数のことです。

Mouseの移動

Mouseを特定の位置にセットするには、SetCursorPos 関数を使います。
座標は、スクリーン座標(物理座標)になります。


void CTestView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{

	SetCursorPos(1024/2,768/2);

	CView::OnLButtonDblClk(nFlags, point);
}

これは、マウスをダブルクリックするとMouseが画面の中央にきます。
(画面が1024×768の場合。)

反対にGetCursorPosを使うと現在のマウスの位置がスクリーン座標で得られます。


Waitカーソル

データを処理中にMouseが砂時計にするにはDoWaitCursorを使います。


void CTestView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	AfxGetApp()->DoWaitCursor(1);
	long i;
	
	for (i=0; i<10000000; i++)
		;

	AfxGetApp()->DoWaitCursor(0);

	CView::OnLButtonDblClk(nFlags, point);
}

処理に時間のかかる仕事の前でDoWaitCursor(1)にしてカーソルを砂時計にします。
処理が終了したらDoWaitCursor(0)で元に戻します。

ほかにも、APIではないのですがCWaitCursorというものがあります。
これは、時間のかかる処理の前にCWaitCursor型の変数を定義するだけです。


void CTestView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	CWaitCursor wait;
	long i;
	
	for (i=0; i<10000000; i++)
		;

	CView::OnLButtonDblClk(nFlags, point);
}

以上2つのどちらでも、ダブルクリックすると一瞬だけ砂時計になります。

上上へ


2,Window

Windowの移動

Windowの移動にはMoveWindow関数を用います。


void CTestView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	GetParentFrame()->MoveWindow(0,0,200,300,TRUE);

	CView::OnLButtonDblClk(nFlags, point);
}

左クリックをすると左上にWindowが移動します。
MoveWindowの引数の1〜4番目は、Windowの左辺、上辺、幅、高さです。
最後のTrueは、再描画をするかどうかというもので、デフォルトではTRUEになっています。


MessageBox

ちょっとしたメッセージを表示するのに
AfxMessageBoxというものがあります。形式は、

AfxMessageBox(表示する文字,ボタンのタイプ,ヘルプコンテキストID)

3番目の引数は、ヘルプボタンを用意した場合に使います。
2番目の引数は、ボタンの種類を指定します。
ボタンの種類は以下の通りです。

MB_ABORTRETRYIGNORE [失敗] [再試行] [無視]
MB_OK [OK]
MB_OKCANCEL [OK][キャンセル]
MB_RETRYCANCEL [再試行] [キャンセル]
MB_YESNO [はい] [いいえ]
MB_YESNOCANCEL [はい] [いいえ] [キャンセル]

ボタンのところに「|」記号を使って以下のマークを付け加えることができます。

MB_ICONEXCLAMATION
MB_ICONINFORMATION
MB_ICONQUESTION
MB_ICONSTOP Stop

この関数には戻り値があり、どのボタンが押されたかわかります。

戻り値 ボタン
IDOK [OK]
IDCANCEL [キャンセル]
IDABORT [失敗]
IDRETRY [再試行]
IDIGNORE [無視]
IDYES [はい]
IDNO [いいえ]

以下に例を示します。


void CTestView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	if(AfxMessageBox("ダイアログボックス\nTest",MB_OKCANCEL|MB_ICONSTOP)==IDOK)
		;//OKに対応するコマンド


	CView::OnLButtonDblClk(nFlags, point);
}

これで、ダブルクリックすると次のようなダイアログボックスが表示されます。

メッセージボックス

ほかにも、APIではないのですが、MessageBoxという関数があります。 たとえば、


void CTestView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	MessageBox("A","B",MB_OK|MB_ICONHAND);

	CView::OnLButtonDblClk(nFlags, point);
}

を実行すると

メッセージボックス

になります。1番目の引数が本文に、2番目の引数がタイトルになります。

上上へ


戻るC++のPageに戻る