アプリの仕様としては、
①マウスドラックで範囲指定し、その範囲をスクリーンキャプチャします。
②アプリを起動すると撮影と保存ボタンを描画しているウィンドウが作成されます。
③撮影ボタンを押すとウィンドウを隠し、マウスポインタが十字になって範囲指定モードになる。
④範囲指定モード中は他のアプリケーションやデスクトップアイコンは押せない。
⑤範囲指定後、ディスプレイのデバイスコンテキストを取得し撮影する。
⑥撮影を終えると再びアプリウィンドウが表示され撮影した画像が表示される。
⑦保存ボタンを押すと任意のフォルダに画像を保存。
こんな感じにしたいです。
⑤以降の処理はいいのですが、③と④の処理をどうしようか考えています。
使えそうなAPI関数を教えてください。
現在ここまでしか書けていません。
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CREATE:
upload_button = CreateWindow(TEXT("BUTTON"),TEXT("保存"), DS_CENTER | WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,490,405,120,30,hwnd,(HMENU)IDM_UPLOAD_BUTTON,((LPCREATESTRUCT)(lp))->hInstance,NULL);
shot_button = CreateWindow(TEXT("BUTTON"),TEXT("撮影"), DS_CENTER | WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,430,405,50,30,hwnd,(HMENU)IDM_SHOT_BUTTON,((LPCREATESTRUCT)(lp))->hInstance,NULL);
EnableWindow(upload_button,FALSE);
SetCursor(LoadCursor(NULL,IDC_ARROW));
break;
case WM_LBUTTONDOWN:
on_x = LOWORD(lp);
on_y = HIWORD(lp);
break;
case WM_LBUTTONUP:
up_x = LOWORD(lp);
up_y = HIWORD(lp);
sprintf(str,"%d:%d-%d:%d",on_x,on_y,up_x,up_y);
EnableWindow(upload_button,TRUE);
EnableWindow(shot_button,TRUE);
MessageBox(NULL,str,TEXT("test"),MB_OK);
break;
case WM_COMMAND:
switch(LOWORD(wp))
{
case IDM_EXIT:
PostQuitMessage(0);
break;
case IDM_USE:
ShellExecute(hwnd,"open","http://",NULL,NULL,SW_SHOWNORMAL);
break;
case IDM_VERSION:
DialogBox(hInst1,MAKEINTRESOURCE(IDD_VERSION_DIALOG),hwnd,DialogProc_VERSION);
break;
case IDM_UPLOAD_BUTTON:
break;
case IDM_SHOT_BUTTON:
EnableWindow(shot_button,FALSE);
SetCursor(LoadCursor(NULL,IDC_CROSS));
break;
}
break;
}
使用言語 : C言語
使用API : Win32API