¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤Ë¤Ä¤¤¤Æ
MessageBox¤Ï3¼ïÎय¤é¤¤¤¢¤ë¡£
»ÈÍÑÎã¢
¡¡¥¯¥é¥¹¤Ë¤è¤Ã¤Æ¾å¤ÎÎã¤Ï»È¤¨¤ë»þ¤È»È¤¨¤Ê¤¤»þ¤¬¤¢¤ë¡£
¡¡¥Ç¥Ð¥Ã¥¯¤Î»þ¤È¤«¤Ë¼è¤ê¹ç¤¨¤º¡¢²¿¤«É½¼¨¤·¤¿¤¤»þ¤Ï¼¡¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¡¢¥°¥í¡¼¥Ð¥ë¤ÎMessageBox¡ÊWin32API¤Î¤Û¤¦¡Ë¤ò¸Æ¤Ö¤Î¤ÇÂçÂÎɽ¼¨¤Ç¤¤ë¡£ºÇ½é¤Î¡É¡§¡§¡É¤¬½ÅÍס£
¡¡¸å¤«¤éµ¤¤Å¤¤¤¿¤ó¤À¤±¤ÉAfx¤Î¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤Ê¤é¤â¤Ã¤Èû¤¯¤¤¤±¤½¤¦¡£¡£
¡¡¢¤ß¤¿¤¤¤Ë¤ä¤Ã¤È¤¯¤È¡¢Ãͤò¸«¤¿¤¤¤±¤É¥Ç¥Ð¥Ã¥¬»È¤¦¤Î¤¬¥á¥ó¥É¥¤´¶¤¸¤Î¥Ç¥Ð¥Ã¥¯ÍѤËÊØÍø¤«¤â¡£
| //CWindow::MessageBox & CWnd::MessageBox int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK ); //Win32API int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); //Afx int AfxMessageBox(LPCTSTR lpszText ,UINT nType =MB_OK,UINT nIDHelp =0); int AFXAPIAfxMessageBox(UINT nIDPrompt ,UINT nType =MB_OK,UINT nIDHelp =(UINT)-1); |
»ÈÍÑÎã¢
| //CWindow::MessageBox & CWnd::MessageBox MessageBox("ÆâÍÆ"); MessageBox("ÆâÍÆ" , "¥¿¥¤¥È¥ë" , MB_OK); //Win32API MessageBox(NULL , "ÆâÍÆ" , "¥¿¥¤¥È¥ë" , MB_OK); |
¡¡¥¯¥é¥¹¤Ë¤è¤Ã¤Æ¾å¤ÎÎã¤Ï»È¤¨¤ë»þ¤È»È¤¨¤Ê¤¤»þ¤¬¤¢¤ë¡£
¡¡¥Ç¥Ð¥Ã¥¯¤Î»þ¤È¤«¤Ë¼è¤ê¹ç¤¨¤º¡¢²¿¤«É½¼¨¤·¤¿¤¤»þ¤Ï¼¡¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¡¢¥°¥í¡¼¥Ð¥ë¤ÎMessageBox¡ÊWin32API¤Î¤Û¤¦¡Ë¤ò¸Æ¤Ö¤Î¤ÇÂçÂÎɽ¼¨¤Ç¤¤ë¡£ºÇ½é¤Î¡É¡§¡§¡É¤¬½ÅÍס£
¡¡¸å¤«¤éµ¤¤Å¤¤¤¿¤ó¤À¤±¤ÉAfx¤Î¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤Ê¤é¤â¤Ã¤Èû¤¯¤¤¤±¤½¤¦¡£¡£
| //Win32API ::MessageBox(NULL , "ÆâÍÆ" , "¥¿¥¤¥È¥ë" , MB_OK); //Afx AfxMessageBox("ÆâÍÆ"); |
¡¡¢¤ß¤¿¤¤¤Ë¤ä¤Ã¤È¤¯¤È¡¢Ãͤò¸«¤¿¤¤¤±¤É¥Ç¥Ð¥Ã¥¬»È¤¦¤Î¤¬¥á¥ó¥É¥¤´¶¤¸¤Î¥Ç¥Ð¥Ã¥¯ÍѤËÊØÍø¤«¤â¡£
| CString text; text.Format("count = %d" , count); AfxMessageBox(text); |
#pragma¤ò»ÈÍѤ·¤¿¥é¥¤¥Ö¥é¥ê¤Î¥ê¥ó¥¯
¡¡VC¤Ç¤ÏÉáÄÌ¡¢¥é¥¤¥Ö¥é¥ê¤Î¥ê¥ó¥¯¤Ï¥á¥Ë¥å¡¼¤Î¥×¥í¥¸¥§¥¯¥È¡äÀßÄê¡ä¡¦¡¦¡¦¤Ã¤Æ´¶¤¸¤ÇÀßÄꤹ¤ë¤±¤É¡¢¤³¤Î1¹Ô¤ò¥Ø¥Ã¥À¤ÎƬ¤ËÆþ¤ì¤Æ¤ª¤±¤ÐÀßÄꤷ¤Ê¤¯¤Æ¤â¥ê¥ó¥¯¤µ¤ì¤ë¡£DLL¤Î¥ê¥ó¥¯¤Ç¤âƱÍͤ˻Ȥ¦¤é¤·¤¤¡£
| #pragma comment(lib, "xxx.lib") |
¥â¡¼¥É¥ì¥¹¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤òºî¤ë
¡¡¥â¡¼¥É¥ì¥¹¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤Ã¤Æ¤Î¤Ï¿Æ¥¦¥£¥ó¥É¥¦¤Ë¤âÆþÎϲÄǽ¤Ê¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¡£¿Æ¤ËÆþÎϤǤ¤Ê¤¤¤Î¤Ï¥â¡¼¥À¥ë¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¡£
¡¡¥â¡¼¥É¥ì¥¹¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤Îºî¤êÊý¤ÎºÇ¾®¸Â¤Î¼ê½ç¤Ï°Ê²¼¤ÎÄ̤ꡣ
£±¡¥¥À¥¤¥¢¥í¥°¥¨¥Ç¥£¥¿¤ÇÉáÄ̤˥À¥¤¥¢¥í¥°¤òºîÀ®¤·¡¢¤½¤Î¥¯¥é¥¹¤âºîÀ®¤¹¤ë¡£
¡ÊÎã¤È¤·¤Æ¥¯¥é¥¹¤òCDlg1¤È¤¹¤ë¡Ë
£²¡¥CDlg1¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¡£
£³¡¥CDlg1¤Î¥á¥ó¥Ð´Ø¿ôÆâ¤ÇCDialog::Create(CDlg1¤Î¥À¥¤¥¢¥í¥°ID , ¡Ê¢¨¿Æ¥¦¥£¥ó¥É¥¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ý¥¤¥ó¥¿¡Ë)¤ò¸Æ¤Ö¡£
¡ÊCDlg1::IDD¤Ç¼«Ê¬¤Î¥À¥¤¥¢¥í¥°ID¡Ë
¡¡Îã¡¡§Modeless¤È¤¤¤¦¥á¥ó¥Ð´Ø¿ô¤òºî¤Ã¤Æ¤½¤³¤Ç¿Æ¥¦¥£¥ó¥É¥¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ý¥¤¥ó¥¿¤òÅϤ·¤Æ¤¤¤ë¡£
Î㢡§¥³¥ó¥¹¥È¥é¥¯¥¿Æâ¤Çºî¤Ã¤Æ¤·¤Þ¤¦¾ì¹ç¡£¤Þ¤¿¡¢new¡¢delete¤ò»È¤Ã¤Æ¤ß¤ë¡£
¡¡°Õ³°¤È´Êñ¤Ç¡¢¥À¥¤¥¢¥í¥°¤È¤«¤òÉáÄ̤˺î¤Ã¤Æ¤½¤Î¥á¥ó¥Ð´Ø¿ô¤ÎÃæ¤ÇCDialog::Create()¤ò¸Æ¤Ö¤À¤±¡£CDialog::Create()¤òCDlg1¤Î¥á¥ó¥Ð´Ø¿ôÆâ¤Ç¸Æ¤Ö¤Î¤Ï¡¢¿Æ¥¯¥é¥¹¤Ç¸Æ¤Ö¤È¤Ê¤¼¤«¥¨¥é¡¼¤Ë¤Ê¤ë¡£¤ä¤Ã¤Æ¤ë¤³¤È¤Ï°ì½ï¤À¤È»×¤¦¤ó¤À¤±¤É¡¢¤è¤¯¤ï¤«¤é¤ó¡£
¡¡CDialog::Create()¤·¤¿¾õÂ֤Ǥ⤦°ìÅÙCDialog::Create()¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ë¤±¤É¡¢DestroyWindow()¤Ï¡¢¤â¤¦°ìÅÙDestroyWindow()¤·¤Æ¤â¥¨¥é¡¼¤Ë¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢¤¦¤Þ¤¯»È¤¨¤Ð¤¤¤¤¤«¤â¡£
¡¡¤Á¤Ê¤ß¤Ë¡¢¿Æ¥¯¥é¥¹¤Î¥á¥ó¥ÐÊÑ¿ô¤ËCDlg1¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò»ý¤¿¤»¤Æ¤ª¤¤¤Æ¡¢Î㣲¤Î¤è¤¦¤ËCDlg1¤Î¥³¥ó¥¹¥È¥é¥¯¥¿Æâ¤ÇCDialog::Create()¤ò¹Ô¤¦¤È¡¢¿Æ¥¦¥£¥ó¥É¥¦¤¬¤Ê¤¤¾õÂ֤ˤʤꡢ¤â¤¦°ì¤ÄÉáÄ̤˰㤦¥À¥¤¥¢¥í¥°¤¬½Ð¤¿¾õÂ֤ˤʤ롣½Å¤Ê¤ê¤Î½ç°Ì¤¬ÊѤ¨¤é¤ì¤ë¤Î¤È¡¢¥¿¥¹¥¯¥Ð¡¼¤Ë¥¢¥¤¥³¥ó¤¬¤â¤¦°ì¤Ä½Ð¤ë¤È¤³¤í¤¬°ã¤¦¡£
¡¡¥â¡¼¥É¥ì¥¹¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤Îºî¤êÊý¤ÎºÇ¾®¸Â¤Î¼ê½ç¤Ï°Ê²¼¤ÎÄ̤ꡣ
£±¡¥¥À¥¤¥¢¥í¥°¥¨¥Ç¥£¥¿¤ÇÉáÄ̤˥À¥¤¥¢¥í¥°¤òºîÀ®¤·¡¢¤½¤Î¥¯¥é¥¹¤âºîÀ®¤¹¤ë¡£
¡ÊÎã¤È¤·¤Æ¥¯¥é¥¹¤òCDlg1¤È¤¹¤ë¡Ë
£²¡¥CDlg1¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¡£
£³¡¥CDlg1¤Î¥á¥ó¥Ð´Ø¿ôÆâ¤ÇCDialog::Create(CDlg1¤Î¥À¥¤¥¢¥í¥°ID , ¡Ê¢¨¿Æ¥¦¥£¥ó¥É¥¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ý¥¤¥ó¥¿¡Ë)¤ò¸Æ¤Ö¡£
¡ÊCDlg1::IDD¤Ç¼«Ê¬¤Î¥À¥¤¥¢¥í¥°ID¡Ë
¡¡Îã¡¡§Modeless¤È¤¤¤¦¥á¥ó¥Ð´Ø¿ô¤òºî¤Ã¤Æ¤½¤³¤Ç¿Æ¥¦¥£¥ó¥É¥¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ý¥¤¥ó¥¿¤òÅϤ·¤Æ¤¤¤ë¡£
| //¿Æ¥¯¥é¥¹¤Ç¥¤¥ó¥¹¥¿¥ó¥¹¡Ê¥â¡¼¥É¥ì¥¹¤Î¾ì¹ç¤Ï¥á¥ó¥ÐÊÑ¿ô¤È¤«¤Ë¤·¤Ê¤¤¤È¾Ã¤¨¤ë¤è¡Ë CDlg1 Dlg1; |
| //¿Æ¥¯¥é¥¹¤«¤é¤Î¸Æ¤Ó½Ð¤· Dlg1.Modeless(this); |
| //CDlg1¥¯¥é¥¹Æâ¤Î¥á¥ó¥Ð´Ø¿ô¤ÇCDialog::Create()¤Î¸Æ¤Ó½Ð¤· void CDlg1::Modeless(CWnd *pParent) { CDialog::Create(CDlg1::IDD , pParent); } //¾Ã¤¹»þ¤Ï¤³¤ó¤Ê´¶¤¸¡£¤â¤¦°ìÅÙºî¤ë»þ¤ÏCDialog::Create()¤ò¸Æ¤Ù¤ÐOK void CDlg1::OnOK() { DestroyWindow(); } |
Î㢡§¥³¥ó¥¹¥È¥é¥¯¥¿Æâ¤Çºî¤Ã¤Æ¤·¤Þ¤¦¾ì¹ç¡£¤Þ¤¿¡¢new¡¢delete¤ò»È¤Ã¤Æ¤ß¤ë¡£
| //¿Æ¥¯¥é¥¹¤Î¥á¥ó¥ÐÊÑ¿ô¤ËCDlg1¥¯¥é¥¹¤Î¥Ý¥¤¥ó¥¿¤òºî¤Ã¤Æ¤ª¤¯ CDlg1 *Dlg1; |
| //¿Æ¥¯¥é¥¹¤Ç¥¤¥ó¥¹¥¿¥ó¥¹¤ÎÀ¸À® Dlg1 = new CDlg1(this); |
| //CDlg1¥¯¥é¥¹Æâ¤Î¥³¥ó¥¹¥È¥é¥¯¥¿Æâ¤ÇCDialog::Create()¤ò¸Æ¤Ö¡£ void CDlg1::CDlg1(CWnd *pParent) : CDialog(CDlg1::IDD , pParent) { //{{AFX_DATA_INIT(CDlg1) // ¥á¥â - ClassWizard ¤Ï¤³¤Î°ÌÃ֤˥ޥåԥó¥°ÍѤΥޥ¯¥í¤òÄɲäޤ¿¤Ïºï½ü¤·¤Þ¤¹¡£ //}}AFX_DATA_INIT CDialog::Create(CDlg1::IDD , pParent); } |
| //ºÇ¸å¤Ë¿Æ¥¯¥é¥¹¤ÇDestroyWindow() ¤È delete ¤È¤« Dlg1->DestroyWindow(); delete Dlg1; |
¡¡°Õ³°¤È´Êñ¤Ç¡¢¥À¥¤¥¢¥í¥°¤È¤«¤òÉáÄ̤˺î¤Ã¤Æ¤½¤Î¥á¥ó¥Ð´Ø¿ô¤ÎÃæ¤ÇCDialog::Create()¤ò¸Æ¤Ö¤À¤±¡£CDialog::Create()¤òCDlg1¤Î¥á¥ó¥Ð´Ø¿ôÆâ¤Ç¸Æ¤Ö¤Î¤Ï¡¢¿Æ¥¯¥é¥¹¤Ç¸Æ¤Ö¤È¤Ê¤¼¤«¥¨¥é¡¼¤Ë¤Ê¤ë¡£¤ä¤Ã¤Æ¤ë¤³¤È¤Ï°ì½ï¤À¤È»×¤¦¤ó¤À¤±¤É¡¢¤è¤¯¤ï¤«¤é¤ó¡£
¡¡CDialog::Create()¤·¤¿¾õÂ֤Ǥ⤦°ìÅÙCDialog::Create()¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤ë¤±¤É¡¢DestroyWindow()¤Ï¡¢¤â¤¦°ìÅÙDestroyWindow()¤·¤Æ¤â¥¨¥é¡¼¤Ë¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢¤¦¤Þ¤¯»È¤¨¤Ð¤¤¤¤¤«¤â¡£
¡¡¤Á¤Ê¤ß¤Ë¡¢¿Æ¥¯¥é¥¹¤Î¥á¥ó¥ÐÊÑ¿ô¤ËCDlg1¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò»ý¤¿¤»¤Æ¤ª¤¤¤Æ¡¢Î㣲¤Î¤è¤¦¤ËCDlg1¤Î¥³¥ó¥¹¥È¥é¥¯¥¿Æâ¤ÇCDialog::Create()¤ò¹Ô¤¦¤È¡¢¿Æ¥¦¥£¥ó¥É¥¦¤¬¤Ê¤¤¾õÂ֤ˤʤꡢ¤â¤¦°ì¤ÄÉáÄ̤˰㤦¥À¥¤¥¢¥í¥°¤¬½Ð¤¿¾õÂ֤ˤʤ롣½Å¤Ê¤ê¤Î½ç°Ì¤¬ÊѤ¨¤é¤ì¤ë¤Î¤È¡¢¥¿¥¹¥¯¥Ð¡¼¤Ë¥¢¥¤¥³¥ó¤¬¤â¤¦°ì¤Ä½Ð¤ë¤È¤³¤í¤¬°ã¤¦¡£
¿§¤ÎÀßÄê¤Ê¤ó¤«¤Î¥Þ¥¯¥í¤È¤«
¡¡MFC¤È¤¤¤¦¤«Win32SDK¤Ç¤Ï¿§¤ÎÀßÄê¤Ê¤ó¤«¤ò¹Ô¤¦¤È¤¤ËCOLORREF·¿¤È¤¤¤¦¤â¤Î¤ò»È¤¦¡£COLORREF·¿¤ò»È¤¤¤¿¤¤¤È¤¤Ï¡¢RGB¤½¤ì¤¾¤ì¤ÎÀ®Ê¬ÃͤȤÎÊÑ´¹¤Î¥Þ¥¯¥í¤¬¤¢¤ë¤Î¤ÇÂçÂΤ½¤ì¤ò»È¤¦¡£
¡¡COLORREF·¿¡§¥«¥é¡¼ÃͤȤ·¤Æ»È¤ï¤ì¤ë 32 ¥Ó¥Ã¥ÈÃÍ¡£¡ÊDWORD¡Ë
¡¡¤Á¤Ê¤ß¤ËCOLORREF·¿¤ÏDWORD¤Ç4¥Ð¥¤¥È¤Ê¤Î¤Ç¤½¤ÎÃæ¿È¤Ï¡¢ºÇ½é¤Î1¥Ð¥¤¥È¤¬¾ï¤Ë0¡Ê»È¤ï¤Ê¤¤¡Ë¡¢¤½¤ì¤«¤éBÀ®Ê¬¡¢GÀ®Ê¬¡¢RÀ®Ê¬¤Î½ç¤È¤Ê¤ë¡£
¡¡COLORREF·¿¤É¤¦¤·¤ò¤·¤¿¤ê°ú¤¤¤¿¤ê¤·¤Æ·×»»¤Ç¤¤ë¡£¤½¤Î»þ¤Ï³ÆÀ®Ê¬0¡Á255¤¸¤ã¤Ê¤¤¤È¤ª¤«¤·¤¯¤Ê¤ë¤Î¤ÇÃí°Õ¡£¥¯¥é¥¹¤Ç¤â¤Ê¤¤¤Î¤ÇÈϰÏÀ©¸Â¤·¤Æ¤¯¤ì¤¿¤ê¤·¤Ê¤¤¡£
¡¡COLORREF·¿¡§¥«¥é¡¼ÃͤȤ·¤Æ»È¤ï¤ì¤ë 32 ¥Ó¥Ã¥ÈÃÍ¡£¡ÊDWORD¡Ë
| //RGB¤ÎÀ®Ê¬¤«¤éCOLORREF·¿¤Ø COLORREF RGB(BYTE bRed, BYTE bGreen, BYTE bBlue); //COLORREF·¿¤«¤éRGB¤ÎÀ®Ê¬¤Ø BYTE GetRValue(COLORREF rgb); //ÀÖ BYTE GetGValue(COLORREF rgb); //ÎÐ BYTE GetBValue(COLORREF rgb); //ÀÄ |
¡¡¤Á¤Ê¤ß¤ËCOLORREF·¿¤ÏDWORD¤Ç4¥Ð¥¤¥È¤Ê¤Î¤Ç¤½¤ÎÃæ¿È¤Ï¡¢ºÇ½é¤Î1¥Ð¥¤¥È¤¬¾ï¤Ë0¡Ê»È¤ï¤Ê¤¤¡Ë¡¢¤½¤ì¤«¤éBÀ®Ê¬¡¢GÀ®Ê¬¡¢RÀ®Ê¬¤Î½ç¤È¤Ê¤ë¡£
¡¡COLORREF·¿¤É¤¦¤·¤ò¤·¤¿¤ê°ú¤¤¤¿¤ê¤·¤Æ·×»»¤Ç¤¤ë¡£¤½¤Î»þ¤Ï³ÆÀ®Ê¬0¡Á255¤¸¤ã¤Ê¤¤¤È¤ª¤«¤·¤¯¤Ê¤ë¤Î¤ÇÃí°Õ¡£¥¯¥é¥¹¤Ç¤â¤Ê¤¤¤Î¤ÇÈϰÏÀ©¸Â¤·¤Æ¤¯¤ì¤¿¤ê¤·¤Ê¤¤¡£
¥×¥ê¥ó¥È¥¹¥¯¥ê¡¼¥ó¤Î¤ä¤êÊý
GetDesktopWindow()¤Ç¥Ç¥¹¥¯¥È¥Ã¥×¥¦¥£¥ó¥É¥¦¤ò¥²¥Ã¥È¤·¤Æ¡¢¹¹¤Ë¤½¤Î¥Ç¥Ð¥¤¥¹¥³¥ó¥Æ¥¥¹¥È¤ò¥²¥Ã¥È¤¹¤ë¡£¤ó¤Ç¡¢¤³¤ì¤òÉÁ¤¤¿¤¤DC¤Ë¥³¥Ô¤ë¤À¤±¡£
¼«Ê¬¤Î¥¦¥£¥ó¥É¥¦¤ò¼Ì¤·¤¿¤¯¤Ê¤¤¤È¤¤È¤«¤Ï¡¢Ä¾Á°¤ËºÇ¾®²½¤È¤«¤¹¤ë¤Ê¤êŬÅö¤ËÂн褹¤ì¤Ð¤¤¤¤¤ó¤¸¤ã¤Ê¤¤¡©
| CRect rect; GetDesktopWindow()->GetWindowRect(rect); //¥Ç¥¹¥¯¥È¥Ã¥×¤Î¥µ¥¤¥º CDC *wdc = GetDesktopWindow()->GetWindowDC(); //¥Ç¥¹¥¯¥È¥Ã¥×¤ÎDC dcMem.BitBlt(0, 0, rect.Width(), rect.Height(), wdc, 0, 0, SRCCOPY); |
¼«Ê¬¤Î¥¦¥£¥ó¥É¥¦¤ò¼Ì¤·¤¿¤¯¤Ê¤¤¤È¤¤È¤«¤Ï¡¢Ä¾Á°¤ËºÇ¾®²½¤È¤«¤¹¤ë¤Ê¤êŬÅö¤ËÂн褹¤ì¤Ð¤¤¤¤¤ó¤¸¤ã¤Ê¤¤¡©


