トップページ⇒tech
1001コメント311KB

Win32API 質問箱 Build5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。

前スレ
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html

Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html

Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/

参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp

猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0331デフォルトの名無しさんNGNG
>>330
M/Bに搭載されているブザーじゃねーのか?
ブザーとスピーカじゃ物が違うのだが、知ってるか?
0332デフォルトの名無しさんNGNG
ブザーの中に入ってるものがスピ−カー
0333デフォルトの名無しさんNGNG
つぅか電気的に作成した音を出すのは全部スピーカだろう。
0334デフォルトの名無しさんNGNG
きっとマザーが勝手に振動して音が鳴るんだ
0335デフォルトの名無しさんNGNG
>>334
それってスピーカでは?
0336デフォルトの名無しさんNGNG
この中で一番困った人は誰
1.「スピーカー以外」と指定した質問者である>>325
2.つっこんだ>>326
3.よく知らないのにとりあえずマザー説を唱えて煽った>>329
4.おもしろがってる俺
0337デフォルトの名無しさんNGNG
>>335
スピーカーの原理ではあるがスピーカー機器ではないね。
だいたいそんなAPIがあるのか。
03382.NGNG
>>336
2.の時点では軽く困ったけどみんなのおかげで今は楽勝です。w
0339デフォルトの名無しさんNGNG
>>333
認識甘い。
君は車のクラクションがスピーカだと主張しているわけか。(藁
0340デフォルトの名無しさんNGNG
ブザーとスピーカー、音の発生方法が若干違う。
ブザーは振動物に固体を当てて発音している。

それはともかく、Beep()ってのがあるのは確かだな。
0341デフォルトの名無しさんNGNG
どうでもいいレスでスレがのびるのが一番困った。
0342デフォルトの名無しさんNGNG
>振動物に固体を当てて
0343デフォルトの名無しさんNGNG
http://plaza12.mbn.or.jp/~audio/bee_02.htm
ブザー作って来い。
0344デフォルトの名無しさんNGNG
>>342
なんといやらしい。
0345デフォルトの名無しさんNGNG
デュアルショックにティムポをあてたらきゅー、きゅーと音が鳴るのですがブザーですね
0346デフォルトの名無しさんNGNG
>>343
ハゲシクワラタ
ナイスネタ
てかネタだよな
0347デフォルトの名無しさんNGNG
MessageBeep()
0348デフォルトの名無しさんNGNG
printf("\a");
0349デフォルトの名無しさんNGNG
煽り甲斐があったよ。てか、煽る気はあまりなかったが。
マザーに直付けのちっこいブザーやら、リード線引いてきてちゃちいスピーカーを付けるパターンやらがあるから
とりあえずマザーと書いたんだが。
イメージ的にはあってると思うが、通じないかい?
漏れだけしか通じない罠なら逝ってきます。
0350デフォルトの名無しさんNGNG
この板と全然関係ない話のせいで>>327,328の質問が流れてしまって…合掌
0351デフォルトの名無しさんNGNG
こんなんして B5縦 で印刷したいんですが。ちなみに RICOH の NX710 です。

HDC hdc2 = ::CreateDC(NULL, printernames[target], NULL, NULL);
DEVMODE dmMode = {0};
dmMode.dmSpecVersion = DM_SPECVERSION;
dmMode.dmSize = sizeof(DEVMODE);
dmMode.dmFields = (DM_PAPERSIZE | DM_ORIENTATION);
dmMode.dmPaperSize = DMPAPER_B5;
dmMode.dmOrientation = DMORIENT_PORTRAIT;
hdc = ResetDC(hdc2, &dmMode);

プリンタにB5横しか入ってないと、プリンタに「A4入れろやゴルァ」と出るんです。
90度傾けて印刷させるにはどうアプローチすればいいですか?
0352デフォルトの名無しさんNGNG
>>351
プリンタのプロパティで縦方向印刷に設定しる!
0353デフォルトの名無しさんNGNG
>>352
うーん確かにそれだと出るんですが・・・・
ユーザに設定させたり保存させたくないんですよぉ
0354デフォルトの名無しさんNGNG
>>327
正解!ダトオモウ...

>>328
各コントロールをサブクラス化してWM_MOUSEMOVEを引っかける
のが妥当かな。

どっちも地震無し。
0355デフォルトの名無しさんNGNG
用紙縦=GetDeviceCaps(hdc2,HORZSIZE) * 100;
用紙横=GetDeviceCaps(hdc2,VERTSIZE) * 100;
if(縦横のサイズ != B5サイズ){
 MessageBox(hWnd,"B5にしてね(ハァト",NULL,MB_OK);
 exit(1);
}
0356デフォルトの名無しさんNGNG
PageSetupDlgで、縦方向に設定したときと横方向に設定したときで、
DEVMODEがどう変わるか調べて、
それに合わせてソースを書く(w
0357デフォルトの名無しさんNGNG
>>327
英語版には縦書きという概念がないから日本語化のとき
先頭に@があるかないかをフラグ代わりにしたの
>>328
WM_SETCURSORという専用のメッセージがあるからそっち使え
0358 NGNG
>>351
こんな感じか?

PRINTER_INFO_2 *GetDefaultDevMode(LPTSTR name){
PRINTER_INFO_2 *pinfo2 = NULL;
HANDLE hPrinter;
if (OpenPrinter(name, &hPrinter, NULL)){
DWORD size;
GetPrinter(hPrinter, 2, NULL, 0, &size);
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER){
pinfo2 = (PRINTER_INFO_2 *)malloc(size);
if (!GetPrinter(hPrinter, 2, (LPBYTE)pinfo2, size, &size)){
free(pinfo2);
pinfo2 = NULL;
}
}
ClosePrinter(hPrinter);
}
return pinfo2;
}

HDC CreatePrinterDC(LPTSTR name){
PRINTER_INFO_2 *pinfo2;
HDC hdc;
pinfo2 = GetDefaultDevMode(name);
if (!pinfo2)
return NULL;
pinfo2->pDevMode->dmFields |= DM_PAPERSIZE | DM_ORIENTATION;
pinfo2->pDevMode->dmPaperSize = DMPAPER_B5;
pinfo2->pDevMode->dmOrientation = DMORIENT_PORTRAIT;
hdc = CreateDC(pinfo2->pDriverName, pinfo2->pPrinterName, NULL, pinfo2->pDevMode);
free(pinfo2);
return hdc;
}
0359デフォルトの名無しさんNGNG
紙2001みたく、他アプリケーションが、ドラックの開始をしたことと、
キャンセルを検知するのは、どーすんでしょうか?
0360デフォルトの名無しさんNGNG
>>359
フックすれば?
0361デフォルトの名無しさんNGNG
>>360
ですね。
03623ヶ月目NGNG
ディレクトリのコピー/削除等の実装をSDKでやった事ある方は
MFCのときはCFileFindクラスを使いますか?
サンプル等探してもCFileFindクラスを使用した例があまり見当たりません。
使い勝手等何か問題あるのでしょうか?
0363286NGNG
>362
普通に便利だな、と思った。
0364デフォルトの名無しさんNGNG
exitのかわりになるWin32 APIってないですか?
0365デフォルトの名無しさんNGNG
ExitProcess
0366デフォルトの名無しさんNGNG
>>365
ありがとう!
0367デフォルトの名無しさんNGNG
>>364-366

なんだか危険な感じがしないでもない。
0368デフォルトの名無しさんNGNG
まあ普通はexit()するわな。Cランタイムが後処理してくれるし。
0369デフォルトの名無しさんNGNG
実行形式ファイルのバージョン情報を得るにはどうしたらいいんですか?
右クリック->プロパティ->バージョン情報
で出てくる情報を得たいんですけど、教えてください。
0370デフォルトの名無しさんNGNG
>>362
SDKだろうがMFCだろうがATLだろうが、ディレクトリ操作はSHFileOperation()
0371362NGNG
>>363 >>370
さんくすです。
NT4.0考えなくていい時はSHFileOperation()使います。
0372370NGNG
>>371
NT4.0でも使えるのですが・・・ ( ;´Д`)
0373362NGNG
>>372
検索してみたんですが、
SP1だと複数のファイルを指定すると失敗するらしいです。
0374362NGNG
↑実際に確認してませんので違ったらすいません。
0375351NGNG
>>358
出ました! ありがとうございます
0376デフォルトの名無しさんNGNG
>>369
GetFileVersionInfoだったっけ
こんなわかりやすいAPI名で人に聞くとはお前PG向いてないよ。田舎帰れ
0377デフォルトの名無しさんNGNG
最近いろいろなアプリケーションでよく見かけますが、
ツールバーやリストボックスなどのコモンコントロールで、
背景に画像を設定するにはどうしたらいいですか?
検索しても背景色がせいぜいだったので教えていただけないでしょうか。
0378デフォルトの名無しさんNGNG
>>377
コモンコントロール・・・
それ、VB板で聞いたら?
0379デフォルトの名無しさんNGNG
間違った。
VBスレね。
0380デフォルトの名無しさんNGNG
>>378
なんでVBなの?
0381デフォルトの名無しさんNGNG
>>380
378 が何か勘違いしてるんだろ。放置しといてやれよ。
0382デフォルトの名無しさんNGNG
>>351 >>358 に便乗するっす。長くてすんません。
CreateDC に DEVMODE 構造体を渡す前に (>>351 さんは代わりに ResetDC を
使ってるけど) DocumentProperties() を呼ばなくてもよいんですっけ。
DocumentProperties(NULL, hPrinter, pszPrinterName,
    pDevMode, pDevMode,
    DM_IN_BUFFER | DM_OUT_BUFFER);
みたいな感じ。
私が試している限り、あってもなくても関係なさそうだったんだけど
なんだか「偶然動いてるだけ」な感じがして気持ち悪いです。

MSDN によると「現在の設定を使うならこの DocumentProperties は不要」と
読めるんですよね。ここでもう混乱っす。

文書やネット上のサンプルコードや私が試した事をまとめるとこんな感じなんだけど:
 上のようにして DocumentProperties を呼ぶと、"非"一時的に設定を変更
 しちゃう。すなわち、次にアプリケーションを起動して DEVMODE を
 取得してみると、前回 DocumentProperties で設定したモノが取得できる。
ていう解釈でよいと思いますか?
0383デフォルトの名無しさんNGNG
質問。
子ウインドウを作ると、その子ウインドウのほうが
アクティブになると思うのですが、
親ウインドウの方をアクティブにし続けるにはどうすればよいでしょうか?
今は、子ウインドウを作ったあとにSetActiveWindow関数を呼んで
親ウインドウに戻しています。

また、終了するまでアクティブでい続けるような
ウインドウを作ることはできるでしょうか。
誰かよろしくお願いします。
0384デフォルトの名無しさんNGNG
>終了するまでアクティブでい続けるような

使いたくねー、こんなアプリ
0385デフォルトの名無しさんNGNG
>>383
アクティブでなくなったら終了する
0386デフォルトの名無しさんNGNG
>>384
いや、別にみんなに配るようなアプリを作っているわけじゃなくて
自分で使うのに、アクティブで無くなると困るって言うだけなんですが。
0387デフォルトの名無しさんNGNG
挙動が激しく、トロイっぽいよね
0388デフォルトの名無しさんNGNG
画像を扱うアプリなんです。
高速な描画、表示が条件なんですが、どのような方法がベストなんでしょう結局。
まず、バックバッファ相当のモノについて、
1.DIBSectionを使う
2.ただのメモリブロックを使う
3.DirectDrawSurfaceを使う(システムメモリ上??)
で、フレームバッファへの転送なんすけど、
1.Blt
2.アドレス拾ってmemcpy
とか考えられるんだけど、いったいどうすりゃストレスない描画ってできるんでしょう?

例えばフォトショップとかmameとか、ああいったのはどういった方法で実現してるんでしょうか?
0389デフォルトの名無しさんNGNG
>>388
>フォトショップとかmameとか
同列で語って良いのか・・・?
0390デフォルトの名無しさんNGNG
>>389
どちらにせよGDIとか使わずに表示まで持っていってますよね?
で、どちらも膨大なリソースを表示しているって意味では
まともにグラフィック処理してるって思うんですよ。
その方法は全然違うんだろうけど・・・
0391デフォルトの名無しさんNGNG
>>390
>どちらにせよGDIとか使わずに表示まで持っていってますよね?

マジで?
0392デフォルトの名無しさんNGNG
>>391
違うの??よく知らないんだけど。
つーか普通にDIBとかからBlt、StretchBltとかって全然重いと思うんです。
mameの60fpsとかって全然無理なレベルぐらい重いんだけど・・・
画面モードとかによるのかな?
0393デフォルトの名無しさんNGNG
>>392
君、DirectXとかその辺の基本理解してからしゃべってる?
0394デフォルトの名無しさんNGNG
>>393
あんまり。基本っつーと、どんなことかな?
0395デフォルトの名無しさんNGNG
>>394
ハードウェアが「どんな操作を」支援してくれるのか、じゃないの?
0396デフォルトの名無しさんNGNG
Wininet で非同期通信をやろうと思ったんですが、
MSDNのサンプルを見るとスレッドを使っているみたいです。

WinSock ではスレッドを使わずにできたような気がするんですが、
Wininet ではスレッドを使わない非同期通信はできるんでしょうか。
0397デフォルトの名無しさんNGNG
>>378
Delphiで作った2chブラウザでも見かけるけど・・・。
結局どうやったらできるのかな?
0398デフォルトの名無しさんNGNG
>396
ほんとにMSDN調べた?
http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/wininet/tutorials/implement_async.asp
0399396NGNG
見ましたよ>398
// Create a thread to handle the header and
// resource download.
cpContext->hThread = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)Threader,LPVOID(cpContext),
  0,&cpContext->dwThreadID);
このぶぶんでThreadを作っているけど、これをやらないではできないのかという話です。
0400デフォルトの名無しさんNGNG
>>377
ツールバーの場合はRebarをつかって背景画像をセットしてると思う。
0401デフォルトの名無しさんNGNG
続き(じゃねーけど)はここに書いてある。
http://www.codeproject.com/useritems/asyncwininet.asp
0402デフォルトの名無しさんNGNG
OS が日本語Windowsか英語Windowsか調べられるAPIってあります?
0403デフォルトの名無しさんNGNG
>>402
おれはGetACP() == _KANJI_CPで判定しているが、もっとうまい方法があれば、知りたい。
しかし、マルチリンガル版も視野に入れたら、GetACPしか無いような気もするんだが。
0404デフォルトの名無しさんNGNG
>>403
GetOEMCP()は?
0405デフォルトの名無しさんNGNG
GetSystemDefaultLCIDってのはどうだろう?
0406デフォルトの名無しさんNGNG
>>405
よさげ。
0407396NGNG
>401
ふむ、ためしてみます。
0408デフォルトの名無しさんNGNG
hInstanceを保存する必要ってあるの?
常にGetModuleHandle(NULL)使ったらまずい?
0409 NGNG
>>408
効率を考えなければ特に問題はない。
0410デフォルトの名無しさんNGNG
>>409
ありがとう
0411デフォルトの名無しさんNGNG
使っているWindowsが日本語版かどうかってどうやって調べるんでしょ?
特に無断転載する輩の多い韓国版では動かなくしたいんですけど。
0412デフォルトの名無しさんNGNG
>>408
DLLなら保存しないとダメれすよ
0413377NGNG
ツールバーはRebarですか、どうも。
試してみます。
0414デフォルトの名無しさんNGNG
VBで使用するOCXを、VCで作っているんですけど
そのOCXでエラーが発生した場合、VB側のOn Errorでそのエラーを捕まえたいんです。

その場合、OCX側でどのようなコードを書けば良いのでしょうか?
0415デフォルトの名無しさんNGNG
>>414
throws Throuwable
0416デフォルトの名無しさんNGNG
COMの境界をまたがって例外を投げてはいけない、と
COMの偉い人がいってますた。
0417414NGNG
レスどーもです。
VB側のOnErrorで取れました。
が、
>416サソの「COMの境界を〜」って、如何いう意味なんですか?
いまいち意味が判らんのですが...出来ましたら、解説をお願いします。
0418デフォルトの名無しさんNGNG
>>411
ライセンスを日本海ウェアか竹島ウェアに変更しる。
if(IDNO==MessageBox(,"竹島は日本の領土?",,MB_YESNO)) exit(-1);
0419デフォルトの名無しさんNGNG
>>416 C++の例外とCOMの例外を区別してないと思われ(先生はわかっていると思われ)
くそMFCだとそのあたりが隠蔽されているから、わからないと思われ。
つーか、S_OKとS_FALSE以外のHRESULT直接返せ。
0420デフォルトの名無しさんNGNG
>>411
ちょっと前にロケール識別子でFA出てる。
レジストリ変えられたらおしまいだから、色々複合してみるのもいいかもしれん。
0421デフォルトの名無しさんNGNG
>>420 すみません、FAとはなんでしょう?
0422デフォルトの名無しさんNGNG
>>421
話の流れからして Final Answer かな。
しかしFAなんて略すなや。
0423デフォルトの名無しさんNGNG
AFならAnal Fuckだったのに。
0424デフォルトの名無しさんNGNG
フラットツールバーの途中にコンボボックスを設置したいのですが、
どうやればいいのか教えてください。

現在、セパレータの幅を指定して挿入しているのですが、
フラットスタイルにすると真ん中に縦線がに入ってしまい、
上下に線が見えてしまいます。

コンボボックスを大きくすれば解決するのですが、
見栄えが悪くなるのでどうしたらいいか悩んでいます。
バイナリエディタのBzが綺麗にやっているのですが、
どうやったら良いのでしょうか。
0425デフォルトの名無しさんNGNG
FA:深キョン アナルファック
0426421NGNG
>> 425 thanks なわけねーだろ、thanks > 422
0427デフォルトの名無しさんNGNG
初歩的な質問なんですが、テキストファイルを読み込むとき、
一行ずつ読みたいのですがみなさんどうやっていますか?
一行ずつ読むAPIはありませんよね?というわけで
1.Cライブラリ関数を使う
2.ReadFileで全部メモリに読んでから一行ずつ抜く
3.ReadFileで一文字ずつ読んで改行を見つける
のどれかになるのかなと思ったのですが、ライブラリ関数は使いたくない
ということと、3.では遅くなるということを考えた場合、2しかないですか?
0428デフォルトの名無しさんNGNG
>>427
2.5 ReadFileで少しずつ読んで改行までを使う

っていうかどうしてライブラリが使いたくない?
0429デフォルトの名無しさんNGNG
>>427
なぜfgetsを使いたくない?
0430デフォルトの名無しさんNGNG
>>429
一行の長さがわかんないんで。。。
■ このスレッドは過去ログ倉庫に格納されています