VC++ CLR 창 형식을 사용하여 GUI를 만들고 단축키를 사용하여 최소화 한 시스템 트레이에서 내 창을 복원하려고합니다. 나는 RegisterHotKey
이 시스템에서 글로벌 단축키를 만드는 방법이라는 것을 알았지 만, 내 코드에서 그것을 사용하는 방법을 이해하지 못한다.C++ CLR 창은 RegisterHotKey를 사용하여 최소화 된 창을 복원합니다.
의견이 있으십니까 ??
VC++ CLR 창 형식을 사용하여 GUI를 만들고 단축키를 사용하여 최소화 한 시스템 트레이에서 내 창을 복원하려고합니다. 나는 RegisterHotKey
이 시스템에서 글로벌 단축키를 만드는 방법이라는 것을 알았지 만, 내 코드에서 그것을 사용하는 방법을 이해하지 못한다.C++ CLR 창은 RegisterHotKey를 사용하여 최소화 된 창을 복원합니다.
의견이 있으십니까 ??
먼저 당신은 윈도우 헤더를 #include를 예를 들어, STDAFX.H 미리 컴파일 된 헤더 파일에 넣어해야합니다
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
#pragma once
#include <Windows.h>
#pragma comment(lib, "user32.lib")
의 #pragma는 링커가 USER32.DLL에 대한 가져 오기 라이브러리를 연결할 것이다 보장 RegisterHotKey()를 링크하는 데 필요합니다.
다음으로 Form 클래스 내에서 OnHandleCreated() 메서드를 재정의해야합니다. 양식의 기본 창이 생성 될 때마다 실행됩니다. 한 번 이상 발생할 수 있습니다. 다음과 같이 설정하십시오 :
protected:
virtual void OnHandleCreated(EventArgs^ e) override {
__super::OnHandleCreated(e);
RegisterHotKey((HWND)this->Handle.ToPointer(), 1,
MOD_ALT | MOD_CONTROL, (UINT)Keys::F1);
}
단축키를 Ctrl + Alt + F1에 하드 코딩하여 사용하려는 것으로 변경하십시오. 추가 단축키를 추가 할 수 있습니다. id 인수 (두 번째 인수는 1을 사용했습니다)를 변경하십시오.
그런 다음 사용자가 키를 누를 때 Windows에서 보낼 WM_HOTKEY 메시지를 검색해야합니다. Ctrl + Alt + F1을 눌러 양식을 최소화하여
protected:
virtual void WndProc(Message% m) override {
if (m.Msg == WM_HOTKEY && m.WParam.ToInt32() == 1) {
this->WindowState = FormWindowState::Normal;
this->BringToFront();
}
__super::WndProc(m);
}
시험이 당신은 창을 복원하고 다시 전경으로 이동하기가 나타납니다 : 즉,이 같은 형태의의 WndProc() 메소드를 오버라이드 (override)가 필요합니다.
도움을 주신 것에 감사드립니다. 한스, 코드를 사용해 보았지만 원하는대로 작동하지 않았습니다. 나는 그것을 최소화로 숨 깁니다 부분에서 주석 경우 내 프로그램이
private:
System::Void MyForm::MyForm_Resize(System::Object^ sender, System::EventArgs^ e) {
if (WindowState == FormWindowState::Minimized)
{
Hide();
}
}
아래의 코드로 시스템 트레이에 최소화 할 것, 그것을 잘 생각 밖으로했다.
C++이 아닌 C++/CLI를 사용하는 것처럼 들립니다. 그렇다면 질문을 다시 읽어야합니다. – IInspectable