2002년 10월 4일 금요일

Tray icon 설계와 관련 Win32 API

Icon 은 32, 16 의 두가지가 있는데 32->16시 4pixel 을 하나로 합하고,
16->32시 주변의 평균을 취해서 아이콘이 흐려진다.
tray icon 은 32 크기를 사용하는데 (0,0) 을 기준으로 했을때
(1,1) , (3,1) , (1,3) , (3,3) ... 에 있는 점만 모아서 16형태로 보여준다.
원래 16형태 아이콘은 정상적으로 표현되지 않는다.




시스템 트레이에 아이콘 설치하는 방법

NOTIFYICONDATA systemtray;

// 아이콘등록: hwnd:부모, uID:트레이아이디는, messageID:Event 발생시 날아오는 ID
BOOL SystemTray_Register (HWND hwnd, UINT uID, UINT messageID) {
    systemtray.cbSize = sizeof (systemtray);
    systemtray.hWnd = hwnd;
    systemtray.uID = uID;
    systemtray.uFlags = NIF_MESSAGE;
    systemtray.uCallbackMessage = messageID;
    return Shell_NotifyIcon (NIM_ADD, &systemtray);
}

// 설명바꾸기(uID는 동일함으로 그냥 둠): iconID:resource 에 있는 아이콘 ID, szTip:새ToolTip
BOOL SystemTray_Modify (UINT iconID, char *szTip) {
    systemtray.uFlags = NIF_ICON NIF_TIP;
    systemtray.hIcon = LoadIcon (hInst, MAKEINTRESOURCE(iconID));
    strcpy (systemtray.szTip, szTip);
    return Shell_NotifyIcon (NIM_MODIFY, &systemtray);
}

// 삭제(uID는 동일함으로 그냥 둠)
BOOL UnRegisterSystemTray () {
    systemtray.uFlags = 0;
    return Shell_NotifyIcon (NIM_DELETE , &systemtray);
}

SystemTray_Register (hwnd, 1, WM_USER+1);
SystemTray_Modify (IconID, "Tool Tip");

댓글 없음: