私はちょうどこれに遭遇したので、私は私の解決策を追加すると思った。レコードをデータベースに貼り付けるボタンがあるので、クライアントにとっては明らかです。クリップボードに有効なデータがある場合、ボタンを有効にしたかっただけです。選択されたレコードとの前で背中やメモ帳++で
私のアプリ:ここでは、それは次のようになります。メモ帳のテキストをCtrl + Cキーで押すと、ツールバーにある「私」は、自分のアプリがアイドルであってもアクティブになります。私のアプリはクリップボードチェーンの一部であり、通知されます。これはWM_DRAWCLIPBOARDハンドラです。そこから
LRESULT CMainFrame::OnDrawClipboard( WPARAM wparam, LPARAM lparam )
{
if(hWndClipboardChain)
::SendMessage(hWndClipboardChain, WM_DRAWCLIPBOARD, wparam, lparam);
if(wparam)
PostMessage(ID_CLIPBOARD_HASCHANGED, 0, 0);
return TRUE;
}
私はそこに私のアプリWM_DRAWCLIPBOARDメッセージの邪魔になっていないへの投稿、および:私のアプリのメインスレッドがメッセージと「Iによって起床さ
LRESULT CMainFrame::OnCheckClipboard( WPARAM wparam, LPARAM lparam )
{
std::string data(GetClipboardStr());
std::string::size_type end_cnt= data.find("\r\n");
if(end_cnt == std::string::npos)
bClipboardHasValidRecords= false;
else
{
auto header_end= data.begin() + end_cnt;
csv_vect_t header;
split(header, str_it_range_t(data.begin(), header_end), boost::is_any_of("\t"));
bClipboardHasValidRecords= header.size() == RARECORD_SIZE;
}
return TRUE;
}
アプリをアクティブなウィンドウにしなくてもオンとオフが切り替わります。それはちょっとしたコードなしでも起こります。
あなたの質問(質問の場合)は不明です。あなたは何の問題があるのですか? – rrirower
私はあなたが正しいと思う、それはボタンの動きだ。コードが実行されることになっている場合は、クリックハンドラをチェックインする必要があります。 –
私は 'コード'が ''あなたがワーカースレッドからフラグを設定していると仮定します。もしそうなら、これは、マウスがアプリケーションウィンドウ上になく、メインスレッドが完全にアイドルであるときに期待されます。それがアクティブである間にマウスをボタンに移動してクリックしないでください。私はあなたがそこに行けるとは思わない。 – lakeweb