|
■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ ☆★☆★☆★☆ 宝探しゲームサイト登場!「タカラカジノ」☆★☆★☆★☆ 宝探しがテーマのゲームサイト登場!パチンコ、JAVAゲームなど満載! 現代版七福神と宝を探しながらゲームを楽しもう! ☆★☆★☆★☆ 10%ボーナスチップ進呈中!! ☆★☆★☆★☆ http://partners.starnetsystems.net/qb/ClickServlet?pid=409838&cid=31320 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ 発行部数:MagMag 2345 Pubzine 306 カプライト215 Melten 39 E-Magazine 53 ここでメール 149 Macky 164 Melma 224 総発行部数:3500 ▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼ ------------------------------------------------------------ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ■CからはじめるWindowsDirectXへの道 ■ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ホーム:<http://www.geocities.co.jp/SiliconValley-Bay/3125> ┌─────────────────────────────┐ ■第2章 ファイル操作( ファイル 編) └─────────────────────────────┘ さて、Winndows編もはや18回に突入しました. しかし、調査的とはいえ、Webの広告を見ている人の数は、 今のところでは、全体の0.1%未満です。 3500人中35人もいません。 同じような広告ですと、一度見たら飽きてしまいますね。 やはり何かおっと思わせる広告の方がいいものです。 そこで、今回考えました。目立つようにしてみる。 目標としては、0.2%の70人の方が訪れる。 あとは、必要性ですね。ISDNを導入するにしても、 なかなか必要性という分野にまではいかない。 そういう方が多いと思います。 しかし、私もそうですが、フレッツ接続はISDNのデジタル回線で ないと意味がないようですね。古い話かもしれませんが・・・。 また、今回から広告をご覧になる方は、メールのフッター部 一番下に掲載を行います。 一部、良い広告につきましては、お勧め欄として、この欄周辺に 掲載を行います。以下そのような広告です。 ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-// PR//-=-= ■「急がなあんかんで、自分!」 □「へぇ、なんで?どっかでバーゲンでもやってんのかいな?」 ■「ちがうがなっ。25日までに『きかせて・net』のアンケートモニターに 登録したら【333ポイント】もらえんねん!」 □「ほんまぁ〜?そりゃぁ登録してみなあかんやん!」 −せやけど『きかせて・net』ってなんなん??− ┏━━━━━━━┓ ┃アンケート ┃ 「ポイントだけじゃない」モニターネットワーク ┃モニター募集中┃ http://www.kikasete.ne.jp/6pb.html ┗━━━━━━━┛ =-=-//000237-00637//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ プログラミング概要 今回から、簡単なクラスを使った説明をしていきます。 こうすれば、一回使ったコードを忘れても?大丈夫です。 クラスの本来の目的とは、流用性にあります。 それでは、今回Windowsプログラミング編を進めていきます。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● ファイル操作 ● 今回は、ファイル操作 について触れていきます. 関数などの説明は、サンプルのあとに乗せていきます。 ┌─────────────────────────────┐ ■ ヘッダーファイル ■ ┌─────────────────────────────┐ #define IDM_OPEN 101 #define IDM_MKDir 102 #define IDM_COPY 103 #define IDM_EXIT 104 #define IDM_KILLDir 105 #define IDM_MOVE 106 ┌─────────────────────────────┐ ■ リソースファイル ■ ┌─────────────────────────────┐ #include<windows.h> #include "win17.h" WIN17MENU MENU DISCARDABLE BEGIN POPUP "&File" BEGIN MENUITEM "&Open", IDM_OPEN MENUITEM "&MakeDir", IDM_MKDir MENUITEM "&DeleteDir", IDM_KILLDir MENUITEM "&CopyDir", IDM_COPY MENUITEM "E&xit", IDM_EXIT MENUITEM "&MoveFil", IDM_MOVE END END ┌─────────────────────────────┐ ■ ソースファイル ■ ┌─────────────────────────────┐ #include <windows.h> #include"win17.h" #include"MCFile.h" #undef WindowsName #define WindowsName "Windows" #undef WindowsMenu #define WindowsMenu "WIN17MENU" HINSTANCE hInst; HWND hwndMain; HWND hButton; LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { WNDCLASSEX wc; RECT rect; wc.hInstance =hInstance; wc.lpszClassName=WindowsName; wc.lpszMenuName=WindowsMenu; wc.lpfnWndProc =WndProc; wc.cbSize =sizeof(WNDCLASSEX); wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); wc.cbClsExtra =0; wc.cbWndExtra =0; wc.hIcon =(HICON)LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=(HCURSOR)LoadCursor(NULL,IDC_ARROW); wc.style =CS_HREDRAW|CS_VREDRAW; wc.hIconSm =NULL; if(!(ATOM)RegisterClassEx(&wc)) { return 0; } rect.left=100; rect.top=150; rect.right =400; rect.bottom =400; AdjustWindowRect(&rect,WS_OVERLAPPEDWINDOW,(BOOL)TRUE); hwndMain=CreateWindow(WindowsName,WindowsName,WS_OVERLAPPEDWINDOW, rect.left ,rect.top ,rect.right ,rect.bottom ,NULL,NULL,hInstance,NULL); if( hwndMain != NULL ) { ShowWindow( hwndMain, nCmdShow ) ; UpdateWindow( hwndMain ) ; } MSG msg; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) { MCFile m_File; CHAR lpBuff[256]; CHAR lpPath[256]; CHAR lpTmpPath[256]; CHAR lpSize[256]; HDC hdc; switch(message) { case WM_CREATE: break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDM_OPEN: m_File.FileOpen("test.txt"); m_File.FileWrite("MOJI"); m_File.FileRead(lpBuff); m_File.FileGetFullPath("test.txt",lpPath); m_File.FileClose(); m_File.FileGetTmpFileName(); m_File.FileDelete(m_File.szTmpFile); hdc=GetDC(hwnd); TextOut(hdc,0,0,lpBuff,lstrlen(lpBuff)); TextOut(hdc,0,50,lpPath,lstrlen(lpPath)); TextOut(hdc,0,100,m_File.szTmpPath ,lstrlen(m_File.szTmpPath )); TextOut(hdc,0,150,m_File.szTmpFile ,lstrlen(m_File.szTmpFile )); ReleaseDC(hwnd,hdc); break; case IDM_MKDir: m_File.MakeDir("c:\\test"); break; case IDM_KILLDir: m_File.DeleteDir("c:\\test"); break; case IDM_MOVE: m_File.FileMove("test.txt","c:\\test\\test.txt"); break; case IDM_COPY: m_File.FileCopy("test.txt","testnew.txt"); break; case IDM_EXIT: DestroyWindow(hwnd); break; } break; case WM_DESTROY: PostQuitMessage(0); default: return DefWindowProc(hwnd,message,wParam,lParam); } return 0; } ┌─────────────────────────────┐ ■ クラスファイル <ヘッダーファイル>■ ┌─────────────────────────────┐ /*===========================================================================================*/ // // ClassName:MCfile // // 用途:ファイル関連 // // 作者:RAIN2000 // // 作成日付:2000/10/19 // // 注意事項:ファイルハンドルを内部メンバとして使っている。 // ファイルを同時に開くときには、クラスの宣言を別に // 行う。 // // // 更新履歴:2000/10/19 クラスの作成 // // // // //=============================================================================================*/ #include<windows.h> class MCFile { private: HANDLE hFile; public: char szTmpPath[MAX_PATH+1]; /* 一時ファイルのディレクトリ */ char szTmpFile[MAX_PATH+1]; /* 一時ファイルのファイル名 */ char szLastWrite[MAX_PATH+1]; /* ファイルの日付の最終書き込み時刻 */ char szCreateTime[MAX_PATH+1]; /* ファイルの作成日時 */ char szLastAccessTime[MAX_PATH+1]; /* ファイルの日付の最終アクセス時刻 */ char szFileSize[MAX_PATH+1]; /* ファイルのサイズ */ private: void CharToFileTime(SYSTEMTIME sysTime,CHAR* szFileTime); public : MCFile(); void FileOpen(LPTSTR lpFileName); void FileRead(CHAR* lpBuff); void FileWrite(LPSTR lpBuff); void FileClose(); void FileCopy(LPTSTR lpExitFileName,LPTSTR lpNewFileName); void FileDelete (LPTSTR szFileName); void MakeDir(LPTSTR DirName); void MakeDirEx(LPTSTR TmpDir,LPTSTR NewDir); void DeleteDir(LPTSTR lpPathName); void FileMove (LPTSTR lpExitFileName,LPTSTR lpNewFileName); void FileGetFullPath(LPSTR lpFileName,CHAR* lpFullFileName); void FileGetTmpFileName(); void FileGetTmpPath(); void FileAttributes(LPSTR lpFileName); }; ┌─────────────────────────────┐ ■ クラスファイル <ヘッダーファイル>■ ┌─────────────────────────────┐ //=============================================================================================*/ #include"MCFile.h" //=============================================================================================*/ // // コンストラクタ: // // 用途:初期化 // // // //=============================================================================================*/ MCFile::MCFile() { } //=============================================================================================*/ // // メソッド名:FileOpen // // 引数:LPTSTR ファイル名 // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ファイルを開きます。ファイルがないときにはファイルを作成します。 // // //=============================================================================================*/ void MCFile::FileOpen(LPTSTR lpFileName) { hFile=CreateFile(lpFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL); if (hFile==INVALID_HANDLE_VALUE) return; } //=============================================================================================*/ // // メソッド名:FileRead // // 引数:CHAR* // // 戻り値:参照渡し ファイル内のデータ // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ファイル内のデータの読み込みを行います。 // // //=============================================================================================*/ void MCFile::FileRead(CHAR* lpBuff) { DWORD dwRead; SetFilePointer(hFile,0,NULL,FILE_BEGIN); ReadFile(hFile,lpBuff,strlen(lpBuff)+1,&dwRead,NULL); } //=============================================================================================*/ // // メソッド名:FileWrite // // 引数:LPSTR // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ファイルへ文字列を書き込みます。 // // //=============================================================================================*/ void MCFile::FileWrite(LPSTR lpBuff) { DWORD dwWrite; WriteFile(hFile,lpBuff,lstrlen(lpBuff)+1,&dwWrite,NULL); } //=============================================================================================*/ // // メソッド名:FileClose // // 引数:なし // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:開かれているファイルハンドルを開きます。 // // //=============================================================================================*/ void MCFile::FileClose() { if(hFile) CloseHandle(hFile); } //=============================================================================================*/ // // メソッド名:FileCopy // // 引数:LPTSTR 元になるファイル名 // LPTSTR 新規に作るファイル名 // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ファイルのコピーを行う。 // // //=============================================================================================*/ void MCFile::FileCopy(LPTSTR lpExitFileName,LPTSTR lpNewFileName) { CopyFile(lpExitFileName,lpNewFileName,TRUE); } //=============================================================================================*/ // // メソッド名:FileDelete // // 引数:LPTSTR 削除を行うファイル名 // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ファイルの削除を行う // // //=============================================================================================*/ void MCFile::FileDelete (LPTSTR szFileName) { if (hFile) { CloseHandle(hFile); DeleteFile(szFileName); } } //=============================================================================================*/ // // メソッド名:MakeDir // // 引数:LPTSTR ディレクトリを作成するパス // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ディレクトリを作成する。 // // 注意事項:パスを指定するには、"\\"と”¥”をつなげ文字列の規則に従う。 //=============================================================================================*/ void MCFile::MakeDir(LPTSTR DirName) { CreateDirectory(DirName,NULL); } //=============================================================================================*/ // // メソッド名:MakeDirEx // // 引数:LPTSTR 添付のディレクトリ名 // LPTSTR 作成するディレクトリ名 // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ディレクトリを作成を行う。 // // //=============================================================================================*/ void MCFile::MakeDirEx(LPTSTR TmpDir,LPTSTR NewDir) { CreateDirectoryEx(TmpDir,NewDir,NULL); } //=============================================================================================*/ // // メソッド名:DeleteDir // // 引数:LPTSTR 削除を行うディレクトリ名 // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ディレクトリの削除を行う。 // // //=============================================================================================*/ void MCFile::DeleteDir(LPTSTR lpPathName) { RemoveDirectory(lpPathName); } //=============================================================================================*/ // // メソッド名:FileMove // // 引数:LPTSTR 元になるディレクトリまたは、ファイル名 // LPTSTR 移動先のディレクトリまたは、ファイル名 // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ファイルのディレクトリを移動させる。 // // //=============================================================================================*/ void MCFile::FileMove (LPTSTR lpExitFileName,LPTSTR lpNewFileName) { MoveFile(lpExitFileName,lpNewFileName); } //=============================================================================================*/ // // メソッド名:FileGetFullPath // // 引数:LPSTR フルパス名の取得を行うファイル。 // CHAR* フルパス名を取得するバッファ。 // // 戻り値:参照渡し フルパス名 // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:フルパス名を取得する。 // // //=============================================================================================*/ void MCFile::FileGetFullPath(LPSTR lpFileName,CHAR* lpFullFileName) { LPTSTR lpFilePart; GetFullPathName(lpFileName,MAX_PATH,lpFullFileName,&lpFilePart); } //=============================================================================================*/ // // メソッド名:FileGetTmpFileName // // 引数:なし // // 戻り値: // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:一時ファイルを作成する。 // // //=============================================================================================*/ void MCFile::FileGetTmpFileName() { GetTempPath(MAX_PATH,szTmpPath); GetTempFileName(szTmpPath,"TMP",0,szTmpFile); hFile=CreateFile(szTmpFile,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_TEMPORARY,NULL); if (hFile==INVALID_HANDLE_VALUE) return; } //=============================================================================================*/ // // メソッド名:FileGetTime // // 引数:なし // // 戻り値:なし // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:ファイルの日付を得る。 // // //=============================================================================================*/ void MCFile::FileAttributes(LPSTR lpFileName) { HANDLE hFileTime; /* ファイルの日付を得るファイルハンドル */ FILETIME fLastWrite; /* ファイルの日付の最終書き込み時刻 */ SYSTEMTIME fSysLastWrite; FILETIME fLastAccess; /* ファイルの日付の最終アクセス時刻 */ SYSTEMTIME fSysLastAccess; FILETIME fCreate; /* ファイルの作成日時 */ SYSTEMTIME fSysCreate; DWORD dwFileSize; /* ファイルのサイズ */ /* 開かれているファイルが存在しないときにファイルを開く*/ if (!hFile) { hFileTime=CreateFile(lpFileName,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL); if (hFileTime==INVALID_HANDLE_VALUE) return; }else { /* 開かれているファイルがある場合は、置き換えを行う。 */ hFileTime=hFile; } /* ファイルの日付を得る。*/ GetFileTime(hFileTime,&fCreate,&fLastAccess,&fLastWrite); /* システム時刻への変換を行う。 */ FileTimeToSystemTime(&fLastWrite,&fSysLastWrite); FileTimeToSystemTime(&fLastAccess,&fSysLastAccess); FileTimeToSystemTime(&fCreate,&fSysCreate); /* ファイルの日付の最終書き込み時刻 */ CharToFileTime(fSysLastWrite,szLastWrite); /* ファイルの作成日時 */ CharToFileTime(fSysCreate,szCreateTime); /* ファイルの日付の最終アクセス時刻 */ CharToFileTime(fSysLastAccess,szLastAccessTime); /* ファイルのサイズを得る */ dwFileSize=GetFileSize(hFileTime,NULL); wsprintf(szFileSize,"%d",dwFileSize); /* ファイルハンドルを閉じる*/ CloseHandle(hFileTime); } //=============================================================================================*/ // // メソッド名:CharToFileTime // // 引数:SYSTEMTIME 文字列へ変換を行うシステム時刻 // CHAR* 参照を行う文字列データ // 戻り値:参照 文字列化したシステム時刻 // // 作者:RAIN2000 // // 作成日付:2000/10/07 // // 使用方法:システム時刻を文字列へ変換を行う。 // // //=============================================================================================*/ void MCFile::CharToFileTime(SYSTEMTIME sysTime,CHAR* szFileTime) { wsprintf(szFileTime,"%2d/%2d/%d %d:%2d:%2d", sysTime.wYear ,sysTime.wMonth ,sysTime.wDay , sysTime.wHour ,sysTime.wMinute ,sysTime.wSecond ); } ┌─────────────────────────────┐ さて、ここからソースの説明をしたいと思いますが、 二部に分けて説明を行います。 メルマガ発行スタンドによっては、30KB以上ですと、 送ることのできない場所があるためです。 ・・・・・2部に続く・・・・・・・・・・ ┌─────────────────────────────┐ なお、以上のプログラムは、私の動作環境VC++6.0 Win32 Application で確認済みです. ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ メールアドレス:<mailto:rain2000@geocities.co.jp> ホームページ :<http://www.geocities.co.jp/SiliconValley-Bay/3125> 発行者:rain2000 編集 :rain2000 このメールマガジンは,以下の発行者さんを通して発行してます. ●まぐまぐ: アドレス : http://www.mag2.com/ ID : 0000024922 ●クリックインカム: アドレス :http://clickincome.net/ ID : m00002885 ●Pubzine アドレス :Pubzine (http://www.pubzine.com/) ID :004293 ●ここでメール アドレス : http://mail.cocode.ne.jp/ ID : 0400100071 ●メルマガ天国 アドレス : http://melten.com/ ID : 300 ●E-magazine アドレス :http://www.emaga.com/ ID :cwindows ●Macky アドレス : http://macky.nifty.ne.jp/ ID : 2329 ●カプライト アドレス : http://kapu.cplaza.ne.jp/ ID : 234 また、登録解除などの手続きに関しましては,上記の ホームにてお願いします. 私宛にメールをいただいても、解除はおよび登録は いたしません. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ 電話など購入はこちらで・・・・・。 ┌─────────────────────────────┐ 電話加入権激安!ISDNライトなら9800円で電話が引ける!?(株)コムズ ↓詳しくはここをクリック! <http://www.comzz.co.jp/cgi-bin/cookie/set.cgi?t=top&id=2543> └─────────────────────────────┘ NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW.NEW@NEW@NEW@NEW フレッツ接続をご希望ならば、こちら!!!!! <http://www.info-ntt.co.jp/cgi-bin/telepocket/telepocket.cgi?id=10014057> NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW@NEW.NEW@NEW@NEW@NEW ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ オールジャンルをお求めの方はこちらの広告をどうぞ・・。 ==== [ ▼PR ] ======================================================== ┏━━━━━━━━★都心★城南★城西★横浜★川崎★━━━━━━━━━┓ でマンションをお探しの方へ 数多くの成熟した住宅街を抱える都内城南エリアを中心に事業を展開してきた 株式会社モリモトならではの個性的なマンションをご紹介します! ┗━━━━━ http://216.71.100.246/a/a.cgi?k1095m0469 ━━━━━━┛ ======================================================== [ ▲PR ] ==== 投信市場コミュニティエリアでは海の街、空中庭園、そして海底にも住めます 無料申し込みへ →→→ < http://216.71.100.246/b/a.cgi?k0745m0469 > ======================================================== [ ▲PR ] ==== ==== [ ▼PR ] ======================================================== ◆◆◆無料航空券を手に入れる近道は、マイルが貯まるJCBカード!◆◆◆ ┏━━━┓┏(1)食事、買い物など、JCBすればマイルがプラス! ┃決め手┣╋(2)海外旅行傷害保険がついて安心もプラス! ┗━━━┛┗(3)いまなら初年度年会費無料! ここをクリック→ http://216.71.100.246/a/a.cgi?k0696m0469 ======================================================== [ ▲PR ] ==== ==== [ ▼PR ] ======================================================== ▼通信販売で生命保険に入りませんか? ● 自分の意志で保険が選べる・保険料はお手ごろ・手続きは簡単 ○ 新しい生命保険の入りかたをご提案します! ○ 生命保険の通信販売【明治生命ダイレクト】 資料請求は↓↓ ● http://216.71.100.246/a/a.cgi?k0345m0469 ======================================================== [ ▲PR ] ==== ==== [ ▼PR ] ======================================================== ウェブエンジニアとしてご活躍する皆様へ 普段仕事で忙しく、転職活動がで ━━━━━━━━━━━━━━━━━━━ きない方の転職を無料でサポート キャリアプランニングから年収交渉まで、おひとりではなかなか進められない 事も、業界専門のコンサルタントがあなたを強力にバ?クアップ致します。 詳しくはこちら > http://216.71.100.246/a/a.cgi?k1085m0469 ======================================================== [ ▲PR ] ==== ==== [ ▼PR ] ======================================================== ●/ 『アルプラ70一棟まるごとキャンペーン2000』 /■ 来年の5月までに家を建てる予定のある方は必見!!新築お祝い >\ 10万円が合計15名様に当たります。新日軽【アルプラ70】を 一棟まるごと取付けて頂ける方へのビッグチャンスです! ご応募は… http://216.71.100.246/a/a.cgi?k1110m0469 ======================================================== [ ▲PR ] ==== ■■■■■■■■■■■■■■■■■■■■■■■■@■■■■■■.■■■■ |