|
다 지워졌네.. ㅜ.ㅜ 머 암튼
1. 폼 없는 윈도우를 사용할때 Hide로 두시고
Thread는 사용하시면 될듯합니다. waitfor 부분에서 cpu 사용량이 높을 듯 싶습니다
waitfor는 Terminate 될때까지 기다리는 함수입니다.
또한 Thread의 메모리 해제 하는 부분도 안보이는 군요
FreeOnTerminate = true 설정해주는 센스!
2. trayIcon는 빌더 6.0에서는 컴포넌트가 있습니다. 거기의 메소드를 이용하시면 폼을 안띄울수도 있습니다.
Popup메뉴 등록하는 부분도 있기 때문에 종료 메뉴를 추가 시켜 줄수 있습니다.
게시판 언딘가에 예제도 본거 같습니다. 찾아 보시면 쉽게 하실수 있을껍니다.. ^^
mossmin 님이 쓰신 글 :
: 폼이 없는 프로그램을 만들려 합니다.
: 폼 없이 10초에 한번씩 지정한 파일을 체크해서 변경이
: 있는 경우 로그를 남기는 처리를 하려고 합니다.
:
: 1.프로젝트에 폼을 포함시키지 않는다.
: 2.트레이 아이콘을 표시 해서 종료 할 수 있게 한다..
: 3.10초에 한번씩 체크 한다.
:
: 질문입니당..
: 1.아래와 같이 할 경우 CPU를 50%이상 차지 합니다.
: CPU 사용량을 낮게 할 수있는 방법을 알고 싶습니다.
:
: 2. 트레이 아이콘을 표시 하고 종료 메뉴를 넣을 수 있는
: 방법을 알고 싶습니다.
:
: WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
: {
: try
: {
: Application->Initialize();
: TimerThread * PicThread = new TimerThread();
: PicThread->WaitFor();
: PicThread->Terminate();
: Application->Run();
: }
: catch (Exception &exception)
: {
: Application->ShowException(&exception);
: }
: return 0;
: }
:
: class TimerThread: public TThread {
: enum { TIMERTHREAD_TERMINATE = WM_APP + 0x100 };
:
: void TimerProc(void) { Beep(); }
:
: public:
: TimerThread(): TThread(false) { }
:
: __fastcall ~TimerThread()
: {
: PostThreadMessage(ThreadID, TIMERTHREAD_TERMINATE, 0, 0);
: }
:
: void __fastcall Execute(void)
: {
: UINT id = SetTimer(NULL, 0, 10000, NULL);
: MSG msg;
: while (GetMessage(&msg, NULL, 0, 0)) {
: switch (msg.message) {
: case TIMERTHREAD_TERMINATE:
: KillTimer(NULL, id);
: return ;
: case WM_TIMER:
: TimerProc();
: break;
: }
: }
: }
|