Win32API質問箱 Build18
■ このスレッドは過去ログ倉庫に格納されています
0001 ◆Manna2uCLg
NGNGやさしいオジサマ達が、熱く暑く答えてくれよう。
でも最低限、最新スレくらいは質問する前に検索を。
過去スレ・参考は>>2-5くらいを参照するッス!
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNGいいえ。
0657デフォルトの名無しさん
NGNG1.
最後の行でぶち壊している。
2.
必要ではない。
0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG理由1:最後に埋める\0分のサイズが足りない
理由2:該当ファイルが3.5GBとかあったらどうするのか。
0660デフォルトの名無しさん
NGNGCなの?C++ならmallocはやめてnewを使おうよ
1.1バイトリークしてる
2.strFile[wReadSize-1] = '\0';
とすべきでしょう。必要なのはprintf(strFile);とするときに文字列終端
であるNULLが無いと困るから
0661デフォルトの名無しさん
NGNG>とすべきでしょう。
正気か
0662デフォルトの名無しさん
NGNG1. いいえ。2回目のGetFileSize()の戻り値が、最初のGetFileSize()の
戻り値より大きい可能性がある。
0663660
NGNGCloseHandle()してるな。
リークしないけど1バイト壊すとこだった(w
0664660
NGNGstrFile = (LPSTR)malloc(GetFileSize(hFile, NULL)+1);
ReadFile(fh, strFile, GetFileSize(hFile, NULL), &wReadSize, NULL);
CloseHandle(fh);
strFile[wReadSize] = '\0';
...
free(strFile);
0665デフォルトの名無しさん
NGNG喩えファイルが短く、直接printf()したい場合であったとしても、
終端のナルキャラは必要ではない。
つーか、ちっとも困らない。
0666デフォルトの名無しさん
NGNGFILE* fp = _tfopen(TEXT("file.txt"),TEXT("rb"));
char* pBuf = new char[nFSize+1];
memset(pBuf,0,nFSize+1);
fread(pBuf,1,nFSize);
pBuf[nFSize] = '\0';
fclose(fp);
...
delete [] pBuf;
のほうがいいな、俺は
0667666
NGNGこれ要らなかった(w
0668デフォルトの名無しさん
NGNGfreadの引数が足りない
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGnande?
0673デフォルトの名無しさん
NGNG中途半端にC++使うのは好きじゃないなあ。
0674デフォルトの名無しさん
NGNGprintf("%.*s", nFSize, pBuf);
ってことでしょ。
0675デフォルトの名無しさん
NGNG「PrintScreen」キーが押された際に送られてくるメッセージが判らないのです。
WM_KEYDOWN 時に VK_SNAPSHOT,VK_PRINTSCREEN 等調べてみてそれっぽいことをしても
巧くいきませんでした。
なにか良い方法はないでしょうか?
0676デフォルトの名無しさん
NGNGホットキーというものを使ったところ思った処理ができるようになりました。
お騒がせしてすいませんでした。
0677デフォルトの名無しさん
NGNGPeekMessageってメッセージが無ければ0を返すんだから
どちらもメッセージ無い時は条件入らないんじゃ?
あまり詳しくないんで、違ってたらスマソ。
0678デフォルトの名無しさん
NGNGhandle = CreateFile(
detail->DevicePath,
0,
0,
NULL ,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL );
THERMAL_INFORMATION thm;
ret = DeviceIoControl(
handle,
IOCTL_THERMAL_QUERY_INFORMATION,
0,
NULL,
&thm,
sizeof(thm),
&bsize,
NULL );
ひょっとして、根本的に間違ってるのかな?
0679デフォルトの名無しさん
NGNGというか、CreateFile の第2引数が 0 なんですが。
DeviceIoControl で必要なアクセスタイプを指定する必要があるんじゃない?
DeviceIoControl 使ったこと無いが…
0680678
NGNG0がデバイス問い合わせアクセスとなっていたので0にしていた。
ひとまず、GENERIC_READを指定してみたけどやはり取得できない。。。
ただ、DeviceIoControlのエラーコードが0のときは”アクセスできません”で
GENERIC_READのときは"ファンクションが違います"になるようです。
0681taro
NGNGm(__)m
定額PHSパケット通信AirH"のVenturi Client(通称:竜巻)という圧縮プロキ
シを使用時に、自作アプリの通信が出来なくて困っています。
ttp://www.ddipocket.co.jp/customer/download/tornado/
SDKでWinSockを直接叩いて、同期ソケットで単純に
WSAStartup()して、gethostbyname()して、getservbyname()して、
socket()して、connect()して、send()して、recv()して
そこら辺の普通のHTTPサーバからHTML文書をダウンロードしているのですが
send()で「GET http://www.odn.ne.jp/index.html」などと送信してから
recv()で受信しようとするとrecv()から処理が戻ってきません。
send()ではちゃんと全バイト数の返り値が返ってくるので、送信は
たぶん出来ていると思うのですが(自信ありません。。)
竜巻を動かしていない時には一応ちゃんとダウンロード出来ているのですが
全くの初心者状態なので、プロキシサーバを間に入れて通信するには
どうしたらいいのかとかもわからないというような状態です。。
どなたかご存知の方がいましたら、アドバイスをお願い致しますm(__)m
申し遅れましたが環境は、Windows2000pro・VC++6.0pro・SDKです。
どうぞ宜しくお願い致します。
0682デフォルトの名無しさん
NGNGSendは内部で処理されるため実際に送信されて無くても送信したことになってる。
0683デフォルトの名無しさん
NGNG何となくだけど、プロキシーに規制がかかってるんじゃないのかな。
GETを飛ばすときにUser-Agentを騙す必要があるとか(w
0684デフォルトの名無しさん
NGNGローカルで動いてるのか別のとこにあるのかポートはなにかとか。
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNGクライアントにもローカルプロクシが立つのかがわからない。
0687デフォルトの名無しさん
NGNGリージョンをメモリDCに適用することはできないのでしょうか?
どうも、うまく適用されません。
hdc = GetDC(hWnd);
hMemDC = CreateCompatibleDC(hdc);
(略)
SelectClipRgn(hMemDC , hRgn);
0688687
NGNGメモリDCにクリップリージョンが適用されました。
単純ミスでした。
すいません。
0689デフォルトの名無しさん
NGNGどのライブラリーを使えばいいのか教えてほしい
0690689
NGNGすいません。
0691デフォルトの名無しさん
NGNG0692689
NGNGもう一回。
CreateWindowsExで作成したスクロールバー(単独)のものを操作するには
何のAPI使えばいいの?
スクロールバー内の情報をセットしたいのです。
ただ、SetScrollInfo(hwnd , SB_VERT , &scr , TRUE);だと、ウィンドウ内にある両端のスクロールバーを操作するものですよね?
私が作ったスクロールバーは、単独のものです。
CreateWindowEx(
0L,
"SCROLLBAR",
(LPSTR) NULL,
WS_CHILD | WS_VISIBLE | SBS_VERT,
0693デフォルトの名無しさん
NGNGSB_HORZとSB_VERT以外に何がある?
0695taro
NGNGPOP3通信をしてみたら普通に動いたので、もしやと思い、今までHTTP0.9形式で
リクエストしてたのを、HTTP1.0or1.1風味でやってみたら無事通信できました。
レスくれた方々ありがとうございましたm(__)m
0696デフォルトの名無しさん
NGNGコードを書いた場合、そのプログラムは Win 9x でも
(メッセージ処理用のコードを除いて)動作しますか?
0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNGWinsockスレってどこにありますか?
教えてください。
0699デフォルトの名無しさん
NGNG思ってたし、MSDNにもそんなこと書いてあるんでそうしてたんですが、
それって過ちじゃないかと今日気づきました。
DependencyWalkerで見ると、序数指定つきで作られたインポートライブラリ
からインポートしているプログラムは、当然のように序数でインポート
してるんですね。ところが、__declspec(dllexport)、あるいは
序数指定無しのDEFファイルで指定されたシンボルは、
名前でインポートしてるのが分かる。あくまでやってみて気づいた
経験則であって、どこにもそんなことは書いてないですけどね。
これ、どっちがいいかっつったら勿論後者ですよね。スタブコードが
ちゃんと名前でGetProcAddress()してくれるなら、
バージョンアップの際にいちいち序数管理する必要ないから。
で、面白くなって色々調べてみると、MS謹製のライブラリでも、ものに
よってまちまちなんですよ。kernel32, user32, msvcrtのような奴は
名前エクスポートなんだけど、mfc42, oleaut32, wsock32あたりは
序数エクスポートになってる。
いったん序数エクスポートにしちゃうと、後方互換性のためにはそれを
維持しなきゃいけないからそうなってるのかなあ、とか思ったりしました。
皆さんは、この辺、どうやってますか?
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG開かれている(WriteOpen)ことを検知するAPIはありますか?
0702デフォルトの名無しさん
NGNG互換性維持っていうほど簡単じゃないと思う
俺はすっかり放棄
0703デフォルトの名無しさん
NGNG昔は序数リンクしかできなかったんじゃなかったっけ?
序数リンクのほうがリンクがごく僅かに速いだろう、というのはあるけ
ど、互換性目的以外で今の時代にわざわざ序数リンクを使う理由なんて
ない。
0704デフォルトの名無しさん
NGNG0705699
NGNGその「昔」というのはWin16時代のDLLですか?
kernel32が名前エクスポートになってるということは、Win32は最初からそれを
サポートしていたということになりますね。
ていうかGetProcAddress()が名前でDLLのシンボルをfetchできる
以上、できないはずがないのだけれど。
>>704
ご丁寧にNONAMEまでつけてしまうということですか。Unixでstripをかけるのと同じ
感覚なのだろうか。
序数つきで作成したimport library(NONAME指定無し)にも、ちゃんと名前シンボル
は入ってるんですよ。で、私には序数「無し」で作成したものとの違いがlibファイル
だけでは分からないのですが、MSのリンカは不思議なことにこれを区別する
んですよね。
序数指定無しの場合はlibが勝手に序数を指定するだけだと思ってました。ていうか
ドキュメントにそう書いてあるし。
0706デフォルトの名無しさん
NGNG時間のかかる処理をしている最中にも、
ウィンドウ操作ができるようにと、
PeekMessageを定期的に呼び出すようにしたのですが、
その時に、メニューとかの操作を行うとその処理が終わるまで、
呼び出し元(=ここでは「時間のかかる処理」)が止まってしまいます。
呼び出し元を止めずに処理することはPeekMessageでは出来ないのでしょうか?
0707デフォルトの名無しさん
NGNGそこでマルチスレッド。
0708デフォルトの名無しさん
NGNG処理の流れは常に一元的だ。
0709デフォルトの名無しさん
NGNG>>708
頑張ってマルチスレッドに取り組んでみます。
レスありがとうございました。
0710デフォルトの名無しさん
NGNG地獄に片足つっこんだな・・・
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG片足だから。
でも原因がすぐにわからないバグがあったときなんか
あってるのにものすごいスレッド部に自信がなくなる・・・
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNG3スレッドで大丈夫なら桁が変わっても大丈夫。
…パフォーマンス以外は。
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG最後のリソースを使い切ってあぼーんすることが多すぎる。
0722デフォルトの名無しさん
NGNGあるときイベント処理が滞った。
気付いたらスレッドが爆発していた。
#ありがちではある。
0723デフォルトの名無しさん
NGNGDeadlockとか。
マルチスレッドはデバッグしづらいからなぁ・・・
0724デフォルトの名無しさん
NGNG表示してくれるツール無いかなぁ・・・
イベント、クリティカルセクション対応で依存まで表示してくれる。
0725デフォルトの名無しさん
NGNGクソスレ立てんな。
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGちょっと寒いが>>725のギャグを理解してやろうな?
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGわかるかヴォケ
0730デフォルトの名無しさん
NGNGインテルがスレッドのデバッグ&プロファイルツール出してるよ。
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNGそれ用のスレッドで管理せんとダメだろ。
0733デフォルトの名無しさん
NGNGきちんと管理できるように体系立ててやってるうちはいいけど、特定のパターンで沈黙したら困るからここスレッドね、
ってなことを繰り返してるとVer.2で総つくり直しなんて目にあいかねない。
0734デフォルトの名無しさん
NGNG穴だらけの終了処理をみると目を覆いたくなる。
ワーカーより先にメインスレッドが終わるケースをまったく考えて無い奴とか。
0735デフォルトの名無しさん
NGNGリアルタイムじゃない。
あと、スレッド間の依存とかグラヒィック表示も弱いし。
体験版使ったが英語でよくわからない・・・・
まあ、あれ使って一カ所バグ発見できたが。
0736デフォルトの名無しさん
NGNGあんたの突っ込みで笑えた。
0737デフォルトの名無しさん
NGNGやっぱり、ツッコミはボケを引き立てるからな。セットでないと。
0738デフォルトの名無しさん
NGNGって何?
0739デフォルトの名無しさん
NGNG今いるところ。
0740デフォルトの名無しさん
NGNGマトリックスしてる状態じゃないかな
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNGSetDIBitsToDeviceをつかってPNGファイルを読み込もうとしているのですがうまくいきません。
とりあえず640*480のPNGを読もうとしているのですが、SetDIBitsToDeviceの戻り値が0になって、GetLastErrorが「パラメータがただしくありません」になります。
もう、どこを修正していいのか分かりません。
分かる方、アドバイスお願いします。
//memDC,PngFileSize,pPngFileDataは設定済み。
//OSはMeです
BITMAPINFOHEADER binfo;
binfo.biSize=sizeof(BITMAPINFOHEADER);
binfo.biWidth=640;
binfo.biHeight=480;
binfo.biPlanes=1;
binfo.biBitCount=0;
binfo.biCompression=BI_PNG;
binfo.biSizeImage=PngFileSize;
binfo.biXPelsPerMeter=0;
binfo.biYPelsPerMeter=0;
binfo.biClrUsed=0;
binfo.biClrImportant=0;
SetDIBitsToDevice(memDC,0,0,640,480,0,0,0,480,pPngFileData,(BITMAPINFO*)&binfo,DIB_RGB_COLORS);
0743デフォルトの名無しさん
NGNG0744742
NGNGMSDNには98以上で使えると書いてあったので大丈夫と思っていたのですが・・・
無理ならSusieプラグインを使ってみます。
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGpassed to SetDIBitsToDevice, the function will fail and return GDI_ERROR. If failure does
occur, the application must fall back on its own JPEG or PNG support to decompress the
image into a bitmap, and then pass the bitmap to SetDIBitsToDevice.
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNG他OSだと、GDI+のインストールを促さないとあかんので、面倒なことになりそうだけど。
0749デフォルトの名無しさん
NGNGreturnの所に書いても大丈夫なのでしょうか。WM_PAINTなどを実行した後に
DefWindowProcを実行しても大丈夫かという意味です。
0750デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNGGDI+のDLLはアプリと共に配布する事が許可されています。
0753デフォルトの名無しさん
NGNGVBランタイムと同じ(サイズは違うが)で、やっぱトラブルの元だと思うよ
0754デフォルトの名無しさん
NGNGそのためのside-by-side(ryって
XP以前のOSじゃほとんど使えないか
■ このスレッドは過去ログ倉庫に格納されています