Win32API質問箱 Build63
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/03/04(火) 12:15:58やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-10くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage
【前スレ】
http://pc11.2ch.net/test/read.cgi/tech/1202060403/
0175デフォルトの名無しさん
2008/03/09(日) 15:38:16abort、exit、_exit、または ExitProcess を呼び出したスレッドがあると、
すべてのスレッドが終了します。
と書かれていたのですが、明示的に終了関数を呼ばない場合
スレッドは生きたままになるのでしょうか?
0176デフォルトの名無しさん
2008/03/09(日) 15:58:320177デフォルトの名無しさん
2008/03/09(日) 16:09:46普通に組むと、
エントリポイント - CRTのスタートアップ関数 - main/WinMain
という構造になる。
VC2005のCRTだと、main/WinMainから帰ってきた後で_exitが呼ばれているので、
その結果他のスレッドも終了させられる。
微妙にスレ違いなネタの気がしなくもないな。
0179デフォルトの名無しさん
2008/03/10(月) 00:21:01クライアント領域がないタイトルバーだけのウィンドウって、
どうやって作ればいいんでしょうか。
0180デフォルトの名無しさん
2008/03/10(月) 00:31:23> "サイズ復元ボタン" に一致する日本語のページ 1 件中 1 - 1 件目
0181デフォルトの名無しさん
2008/03/10(月) 00:32:330182デフォルトの名無しさん
2008/03/10(月) 00:37:07「元のサイズに戻す」ボタンでした。
0183デフォルトの名無しさん
2008/03/10(月) 00:52:39ウインドウサイズを指定できるけど
クライアントサイズから
ウインドウサイズを算出することはできない?
0184デフォルトの名無しさん
2008/03/10(月) 00:54:500185デフォルトの名無しさん
2008/03/10(月) 00:57:020186179
2008/03/10(月) 01:00:10最大化も最小化もしていないので
「元のサイズに戻す」ボタンが表示されなくて、
でも、最大化してしまうとクライアント領域ができてしまいます。
>>183
なんか丁度10分前くらいに作ったので。どうぞ。
void getWindowSize(WORD clientW, WORD clientH, WORD* pWindowW, WORD* pWindowH, DWORD style) {
RECT rect = {0,0,clientW, clientH};
AdjustWindowRect(&rect, style, FALSE);
*pWindowW = (WORD) (rect.right - rect.left);
*pWindowH= (WORD) (rect.bottom - rect.top);
}
0187デフォルトの名無しさん
2008/03/10(月) 01:04:01実際に表示してから目的の状態になるまでリサイズを繰り返すしかない。
0188デフォルトの名無しさん
2008/03/10(月) 01:10:23これだって完璧にやってくれるわけではないけど。
0189デフォルトの名無しさん
2008/03/10(月) 01:26:03なぜWORDなのか理由を聞きたい
0190デフォルトの名無しさん
2008/03/10(月) 01:27:550191デフォルトの名無しさん
2008/03/10(月) 01:40:22深い理由はないけど、
サイズ4294967296みたいなウィンドウを作る予定はなかったので。
0192デフォルトの名無しさん
2008/03/10(月) 02:13:140193デフォルトの名無しさん
2008/03/10(月) 02:13:540194デフォルトの名無しさん
2008/03/10(月) 02:27:210195デフォルトの名無しさん
2008/03/10(月) 02:31:480196デフォルトの名無しさん
2008/03/10(月) 02:42:070197デフォルトの名無しさん
2008/03/10(月) 02:42:460198デフォルトの名無しさん
2008/03/10(月) 02:42:51こんなソースに噴いた事あるw
0199デフォルトの名無しさん
2008/03/10(月) 02:52:550200デフォルトの名無しさん
2008/03/10(月) 02:54:020201デフォルトの名無しさん
2008/03/10(月) 02:59:340202デフォルトの名無しさん
2008/03/10(月) 03:28:03サイズの小さい変数を使ったら速くなると思ったら大間違い。
WORDなんて中途半端に混ぜるとかえって遅くなる。
そこはRECTのメンバがLONGだから、LONGにするのが普通。
0203デフォルトの名無しさん
2008/03/10(月) 03:54:48最後の一行は同意
0204デフォルトの名無しさん
2008/03/10(月) 11:06:34もうobsoleteだな
0205デフォルトの名無しさん
2008/03/10(月) 12:32:40じゃあ遅くしたいのか
0206デフォルトの名無しさん
2008/03/10(月) 12:43:230207デフォルトの名無しさん
2008/03/10(月) 13:18:40デバイスごとに処理を振り分けるということは可能なのでしょうか?
具体的にはPS/2とUSB接続の2種類のキーボードが接続されているPCで、
PS/2キーボードでEnterキーが押された場合と、
USBキーボードでEnterキーが押された場合で処理を振り分けたいのです。
0208デフォルトの名無しさん
2008/03/10(月) 13:21:08そんなことを実現しているアプリはあるのでできるはず
0209デフォルトの名無しさん
2008/03/10(月) 13:27:54XP以降ならRaw Inputで区別できる。
0211デフォルトの名無しさん
2008/03/10(月) 15:23:090212デフォルトの名無しさん
2008/03/10(月) 17:46:42OpenMutexでミューテックスが開けた場合、そのミューテックスハンドルを元に
ミューテックスを持っているプロセス(≒前のインスタンス)のプロセスハンドル
又はプロセスIDを得る方法ってあるんでしょうか?
頻繁に起動・終了するタイプのプロセスなので、可能ならそれを使って
WaitForSingleObjectしたいのです。
0213デフォルトの名無しさん
2008/03/10(月) 17:50:13よく考えたら開いたミューテックス自体を使って同期すればいいのか・・・
0214デフォルトの名無しさん
2008/03/10(月) 18:02:59WinMainの第二引数が使えりゃいいのに
0215デフォルトの名無しさん
2008/03/10(月) 19:16:01違っているので注意。
0216デフォルトの名無しさん
2008/03/10(月) 21:00:440217デフォルトの名無しさん
2008/03/10(月) 23:32:49やっていたが、CreateWindow→CreateMutexにしないと穴があるな。
既に起動しているインスタンスがあれば、そっちをアクティブにするんだけど
CreateWindowの前に多重起動の判定していると、Mutexはあるがウインドウが
ないという状況が存在するね。
0218デフォルトの名無しさん
2008/03/10(月) 23:40:01終了直前かもしれんし
0219デフォルトの名無しさん
2008/03/11(火) 00:33:30「あたり。今日はちょっといいことあるかも」
ってことにしよう。
0220デフォルトの名無しさん
2008/03/11(火) 00:49:270221デフォルトの名無しさん
2008/03/11(火) 01:19:000222デフォルトの名無しさん
2008/03/11(火) 02:22:57「Win32/C++マルチスレッドプログラミング詳説」
CreateMutexでOwnerを設定し、ウィンドウができたらReleaseMutex
別スレッドはWaitFor
0223デフォルトの名無しさん
2008/03/11(火) 06:38:370224デフォルトの名無しさん
2008/03/11(火) 09:55:070225デフォルトの名無しさん
2008/03/11(火) 10:39:18曲を開く度にWinampが起動したら困るっしょ。
だけど、Vistaのエクスプローラで複数選択してコマンドバーから
Winampのアイコン押すと、選択した数だけWinampが起動する。凄い。ヤバい。
0226デフォルトの名無しさん
2008/03/11(火) 10:41:010227デフォルトの名無しさん
2008/03/11(火) 11:26:54この書込みが終了したことを知るAPIってありますか?
0228デフォルトの名無しさん
2008/03/11(火) 11:38:340229デフォルトの名無しさん
2008/03/11(火) 12:32:350230デフォルトの名無しさん
2008/03/11(火) 16:03:08レジストリをテキストのレジストリファイルする API などありませんでしょうか。
0231デフォルトの名無しさん
2008/03/11(火) 16:34:25regedit.exe互換にしたいということ?
0232デフォルトの名無しさん
2008/03/11(火) 16:39:46そうです。regedit.exe 互換にしたいと思ってます。
0233デフォルトの名無しさん
2008/03/11(火) 17:10:35出さずにそのままプロセス消滅とさせる方法はあるでしょうか?
とあるシェルエクステンションで外部プラグインDLLを利用可能としたとき、プロセス分離させてある
ので出来の悪いプラグインが落ちてもシェルは巻き込まないけど失敗時にエラーが出るのは避け
たい・・・という用途です。
0234デフォルトの名無しさん
2008/03/11(火) 17:11:54普通のエラー類ならプラグイン呼び出し部だけWin32例外ハンドラで捕まえられますが、
DirectShowモジュール等を使うと例外ハンドラだけではエラーが捕捉しきれないようなのです。
0235デフォルトの名無しさん
2008/03/11(火) 18:42:490236デフォルトの名無しさん
2008/03/11(火) 18:50:34引き継がれないdえ初期化されてしまうものなのでしょうか?
0237デフォルトの名無しさん
2008/03/11(火) 19:22:14ぼやけた感じになるのですが、これを1ドットずつくっきりと表示させるにはどうしたらいいですか
0238デフォルトの名無しさん
2008/03/11(火) 19:23:50低解像度ではぼやけるものなのでしょうか。
0239デフォルトの名無しさん
2008/03/11(火) 19:34:370240デフォルトの名無しさん
2008/03/11(火) 20:35:21http://itaya.corso-b.net/TIPS/TIPS015.html
regeditに引数をつけて呼び出すとか。
0241デフォルトの名無しさん
2008/03/11(火) 20:40:09受け取ったレジストリ情報を自分でテキストとして出力すればいいだけだろ。
0242デフォルトの名無しさん
2008/03/11(火) 20:59:210243デフォルトの名無しさん
2008/03/11(火) 21:16:39はい。BitBltで表示してます。
ていうか、マウスポインタもぼやけて表示されます。
0244デフォルトの名無しさん
2008/03/11(火) 21:20:33CRTモニタ使うといいんじゃない?
0245デフォルトの名無しさん
2008/03/11(火) 21:32:360246デフォルトの名無しさん
2008/03/11(火) 22:53:220247デフォルトの名無しさん
2008/03/11(火) 23:13:390248デフォルトの名無しさん
2008/03/11(火) 23:16:09SetUnhandledExceptionFilter使えば規定の処理を上書きできるのかなあ?
よくわからん。ごめん。
Advanced Windowsに何か書いてあったような気もするけど…。
0249デフォルトの名無しさん
2008/03/11(火) 23:43:46Vistaだと管理者パスワードが必要。
>>241のように自分でregedit互換のテキストにするほうがいいんじゃ?
ユーザーに面倒をかけるよりは自分が面倒くさいほうがまし。
0250デフォルトの名無しさん
2008/03/12(水) 00:18:09その程度でUACなの?
0251デフォルトの名無しさん
2008/03/12(水) 00:21:440252デフォルトの名無しさん
2008/03/12(水) 00:36:490253デフォルトの名無しさん
2008/03/12(水) 00:43:500254デフォルトの名無しさん
2008/03/12(水) 12:23:06ノートPCならBIOSで拡大表示時の設定が出来るものがある。
デスクトップPCなら液晶のOSDで拡大補完レベルを設定できるものがある。
↑俺のシャープの液晶がこれ
0255デフォルトの名無しさん
2008/03/12(水) 12:25:33画面の解像度と液晶の解像度が一致しているか確認する。
0256デフォルトの名無しさん
2008/03/12(水) 12:28:000257デフォルトの名無しさん
2008/03/12(水) 13:28:00PCに繋げられるQVGAの液晶なんてあるのか?
0258デフォルトの名無しさん
2008/03/12(水) 13:43:27PCから出力されてるドットとディスプレイ上のドットを1対1に対応させることのできる液晶はある
0259デフォルトの名無しさん
2008/03/12(水) 19:32:190260デフォルトの名無しさん
2008/03/12(水) 21:37:24wParamが”値が割り当てられていないローカルな変数”とか警告が出てままだし、
何か根本的な部分で理解できていないようなんですが、どこがおかしいのか教えていただければ幸いです
使っているのはVC++6.0です
HANDLE wParam;
char szFn[256] ;
//DragAcceptFiles(hWnd,TRUE);
//UINT iCount = DragQueryFile((HDROP)wParam, 0xFFFFFFFF, NULL, 0);
DragQueryFile((HDROP)wParam, 0, szFn, 256);
printf("%s",szFn);
これで実行するとszFnの中身がフフフ…でまったく機能してませんでした
真空波動研からflvファイルの画像サイズを取得して、FLVPのiniのウィンドウサイズを書き換えて
等倍で再生されるFLVPの支援ツールを作っていて、ネットのソースを色々流用してflvのパスの取得以外はちゃんと動作するものが
できたんですが、あと一歩なんです
0261デフォルトの名無しさん
2008/03/12(水) 21:39:530262デフォルトの名無しさん
2008/03/12(水) 21:56:32変数に笑われているようではあと一歩どころでは無かろう
つうかその程度のツールならvbsで作れそうな気もするが
0263デフォルトの名無しさん
2008/03/12(水) 22:04:55case WM_CREATE:
DragAcceptFiles(hWnd, TRUE);
return 0;
case WM_DROPFILES:
{
int len = DragQueryFile((HDROP)wParam, 0, NULL, 0);
char* p_strBuf = (char*)malloc(len+1);
DragQueryFile((HDROP)wParam, 0, p_strBuf, len+1);
MessageBox(hWnd, p_strBuf, "message", MB_OK);
free((void*)p_strBuf);
DragFinish((HDROP)wParam);
}
return 0;
0264デフォルトの名無しさん
2008/03/12(水) 22:24:10適当にも程がある
0265デフォルトの名無しさん
2008/03/12(水) 22:33:42これが仕事ならデスマーチ
0266デフォルトの名無しさん
2008/03/12(水) 22:48:540267デフォルトの名無しさん
2008/03/12(水) 22:49:50ありがとうございました
よくわからないので諦めます
確かに後1歩どころではなかったようです
せっかくなんでソース置いときます
ttp://kissho.xii.jp/1/src/1jyou29678.txt
CreateProcess()はネットに合ったのをそのまま使ったので全然わかってません
0268デフォルトの名無しさん
2008/03/12(水) 23:36:13真空波動研やらFLVPについては関知しないが、
ざっとコード見た感じDragAcceptFiles()やDragQueryFile()じゃなく
コマンドライン引数使えって話のように思える。
0269デフォルトの名無しさん
2008/03/12(水) 23:40:18使い終わった場合(例えばスクロールが終わったり、ツールバーのボタンを押した後)に
もともとフォーカスを持っていたウィンドウにフォーカスを返すにはどうしたら良いのでしょうか?
0270デフォルトの名無しさん
2008/03/12(水) 23:52:43デスクトップのDCを使って GetTextExtentPoint32() しても
問題ありませんか?
文字を描画するのは作ったウィンドウなんですが。
0271デフォルトの名無しさん
2008/03/13(木) 01:01:58ありがとうございます!
出来そうな気がしてきました
0272デフォルトの名無しさん
2008/03/13(木) 02:12:20ありがとうございました
後は細かい設定をつけていきます
0273デフォルトの名無しさん
2008/03/13(木) 02:15:350274デフォルトの名無しさん
2008/03/13(木) 03:42:02デスクトップで使われてるフォントで描画した場合の高さと幅が返ってくる
それでも良ければそうしたまえ
>>269
WM_SETFOCUSを見て頑張れ
この場合スクロールバーは子ウィンドウでないと駄目かもな
■ このスレッドは過去ログ倉庫に格納されています