トップページ⇒tech
986コメント329KB

Win32API【2】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
ただし、質問する前にまずMSDN読め。

MSDN Online
http://www.asia.microsoft.com/japan/developer/

前スレ
http://pc.2ch.net/test/read.cgi/tech/991576947/
0809デフォルトの名無しさんNGNG
>>806
書籍「Linkers & Loaders」じゃないのか、やっぱり。

>>808
そりゃ、実行ファイルをメモリに展開して実行できるようにする仕組みだろ。
DLL 使ってる場合とか、DLL にアドレスを割り付けて relocation する過程
などの詳細を知りたくなることもある。
0810デフォルトの名無しさんNGNG
DLLじゃない独自のプラグインとか作ろうとするとLoaderの知識が必要になるよね。
漏れは面倒だからいつもDLLにしちゃうけど。DLLマンセー
0811デフォルトの名無しさんNGNG
本買う必要なし
http://www.iecc.com/linker/
0812API初心者の名無しさんNGNG
すいません、質問があります。

フロッピーやPCカードなどのボリュームシリアルを変更しようと思うのですが、
そのAPI関数がわかりません。

ヒントでいいので教えてください。
0813デフォルトの名無しさんNGNG
>>812
SetVolumeInformation()
0814API初心者の名無しさんNGNG
>>813
ありがとうございました。

あとはMSDNで調べます。
0815API初心者の名無しさんNGNG
>>813

申し訳ございません。

MSDN調べたんですが、載ってなかったんで、
サンプルか詳細を教えて頂けませんか?

サンプルURLでも結構ですので。
0816デフォルトの名無しさんNGNG
>>812
使ったことないからよくわかんないけど SetVolumeLabel っていう API があるみたいだよ。
0817デフォルトの名無しさんNGNG
SetVolumeLabel ではボリュームラベルは変更できるけど
ボリュームシリアル番号は変更できないっぽい
0818デフォルトの名無しさんNGNG
ファイル名をフルパスで渡したら、そのファイルが存在するかどうかを
判定してくれるAPIってありませんかね?
いまのところ、CreateFileでリードオープンしてみて成功なら
存在する、ってやってますけど、なんかAPIであった方が
安心できるんですが…。
0819デフォルトの名無しさんNGNG
>>818
FindFirstFile
0820デフォルトの名無しさんNGNG
>>818
GetFileAttribute とか?
0821818NGNG
>>819-820
回答、ありがとうございます。

GetFileAttributesで受け取ったDWORD値を判定するのが
よさそうですので、そうします。
0822デフォルトの名無しさんNGNG
>>818
PathFileExists
ただしIE4.0以上がないと使えない。
0823818NGNG
>PathFileExists
うわー、まんまのAPIがあるんですね。
検索してみたんですけど、これって日本語のMSDNライブラリには
載ってない…。英語の方にはあったけど。
はぁ…普段から英語の方を使うようにした方がいいですかね?

ところで、最初っから「ファイル 存在 判定 API」でグーグレば
すぐに分かることでした…<判定用のAPI
それすらせずに聞いてた自分に気づいて、ちょっと鬱。
回線切って首つってきまーす。
0824デフォルトの名無しさんNGNG
正直、ファイルの存在判定ごときでIE4を要求してほしくない
0825デフォルトの名無しさんNGNG
GetFileAttribute でええやん。
一発やん。
0826ゾーナムNGNG
>>824-825
いや、俺もIE4を要求したいとは思ってませんので、PathFileExistsは、
その存在を知った、というだけにとどめておきますよ。実際に使うのは
GetFileAttributesの方です。
0827818(=826)NGNG
ぎゃふー! 別板のコテハンで書いちゃった!
恥ずかしい…。
0828デフォルトの名無しさんNGNG
UTF-16をs-jisにしたいのですが、WideCharToMultiByte()でいけるのでしょうか?
何度か試したのですが、うまく変換できないようで・・・。
0829デフォルトの名無しさんNGNG
SetThreadLocaleしてあれば、失敗する理由はとくにみつからんのだがな。
バイトオーダーが違うとか、そっち系の問題じゃないの?

0830デフォルトの名無しさんNGNG
>>828
GetLastError() 夜露死苦!
0831デフォルトの名無しさんNGNG
その部分のコードをだせといいたい。
0832デフォルトの名無しさんNGNG
お騒がせしました。
GetLastError()してもエラーではなかったので変だと思ったのですが、
ご指摘のとおりバイトオーダーで駄目だったようです。
bomが付いてるからいけると思ってた私が馬鹿でした。
0833デフォルトの名無しさんNGNG
WM_KEYDOWN の lParam の情報って↓こんな感じであってますか?
試してみたんですけど、本当にこれでいいのかどうかわかりません。

  short nRepeat = (lParam & 0x0000FFFF);
  char nScanCode = (lParam & 0x00FF0000) >> 23;
  bool bExtendedKey = (lParam & 0x01000000) >> 24;
  bool bAltKey = (lParam & 0x20000000) >> 29;
  bool bPress = (lParam & 0x40000000) >> 30;
  bool bUp = (lParam & 0x80000000) >> 31;
0834デフォルトの名無しさんNGNG
>>833
nScanCodeを得るには16bitシフトではないのか。
0835833NGNG
>>834
そうでした^^;ありがとうございます。
0836デフォルトの名無しさんNGNG
今非同期シリアルI/Oのプログラムやってて、
MSDNサンプルのTTY.Cを参考にしてるんですけど、
あのアプリって何をするものなのでしょうか?
ソースの前に、あのアプリの使い方がわからんです。
0837デフォルトの名無しさんNGNG
ウィンドウのクライアント領域の デスクトップ上の 座標を取得したいんですけど
何か方法はないでしょうか?

GetClientRect は幅と高さしか返してくれなくて、座標は ( 0, 0) になってしまうようなのですが・・・。
0838デフォルトの名無しさんNGNG
GetWindowRect()
0839837NGNG
>>838
ありがとうございます。
でもこれだとウィンドウの座標とクライアント領域のギャップが取得できないです。
このギャップはどうやって求めたらいいでしょうか?
0840デフォルトの名無しさんNGNG
ScreenToClient()
ClientToScreen()
0841デフォルトの名無しさんNGNG
.rcファイル中で
#define FOO "def"
LTEXT "abc"FOO"ghi", ...

と書くと abc"def"ghi のように余計な " が付いてしまいます
これを abcdefghi と表示するにはどうすればよいのでしょう?
0842839NGNG
>>840
ClientToScreen()で(0, 0)で望んでいた値を取得できました。
ありがとうございました。
0843デフォルトの名無しさんNGNG
ビットマップの形式による描画速度の差は
環境によって違いがあるんでしょうか。

(画面32bit)
DDB >>> 8bit > 16bit≒32bit > 24bit

(画面16bit)
DDB >>> 8bit > 16bit > 24bit > 32bit

↑うちの環境ではこのような感じです。

DDBは加工しづらいし8bitじゃ色数が足りないんで
そこそこ速い16bitを使おうと思っているんですが、
環境によってこの順位は変わったりするんでしょうか。
0844デフォルトの名無しさんNGNG
変わったりしまくります。
0845デフォルトの名無しさんNGNG
>>844
そうでしたか。
それなら扱いやすさだけを考えて32bitにしようかな。

ありがとうございました。
0846デフォルトの名無しさんNGNG
ウィンドウが通常、最大化状態、最小化状態のどれかを取得する API ってありますか?
0847デフォルトの名無しさんNGNG
IsIconic関係とか、GetWindowPlacementとか。
0848846NGNG
>>847
IsIconic でしたか、ありがとうございます。
95以前からあるAPIは名前の雰囲気から探すの難しいです。
0849デフォルトの名無しさんNGNG
>>848
そろそろAPIバイブルを買って前ページ読破してもよい時期だな。
嫁。
嫁。
嫁。
昔はたったの800APIしかなかったから簡単だった。
0850デフォルトの名無しさんNGNG
Win2k(SRP1)でsetForegroundWindowでフォーム(VB6)を最前面に持ってきたいんで、いろんな所で紹介されているように
ForegroundID = GetWindowThreadProcessId(GetForegroundWindow(), 0)
TargetID = GetWindowThreadProcessId(HWND, 0)
で最前面とフォームのID取ってきて、
AttachThreadInput(TargetID, ForegroundID, True)
でアタッチして
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0, 0)
でロック時間0にして、
BringWindowToTop(HWND)
SetForegroundWindow(HWND)
とやっているのですが、コマントプロンプトが最前面の時には最前面になってくれません。何ででしょうか?
0851デフォルトの名無しさんNGNG
>>850
それは、君がタコだから
0852デフォルトの名無しさんNGNG
いろんなとこで紹介してるやつに聞け
0853デフォルトの名無しさんNGNG
Explzhとかをインストールすると、エクスプローラでも
アーカイブにファイルをD&Dできるようになりますよね。
アレってどうやってるんでしょうか?

自分のアプリでエクスプローラと同じ挙動をさせたいのですが、
シェルエクステンションとか調べればできるようになりますか?
0854デフォルトの名無しさんNGNG
> SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0, 0)
> でロック時間0にして、
はやめれ。
0855デフォルトの名無しさんNGNG
>>853
OLE D&Dを調べれ。
0856タコNGNG
どうもコマンドプロンプトはそういう物らしい……と思ったら、
弄くってるウチになんとかなった。
>>854
先にSPI_GET〜で現在の値を保存しておいて、後でSETしなおしてますが。
0857デフォルトの名無しさんNGNG
>>856
Windowsはマルチタスクだ。保存してから元に戻す間に
別のプログラムが設定をいじったら破綻するだろ。
0858デフォルトの名無しさんNGNG
EDITTEXTにFocusが来たとき、すべて選択されるのを
防ぐにはどうしたらいいんでしょう?
環境はBCC5.5 + Win2kです。
0859デフォルトの名無しさんNGNG
>>855
なんでOLEなんですか?
アプリケーションにDnDをするのではなくて、
デスクトップ上のアイコンにDnDできるんです
0860デフォルトの名無しさんNGNG
>>859
エクスプローラもアプリケーションですが…

ドラッグ&ドロップでのオブジェクト転送については、
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/transfer.asp
あたりが参考になるかと。
0861デフォルトの名無しさんNGNG
あれはargvとかそーゆーのなのでわ。
0862デフォルトの名無しさんNGNG
受け側はDragAcceptFiles()を呼んでおいてWM_DROPFILESを待つだけだけど、
送り側はちょいと面倒かも。
0863デフォルトの名無しさんNGNG
>>858
 全て選択されるのは、Windows の標準動作。
 なので、防ぐんじゃなくて、自分でその選択を消すと考える。

 その EDITTEXT にフォーカスが来た時(EN_SETFOCUS が飛んできたとき)に、
EM_SETSEL メッセージを投げる。
0864デフォルトの名無しさんNGNG
>>853
つまり、エクスプローラで、
1.txt, 2.txtとかのファイルをドラグしていって、
a.zipというファイルに対してドロプし、
追記相当の処理をさせたい、と。
0865デフォルトの名無しさんNGNG
>>836
case IDD_TEXT:
if(HIWORD(wParam) == EN_SETFOCUS){
SendDlgItemMessage(hdwnd, IDD_TEXT, EM_SETSEL, 0, 0);
return 1;
}
で、いきましたthx!
0866デフォルトの名無しさんNGNG
>>864
えっと、Explzhと同じことがやりたいのではなくて、
エクスプローラ側と同じ動作をさせたいのです。
zipがDnDを受け取るようになっていたら
自分のアプリでもzipへのDnDを許す、みたいな。
0867デフォルトの名無しさんNGNG
>>866
「Shell Extension」「Drag Drop Handler」あたりで検索してみろ。
0868デフォルトの名無しさんNGNG
>>856 >>857
> SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0, 0)
は、Win98以降で強制的に SetForegroundWindowする場合の常套手段だけど、
行儀は悪い。まぁ仕方ないのかも。

>>866
俺もシェルエクステンション初心者だから間違ってるかも知れんが、
レジストリの HKCR->.zip のクラス名(と言うのか?)->shellex->DragDropHandlers
に有効な CLSIDが登録してあれば、シェルで D&Dを受け付けると思われ。
0869デフォルトの名無しさんNGNG
>>868
そもそも強制的にフォアグラウンドを奪うこと自体行儀が悪いんだから
多少の行儀の悪さは誤差の範囲なのかもな。
0870デフォルトの名無しさんNGNG
>>869
稀に、複数プロセスで1つのアプリケーションを構築した場合なんかは、
仕方なく使うんだけどね。
0871デフォルトの名無しさん NGNG
通知メッセージ(WM_NOTIFY)のリフレクション機構はどう作ればよいのでしょうか?
MFCだとメッセージマップみたいのでマクロ一発で済むみたいなんですが。

さすがに親Windowフックしてメッセージ投げ返してやるんじゃスマートじゃないし・・・。
0872デフォルトの名無しさんNGNG
case WM_NOTIFY:
HWND hwndCtrl = (NMHDR*)lp->hwndForm;
 if (hwnd != hwnd)
  return ::SendMessage(hwnd, msg, wp, lp);
 ;
 break;


こういうんじゃないの?
0873デフォルトの名無しさんNGNG
s/hwnd != hwnd/hwnd != hwndCtrl/
0874デフォルトの名無しさんNGNG
ってことはあれですね、やっぱ親Windowのウィンドウプロシージャが必要ってことですよね。
メッセージリフレクションは、親Windowに手を入れなくていいというのが利点だ!ってMSDNに
書いてあったんで・・・。自前で書くならやむなしなのかもしれません。
0875デフォルトの名無しさんNGNG
>>872のようなコードが親ウィンドウのウィンドウプロシージャに
あらかじめ書いてるかどうかの違いに過ぎないと思うんだが?
一度書いておけばそれ以上いじる必要ないだろ。
0876デフォルトの名無しさん NGNG
すみませんが、IME関連で質問させてください。
ImmRegisterWordで文字列を登録させる処理なのですが、
IMEがデフォルトで登録してある語句をダブって登録させようとすると
関数が登録失敗で返してきます。
(例 語句”漢字”、よみ”かんじ”、品詞”名詞”)
失敗は良いのですが、その後エラーを取りたいのです。
MSDN等には、ImmGetGuideLineで取得できるとあります。
実際その処理を組み込んだのですが、戻り値がゼロで返却され
エラー内容を取得できないのです。
ガイドラインの情報タイプは”GGL_LEVEL”と”GGL_INDEX”で試してみました。
MSDNには
通常、アプリケーションはIMN_GUIDELINEメッセージを受け取った後に
この関数を呼び出します。と記載されてますが、
このメッセージがエラーが発生した際通知されないです。
もちろんWM_IME_NOTIFYのwParamで見てますよ。
詳しいかたよろしくお願いいたします。
0877デフォルトの名無しさんNGNG
>>875
既存のコントロールの子としてウインドウを作ったら、
その既存のコントロールをサブクラス化したりしないといけないからって話じゃないか?
0878デフォルトの名無しさんNGNG
>>877
それはMFCだって同じだろ?
単にMFCが自動的にやってくれるかどうかの違いだけで
0879874NGNG
えー、言いたいことは>>877さんと同じです。
要するに、こんな便利な機構がWin32APIセット自体には含まれていないんだなーって
ことです。ウィンドウスタイルにリフレクションを行う、なんてのがあれば結構使える
と思うんですが。
0880デフォルトの名無しさんNGNG
リフレクションが便利な機構なんじゃなくて、
親に通知するという仕組みが糞なだけじゃないか?
0881874NGNG
ほかのウィンドウシステムをほとんど知らないんでなんともいえませんが、
自分自身へのnotifyがデフォルトで、親に通知するメッセージを(簡単に)選べる
方がスマートなのかもしれません。浅はかな考えですけど。
0882デフォルトの名無しさんNGNG
親に全部通知するっていう仕組なら、親ウィンドウのウィンドウプロシージャだけ
書けば済むから、普通だったらそっちの方が楽。糞というほどのことはないと思う。
サブクラス化とか絡まない限りにおいては、だけどね。
0883874NGNG
リストビュー(レポートビュー<WinMXみたいの)のヘッダをドラッグすると
カラムの順番を入れ替えたりできます。
ヘッダの境界線をドラッグすると幅を変更できます。

これらを検出できないでしょうか・・・。LVN_*はなさげです。
0884874NGNG
age
0885デフォルトの名無しさんNGNG
>>874
HDN_*にありそうだけど。
0886874NGNG
ヘッダーコントロールなんて初めて知りました・・・。
それからヘッダーコントロールの親がリストビューだということに気づくまでに
数十分。しばし格闘してみましたが、HDN_BEGINDRAGとHDN_ENDDRAGはつかまえ
られました。

しかし!境界をドラッグするのがつかまえられません。HDN_*はすべてハンドリング
してるのですが、それ以外のWM_NOTIFYが来てるようです。試しにHDN_*以外のすべて
のWM_NOTIFYに対してTRUEを返してみたら、境界ドラッグを防ぐことができました。

spy++でウォッチしてみたんですが、WM_NOTIFYであることしか教えてくれないんで
どうしようもなくなってしまいました。ヘルプ!
0887874NGNG
仕方なく来た通知メッセージの値から逆にたどりました・・・。
commctrl.hからの抜粋です。

#define HDN_ITEMCHANGINGA (HDN_FIRST-0)
#define HDN_ITEMCHANGINGW (HDN_FIRST-20)
#define HDN_ITEMCHANGEDA (HDN_FIRST-1)
#define HDN_ITEMCHANGEDW (HDN_FIRST-21)
#define HDN_ITEMCLICKA (HDN_FIRST-2)
#define HDN_ITEMCLICKW (HDN_FIRST-22)
#define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
#define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
#define HDN_BEGINTRACKA (HDN_FIRST-6)
#define HDN_BEGINTRACKW (HDN_FIRST-26)
#define HDN_ENDTRACKA (HDN_FIRST-7)
#define HDN_ENDTRACKW (HDN_FIRST-27)
#define HDN_TRACKA (HDN_FIRST-8)
#define HDN_TRACKW (HDN_FIRST-28)
#if (_WIN32_IE >= 0x0300)
#define HDN_GETDISPINFOA (HDN_FIRST-9)
#define HDN_GETDISPINFOW (HDN_FIRST-29)
#define HDN_BEGINDRAG (HDN_FIRST-10)
#define HDN_ENDDRAG (HDN_FIRST-11)
#endif

#ifdef UNICODE
#define HDN_ITEMCHANGING HDN_ITEMCHANGINGW
#define HDN_ITEMCHANGED HDN_ITEMCHANGEDW
#define HDN_ITEMCLICK HDN_ITEMCLICKW
#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW
#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW
#define HDN_BEGINTRACK HDN_BEGINTRACKW
#define HDN_ENDTRACK HDN_ENDTRACKW
#define HDN_TRACK HDN_TRACKW
#if (_WIN32_IE >= 0x0300)
#define HDN_GETDISPINFO HDN_GETDISPINFOW
#endif
#else
#define HDN_ITEMCHANGING HDN_ITEMCHANGINGA
#define HDN_ITEMCHANGED HDN_ITEMCHANGEDA
#define HDN_ITEMCLICK HDN_ITEMCLICKA
#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKA
#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKA
#define HDN_BEGINTRACK HDN_BEGINTRACKA
#define HDN_ENDTRACK HDN_ENDTRACKA
#define HDN_TRACK HDN_TRACKA
#if (_WIN32_IE >= 0x0300)
#define HDN_GETDISPINFO HDN_GETDISPINFOA
#endif
#endif

結局、HDN_*Wが来てました。今まではHDN_*Aを待っていたので捕まえられなかった
訳です。で、僕のプログラムではUNICODEが#defineされていなかったのが原因なわけ
ですが・・・これって僕のミスなんですか?
どうも腑に落ちない。
0888874NGNG
んでもってBEGINDRAGとENDDRAGだけは分けられていない。UNICODEかどうか
気にするなんて文字列についてのことなんだろうけど、BEGINTRACKでもBEGINDRAGでも
アイテムの情報(文字列を含む)をパラメータとしてもってくることに変わりはない。

ますます謎だ・・・。
0889デフォルトの名無しさんNGNG
>>883-888をみて、MFCで確認しようとしたらclass wizardが狂ってた・・・鬱
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q281155
0890デフォルトの名無しさんNGNG
ちょと、素朴な疑問
オイラ、ウィンドウのプログラム組むときにMFC使わずにWin32だけで組んでいますが、
C++でMFC使わずに組んでる人ってどれくらいいるの?

0891デフォルトの名無しさんNGNG
>>890
はい。ATL/WTL は使ってるけど(w
0892デフォルトの名無しさんNGNG
前はMFC使ってたけど、どうもオイラには合わない…
それにDLLヘルの問題がやだ、
STATICリンクにしても良いけどサイズが1M超えるのはかんなり鬱
っつーことで、Win32でC++で組んでるけど
結構クラスライブラリひととおり組むと勉強になる
0893デフォルトの名無しさんNGNG
2つ以上のクライアントウィンドウがある時
DefFrameProcの2つ目の引数のクライアントウィンドウのインスタンスは
何を指定すればいいのでしょうか?

毎回getWindowで指定するのがいいのでしょうか?
0894デフォルトの名無しさんNGNG
あげ
0895デフォルトの名無しさんNGNG
>>892
勉強目的にはいいと思う。でも、それだけだな。
MFC はダメなライブラリだけど、その流儀に従えば
開発時間は短縮できるもの。
0896!=892NGNG
>>895
ある程度大きなプログラムになると外面のコーディングは実装の
コーディング量を遥かに下回るから、どちらを使っても大差ない。
むしろ綺麗にかけるという点で自前ってのも悪くない。
勿論SDKで書くことに慣れてるのが前提。

逆に小さめのプログラムだとMFCはかなり効率を上げるが、
正直開発効率追求ならBCBやらDelphiを使えば良いわけで。
0897初心者NGNG
うえーんヽ(TДT)ノ
Win32API糞むずいよー( ´Д⊂ヽ)
誰か教えてよー
0898デフォルトの名無しさんNGNG
>>897
何処で詰まってるか言え。
0899初心者NGNG
さ、最初からです(TT;)
例えば
int WINAPI WinMain()...

というのでWINAPIは何なのですか?
と教えて貰おうと思いましたが自分で調べないのはマズイので
ちょっとhttp://www.google.ne.jp/へ逝ってきます
0900デフォルトの名無しさんNGNG
>>899
__stdcall のことデス。
0901デフォルトの名無しさんNGNG
>>899
キーワードは「猫でも分かるプログラミング」で一発。
0902デフォルトの名無しさんNGNG
>>899
あまり細かいことを気にしたらいかん。
特に型周りは typedef の嵐だから、 "そういうもの" ということで
覚えてしまったほうがある意味楽だぞ。
0903デフォルトの名無しさんNGNG
google.ne.jpなんてあったのか…
0904デフォルトの名無しさんNGNG
>>899
「呼び出し規約」でMSDN検索しる。
0905migeNGNG
みげ
0906zxcvbnmNGNG
誰か居てるの?
0907zxcvbnmNGNG
オーナードローリストビューのデータの取り方を誰か教えて下さい
今はWinbiffのひらめーるにあるようなリストビューが対象です
0908デフォルトの名無しさんNGNG
APIでコンボボックスを作っているのですが、
親ウィンドウのWM_SIZEでMoveWindowを使って、
コンボボックスの幅を動的に変えたいんですけどうまくいきません。
CB_SETDROPPEDWIDTHを使うのかなと思ったんですが、
これはリストの部分の幅を変更するだけですよね。
コンボボックスのサイズを変更する方法はないんでしょうか?
レス数が900を超えています。1000を超えると表示できなくなるよ。