掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SDKでステータスバーにプログレスバーを乗せるには? (ID:64703)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
CreateWindowEx()でステータスバーを親として プログレスバーを作って何とか目標は達成できたと思います。 ShowWindow()で非表示にして試してみましたが、再表示が 出来なかったのでDestroyWindow()で破棄してみました。 // メールのリストを表示する int List_Mail(SOCKET s, char *host, char *id, char *pass, HWND hList, HWND hStatus) { int count, max, rcount, newcnt, msize = 0; char subject[TEMP_MAX], date[TEMP_MAX], from[TEMP_MAX], header[TEMP_MAX]; char strMsg[1024], szSize[1024]; char szlYear[4], szlMonth[2], szlDay[2], szlHour[2], szlMinute[2], szlSecond[2]; char szName[256]; LPSTR lpUidl, lpFilePath; BOOL bFile; max = 0; rcount = 0; newcnt = 0; // 認証 if((max = NMailPop3Authenticate(s, id, pass, bApop)) >= 0){ // サーバにあるメールの数が0以上のとき if(max > 0 ){ // プログレスパー表示 hProgress = CreateWindowEx(0, PROGRESS_CLASS, "", WS_CHILD | WS_VISIBLE, sb_size, 5, 100, 16, hStatus, (HMENU)ID_PROGRESS, hInst, NULL); SendMessage(hProgress, PBM_SETRANGE, 0, MAKELONG(0, max)); } else{ // プログレスバーを削除 DestroyWindow(hProgress); } // 受信しているメールの数分ヘッダを読み出す for(count = 0; count < max; count++){ // プログレスバーを増加 SendMessage(hProgress, PBM_SETPOS, count + 1, 0); if(NMailPop3GetMailStatus(s, count + 1, subject, date, from, header, FALSE) >= 0){ // うまくいかなかったのでサイズ取得方法を変更 if((msize = NMailPop3GetMailSize(s, count + 1)) >= 0){ sprintf(szSize, "%d", msize); } else{ wsprintf(szSize, "0"); } // 取得した日付を分解 mid(date, szlYear, 1, 4); mid(date, szlMonth, 6, 2); mid(date, szlDay, 9, 2); mid(date, szlHour, 12, 2); mid(date, szlMinute, 15, 2); mid(date, szlSecond, 18, 2); // UIDLのサイズを確保 lpUidl = (char *)malloc(sizeof(char) * 1024); lpFilePath = (char *)malloc(sizeof(char) * MAX_PATH); if(lpUidl == NULL){ free(lpUidl); break; } if(lpFilePath == NULL){ free(lpFilePath); break; } // カレントディレクトリを取得する GetCurrentDirectory(MAX_PATH, lpFilePath); strcat(lpFilePath, "\\inbox\\"); // UIDLを取得する NMailPop3GetUidl(s, count + 1, lpUidl, 1024); // リスト用のファイル名を作成 wsprintf(szName, "%s%s%s%s%s%s_%s.dat", szlYear, szlMonth, szlDay, szlHour, szlMinute, szlSecond, lpUidl); strcat(lpFilePath, szName); bFile = FileExists(lpFilePath); //InsertItem(hList, count + 1, 4, szName); // ファイルが存在しない(新規メール)とき if(bFile == FALSE){ // 処理中のメッセージの表示 wsprintf(strMsg, "%d件目を処理中", count + 1); SendMessage(hStatus, SB_SETTEXT, 0 | 0, (LPARAM)strMsg); // メールデータを保存 Store_Mail(s, count + 1, lpFilePath); } else{ // 受信済みの場合は受信済みカウントを増加する rcount++; } // サーバにメールを残すチェックがはずされているとき if(bSMailDel == FALSE){ // サーバのメールを削除する NMailPop3DeleteMail(s, count + 1); } free(lpUidl); free(lpFilePath); } else{ break; } } } if(max > 0){ // プログレスバーを削除 DestroyWindow(hProgress); } // 保存されたメールの一覧を表示する SetLocalMail(hList); // 新規メールから受信済みメールの数を引く newcnt = max - rcount; // ステータスメッセージの初期化 strcpy(strMsg, ""); // 最大件数が0件(メールがない)の場合 if(newcnt == 0){ // メールがサーバにない(または既読メールしかない)時 SendMessage(hStatus, SB_SETTEXT, 0 | 0, (LPARAM)"メールは届いていません"); } else{ // メールがある場合は件数表示 wsprintf(strMsg, "%d件のメールが届いています", newcnt); SendMessage(hStatus, SB_SETTEXT, 0 | 0, (LPARAM)strMsg); } return max; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.