コメント |
↓ベースアプリ
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
|