掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListViewコントロールについて (ID:64576)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
InsertItem関数の中でデバッグ(MessageBoxで値を表示)をしてみると 多く追加していることに気づいて、原因である最初に上げた関数を 以下のように修正することで無事にやりたいことが出来ました。(>_<) 瀬戸っぷさんありがとうございます。 // ローカルに保存されているメールを取得する void SetLocalMail(HWND hListL) { WIN32_FIND_DATA wfd; HANDLE hFind; HANDLE hFile; // ファイルハンドル HGLOBAL hMem; // グローバルハンドル DWORD dwFSizeHigh, dwFSize, dwAccBytes; // バイト数 char szfname[MAX_PATH + 5]; // ファイル名 char *lpszBuf; // ファイルバッファ int ret; // 戻り値 int iListNo; // 添付メール展開用変数 char subject[TEMP_MAX], date[TEMP_MAX], from[TEMP_MAX], header[TEMP_MAX], body[TEMP_MAX]; char FileName[TEMP_MAX], Temp[NMAIL_ATTACHMENT_TEMP_SIZE], szSize[TEMP_MAX]; // リストの初期化 ListView_DeleteAllItems(hListL); GetCurrentDirectory(MAX_PATH, szfname); iListNo = 0; // メールファイルを探す hFind = FindFirstFile("*.dat", &wfd); // 検索が失敗した場合(ファイルがない場合) if(hFind == INVALID_HANDLE_VALUE){ //MessageBox(NULL, "エラーです", "Error", MB_OK | MB_ICONSTOP); FindClose(hFind); return; } // ファイルがなくなるまでリストに追加 do{ strcpy(szfname, wfd.cFileName); // ファイルを開く hFile = CreateFile(szfname, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile == INVALID_HANDLE_VALUE){ MessageBox(NULL, "ファイルをオープンできません", "Error", MB_OK | MB_ICONSTOP); return; } // ファイルサイズを調べる dwFSize = GetFileSize(hFile, &dwFSizeHigh); if(dwFSizeHigh != 0){ MessageBox(NULL, "ファイルが大きすぎます", "Error", MB_OK | MB_ICONSTOP); CloseHandle(hFile); return; } // ファイルを読み込むためのメモリ領域を確保 hMem = GlobalAlloc(GHND, dwFSize + 1); if(hMem == NULL){ MessageBox(NULL, "メモリを確保できません", "Error", MB_OK | MB_ICONSTOP); CloseHandle(hFile); return; } // メモリ領域をロックしてファイルを読み込む lpszBuf = (char *)GlobalLock(hMem); ReadFile(hFile, lpszBuf, dwFSize, &dwAccBytes, NULL); lpszBuf[dwFSize] = '\0'; // szAtFileDataのメモリ領域を確保する szAtFileData = (char *)malloc(sizeof(char) * dwFSize); if(szAtFileData == NULL){ MessageBox(NULL, "メモリ確保に失敗しました", "メモリ確保失敗", MB_OK | MB_ICONSTOP); return; } // メールファイルの中身をコピーする strcpy((char *)szAtFileData, lpszBuf); // ファイルを閉じる CloseHandle(hFile); GlobalUnlock(hMem); GlobalFree(hMem); // 添付ファイルの展開(実際はメール本文とヘッダの分割のみ) ret = NMailAttachmentFileFirst(Temp, subject, date, from, header, body, NULL, FileName, szAtFileData, NULL); if(ret == NMAIL_SUCCESS){ //NMailAttachmentFileClose(Temp); } // メールサイズを変換する wsprintf(szSize, "%d", dwFSize); if(strlen(subject) > 0){ InsertItem(hListL, iListNo, 0, subject); } else{ InsertItem(hListL, iListNo, 0, "(件名なし)"); } InsertItem(hListL, iListNo + 1, 1, from); InsertItem(hListL, iListNo + 1, 2, date); InsertItem(hListL, iListNo + 1, 3, szSize); InsertItem(hListL, iListNo + 1, 4, szfname); iListNo++; }while(FindNextFile(hFind, &wfd) == TRUE); FindClose(hFind); return; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.