ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: スポイトアプリケーション
名前: lightbox
処理選択
パスワード

件名 スポイトアプリケーション
名前 lightbox
コメント
↓ベースアプリ
http://winofsql.jp/sh/html/vc8_dialog_base.htm

↓簡易スポイトアプリ
@DIV
// *********************************************************
// 【スポイトプログラム】
// *********************************************************

#define _WIN32_WINNT 0x0500
#include <tchar.h>
#include "lightbox\lightbox.h"

#pragma comment( lib, "lightbox\\lightbox.lib" )
#pragma comment( lib, "shlwapi.lib" )

#define CONNECT_DELOBJECT	LBOX_USER + 1

LboxTool Tool;			// ツールオブジェクト
LboxDlg *Dlg = NULL;

LRESULT CALLBACK DialogProc( HWND, UINT, WPARAM, LPARAM );

// *********************************************************
// Windows アプリケーションとしてのエントリポイント
// Link.exe で /SUBSYSTEM:WINDOWS がデフォルトで
// 指定される事になります
// *********************************************************
int APIENTRY _tWinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPTSTR lpCmdLine,
	int nCmdShow
)
{

	// ダイアログ表示
	DialogBox(
		hInstance,
		(LPCTSTR)1, 
		GetDesktopWindow(), 
		(DLGPROC)DialogProc);

	return 0;
}

int flg = 0;
// *********************************************************
//  MDB 接続ダイアログ
// *********************************************************
LRESULT CALLBACK DialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{

	switch( message ) {
	case WM_INITDIALOG:

		// ダイアログオブジェクト作成
		Dlg = new LboxDlg( hDlg );
		Dlg->ChangeIcon( 1 );

		// デスクトップの左上
		Dlg->MoveWindow(0,0);

		return true;

	case WM_LBUTTONUP:
		ReleaseCapture();

		{
			POINTS pts;
			POINT pt;
			pts = MAKEPOINTS(lParam);
			pt.x = pts.x;
			pt.y = pts.y;
			ClientToScreen( hDlg, &pt );

			HDC DispDC;
			COLORREF Clr;

			DispDC = CreateDC("DISPLAY",NULL,NULL,NULL);
			Clr = GetPixel(DispDC,pt.x,pt.y);
			DeleteDC(DispDC);

			LboxString LString;
			LString.Printf("%02X%02X%02X",
				GetRValue(Clr), GetGValue(Clr), GetBValue(Clr));

			// クリップボードへコピー
			Tool.CopyClipboard( LString.szLboxString );

		}
		Dlg->End( LOWORD(wParam) );
		Dlg->SendMsg( CONNECT_DELOBJECT, 0, 0 );

		break;

	case WM_RBUTTONDOWN:
		// なにもせずに終了
		ReleaseCapture();
		Dlg->End( LOWORD(wParam) );
		Dlg->SendMsg( CONNECT_DELOBJECT, 0, 0 );
		break;

	case WM_COMMAND:

		// スポイト開始
		if( LOWORD(wParam) == 1 ) {
			INPUT inmouse;
			MOUSEINPUT mi;
		
			memset( &mi, 0x00, sizeof( MOUSEINPUT ) );
		
			// マウスの処理を作成
			mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
		
			inmouse.type = INPUT_MOUSE;
			inmouse.mi = mi;
		
			// マウスの送信
			int ret;
			ret = SendInput( 1, &inmouse, sizeof( INPUT ) );

			// マウスダウンでドラッグ状態をエミュレート

			// キャプチャ開始
			SetCapture(hDlg);
			// 十字カーソル
			SetCursor(LoadCursor(NULL, IDC_CROSS));
			// ダイアログ最小化
			Dlg->Minimize();
		}

		// x ボタンで終了
		if( LOWORD(wParam) == 2 ) {
			SetCursor(LoadCursor(NULL, IDC_ARROW));
			ReleaseCapture();
			Dlg->End( LOWORD(wParam) );
			Dlg->SendMsg( CONNECT_DELOBJECT, 0, 0 );
		}

		break;

	case CONNECT_DELOBJECT:

		// ダイアログオブジェクトの廃棄
		delete Dlg;
		break;

	}
	return FALSE;
}
@END