svnno****@sourc*****
svnno****@sourc*****
2011年 5月 8日 (日) 20:58:42 JST
Revision: 4467 http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4467 Author: yutakapon Date: 2011-05-08 20:58:42 +0900 (Sun, 08 May 2011) Log Message: ----------- ãã¼ã¸ã§ã³ãã¤ã¢ãã°ã®èæ¯ã«ãã¡ãã£ã¨ããã°ã©ãã£ãã¯ã¨ãã§ã¯ãã追å ããã å°æ¥çã«ã¯ããã¦ã¹ã«ã¼ã½ã«ã®ç§»åã«åããã¦ãã¨ãã§ã¯ããåçã«å¤åããããã Modified Paths: -------------- trunk/teraterm/ttpdlg/ttdlg.c -------------- next part -------------- Modified: trunk/teraterm/ttpdlg/ttdlg.c =================================================================== --- trunk/teraterm/ttpdlg/ttdlg.c 2011-05-03 15:27:51 UTC (rev 4466) +++ trunk/teraterm/ttpdlg/ttdlg.c 2011-05-08 11:58:42 UTC (rev 4467) @@ -2663,6 +2663,19 @@ char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG]; LOGFONT logfont; HFONT font; + // for animation + static HDC dlgdc = NULL; + static int dlgw, dlgh; + static HBITMAP dlgbmp = NULL, dlgprevbmp = NULL; + static LPDWORD dlgpixel = NULL; + static HICON dlghicon = NULL; + //const int ID_EFFECT_TIMER = 1; + RECT dlgrc = {0}; + BITMAPINFO bmi; + BITMAPINFOHEADER bmiHeader; + PAINTSTRUCT ps; + int x, y; +#define POS(x,y) ((x) + (y)*dlgw) switch (Message) { case WM_INITDIALOG: @@ -2702,7 +2715,13 @@ hicon = LoadImage(hInst, MAKEINTRESOURCE(IDI_TTERM), IMAGE_ICON, 32, 32, fuLoad); +#if 0 SendDlgItemMessage(Dialog, IDC_TT_ICON, STM_SETICON, (WPARAM)hicon, 0); +#else + // Picture Control É`æ·éÆAȺ©§ßFª§ßÉÈç¸AÆÈÁĵܤ½ßA + // WM_PAINT Å`æ·éB + dlghicon = hicon; +#endif } GetWindowText(Dialog, uimsg2, sizeof(uimsg2)); @@ -2784,22 +2803,132 @@ // bZ[WªE¦È¢B(2005.4.5 yutaka) do_subclass_window(GetDlgItem(Dialog, IDC_AUTHOR_URL), &author_url_class); do_subclass_window(GetDlgItem(Dialog, IDC_FORUM_URL), &forum_url_class); + + /* + * _CAOÌrbg}bv»ðs¢AwiÉGtFNgð©¯çêéæ¤É·éB + * (2011.5.7 yutaka) + */ + // _CAOÌTCY + GetWindowRect(Dialog, &dlgrc); + dlgw = dlgrc.right - dlgrc.left; + dlgh = dlgrc.bottom - dlgrc.top; + // rbg}bvÌì¬ + dlgdc = CreateCompatibleDC(NULL); + ZeroMemory(&bmiHeader, sizeof(BITMAPINFOHEADER)); + bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bmiHeader.biWidth = dlgw; + bmiHeader.biHeight = -dlgh; + bmiHeader.biPlanes = 1; + bmiHeader.biBitCount = 32; + bmi.bmiHeader = bmiHeader; + dlgbmp = CreateDIBSection(NULL, (LPBITMAPINFO)&bmi, DIB_RGB_COLORS, &dlgpixel, NULL, 0); + dlgprevbmp = (HBITMAP)SelectObject(dlgdc, dlgbmp); + // rbg}bvÌwiFi©Ä¯ÁÛ¢jðìéB + for (y = 0 ; y < dlgh ; y++) { + double dx = (double)(255 - 180) / dlgw; + double dy = (double)255/dlgh; + BYTE r, g, b; + for (x = 0 ; x < dlgw ; x++) { + r = min((int)(180+dx*x), 255); + g = min((int)(180+dx*x), 255); + b = max((int)(255-y*dx), 0); + // æfÌÀÑÍAºÊoCg©çB, G, R, AÆÈéB + dlgpixel[POS(x, y)] = b | g << 8 | r << 16; + } + } + // GtFNg^C}[ÌJn + //SetTimer(Dialog, ID_EFFECT_TIMER, 40, NULL); + return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { + int val; case IDOK: - EndDialog(Dialog, 1); - return TRUE; + val = 1; + case IDCANCEL: + val = 0; + //KillTimer(Dialog, ID_EFFECT_TIMER); - case IDCANCEL: - EndDialog(Dialog, 0); + SelectObject(dlgdc, dlgprevbmp); + DeleteObject(dlgbmp); + DeleteDC(dlgdc); + dlgdc = NULL; + dlgprevbmp = dlgbmp = NULL; + + EndDialog(Dialog, val); return TRUE; } if (DlgAboutFont != NULL) { DeleteObject(DlgAboutFont); } break; + + // static textÌwið§ß³¹éB + case WM_CTLCOLORSTATIC: + SetBkMode((HDC)wParam, TRANSPARENT); + return (BOOL)GetStockObject( NULL_BRUSH ); + break; + + case WM_PAINT: + if (dlgdc) { + hdc = BeginPaint(Dialog, &ps); + BitBlt(hdc, + ps.rcPaint.left, ps.rcPaint.top, + ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top, + dlgdc, + ps.rcPaint.left, ps.rcPaint.top, + SRCCOPY); + + DrawIconEx(hdc, 15, 10, dlghicon, 0, 0, 0, 0, DI_NORMAL | DI_DEFAULTSIZE); + + EndPaint(Dialog, &ps); + } + break; + +#if 0 + case WM_MOUSEMOVE: + { + int xpos, ypos, x, y, nx, ny, max = 10; + DWORD val; + BYTE r, g, b; + RECT rc; + + xpos = LOWORD(lParam); + ypos = HIWORD(lParam); + + for (y = -max ; y < max ; y++) { + for (x = -max ; x < max ; x++) { + nx = xpos + x; + ny = ypos + y; + if (nx >= 1 && nx <= dlgw-1 && + ny >= 1 && ny <= dlgh-1) { + + val = dlgpixel[POS(nx,ny)]; + r = GetRValue(val); + g = GetGValue(val); + b = GetBValue(val); + val = (r + g + b) / 3; + dlgpixel[POS(nx,ny)] = b | g << 8 | r << 16; + } + } + } + + rc.left = xpos - max; + rc.top = ypos - max; + rc.right = xpos + max; + rc.bottom = ypos + max; + InvalidateRect(Dialog, &rc, FALSE); + } + break; + + case WM_TIMER: + if (wParam == ID_EFFECT_TIMER) + { + } + break; +#endif + } return FALSE; }