Win32API質問箱 Build43
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/05/19(金) 11:25:09やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん
2006/05/19(金) 11:25:4342 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
0003デフォルトの名無しさん
2006/05/19(金) 11:28:0031 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん
2006/05/19(金) 11:30:01http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
- Windows® Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/
- 書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0005デフォルトの名無しさん
2006/05/19(金) 11:32:19http://pc8.2ch.net/test/read.cgi/gamedev/1016699230/
HSPでRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1082902759/
HSPで出来る範囲について
http://pc8.2ch.net/test/read.cgi/gamedev/1085733089/
HSP - Hot Soup Processor [11]
http://pc8.2ch.net/test/read.cgi/gamedev/1133488968/
HSPでの麻雀プログラムについて
http://pc8.2ch.net/test/read.cgi/gamedev/1047707655/
HSPは・・・
http://pc8.2ch.net/test/read.cgi/gamedev/1104208959/
おまいらHSPで適当なゲームでもつくりませんか
http://pc8.2ch.net/test/read.cgi/gamedev/1102214621/
★ゲーム製作期待の星! HSP Part 9 ★
http://pc8.2ch.net/test/read.cgi/gamedev/1005313791/
HSPで完全オリのSLGを作るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1047478458/
HSPでSLGが作れるようになるまで頑張るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1103618349/
HSPでモンスター育成SLGを作りましょう!
http://pc8.2ch.net/test/read.cgi/gamedev/1089467139/
ネットゲームforHSP『無人島』制作スレ
http://pc8.2ch.net/test/read.cgi/gamedev/1018534410/
PGの面接で、使える言語はHSPですって言ったら
http://pc8.2ch.net/test/read.cgi/gamedev/1046921466/
HSPでシミュレーションRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1036923414/
0006デフォルトの名無しさん
2006/05/19(金) 13:56:51乙
0007デフォルトの名無しさん
2006/05/19(金) 15:14:310008デフォルトの名無しさん
2006/05/19(金) 16:25:320009デフォルトの名無しさん
2006/05/19(金) 16:31:350010デフォルトの名無しさん
2006/05/19(金) 16:43:270011デフォルトの名無しさん
2006/05/19(金) 17:03:230012デフォルトの名無しさん
2006/05/19(金) 17:19:140013デフォルトの名無しさん
2006/05/19(金) 17:30:410014デフォルトの名無しさん
2006/05/19(金) 17:36:30ほんものならシャツいらんやんヾ(^^ヘ)
0015デフォルトの名無しさん
2006/05/19(金) 17:57:480016デフォルトの名無しさん
2006/05/19(金) 18:02:050017デフォルトの名無しさん
2006/05/19(金) 19:20:320018デフォルトの名無しさん
2006/05/19(金) 21:11:500019sage
2006/05/20(土) 02:43:23参考になるサイト(もしくは書籍?)などありませんでしょうか。
ACPIというものを使うようですが探してもプログラミングについて
サンプルとか情報みつまりませんでしたorz
#WinAPIでは無いきもします・・・スレ違いでしたらゴメンナサイ
0020デフォルトの名無しさん
2006/05/20(土) 02:44:370021デフォルトの名無しさん
2006/05/20(土) 02:59:16こんなのがあったけど。
Turn on/off monitor
http://www.codeproject.com/system/display_states.asp
0022デフォルトの名無しさん
2006/05/20(土) 03:04:19BUTTONウィンドウの背景色を
灰色じゃない色(例えば、赤)に変えるにはどうしたらいいのでしょうか?
0023デフォルトの名無しさん
2006/05/20(土) 03:25:17吹き出しみたいなメッセージが、タスクバーのアイコンから出るのがありますが
あれを出す関数は何か教えてください。お願いします。
0024デフォルトの名無しさん
2006/05/20(土) 04:31:46イメージ保持数が0になっていて上手く取得できていないようです。
HWND hSysWnd;
hSysWnd = ::FindWindowEx( NULL, 0, "Progman", "Program Manager" );
hSysWnd = ::FindWindowEx( hSysWnd, 0, "SHELLDLL_DefView", NULL );
hSysWnd = ::FindWindowEx( hSysWnd, 0, "SysListView32", NULL );
HIMAGELIST hImgList = ListView_GetImageList( hSysWnd, LVSIL_NORMAL );
int nImg = ImageList_GetImageCount( hImgList );
for( int i=0 ; i<nImg ; i++ )
{
ImageList_Draw( hImgList, i, hdc, 0, i*48, ILD_NORMAL );
}
hImgListにNULLは返ってきてないのでエラーではないみたいなのですが、何が原因なのでしょうか。
0025デフォルトの名無しさん
2006/05/20(土) 05:58:50コードを書き始めて、単に新規のデータをどこかに挿入したり、最後尾にくっつけたりするだけでは全く実現できないことに気付きました。
複雑な参照関係にあるデータが、インデックス番号ではなくオフセットアドレスを使って参照し合っているからです。
どこかにデータを挿入した場合は、すべてのオフセットアドレスを再構成しなければなりません。
そこで、リソースデータを、追加部分を含めた形で、新たに一から書き出す、という事を考えたのですが、これがかなり大変そうです。
ファイルポインタを激しく動かさなければならないのです。
ツリー部から、ID文字列領域から、リソース本体領域へと激しくジャンプしなければなりません。
その際にまだ書き込んでいないデータのサイズを正確に予測してきちんとファイルポインタ位置を決定しなければなりません。これはかなり複雑な状況ではないか、と思いました。
そこでちょっと考えてみました。
オフセットデータだけが問題であるならば、
ツリー部分にストアされているすべてのオフセットデータ値に対し、
1. データ挿入がなされる位置より前であるなら変更しない
2. データ挿入がなされる位置より後ろなら変更する
という方法でごく簡単にリソースデータを再構築できるのではないか、と。
挿入すべきデータはツリーの構成員の構造体だけで、ID文字列やリソース本体は最後尾にくっつけるだけでよさそうです。
こういう方法でやった人は誰かいるでしょうか? そしてうまくいったでしょうか?
0026デフォルトの名無しさん
2006/05/20(土) 08:58:27>ファイルポインタを激しく動かさなければならないのです。
一旦メモリ上にファイルの最終イメージを完成させてからファイルに書くか、
CreateFileMapping()使えば?
0027デフォルトの名無しさん
2006/05/20(土) 09:47:560028デフォルトの名無しさん
2006/05/20(土) 13:12:01EnumChildWindowsで調べるものをつくってもいいのですが、
思い出せないものが本当にあったのかどうかわからないので教えてもらえないでしょうか?
0029デフォルトの名無しさん
2006/05/20(土) 13:25:180031デフォルトの名無しさん
2006/05/20(土) 13:47:22なかったですか。
つまり自分の勘違だったんですね。
0032デフォルトの名無しさん
2006/05/20(土) 16:19:51枠やキャプションも含めたサイズですか??
003332
2006/05/20(土) 16:22:14キャプションや枠のサイズはどうすれば取得できますか?
0034デフォルトの名無しさん
2006/05/20(土) 16:48:180035デフォルトの名無しさん
2006/05/20(土) 17:54:01Dとかでも質問可だったりしますか。
0036デフォルトの名無しさん
2006/05/20(土) 18:03:540037デフォルトの名無しさん
2006/05/20(土) 18:26:25UpdateResource
EndUpdateResource
あたりは?NT系だけだが
0038デフォルトの名無しさん
2006/05/20(土) 18:27:03>>25ね
0039デフォルトの名無しさん
2006/05/20(土) 18:55:580040デフォルトの名無しさん
2006/05/20(土) 18:57:170041デフォルトの名無しさん
2006/05/20(土) 19:02:210042デフォルトの名無しさん
2006/05/20(土) 19:35:05関数とか教えてもらえませんか?
0043デフォルトの名無しさん
2006/05/20(土) 19:51:12それでコンパイルしたとき「そんな関数ないです」とコンパイラに言われました。
wsscanfじゃなかったらなんになるのさ??
0044デフォルトの名無しさん
2006/05/20(土) 20:08:01Win32APIには無い。
0045デフォルトの名無しさん
2006/05/20(土) 20:11:49char szBuf[64];
wsprintf(szBuf, "差し手 = %s", szSashite);
これはいいのか?
0046デフォルトの名無しさん
2006/05/20(土) 20:12:580047デフォルトの名無しさん
2006/05/20(土) 20:50:330048デフォルトの名無しさん
2006/05/20(土) 20:53:02無いつってんだろp”
0049デフォルトの名無しさん
2006/05/20(土) 21:01:09勘違いしていました。
0050デフォルトの名無しさん
2006/05/20(土) 21:19:24青くなるようにするにはどうしたらいいのでしょうか?
0051デフォルトの名無しさん
2006/05/20(土) 21:34:30`ヽ:: ::´
ヽ ヽ , -‐--、 / /
ヽ \ I:::::::I_ _ / /
ヽ ヽ i,(;;;ノI、;;;)l ,,/ , '
ヽ ` ー 、.,,ゝ´ヮ`,ノュ_, - ' r'
フォ━━━━` 、_ /::: `山'::::: /━━━━!!! カス
ヽ:::::::::::|::::::::"",r‐'
〉::::::::|::::::::::¨/
/;;;;;;;/;;;;;;;;;;/
/;;;;;;;/:::::::::::《
<;;;;;;;《:::::::::::::ヽ
/ ヽI,r''"""^~ヽ
/ ,/ ヽ ヽ
0052デフォルトの名無しさん
2006/05/20(土) 21:56:40windows操作してりゃ分からねぇ?
0053デフォルトの名無しさん
2006/05/20(土) 22:00:53CRTの_tscanfで問題あるのか?
0054デフォルトの名無しさん
2006/05/20(土) 22:04:24余計わからなくなっちゃったじゃないかァ!
http://kureyon.jp/blog/srhkmk/img/1128259481.jpg
http://ja.wikipedia.org/wiki/%E4%BD%8F%E8%B0%B7%E6%AD%A3%E6%A8%B9
0055デフォルトの名無しさん
2006/05/20(土) 22:04:54GetSystemMenu
0056デフォルトの名無しさん
2006/05/21(日) 14:44:24その時、ウィンドウAを上にするにはどうしたらいいのでしょうか?
ShowWindow以外でなにかあれば教えてください。
ウィンドウAとウィンドウBの親ウィンドウは同じです。
0057デフォルトの名無しさん
2006/05/21(日) 14:54:520058デフォルトの名無しさん
2006/05/21(日) 14:54:59ていうか何故以外?
0059デフォルトの名無しさん
2006/05/21(日) 15:08:29だけどそのウィンドウが途中からウィンドウの順序が逆になりそうな気がしたのです。
ありがとうございますです。
0060デフォルトの名無しさん
2006/05/21(日) 16:23:16それって何処が変なの?
0061デフォルトの名無しさん
2006/05/21(日) 17:32:29UNICODEでコンパイルすると
TCHARがwchar_tになる。
つまり、
wsprintf(wchar_t *, const wchar_t *, ...);
ということになる。
wchar_t *のところに、char szBuf[64]をいれたら
コンパイルエラーが出る。
といいたいいんだろ?
0062デフォルトの名無しさん
2006/05/21(日) 18:25:06Windowの何の順がだ?
って言うか、試してみてダメだった時に考えろや。
0063デフォルトの名無しさん
2006/05/21(日) 18:38:280064デフォルトの名無しさん
2006/05/22(月) 01:14:14TB_GETSTATEはIDからしか無理みたいですし・・・
だからといってIndexからIDを調べる方法もわからないし・・・
TB_COMMANDTOINDEXは逆だし・・・
調べてみたのですがさっぱりわかりません。
教えてもらえないでしょうか?
0065デフォルトの名無しさん
2006/05/22(月) 01:26:56TB_GETBUTTONでindexからIDを調べる
0066デフォルトの名無しさん
2006/05/22(月) 01:41:47ちゃんと出てる!
ありがとうございます!
でもやっぱしID調べてからだったのですか・・・
処理回数増えるけど仕方ないか・・・
0067デフォルトの名無しさん
2006/05/22(月) 05:05:34大きいバッファを用意し、その中に全ての文字列を格納して
SetDlgItemTextで一度に表示する方法しかないんでしょうか?
行単位で送り出せればいいんですが。
0068デフォルトの名無しさん
2006/05/22(月) 05:09:580069デフォルトの名無しさん
2006/05/22(月) 05:17:43なるほど。EM系のメッセージ調べれば良かったんですね。
どうもありがとうございました。
0070デフォルトの名無しさん
2006/05/22(月) 05:46:420071デフォルトの名無しさん
2006/05/22(月) 09:06:230072デフォルトの名無しさん
2006/05/22(月) 09:26:26win95はSetWindowTextだったのが
それ以降はエディットコントロールのメモリへ直接セットしてますね
おそらくそれが一番高速でしょう
0073デフォルトの名無しさん
2006/05/22(月) 09:59:12このエラーメッセージは何ですか?
コンパイルは出来たのですが、リンク時にこのメッセージが出てエラーになります
0074デフォルトの名無しさん
2006/05/22(月) 10:09:300075デフォルトの名無しさん
2006/05/22(月) 10:13:590076デフォルトの名無しさん
2006/05/22(月) 16:14:08メニュー選択で
case IDM_AAA:
OnCreate(hWnd); //スレッドを作ってダイアログボックスを呼び出す関数
TESTMAIN( ); //計算する関数(時間がかかる)
////////
void OnCreate(HWND hWnd)
{
DWORD ThreadID;
ZeroMemory(&myThread, sizeof(THREAD));
myThread.hThread = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)ThreadProc,
(LPVOID)hWnd, 0, &ThreadID);
if(myThread.hThread == NULL){
MessageBox(hWnd, "スレッドの作成に失敗しました",
"スレッド作成", MB_OK | MB_ICONERROR);
SetDlgItemText(hWnd, IDC_EDIT4, "失敗");
return;
}
myThread.bValid = TRUE;
}
DWORD WINAPI ThreadProc(HWND hWnd)
{
DialogBox(hInst, (LPCTSTR)IDD_joukyou, hWnd, (DLGPROC)joukyou);
return 0;
}
として、計算している最中にダイアログボックスを表示させたいのですが、
TESTMAIN( )が終わらないとダイアログボックスを表示してくれません。
スレッドを作っているのになぜでしょう?
長くてすいません。
0077デフォルトの名無しさん
2006/05/22(月) 18:22:51計算をしている最中にダイアログを出したいなら、
計算を別スレッドでやれよ。
0078デフォルトの名無しさん
2006/05/22(月) 18:52:450080デフォルトの名無しさん
2006/05/22(月) 19:10:24WaitForSingleObject系などを使って判定。
なお、キャンセルを受け付けるならWaitForMultipleObjectsがいいかもね。
0081デフォルトの名無しさん
2006/05/22(月) 19:28:10おま、決定的な勘違いしてんぞ?なんだ「そんなもん」て?
別スレッドでやってんのはダイアログ作る関数呼び出してるだけで
メインスレッドでその作ったダイアログ表示するためのメッセージ処理してないんだろ?
そりゃ表示されるわけねーじゃんよん。もう全体的にダメぽ。
あと別スレッドで計算させたってウィンドウの操作無効にする方法はくらでもあんだろ?
0082デフォルトの名無しさん
2006/05/22(月) 20:33:58メッセージループが回らなきゃ、描画も移動も入力も、何にも回らんよ。
0083デフォルトの名無しさん
2006/05/22(月) 20:57:10Cの初心者スレできちんと勉強した方がいいよ。
0084デフォルトの名無しさん
2006/05/22(月) 21:02:22�@.スレッドを操作するクラスを作る。
�A.スレッド生存判定するメソを作る。WaitForSingleObject(m_hThread, 0)を使って判定。
�B.�@を扱いやすいとこで宣言。とりあえずグローバルで。
�C.メニューの選択処理で、�Aのメソでスレッドの生存判定。
�D.�Cでスレッドが生きてなかったら、スレッドを生成し処理を走らせる。
まずは、こんなかんぢで?
んで、好きなように工夫してみれあ?
0085デフォルトの名無しさん
2006/05/22(月) 21:14:300086デフォルトの名無しさん
2006/05/22(月) 21:25:100087デフォルトの名無しさん
2006/05/22(月) 21:30:41計算中にWindow触って欲しくなかったら、ダイアログ出す必要ないじゃん。
計算中にダイアログを出したいなら、メッセージループを回さなければならない。
メッセージループが回らないと、ダイアログを表示することすら出来ない。
君はWindowsの基本から勉強した方がいい。
0088デフォルトの名無しさん
2006/05/22(月) 21:45:19メッセージループ(GetMessage)を独自に回し、
ダイアログ用ウィンドウプロシージャを呼び出しています。
0089デフォルトの名無しさん
2006/05/22(月) 22:00:04アプリケーション側で解放したりするのはマズイですよね?
今のところ動いてるんですが、例えばDLL側でリンクしているcrtと
アプリ側でリンクしているcrtが違ったりするとマズーな予感がするんですが
0090デフォルトの名無しさん
2006/05/22(月) 22:09:10newだのmallocを使うならマズイ。
Win32API使うならダイジョブ?
0091デフォルトの名無しさん
2006/05/22(月) 22:33:060092デフォルトの名無しさん
2006/05/22(月) 22:35:27>>91
ありがとうございます
Win32APIを使用する事にします
0093デフォルトの名無しさん
2006/05/22(月) 22:52:560094デフォルトの名無しさん
2006/05/22(月) 23:27:37>別スレッドでやってんのはダイアログ作る関数呼び出してるだけで
>メインスレッドでその作ったダイアログ表示するためのメッセージ処理してないんだろ
も前様もナニか勘違いしていると思われます。
ウィンドウメッセージは、ウィンドウを作ったスレッドのメッセージキューに
送られますよ。
79の問題は、「ウィンドウ触られたくないから」って言ってメインスレッドのメッセージ処理を止めてしまっている点。
ワーカスレッドはダイアログを表示してメインスレッドのウィンドウを非アクティブにするべく
WM_NCACTIVEメッセージをメインスレッドのウィンドウに送り、それの返事をずっと待っている。
0095デフォルトの名無しさん
2006/05/23(火) 00:23:38IEのフレームに代表されるような「つまんで領域の大きさを左右や上下に調整する」区切り線は、
ウインドウスタイルの中で指定できないのでしょうか?
(正直、どういうメッセージが飛んでくるのかいまいち想像つきませんが)
用意されている可能性がある程度には、一般的かなと思うのですが…。
0096デフォルトの名無しさん
2006/05/23(火) 00:26:28スピリッタの事かな?
0097デフォルトの名無しさん
2006/05/23(火) 00:27:410098デフォルトの名無しさん
2006/05/23(火) 00:34:38でもこれMFCなんですね。Win32APIオンリーだと自力実装になりそうですね。
0099デフォルトの名無しさん
2006/05/23(火) 00:36:55951〜
0100デフォルトの名無しさん
2006/05/23(火) 00:42:37WTLにもあるよ。
0101デフォルトの名無しさん
2006/05/23(火) 00:48:18ご丁寧にありがとうございます。
以前から何回か質問させていただいてますが、いつも丁寧な返答が帰ってきて嬉しい限りです。
まだペーペーですが、質問に応えられる側になるようがんばります。
■ このスレッドは過去ログ倉庫に格納されています