5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Win32API質問箱 Build69

1 :デフォルトの名無しさん:2008/08/02(土) 23:23:58
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>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

Win32API質問箱 Build68
http://pc11.2ch.net/test/read.cgi/tech/1215348804/

2 :デフォルトの名無しさん:2008/08/02(土) 23:24:36
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/
http://msdn.microsoft.com/library/ja/
- MSDN2 ライブラリ
http://msdn2.microsoft.com/en-us/library/
http://msdn2.microsoft.com/ja-jp/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
- Windows SDK & Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

3 :デフォルトの名無しさん:2008/08/02(土) 23:25:10
- Google
http://www.google.com/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
http://www.amazon.co.jp/dp/4756138055

4 :デフォルトの名無しさん:2008/08/02(土) 23:25:46
過去ログ
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/

5 :デフォルトの名無しさん:2008/08/02(土) 23:26:24
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 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/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 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/

6 :デフォルトの名無しさん:2008/08/02(土) 23:27:27
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

7 :デフォルトの名無しさん:2008/08/02(土) 23:30:35
>>1


8 :デフォルトの名無しさん:2008/08/02(土) 23:40:34
前スレ>>993ですが回答ありがとうございました。
参考になりました。

9 :デフォルトの名無しさん:2008/08/02(土) 23:53:55
>>998
MSDNライブラリでbeginthreadを引くと_beginthreadexと_endthreadex使えと書いてある罠。

10 :デフォルトの名無しさん:2008/08/03(日) 00:33:31
_beginthreadは、スレッド終了時に自分でCloseHandleしちゃうから、
戻り値のハンドルが既に無効になってしまっている可能性があるからねえ。
_beginthreadexなら、終了してもハンドル自体は有効のままだから、
生死の確認等も問題なくできる。

11 :デフォルトの名無しさん:2008/08/03(日) 01:18:00
事前にDuplicateHandleしとけばいいじゃん

12 :デフォルトの名無しさん:2008/08/03(日) 02:28:39
>>11
_beginthreadから帰ってきた瞬間にもうハンドルが死んでいるかもしれないと書かれている。

あと、_beginthreadexで始めるスレッドのエントリポイントは
CreateThreadと同じくstdcallなんで、キャストの追加だけで移行できるのもメリットと言える。

13 :デフォルトの名無しさん:2008/08/03(日) 03:54:44
>>10>>12
ハンドルが無効ならGetExitCodeThreadがFALSEを返すから生死の確認ぐらいは可能でしょ
それとDLL版のCRTにリンクすればCreateThread/ExitThreadでもリークしない

14 :デフォルトの名無しさん:2008/08/03(日) 07:53:05
ハンドルの値が再利用されていないという前提条件は、流石にどうかと思うぞ。

15 :デフォルトの名無しさん:2008/08/03(日) 10:39:14
CEでも使える?>>_beginthread

16 :デフォルトの名無しさん:2008/08/03(日) 10:55:09
ディスクをフォーマットするにはどういう関数を使えば良いんでしょうか?

17 :デフォルトの名無しさん:2008/08/03(日) 13:25:02
あるメータの製品でCreateProcess()とWindowsのログオフが重なると
CreateProcess()が失敗するのはWindowsの仕様と聞いたのですが
これは本当ですが?


18 :デフォルトの名無しさん:2008/08/03(日) 14:18:24
>>17
「ウィンドウステーションがシャットダウン中のため〜」って出て失敗するやつじゃないの?
そもそもログオフのタイミングでCreateProcessって何がしたいのかねぇ

19 :デフォルトの名無しさん:2008/08/03(日) 14:24:36
ATOKなんかも以前のバージョンで、1度もIMEをONにしないまま
シャットダウンするとそうなっていたな。

20 :デフォルトの名無しさん:2008/08/03(日) 14:57:12
>>16
WriteFile

21 :デフォルトの名無しさん:2008/08/03(日) 22:38:34
http://pc11.2ch.net/test/read.cgi/tech/1217008269/197-198
より誘導されて参りました。

どうかご教授の程お願いいたします。


22 :デフォルトの名無しさん:2008/08/03(日) 22:57:56
ここの住人にそんな高度なこと判るわけないだろ
ここは初心者をバカにして優越感に浸って戯れるスレだ

23 :デフォルトの名無しさん:2008/08/03(日) 23:11:46
>>21
> SetWindowLong(HANDLE, GWL_STYLE, WS_POPUP | WS_MINIMIZEBOX | WS_VISIBLE);
> SetMenu(HANDLE, NULL);
> SetWindowPos(HANDLE, HWND_TOP, 0,0,1400,1052, SWP_FRAMECHANGED | SWP_NOCOPYBITS);

こんなソース書いてるようだからWin32の根本から分かってないみたいだね
とりあえず「勉強して一通り理解してから質問しろ」とだけ言っておく

24 :デフォルトの名無しさん:2008/08/03(日) 23:14:42
知らないならレスしないでください

25 :デフォルトの名無しさん:2008/08/03(日) 23:20:57
>>21
>>23に同じだけど、それ、コンパイル通る?

26 :デフォルトの名無しさん:2008/08/03(日) 23:28:07
試せばいいだろ

27 :デフォルトの名無しさん:2008/08/03(日) 23:28:50
コンパイルってぷよぷよのことですか><

28 :デフォルトの名無しさん:2008/08/03(日) 23:32:43
>>27
ワロタ

29 :デフォルトの名無しさん:2008/08/03(日) 23:53:26
>23
そんな事言うなら代わりに書いてください、お願いします。
Win32プログラムなんざやったことも無いが他に書く人が居ないのだから仕方ない。


30 :デフォルトの名無しさん:2008/08/03(日) 23:54:09
>25
通らない。一応これでコンパイルは通ったけども、効果なし。はて、どうしたものか

#include <windows.h>
#include <stdio.h>
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
static TCHAR  processName[MAX_PATH];
HWND hWnd;
hWnd = GetActiveWindow();
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
GetModuleFileName(0, processName, MAX_PATH);
processName[MAX_PATH-1] = '\0';

OutputDebugString("補助DLLロード確認");
MessageBox(0, processName, "補助DLLロード確認",  MB_OK);

SetWindowLong(hWnd, GWL_STYLE, WS_POPUP | WS_MINIMIZEBOX | WS_VISIBLE);
SetMenu(hWnd, NULL);
SetWindowPos(hWnd, HWND_TOP, 0,0,1400,1052, SWP_FRAMECHANGED | SWP_NOCOPYBITS);

break;

case DLL_PROCESS_DETACH:
OutputDebugString("補助DLLアンロード確認");
MessageBox(0, processName, "補助DLLアンロード確認",  MB_OK);
break;
}
return TRUE;
}

31 :デフォルトの名無しさん:2008/08/04(月) 00:04:27
何をしたいのかさっぱりわかんね

32 :デフォルトの名無しさん:2008/08/04(月) 00:50:32
リッチエディットコントロールの文字入力に上限はありますか?

33 :デフォルトの名無しさん:2008/08/04(月) 00:58:08
>>29
ここは宿題スレじゃない
自分で勉強して書く気が無いなら帰れ

34 :デフォルトの名無しさん:2008/08/04(月) 01:03:50
> そんな事言うなら代わりに書いてください、お願いします。
> Win32プログラムなんざやったことも無いが他に書く人が居ないのだから仕方ない。

何このゆとり世代・・・

35 :デフォルトの名無しさん:2008/08/04(月) 01:41:23
>33
宿題スレは宿題しか取り扱ってくれないのですがどうしましょう?

>34
プログラマでもないならコード書きたくないのは当然だろうに。
頼めるところがあるならとうの昔に頼んでる。
第一対象のソフトが無いなら動作確認も取れないし、作れる人間自体が限られてしまう。

36 :デフォルトの名無しさん:2008/08/04(月) 01:53:51
>>35
どこの世界にお前の代わりに無償でコード書く馬鹿がいるんだよ
それともそれ相応の金額を支払ってくれるのか?

37 :デフォルトの名無しさん:2008/08/04(月) 02:00:22
能書き垂れるぐらいなら書いてやればいいだろ
プログラマなんて底辺の職業に就いてるクズが偉そうに・・・
何もしないなら迷惑だから黙っとけ

38 :デフォルトの名無しさん:2008/08/04(月) 02:04:10
>>37のことですね.わかります

39 :デフォルトの名無しさん:2008/08/04(月) 02:05:48
ここで募集すればいいじゃん。時給1500円の底辺PGが作ってくれるよ
http://www.engineersguide.jp/

40 :デフォルトの名無しさん:2008/08/04(月) 02:09:43
結局このスレにコード書ける人間は居ないみたいだな

41 :デフォルトの名無しさん:2008/08/04(月) 02:11:01
煽ってもコードは出てこないぞ

42 :デフォルトの名無しさん:2008/08/04(月) 02:13:24
つうか元のツールの製作者に聞けよ
「古いエロゲーをフルスクリーンでやりたいです」と


43 :デフォルトの名無しさん:2008/08/04(月) 02:17:48
自分のオナニーの為に他人にコード書かせるのかw

44 :デフォルトの名無しさん:2008/08/04(月) 03:02:59
エラー値くらい調べるのは基本だぜ

45 :デフォルトの名無しさん:2008/08/04(月) 03:16:08
誰一人まともなアドバイスができてなくてワロタw
いつの間にここまでレベル落ちたんだよここ

46 :デフォルトの名無しさん:2008/08/04(月) 03:23:52
質問者のレベルに合わせております^^

47 :デフォルトの名無しさん:2008/08/04(月) 04:53:21
ケチってないでリクナビで募集でもかけろよ

48 :デフォルトの名無しさん:2008/08/04(月) 07:43:04
>39, 47
実際完動するものを作ってくれる人が居るなら少量の謝礼ぐらいは払っても良いとは思ってる。
とは言えその辺で募集できる類の物でもないだろうに。
別に会社組織として動かすわけでもないのだから。

>42
連絡取れるなら苦労しない。掲示板も動いてないし。
ついでに言うなら、元の書き込み見れば判るとおり、フルスクリーン化はエラー対策なのでフルスクリーンにこだわってるわけじゃない。
元のツールが窓化強制(設定はあるけど動いてないみたいだ)で色パレットエミュレート機能だけを利用できないので他のソフトのためにフルスクリーンできるようになるなら越したことは無いけど。

49 :デフォルトの名無しさん:2008/08/04(月) 07:46:35
そもそもAPIの話なの?これ…

50 :デフォルトの名無しさん:2008/08/04(月) 07:48:23
>>48
だから、お前がエロゲーでオナニーする為になぜ俺達がコード書いてやらなきゃならんのだよ
自分のことなんだから自分で何とかしろよ

51 :デフォルトの名無しさん:2008/08/04(月) 08:00:09
>50
だから何とかするために自分でやろうとして聞きにきたら「帰れ」じゃ話にならないわけで。

そもそも対象はエロゲだが目的は単に毛色の変わったローグライクやりたいだけだぞ。


52 :デフォルトの名無しさん:2008/08/04(月) 08:06:39
>>51
[プログラム板] 【初心者歓迎】C/C++室 Ver.57【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1216215558/

んじゃたらい回しとく。

53 :デフォルトの名無しさん:2008/08/04(月) 09:12:50
どうゆうことなの・・・

54 :デフォルトの名無しさん:2008/08/04(月) 09:13:51
これはもうだめかもわからんね

55 :デフォルトの名無しさん:2008/08/04(月) 09:50:25
>>23
こんなソース書いてるようでは何とかできるレベルに程遠い訳だが、それすら理解できてないからなぁ・・・

56 :デフォルトの名無しさん:2008/08/04(月) 09:55:51
分からないなら初心者スレで学習してからやればいい
コード書きたくないんであればソフトウェア板に「作ってくださいスレ」があるし

ここはコード募集スレじゃないから

57 :デフォルトの名無しさん:2008/08/04(月) 10:17:17
ゆとり世代の辞書には学習や勉強って言葉は無いからね

58 :デフォルトの名無しさん:2008/08/04(月) 10:59:49
ここの住人もスルーするということを学習しないよね

59 :デフォルトの名無しさん:2008/08/04(月) 11:05:09
ここの住人もゆとり世代だからね

60 :デフォルトの名無しさん:2008/08/04(月) 15:57:56
>55-57
そもそも>23の部分は>30で直してるんだけど。
全く学習する気が無い扱いされるのは心外。何とか出来る出来ない、じゃなくて今の所やる人間が自分しか居ないのだから。
まあ、つくってくださいスレ行くからいいけどさ。スレ見る限りじゃあっちのスレの方がこちらの需要に合ってるだろうし。

じゃあお邪魔しましたね。一応スレ混乱を招いたお詫び申し上げておくよ。

61 :デフォルトの名無しさん:2008/08/04(月) 16:09:06
スレ違いを開き直りかよ。
もともとフックするためのDLLなのに、その中にコード書いてどうするんだ。

62 :デフォルトの名無しさん:2008/08/04(月) 16:37:52
>61
何処がスレ違い。
元々は、
必要な機能があるが、コードを書く人間も居なければ頼めるところもない → 自分でやらざるを得ないのでど素人ながらも何とかそれっぽくして相談に来た
のだからスレ違いでも何でもないわけで。
結果としてより需要に合った、「頼める可能性のあるスレ」を紹介されたのでそちらに行く、といってどうして開き直りになるよ。

63 :デフォルトの名無しさん:2008/08/04(月) 17:05:21


                | ̄``''- 、
                |      `゙''ー- 、  ________
                |    ,. -‐ ''´ ̄ ̄`ヽ、_        /
                |, - '´ ̄              `ヽ、     /
              /               `ヽ、ヽ   /
             _/                    ヽヽ/
           / / /   /  /  /            ヽハ
          く  / /!   |   〃 _/__ l|   | |   |  |  | | ||ヽ
           \l// / |  /|'´ ∧  ||   | |ー、||  |  | l | ヽ
            /ハ/ |  | ヽ/ ヽ | ヽ  | || /|ヽ/!  |/ | ヽ
            / |  ||ヽ { ,r===、   \| _!V |// //  .!   |
            | ||   |l |ヽ!'´ ̄`゙   ,  ==ミ、 /イ川  |─┘
            | ハ||  || | """ ┌---┐  `  / //  |
            V !ヽ ト! ヽ、    |     !    / //| /
               ヽ! \ハ` 、 ヽ、__ノ    ,.イ/ // | /
    ┌/)/)/)/)/)/)/)/)/)/)lー/ ` ー‐┬ '´ レ//l/ |/
    |(/(/(/(/(/(/(/(/(/(/│||      | \  〃
  r'´ ̄ヽ            | |.ト     /  \
  /  ̄`ア             | | |  ⌒/     入
  〉  ̄二) 知ってるが    | | |  /     // ヽ
 〈!   ,. -'               | | ヽ∠-----', '´    ',
  | \| |  .お前の態度が  | |<二Z二 ̄  /     ',
  |   | |               _r'---|  [ ``ヽ、      ',
  |   | |   気にいらない >-、__    [    ヽ      !
  \.| l.              ヽ、      [     ヽ    |
    ヽ|              \    r'       ヽ、    |
                               ヽ、    |

64 :デフォルトの名無しさん:2008/08/04(月) 17:08:13
>>62
>>1

65 :デフォルトの名無しさん:2008/08/04(月) 17:42:43
プログラムを起動してウィンドウが作られた時、マウスカーソルがそのウィンドウの上にあると、砂時計になってしまいます。
一度そのウィンドウからカーソルを出すと、普通のカーソルに戻り、それからそのウィンドウの上にカーソルを持っていっても砂時計にはなりません。
ウィンドウクラスのhCursorにはNULLを入れています。
原因が予想できる方がいたら教えてください。
よろしくお願いします。

66 :デフォルトの名無しさん:2008/08/04(月) 17:58:37
LoadCursor(NULL, IDC_ARROW)

67 :65:2008/08/04(月) 18:10:25
>>66
直りました。
ありがとうございます。
NULLじゃダメなんですね。

68 :デフォルトの名無しさん:2008/08/04(月) 18:19:13
ほんと、このスレは初心者をボコボコに叩いて遊びたいだけの性格悪い奴が多いなー

69 :デフォルトの名無しさん:2008/08/04(月) 18:26:22
このスレっていうか、この板

70 :デフォルトの名無しさん:2008/08/04(月) 18:41:23
この板っていうか、2ちゃんねる

71 :デフォルトの名無しさん:2008/08/04(月) 18:41:43
2ちゃんねるというか世の中

72 :デフォルトの名無しさん:2008/08/04(月) 19:08:44
世の中っていうか、世の末

73 :デフォルトの名無しさん:2008/08/04(月) 19:41:18
ウインドウの中で右クリックしたら別の矩形ウインドウがポップアッップしてくるようにしたいです。

74 :デフォルトの名無しさん:2008/08/04(月) 19:42:20
続き どうすればいいか教えてください。

75 :デフォルトの名無しさん:2008/08/04(月) 19:43:17
右クリックしたら別の矩形ウインドウがポップアッップしてくるようにすればいいんじゃね?

76 :デフォルトの名無しさん:2008/08/04(月) 19:56:24
WM_RBUTTONDOWNでCreateWindow
クリックとして検知するならBUTTONDOWN+BUTTONUPにするかは状況次第

77 :デフォルトの名無しさん:2008/08/04(月) 19:57:09
WM_CONTEXTMENUだろjk

78 :デフォルトの名無しさん:2008/08/04(月) 20:15:47
WM_CONTEXTMENUって知名度低いよね。
メッセージの名称通り、コンテキストメニューを出すのに良いタイミングで送られてくるのに。

79 :デフォルトの名無しさん:2008/08/04(月) 20:34:53
WM_RBUTTON〜だとマウスで右クリした場合にしか対応できない
大概そういう場合はAppキーにも対応する必要のある事が多い
というかその手のキーボード操作ができないソフトなんてゴミ

80 :デフォルトの名無しさん:2008/08/04(月) 21:45:21
マウスカーソルをドラッグ中だけウインドウの外に出せないようにしたいんだけどどうすればいいのですか?

81 :デフォルトの名無しさん:2008/08/04(月) 22:02:32
ClipCursor

82 :デフォルトの名無しさん:2008/08/04(月) 22:04:41
BOOL OnDragMauseOutOfWindow(HWND hWnd)

83 :デフォルトの名無しさん:2008/08/04(月) 22:14:27
Mause

84 :デフォルトの名無しさん:2008/08/04(月) 22:17:08
Mausuでした

85 :デフォルトの名無しさん:2008/08/04(月) 22:27:30
スクロールバーの下部分に+とか−とかのボタンがついてるソフトってあるじゃないですか!
あれってどうやって実装してるんですか?Win32APIとC言語だけでも実装できるんですか?

86 :デフォルトの名無しさん:2008/08/04(月) 23:39:23
ボタン描くAPIある

87 :デフォルトの名無しさん:2008/08/05(火) 02:27:18
>>85
SetScrollBarButtons(hwnd, SBB_BOTTOM | SBB_PLUS | SBB_MINUS, TRUE);

88 :デフォルトの名無しさん:2008/08/05(火) 04:52:12
>>87
お前氏ねよ

89 :デフォルトの名無しさん:2008/08/05(火) 05:00:22
誰か分かる人居ないのですか?

90 :デフォルトの名無しさん:2008/08/05(火) 05:34:13
>>89
>>87

要するに 自 作 し ろ ということ。

91 :デフォルトの名無しさん:2008/08/05(火) 12:06:10
DrawFrameControl
あるいはuxthemeのテーマ描画API

92 :デフォルトの名無しさん:2008/08/05(火) 12:10:38
アプリケーション(.exe)をDLLとして動作させる方法ってありませんか?
中身は一緒だけど単独で動作させたい場合とDLLとして動作させたい場合があるのです。


93 :デフォルトの名無しさん:2008/08/05(火) 12:11:59
基本的にDLLとして全部実装して、単独実行用にそのDLLを呼ぶだけのexeを作る

94 :デフォルトの名無しさん:2008/08/05(火) 12:13:30
EXEでも関数のエクスポートはできるよ。

95 :92:2008/08/05(火) 12:30:15
>>93
それは考えましたが、単独実行用はexe一個にしたかったため別の方法を模索してました。

>>94
そうなんですか?
知りませんでした、色々と試してみます。
ありがとうございました。


96 :デフォルトの名無しさん:2008/08/05(火) 13:31:24
スピンコントロールを使ってて、
そのスピンコントロールの親ウィンドウにスクロールバーがあるんですが、

スクロールバーの動きを感知しようとして
WM_H(V)SCROLLメッセージを処理したら、
スピンコントロールを動かしても、WM_H(V)SCROLLメッセージが反応します。

WM_H(V)SCROLLメッセージが、
スクロールバーによるメッセージなのか、
スピンコントロールによるメッセージなのか、
区別する方法をご存知の方、教えて下さい。

97 :デフォルトの名無しさん:2008/08/05(火) 13:40:46
LPARAMに入るウィンドウハンドルを見なさい

98 :デフォルトの名無しさん:2008/08/05(火) 16:50:41
いやです

99 :デフォルトの名無しさん:2008/08/05(火) 16:55:59
お断りします

100 :デフォルトの名無しさん:2008/08/05(火) 17:21:18
じゃあ俺が見るよ

101 :デフォルトの名無しさん:2008/08/05(火) 17:25:49
いや、俺が見る

102 :デフォルトの名無しさん:2008/08/05(火) 17:40:09
いやいや、ここは俺が

103 :デフォルトの名無しさん:2008/08/05(火) 17:41:17
もうそういうのいいから

104 :デフォルトの名無しさん:2008/08/05(火) 17:46:29
Windows Media Player 11のプラグイン作りたいんだが、そういうのはどのSDKが必要なんだ?
Platform SDKでいいんかな。

105 :デフォルトの名無しさん:2008/08/05(火) 18:11:32
COMポートのGetCommPropertiesを実行したところ、LPCOMMPROP構造体dwMaxBaudがBAUD_USER ユーザー設定可変値
になっているのですが、これはSetCommState()でdcb.BaudRateを設定するときCBR_115200を超えて好きな値を設定できるんですか?
CBR_のdefineがないので、230400を直接指定したのですが、SetCommStateでパラメータ異常になってしまいます。
通信速度230400を設定するにはどうすればいいんでしょうか?

106 :デフォルトの名無しさん:2008/08/05(火) 18:36:19
エクスプローラのフォルダツリーペインみたいに
ツリービューにディレクトリ構造を表示させたいのですが
何かいいサンプルとか無いですか

107 :デフォルトの名無しさん:2008/08/05(火) 18:44:48
>>104
Windows Media Player 11 SDK

108 :デフォルトの名無しさん:2008/08/05(火) 18:51:41
>>105
できないからエラーリターンなんでしょ

109 :デフォルトの名無しさん:2008/08/05(火) 18:56:01
COMポートは何?
UART使ったほんとのCOMポートなら、ハードで上限決まるけど。

110 :デフォルトの名無しさん:2008/08/05(火) 19:12:58
マザボについてるCOM1シリアルです。

111 :デフォルトの名無しさん:2008/08/05(火) 19:43:35
その制御チップで上限が決まるって話でしょ?

112 :デフォルトの名無しさん:2008/08/05(火) 20:13:14
それで上限を知りたくてGetCommPropertiesを実行したところ、LPCOMMPROP構造体dwMaxBaudがBAUD_USER ユーザー設定可変値
になっているのですが、この関数の使い方の解釈は間違ってますか?

113 :デフォルトの名無しさん:2008/08/05(火) 20:17:57
エラーが返ってきたらその速度で使えないってことでいいじゃん。

114 :デフォルトの名無しさん:2008/08/05(火) 20:19:54
そうか!すごいわかりやすい。それでいいやありがと!

115 :デフォルトの名無しさん:2008/08/06(水) 00:22:50
APIの情報(関数名,戻り値の型,引数名,引数の型)の一覧がCSVとか、
プログラムで取り込みやすい形式になっているものがほしいんですが、
どなたかご存じないですか?
最悪,MSDNのWebページをパースするしかないですかね?


116 :デフォルトの名無しさん:2008/08/06(水) 00:31:34
ヘッダファイルをパースする方がまだマシじゃね

117 :デフォルトの名無しさん:2008/08/06(水) 00:53:19
前はwin32api.csvってのがあったな

118 :デフォルトの名無しさん:2008/08/06(水) 01:03:55
doxygenに食わすと判りやすい形でだしてくれる、ってな話を
大昔にradium softwareあたりで読んだけど

119 :デフォルトの名無しさん:2008/08/06(水) 01:18:42
>>117
win32api.csvって付かなくなったの?

120 :デフォルトの名無しさん:2008/08/06(水) 02:56:34
通常のマウス操作とmouse_event等で擬似的に生成されたマウス操作とを判別するにはどうしたらいいんでしょうか。

121 :デフォルトの名無しさん:2008/08/06(水) 04:59:56
不可能

122 :120:2008/08/06(水) 09:16:02
おお、ばっさり切られました。
今チート対策研究中なんですが、オートマウス防止って難しいんだなあ。

123 :デフォルトの名無しさん:2008/08/06(水) 09:40:38
マウスの軌道でも監視してて不自然な挙動してたら撥ねるとか

124 :デフォルトの名無しさん:2008/08/06(水) 10:45:17
>>116-118
ありがとうございます。doxygenちょっと試してみます。

125 :デフォルトの名無しさん:2008/08/06(水) 10:46:37
>>120
XP以降になるけどRaw Input APIとかってどうなの?

126 :デフォルトの名無しさん:2008/08/06(水) 12:24:31
>>122
チートはされても問題ないシステムを作れ。つーか操作系はチートに分類すべきではないし基本的にブロックできない。
nProみたく頭の悪いことをしたら駄目だぞ。

127 :デフォルトの名無しさん:2008/08/06(水) 12:38:47
nProtectのようなコードを書いたらプログラマとして終わりだよな。

128 :デフォルトの名無しさん:2008/08/06(水) 13:14:10
というかそんなソフトの需要がある現状が問題じゃないのか
オンラインゲームでチートする馬鹿がいるからだろ

129 :デフォルトの名無しさん:2008/08/06(水) 13:33:00
そりゃ、泥棒がいるから鍵つけなきゃならない世の中がおかしい、と言うようなもんで
正しいけど現実的じゃないような。

130 :デフォルトの名無しさん:2008/08/06(水) 13:39:08
OS側で細かく権限制御できないんだからサードパーティでやるしかないだろ

131 :デフォルトの名無しさん:2008/08/06(水) 13:51:21
そもそもCreateRemoteThreadとかRead/WriteProcessMemoryなんて
チート御用達APIが一般アプリで使い放題というWindowsのセキュリティの甘さが問題

132 :デフォルトの名無しさん:2008/08/06(水) 14:32:24
オープンソースのOSで動かすもののほうが、何でもやりたい放題にできるべ。

133 :デフォルトの名無しさん:2008/08/06(水) 14:45:20
↑話を理解してない馬鹿

134 :デフォルトの名無しさん:2008/08/06(水) 14:47:18
理解できないとそれしか貼り付けられないバカがまた来たか

135 :デフォルトの名無しさん:2008/08/06(水) 14:58:36
↑話を理解してない大馬鹿

136 :デフォルトの名無しさん:2008/08/06(水) 15:11:06
チョン製だから仕方ない・・・

137 :デフォルトの名無しさん:2008/08/06(水) 16:29:54
>>125
そういえば、MAMEがRaw Input APIを使うようになって
JoyToKeyが使えなくなったという話を聞いたことがあるな。

138 :デフォルトの名無しさん:2008/08/06(水) 17:15:36
アドレスバーみたいにエディットボックスにいくと自動で全選択させるエディットボクスをつくるAPIを教えてくださいm(_ _)m

139 :デフォルトの名無しさん:2008/08/06(水) 17:18:41
自分でイベントをハンドルしてEM_SETSELでも送れ

140 :デフォルトの名無しさん:2008/08/06(水) 17:38:17
>>138
あれはComboBoxの機能だろ

141 :デフォルトの名無しさん:2008/08/06(水) 18:59:42
レスありがとうございますm(^ ^)m
どうやら自分はサブクラス化とかわからないそうなので
ボンボボックスを代用したいと思います!

142 :デフォルトの名無しさん:2008/08/06(水) 19:12:54
>ボンボボックス
0点

143 :デフォルトの名無しさん:2008/08/06(水) 19:14:12
>ボンボボックス
ワロスw

144 :デフォルトの名無しさん:2008/08/06(水) 19:58:54
>>142-143
そういう揚げ足取りいらないから。

145 :デフォルトの名無しさん:2008/08/06(水) 20:01:33
ここは面白い発言に笑うことも許されない陰気なインターネットですね

146 :デフォルトの名無しさん:2008/08/06(水) 20:51:42
>>138
EN_SETFOCUSがきたらEM_SETSELするだけかと

147 :デフォルトの名無しさん:2008/08/06(水) 21:04:55
>>144
あげあしっていうか、ボンボでなけりゃスルーされたとこだけど、なにせボンボだからなぁ

148 :デフォルトの名無しさん:2008/08/06(水) 21:16:35
お礼レスなんてスルーでいいだろ

149 :デフォルトの名無しさん:2008/08/06(水) 21:56:58
どうでもいいが、テキストの途中を編集しようと位置決めしてクリックしたのに
勝手に全選択されて、もう一度クリックしないといけないUIはイライラする

150 :デフォルトの名無しさん:2008/08/06(水) 22:13:24
勝手にイライラしとけば?

151 :120:2008/08/06(水) 22:56:43
今回チート対策を調べているのは自分の勉強の側面が強いです。

>>123
それは考えてました。
判定に自分のセンスが試されそうな話ですね。

>>125
ざざっと調べてみましたが、使えそうな匂いがしますね。
これから詳しく調べてみます。

>>126
チートはされても問題ないシステムを作れ、との言葉、心に留めます。
今回はテーマが違うのであれですが。

152 :デフォルトの名無しさん:2008/08/06(水) 23:32:24
>>20

writefileで何を書き込めば良いんでしょうか?
createfileのときはドライブを開けば良いんですよね?

153 :デフォルトの名無しさん:2008/08/06(水) 23:38:18
nProって何やってるわけ?

154 :デフォルトの名無しさん:2008/08/06(水) 23:38:47
監視

155 :デフォルトの名無しさん:2008/08/07(木) 01:12:55
rootkitみたいなこと

156 :デフォルトの名無しさん:2008/08/07(木) 01:57:18
チート対策の勉強といいつつ実はチート方法を勉強したいのだろう

157 :デフォルトの名無しさん:2008/08/07(木) 06:51:42
>>153
rootkitのためのネイティブAPIのフックとか時間関係をいじれなくするためのAPIのフックとか、ソフトウェアからのキー入力をはじくためのフィルタドライバじゃね。
結果、サードパーティの特殊なハードが使えんし(6ボタン以上あるマウスとか自由に割り当て可能なキーのあるキーボードとか)
OSのバージョンがあがるたびにブルースクリーンだすような代物。

158 :デフォルトの名無しさん:2008/08/07(木) 07:51:06
ダブルバッファリングについて質問です。
子ウインドウ(ボタンやボックスなど)が多数存在する状況で、ウインドウ全体を再描画したいのですが、ちらついてしまいます。
まず子ウインドウの内容も全部まとめて一つのオフスクリーンに描画してからBitbltで画面に表示、ということが出来れば、と考えたのですが、方法が分かりません。
よろしければ方法を教えていただけないでしょうか。もしこの方法で無理なら、ちらつきを抑える代替案を挙げていただけないでしょうか。
よろしくお願いします。

159 :デフォルトの名無しさん:2008/08/07(木) 07:56:20
> 6ボタン以上あるマウスとか自由に割り当て可能なキーのあるキーボードとか
そもそもこういうの自体OSのバージョン上がった時にドライバ用意できないと動かない可能性高いが

160 :デフォルトの名無しさん:2008/08/07(木) 09:09:48
>>158
親にWS_CLIPCHILDRENをつければ、子をオフスクリーンに描く必要はないんでない

161 :デフォルトの名無しさん:2008/08/07(木) 11:26:43
3DのRPGを作ろうと思っているのですがC言語とC++を一通り学んだので
Win32APIで、ゲームを作る上で必須な項目
ってなんですか?
自分で調べた結果必要だと思った↓
GDI描写、フォントとテキスト、入力処理、ウィンドウ操作、メニュー、ビットマップ、
アニメーション、を勉強しました。
他にこれはやったほうがいいよ、というのがあったら教えてください
Win32APIの基礎を覚えたらDirectXの勉強をしようと思います。

162 :デフォルトの名無しさん:2008/08/07(木) 13:01:37
このスレで聞かれても、Win32APIを勉強しろとしか答えようがないがw

163 :デフォルトの名無しさん:2008/08/07(木) 13:11:05
ものすごく遠い道のりだな
気づいたときにはみんな大人になっていたというオチだ

164 :デフォルトの名無しさん:2008/08/07(木) 13:26:40
jpegやpngを表示するにはどうすればいいんですか?
ファイルヘッダーを文字で表示することは出来たのですが、ここからどうしていいかが分かりません。
詳しい手順を教えてくれませんか?

165 :デフォルトの名無しさん:2008/08/07(木) 13:37:59
Gdiplus::Image img(L"hoge.jpg");
Gdiplus::Graphics g(hdc);
g.DrawImage(&img, 0, 0);

166 :165:2008/08/07(木) 13:53:19
GDI+を使えばいいんですね。
ありがとうございます。

ただ、上手くいえないんですけど、そういうのって自分で書けないんですか?
CreateCompatibleDCとかLoadBitmapの中身が見てみたいんですけど、どこかで見れますか?

167 :デフォルトの名無しさん:2008/08/07(木) 13:55:03
自分でjpeg書きたいなら、libjpeg、libpngのソース見たり利用したりすればいいじゃない。

168 :デフォルトの名無しさん:2008/08/07(木) 14:00:12
CreateCompatibleDCについてはwineのソースでも読んでみたらいいんじゃねえのか

それはそれで楽しいとは思うが実にはならないと思う

169 :164:2008/08/07(木) 14:09:49
レスありがとうございます。
紹介してもらったものを見てみましたが、自分には早すぎたみたいです。
何年後かに挑戦します。

170 :デフォルトの名無しさん:2008/08/07(木) 17:03:20
日経ソフトウェアで前に紹介されてたな…

171 :デフォルトの名無しさん:2008/08/07(木) 17:05:02
JPEGのエンコーダ、デコーダ実装で一冊本になってるよ。

172 :デフォルトの名無しさん:2008/08/08(金) 00:46:48
なんか本が一冊でてたな
C++的には全然イケてないコードだったのは覚えてる

173 :デフォルトの名無しさん:2008/08/08(金) 01:00:04
DCTが分かればjpegなんて大したこと無いよ

174 :デフォルトの名無しさん:2008/08/08(金) 07:16:18
このスレにWikiなんてあったんだなw

175 :前スレVirAlloc相談者:2008/08/08(金) 07:51:49
また、からかわれ覚悟で出て来ましたですヨ。
先ず、懸案の VirtualAlloc() などの件は無事終わった。いろいろに感謝。

チラ裏になるが、VirtualFree() の flag の指定が悪く、使った後の解放
が出来てなくて、5MBのJpeg写真を読み込んで、31MBのDIBを吐き出す操作
を27回繰り返すと、「この操作を行うにはメモリが足りません」とか宣
まわった。Jpeg解凍のDLLは、Dos時代から使っているソースから自分でコ
ンパイルしたもの。VirtualAlloc()関係のソース例は意外に少ない印象で
一時困ったが、お笑いなのは、自分のプログラム内にもう使用例があって
これで解決した次第。因みに、RamDisk操作で

//diskio.c Copyright (C) 1999-2003 K.Takata
#define AllocDiskIO(siz) VirtualAlloc(NULL, siz, MEM_COMMIT, PAGE_READWRITE)
#define FreeDiskIO(buf) VirtualFree(buf, 0, MEM_RELEASE)

がソースにあった。k.Takataさんに改めて感謝。


176 :デフォルトの名無しさん:2008/08/08(金) 08:41:51
もう出てこなくていいよ・・・

177 :デフォルトの名無しさん:2008/08/08(金) 09:14:31
ああ、new/mallocでいいんじゃね?っていう話?

178 :デフォルトの名無しさん:2008/08/08(金) 09:36:14
>>175
前スレもそうだが、こいつって質問者を装って自己陶酔しまくった日記書いてるだけなんだよな
こういう自己中な奴ってリアルでも空気読めなくて周囲からウザがられてるんだろうな

179 :デフォルトの名無しさん:2008/08/08(金) 09:44:38
>>175
LSI86-C という脳内コンパイラについて教えてください。

180 :デフォルトの名無しさん:2008/08/08(金) 11:33:14
virtualFree(前スレVirAlloc相談者);

181 :デフォルトの名無しさん:2008/08/08(金) 11:41:36
>>176-180
かまうなよ
かまう奴が居るからこの手のは居座る

182 :デフォルトの名無しさん:2008/08/08(金) 11:42:10
error C2065: 'virtualFree' : 定義されていない識別子です。

183 :デフォルトの名無しさん:2008/08/08(金) 11:47:43
>>181
かまってほしくない人はレスしないでください

184 :デフォルトの名無しさん:2008/08/08(金) 21:15:26
#include <windows.h>
#define APP_NAME TEXT("Sample_MainWindow")

typedef struct _ThreadParam {
HWND owner;
POINT point;
} ThreadParam;

DWORD WINAPI ThreadFunc(LPVOID vdParam){
HDC hdc;
RECT rect;
ThreadParam param;

_ThreadParam { の_って付けるとどういう意味があるんですか?

185 :デフォルトの名無しさん:2008/08/08(金) 21:21:42
アンダースコア+大文字で始まる識別子は言語によって予約されているので、
構造体タグにそのような名前をつけるのはよくありません。

もしお読みの本かなにかにそのようなコードが載っているのであれば、
今すぐ窓から投げ捨ててください。

186 :デフォルトの名無しさん:2008/08/08(金) 21:22:59
いや、誰かが拾って読んでしまうかもしれん。
焼き捨てるべきだ。

187 :デフォルトの名無しさん:2008/08/08(金) 21:27:20
「Windowsゲームプログ○ミング」という本なのですが、捨てたほうがいいのですか・・・。
専門学校の教科書なんですけど捨てるのはやばいので金庫に入れておきます。
学校で使うときに出します。

188 :デフォルトの名無しさん:2008/08/08(金) 21:32:13
そんな本を教科書に使うってことは、どうせ専門学校だろ。
人生終わったな。
悪いことは言わん。
今すぐやめてコンビニの店員にでもなるんだな。

189 :デフォルトの名無しさん:2008/08/08(金) 21:36:39
すいませんもう200万払っちゃったので・・・。
後の祭りですね・・・。
ゲームクリエイター学科なのにゲーム会社に就職は1割以下で
ほとんどが工場のベルトコンベアーの保守プログラム関係みたいです(最近知った)
愚痴ってすいません・・。
独学で勉強してがんばります!
それでは失礼します。


190 :デフォルトの名無しさん:2008/08/08(金) 21:37:35
>>185-188
typedef struct _FILETIME {
  DWORD dwLowDateTime;
  DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;

Win32SDKのヘッダだってそうなってるんだが。
馬鹿じゃねーの?

191 :デフォルトの名無しさん:2008/08/08(金) 21:38:20
>>187
一応補足しとくと、

アンダースコア+(アンダースコア or 大文字) で始まる識別子は常に予約されている。
その他のアンダースコアで始まる識別子はファイルスコープで予約されている。
予約済み識別子を使用した場合の動作は未定義。

一般的な流儀として構造体タグは、
typedef struct ThreadParam_ { } ThreadParam; // お尻にアンダースコアつけるとか、
typedef struct tag_ThreadParam { } ThreadParam; // tag_ と書くとか、
typedef struct ThreadParam { } ThreadParam; // 何もつけない。

192 :デフォルトの名無しさん:2008/08/08(金) 21:39:02
>>191
ありがとうございます_の謎が少し理解できました

193 :デフォルトの名無しさん:2008/08/08(金) 21:40:58
同人ゲーム作りが近道と言ってみるテスト
学校なんて何も教えてくれないよ。就職斡旋するだけだからw

194 :デフォルトの名無しさん:2008/08/08(金) 21:43:15
そもそもゲーム業界なんか目差してる時点で人生終わっとる

195 :デフォルトの名無しさん:2008/08/08(金) 21:45:32
>>190
処理系のために予約されているのだから処理系付属のライブラリが使用してもなんら問題はない。

196 :デフォルトの名無しさん:2008/08/08(金) 21:56:18
>>195
処理系付属のライブラリ=Win32SDKとでも言いたいのか
馬鹿丸出し

197 :デフォルトの名無しさん:2008/08/08(金) 21:59:17
本職組み込み、趣味でゲーム作りが最強

198 :デフォルトの名無しさん:2008/08/08(金) 22:02:17
処理系だの未定義だの不定だのいう宗教じみた言語厨ってどこにでもいるよな
MS自体そんな事なーんも考えてないのにねぇ

199 :デフォルトの名無しさん:2008/08/08(金) 22:02:22
WSDKは単体配布だけじゃなくて、VC++付属のやつもあるが。
コンパイラについてくるぐらいだから処理系付属といっても差し支えないだろ。


200 :デフォルトの名無しさん:2008/08/08(金) 22:05:25
だいたい処理系は未定義な動作をどういう動作にするか自由に決められるんだから、
処理系を作ったのと同じ組織が書いたコードが動作の未定義な部分を含んでいてもなんら差し支えない。

201 :デフォルトの名無しさん:2008/08/08(金) 22:06:53
> コンパイラについてくるぐらいだから処理系付属といっても差し支えないだろ。
こんなアバウトな俺様定義するくせにアンダースコアには拘るのか

202 :デフォルトの名無しさん:2008/08/08(金) 22:13:44
訳:かまってほしいな

203 :デフォルトの名無しさん:2008/08/08(金) 23:28:35
>>175
>#define FreeDiskIO(buf) VirtualFree(buf, 0, MEM_RELEASE)

あー、そのコードバグってますんで、以下のでよろしく。
#define FreeDiskIO(buf) VirtualFree(buf, 0, MEM_RELEASE | MEM_DECOMMIT)

204 :デフォルトの名無しさん:2008/08/08(金) 23:39:00
ここで奴がキモイ自己陶酔日記を引っさげて登場

 ↓ ↓ ↓ ↓

205 :デフォルトの名無しさん:2008/08/08(金) 23:43:19
CryptCreateHashで作った
HCRYPTHASHオブジェクトは使いまわしていいのでしょうか?
CryptHashDataとかでハッシュ値生成して使い終わったら
一度CryptDestroyHashで開放すべきですか?

206 :デフォルトの名無しさん:2008/08/08(金) 23:46:59
リファレンス嫁よ。ゆとりが

207 :デフォルトの名無しさん:2008/08/08(金) 23:52:43
わからないんならレスしないでください

208 :デフォルトの名無しさん:2008/08/08(金) 23:56:23
>>207
リファレンス読めば理解できると分かっている

209 :デフォルトの名無しさん:2008/08/09(土) 00:01:58
>After one of the functions from this list has been called,
>CryptHashData and CryptHashSessionKey cannot be called.

すみませんこの部分を見落としてました><;
どもです。

ちなみに>>207は私じゃないですw

210 :デフォルトの名無しさん:2008/08/09(土) 00:09:26
ウィンドウを綺麗にC++のクラスで纏めるにはどのAPI使えばいい?wndclassのwndprocにクラスの関数入れたらエラーになるんですが・・・

211 :デフォルトの名無しさん:2008/08/09(土) 00:12:39
RegisterClass(Ex)
CreateWindow(Ex)

212 :デフォルトの名無しさん:2008/08/09(土) 00:13:27
>>210
そんなんじゃC++もたいしたレベルじゃねぇだろお前
ヒント:static

213 :デフォルトの名無しさん:2008/08/09(土) 00:19:02
URLを指定できるwavファイルを再生するAPIはありますか?


214 :デフォルトの名無しさん:2008/08/09(土) 00:36:33
具体的にどういうこと?

215 :デフォルトの名無しさん:2008/08/09(土) 00:41:48
ダウンロードした音声ファイルをユーザが使用することのないように、
ネット上の音声ファイルをソフト内で再生したいです。

216 :デフォルトの名無しさん:2008/08/09(土) 00:45:45
俺なら数分で作れるな

217 :デフォルトの名無しさん:2008/08/09(土) 00:46:45
ちなみにVB6を使っています

218 :デフォルトの名無しさん:2008/08/09(土) 00:52:16
VB6なんてとっくにサポート切れてるのにまだ使ってる人いるんだね・・・

219 :デフォルトの名無しさん:2008/08/09(土) 00:52:57
今すぐC#に切り替えることを勧める。VBなんてもはや廃れつつある言語。

220 :デフォルトの名無しさん:2008/08/09(土) 00:55:04
そうですか、たまたまこれしか家にはないんですよね・・・

221 :デフォルトの名無しさん:2008/08/09(土) 00:57:21
大丈夫開発環境はただで揃うから

222 :デフォルトの名無しさん:2008/08/09(土) 01:00:02
そうなんですか!
そういえばVC++6.0もあったのですが(使ってない)
やるなら何がいいのでしょう?

223 :デフォルトの名無しさん:2008/08/09(土) 01:06:48
簡単にいきたいならC#

224 :デフォルトの名無しさん:2008/08/09(土) 01:08:01
たまたまVB6が家にあるってのもおかしな話だな

225 :デフォルトの名無しさん:2008/08/09(土) 01:13:41
過去に親が使ってました

226 :デフォルトの名無しさん:2008/08/09(土) 01:19:10
>>224
俺の家にはたまたまVC6ProとVS2003ProとVS2005Proがあるけど
結局VC6しか使ってない

227 :デフォルトの名無しさん:2008/08/09(土) 01:19:22
リアル小学生な感じがしてきた・・・

228 :デフォルトの名無しさん:2008/08/09(土) 01:27:07
VisualStudio6.0があります

229 :デフォルトの名無しさん:2008/08/09(土) 01:27:39
もちろんたまたま親が

230 :デフォルトの名無しさん:2008/08/09(土) 01:28:48
割れ厨()笑だらけですね

231 :デフォルトの名無しさん:2008/08/09(土) 01:31:47
こんなのがプログラミングしようとしててすみません。

232 :デフォルトの名無しさん:2008/08/09(土) 01:35:03
昔と違って3万もあればVS2008std買えるからいい時代になったな。SDKはネットで簡単に入手できるし。

233 :226:2008/08/09(土) 01:54:53
>>232
VS2003ProとVS2005Proが学生の時にtheSpoke版が4kで買えて衝撃的だったんだが
今はDreamSparkなんてやってるんだよなぁ

もうMSが何をしたいのか分からなくなってきた・・・

234 :デフォルトの名無しさん:2008/08/09(土) 01:56:42
市場を独占気味にしたい

235 :デフォルトの名無しさん:2008/08/09(土) 01:58:45
Borlandが社名変えたり戻したりしてる間に既に市場独占してただろ

236 :デフォルトの名無しさん:2008/08/09(土) 02:05:21
いくら無料で手に入る時代でもやっぱ金かけないとダメでしょ
AC版でも学生がン万円出すのはそれなりにしんどいし、
そうして手に入れれば「よし頑張るぞー」って気持ちになれる

237 :デフォルトの名無しさん:2008/08/09(土) 02:07:55
逆を言えば物にならなかった時に無駄になるのが嫌で
手を出せなかったという人もいるんだろうけどなー

元々そんな奴は物になんねーよと言う意見は取り合えず置いといて

238 :デフォルトの名無しさん:2008/08/09(土) 02:07:58
うん、君はそうしとけばいいよ。

239 :デフォルトの名無しさん:2008/08/09(土) 02:15:31
無料配布なんて貧乏人救済システムは要らない
ただでさえ無職ニートが多いこんなご時世に「いつかシェアウエアでガッポリ儲けてやる」とか
つまらない夢を抱く馬鹿が増えるだけ

240 :デフォルトの名無しさん:2008/08/09(土) 02:33:40
増えたところで俺には関係ない
その馬鹿と同じ次元に居る奴にはつらいのかもしれんが

241 :デフォルトの名無しさん:2008/08/09(土) 02:35:48
馬鹿で悪かったな
もう死んでも治りそうに無いよ

242 :デフォルトの名無しさん:2008/08/09(土) 02:49:43
馬鹿は馬鹿なりに前向きに生きればいいだろ

243 :デフォルトの名無しさん:2008/08/09(土) 02:56:59
もういいから

244 :デフォルトの名無しさん:2008/08/09(土) 10:57:28
1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
1>リンクしています...
1>7.obj : error LNK2019: 未解決の外部シンボル __imp__timeGetTime@0 が関数 _ThreadFunc@4 で参照されました。
1>C:\Documents and Settings\****\My Documents\Visual Studio 2008\Projects\test\Debug\test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
1>ビルドログは "file://c:\Documents and Settings\****\My Documents\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm" に保存されました。
1>test - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
このエラーはどうやって直すんですか;;?
msimg32.libはリンカから追加しました。


245 :デフォルトの名無しさん:2008/08/09(土) 11:03:14
>>244
winmm ってライブラリは無い?

246 :デフォルトの名無しさん:2008/08/09(土) 11:22:33
>>245
追加したらできました
ありがとうございます

247 :デフォルトの名無しさん:2008/08/09(土) 13:23:37
環境スレ行けよ…

248 :デフォルトの名無しさん:2008/08/09(土) 14:29:07
行きたきゃお前が逝けよ

249 :デフォルトの名無しさん:2008/08/09(土) 15:12:25
>>247
貴方の気分を害したことを謝罪いたしますと同時に遺憾の意を表します。
誠に申し訳ございませんでした

250 :デフォルトの名無しさん:2008/08/09(土) 15:35:53
慇懃無礼だな

251 :デフォルトの名無しさん:2008/08/09(土) 16:12:19
__imp__timeGetTime@0 でググれば分かるけどな

252 :デフォルトの名無しさん:2008/08/09(土) 16:41:06
テトリスやブロック崩しくらい作れないとWin32APIの基礎を
覚えたとは言えませんか?

253 :デフォルトの名無しさん:2008/08/09(土) 16:46:17
うん。

254 :デフォルトの名無しさん:2008/08/09(土) 16:47:48
テトリスやブロック崩しはアルゴリズムのほうがメインになるからWin32APIとは関係ない

255 :デフォルトの名無しさん:2008/08/09(土) 16:48:00
テトリスやブロック崩しなんて、大半がゲームロジックでほとんどAPI使わないだろ。
ペイントの方が一通りの要素が揃っている。

256 :デフォルトの名無しさん:2008/08/09(土) 17:04:30
ペイントなんて、大半がペイントロジックでほとんどAPI使わないだろ。

257 :デフォルトの名無しさん:2008/08/09(土) 18:21:15
GDIの基本操作を学ぶには良いんじゃないか?
傾斜・反転・回転以外はほぼGDIに丸投げっぽいし。

258 :デフォルトの名無しさん:2008/08/09(土) 18:44:39
>>250
どうして慇懃無礼なんでしょうか?

259 :デフォルトの名無しさん:2008/08/09(土) 18:47:59
>>250
俺のダチが世話になったな
今度群馬こいいい所紹介してやるからよ

260 :デフォルトの名無しさん:2008/08/09(土) 21:08:00
ID出んから言いたい放題

わろす

261 :デフォルトの名無しさん:2008/08/09(土) 21:53:00
質問です。既定のブラウザから例として「ぬるぽ ガッ」という検索結果のページをボタン一発で表示させたいのです。
詳しく言うと、

@プログラムのボタンを押す
A既定のブラウザで「ぬるぽ ガッ」という検索結果のページがブラウザが起動して結果が表示される

といった具合のものを作ろうと思っています。
既定のブラウザの取得方法は、
://www.atmarkit.co.jp/fdotnet/dotnettips/652getdefaultbrowser/getdefaultbrowser.html

でできましたが、その他ができません。
知恵を貸して頂けないでしょうか?

262 :デフォルトの名無しさん:2008/08/09(土) 21:57:36
つ【俺の知恵】

263 :デフォルトの名無しさん:2008/08/09(土) 21:57:54
うるちえ

264 :デフォルトの名無しさん:2008/08/09(土) 21:59:29
http://www.atmarkit.co.jp/fdotnet/dotnettips/211startmail/startmail.html
こっちの方法でやればいいじゃんていうか.NETじゃん

265 :デフォルトの名無しさん:2008/08/09(土) 21:59:46
>>261
ShellExecute

266 :デフォルトの名無しさん:2008/08/09(土) 22:04:39
>>261
#include<windows.h>
int main(){
ShellExecute(NULL, "open", "http://www.google.co.jp/search?hl=ja&q=%E3%81%AC%E3%82%8B%E3%81%BD+%E3%82%AC%E3%83%83&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=", NULL, "", SW_SHOWNORMAL);
return 0;
}

267 :デフォルトの名無しさん:2008/08/09(土) 22:06:16
>>264
参考ページが.NETでしたね。
私の言語はPASCALです。

>>265
function ShellExecute(hWnd: HWND; // 親ウィンドウのハンドル
Operation : PChar // 操作
FileName : PChar // 操作対象のファイル
Parameters: PChar // 操作のパラメータ
Directory : PChar; // 作業ディレクトリ
ShowCmd : Integer)// 表示状態
: HINST;

ここでは操作がopen、ファイルがレジストリから取得したブラウザファイル、どこにそのアドレスを入れるのでしょう?


268 :デフォルトの名無しさん:2008/08/09(土) 22:06:32
>>266
クエリストリングのbtnGとか要らないんじゃね?

269 :デフォルトの名無しさん:2008/08/09(土) 22:07:13
>>266
っと私が打ち込んでいる間に・・・具体的なコードありがとうございます。
さっそく解決してしまいました。

ありがとうございました。


270 :デフォルトの名無しさん:2008/08/10(日) 09:23:59
.NET に PictureBox というコントロールがあるのですが
これを VC++ で表現するならば
コントロール上にビットマップイメージを貼ってるだけに相当するんでしょうか?
よろしくお願いします

271 :デフォルトの名無しさん:2008/08/10(日) 10:03:23
>>270
Win32だとStatic Controlに相当するな。
IDEのダイアログエディタだと「Picture Control」と表記されているが、
これはダイアログリソース上の表現で、結局はStatic Controlが生成される。

272 :デフォルトの名無しさん:2008/08/10(日) 11:24:30
>>271
ありがとうございます
Static Control にスタイルが SS_BITMAP って感じですね

273 :デフォルトの名無しさん:2008/08/10(日) 21:19:38
SendMessageTimeoutの引数であるpdwResultと
SendMessageTimeout関数自体の戻り値に違いは出るのでしょうか?

お願いします。

274 :デフォルトの名無しさん:2008/08/10(日) 21:21:46
違いは出ます。意味が違いますから。

275 :273:2008/08/10(日) 21:24:47
>>274
具体的にどういった違いなのでしょうか?
MSDNなどの資料には同じようなことしか書かれてなくて・・・

参考URLの掲示でもかまわないのでお願いします

276 :デフォルトの名無しさん:2008/08/10(日) 21:29:03
>>275
lpdwResultはSendMessageの戻り値相当じゃないか。

MSDNより

lpdwResult
1 個の DWORD 型変数へのポインタを指定します。関数から制御が返ると、この変数に、メッセージの処理結果が格納されます。意味は、送信したメッセージにより異なります。

戻り値
関数が成功すると、0 以外の値が返ります。
関数が失敗した場合や、タイムアウトが発生した場合は、0 が返ります。

277 :デフォルトの名無しさん:2008/08/10(日) 21:29:13
>>275
SendMessageTimeout の hwnd に無効なハンドルを入れた場合など

278 :273:2008/08/10(日) 21:31:23
>>.276-277
なるほど納得がいきました
ありがとうございます

279 :デフォルトの名無しさん:2008/08/10(日) 21:32:13
>>275
pdwResultは送ったメッセージに対する戻り値。
メッセージを送った先のプロシージャが返した値。

SendMessageTimeoutの戻り値は、SendMessageTimeoutそのものの結果。

280 :デフォルトの名無しさん:2008/08/11(月) 11:06:58
RegisterClassExで作ったウィンドウクラスが有効かどうかを判定するAPIを教えてください

281 :デフォルトの名無しさん:2008/08/11(月) 11:19:08
つ RegisterClass(Ex) の戻り値
つ GetClassInfo(Ex) で取得

282 :デフォルトの名無しさん:2008/08/11(月) 13:52:41
   直接画面DCには描画せずにバックグランドのDCを介して描画する.
   1行または複数行,描画する場合はバックグランドDCに必要な文字を描画してから
   画面を無効にしてWM_PAINTでBitBltを使い描画させる.
のバックグラウンドDCとは何を指してるのでしょうか?
直接画面DCに描画するのと、バックグラウンドDCを介して描画するのとでは
どのような違いがあるのでしょうか?


283 :デフォルトの名無しさん:2008/08/11(月) 13:57:47
それを書いた奴に聞けよ

284 :デフォルトの名無しさん:2008/08/11(月) 14:08:40
メモリDC

285 :デフォルトの名無しさん:2008/08/11(月) 14:34:55
>>283
掲示板の過去ログに載っていたので聞きようがありません。
>>284
今から調べてきます


286 :デフォルトの名無しさん:2008/08/11(月) 15:54:00
ダブルバッファ とかそういう話か?
ちらつき防止でやってるだけ

直接DCに描画だと 消しているトコロ も目に見えちゃうからチラツク

287 :デフォルトの名無しさん:2008/08/11(月) 19:45:18
GdiSetBatchLimitを上げればいいんでねーの?

288 :デフォルトの名無しさん:2008/08/11(月) 21:36:18
>287

全然違うんじゃね?

GDI関数呼び出しをまとめて性能を上げるのと、一連の描きかけの絵を
バックバッファに描画しておいて描き終わったら前面をInvalidateRect
して(=WM_PAINT発生)からバックバッファから一気に転送(BitBlt)
するのでは見え方が違う。

>286 の言ってることが正解。さらに描画を1シーケンスで完了できない場合、
描画中の絵が見えないと言うメリットもある。

性能向上の方式ではないので性能あげたいならInvalidateRectの
範囲を描画更新したい場所に限定する必要があるし、そういうの
やりたいならGDIでなくDirectXで物理サーフィス×2面のFlipで
やるのが普通。


289 :デフォルトの名無しさん:2008/08/11(月) 22:15:07
てか消してるところが見えるって何世代前のPCだよw

290 :デフォルトの名無しさん:2008/08/11(月) 22:17:56
最新のPC

291 :デフォルトの名無しさん:2008/08/11(月) 22:32:57
>289

最新のPCであっても、GDI関数で描画する時間は人間の一生のような
長い時間ってことが分からない素人かw

消しているトコロがリアルに人間に分からないように処理するには
液晶とグラボの垂直同期周期が60Hzとして、16.6666...msec 以内に
一連の描画処理を完了する必要があるけど?

もちろん一度もVSYNC跨がずに、だ。



292 :デフォルトの名無しさん:2008/08/11(月) 23:24:41
一連の描画処理が16ms以上かかるってどんだけ重い描画なんだよ

293 :デフォルトの名無しさん:2008/08/11(月) 23:30:17
でも、次の画面更新タイミングまでが偶々1msだったら・・・?

294 :デフォルトの名無しさん:2008/08/11(月) 23:40:15
そんなの気にしなくていいよ、今時GDIなんてせいぜいコントロールの描画ぐらいしか使わないんだから

Windows標準のコントロールだって物によってはダブルバッファリングされてなくてちらつくけど誰もそんなの気にしてないし

295 :デフォルトの名無しさん:2008/08/11(月) 23:42:13
>292

かかるでしょ。

・そのプロセスのプライオリティより高いスレッドやカーネルでの
 より優先度の高い処理が行われる場合。
・そのプロセスのプライオリティより低いスレッドが一定周期で
 ダイナミックブーストされる場合。
・そのプロセス自身が描画処理中に、HDD等の単一リソースにアクセスした場合。
・例えば1280x1024x32bit(フルカラー)の描画面(=5MBytes)をグラボに転送するのに、
 DMA転送が使えなかった場合。
・使えたとしても、メモリと他のデバイス間で先にDMA転送の帯域を食いつぶされていた場合。

いくらでもある。292がMS-DOSでシングルタスクのプログラマか、カーネルの設計者と
いうなら謝るよ。ここWin32API質問箱なので勘違いしてた。

293は「もちろん一度もVSYNC跨がずに、だ。」を読み取ってくれたね。



296 :デフォルトの名無しさん:2008/08/11(月) 23:44:45
もういいよ

> 例えば1280x1024x32bit(フルカラー)の描画面(=5MBytes)をグラボに転送するのに
今時こんな描画にGDIなんて使わない

アンタだって暗にそう言ってるじゃん

> GDIでなくDirectXで物理サーフィス×2面のFlipでやるのが普通。

297 :デフォルトの名無しさん:2008/08/11(月) 23:53:08
>>295
こういうKYがいるとテスト工程が無駄に増えるよなw

298 :デフォルトの名無しさん:2008/08/12(火) 00:00:55
>>297

そうやってシステム見られない自称SEもいるね。
手戻り工数増えるんだよなw

後になって性能が出ない時に言い訳しないようにね。


299 :デフォルトの名無しさん:2008/08/12(火) 00:09:35
文章から加齢臭がものすごいんですが・・・

300 :デフォルトの名無しさん:2008/08/12(火) 00:11:58
WPF使えばちらつきなんか無縁

301 :デフォルトの名無しさん:2008/08/12(火) 00:21:40
とっととCからWPF使えるようにしろと

302 :デフォルトの名無しさん:2008/08/12(火) 00:25:25
つ MC++

303 :デフォルトの名無しさん:2008/08/12(火) 00:25:46
ListViewのレポート形式で、表示領域が足りなくて
省略されて表示されているとき(例えば、あいう...)に、
その文字の上にカーソルを持っていくとツールチップが
表示されますが、これを無効に設定することはできない
のでしょうか?

304 :デフォルトの名無しさん:2008/08/12(火) 00:36:49
>>303
出来る。

305 :デフォルトの名無しさん:2008/08/12(火) 00:46:45
LVS_EX_INFOTIP,LVS_EX_LABELTIPあたりじゃない?

306 :デフォルトの名無しさん:2008/08/12(火) 01:26:44
>>305
だと思うのですが、参考になるプログラムが
見つからなくて...

307 :デフォルトの名無しさん:2008/08/12(火) 01:27:28
フラグの説明読んで書いてみりゃいいだろ
なんで自分から動こうとしないんだよ

308 :デフォルトの名無しさん:2008/08/12(火) 01:28:02
>>306
普通にググれば見つかるのだが

309 :デフォルトの名無しさん:2008/08/12(火) 10:19:12
LVS_EX_LABELTIP
Version 5.80.
If a partially hidden label in any list view mode lacks ToolTip text, the list-view control will unfold the label.
If this style is not set, the list-view control will unfold partly hidden labels only for the large icon mode.

別に複雑な操作がいる訳でもなし
このくらい試してみようぜ

310 :デフォルトの名無しさん:2008/08/12(火) 10:57:03
CS_OWNDCにしたときに増えるメモリってどれくらい?
猫でもをみたらちょっとだけメモリを消費するって書いてあったけど
タスクマネージャを見たけどあんまり変わってないっぽいけど

311 :デフォルトの名無しさん:2008/08/12(火) 11:38:05
見たまんまだ
確認したならそれを受け入れろ

312 :デフォルトの名無しさん:2008/08/12(火) 13:35:46
640KBで動く時代からあるAPIdsと説明がそういう風になることもあるw

313 :デフォルトの名無しさん:2008/08/12(火) 13:40:12
TextOut関数で背景を部分的に変える関数等ありますでしょうか?

314 :デフォルトの名無しさん:2008/08/12(火) 15:00:59
たかだが背景色だけ変えるなら
SetBkMode で OPAQUE 指定
{ SetBkColor して TextOut } を変えたい単位で分割呼び出し

複雑な背景をどうこうしたいなら
SetBkMode で TRANSPARENT 指定
先に背景を描画しきって
TextOut

315 :デフォルトの名無しさん:2008/08/12(火) 15:58:29
ShowWindowをAdvancedWindowsのやつでAPIフックしたらアドレス違反になるんだけどなんで??
全プロセスにDLLにして注入ではなく、自プロセスのフックのみでやってる。適当なexeにDLLにして注入してもやっぱり違反。
他のAPIはフックできてる。環境はBCBなんだけど。


316 :デフォルトの名無しさん:2008/08/12(火) 19:08:36
WriteProcessMemoryでやれ。権限もクリアしていて、それでできなきゃアドレス間違っている。メモリ覗いて確認しろ。

317 :デフォルトの名無しさん:2008/08/12(火) 20:00:27
>>316
俺VirtualProtectでやってるんだけど
WriteProcessMemoryのほうがいいわけ?

318 :317:2008/08/12(火) 20:01:46
>>315
その事象で俺が経験した事といえばスタックオーバーフロー

319 :デフォルトの名無しさん:2008/08/12(火) 20:38:48
どうせエラー値確認していないんだろ

320 :デフォルトの名無しさん:2008/08/12(火) 21:30:16
アドレス違反で落ちてたらエラー値も何も無いだろ

321 :デフォルトの名無しさん:2008/08/12(火) 21:58:43
だから何でVirtualProtectのエラーチェックしないの?ゆとり?

322 :デフォルトの名無しさん:2008/08/12(火) 22:01:10
書き込みでAVになるか、書き換えた関数が呼ばれた時例外発生するか質問者ははっきりさせないといかんな。

323 :317:2008/08/12(火) 22:09:50
>>321
俺別にエラーチェックしてないとは一言も言ってないんだがwwwww

>>320の言ってる通りアドレス違反で落ちてるんだから・・・・・


多分だけどやっぱ>>315はスタックオーバーフローしてるんじゃない?
GetProcAddressもあわせてAPIフックしてるならその辺を睨んだ方がよさげ
つーかコード掲示するかAdvancedWindowsのページがわからないと
これ以上なんともいえない

324 :デフォルトの名無しさん:2008/08/12(火) 22:27:47
呼び出し規約かw

325 :デフォルトの名無しさん:2008/08/13(水) 10:19:47
Ollyか何かで追跡してみれば

326 :デフォルトの名無しさん:2008/08/13(水) 11:24:58
エディットコントロールの文字列選択の処理ってどうなっているのですか?
どうやって選択範囲を計算してるのですか?

327 :デフォルトの名無しさん:2008/08/13(水) 11:37:19
GetTextExtentPoint

328 :315:2008/08/13(水) 12:55:18
コードも例外発生の場所も書いてなくてスマン。
なのに原因を見抜けるってのはもうすげぇな、感謝!例外は置き換えた関数が呼ばれたときにおきてた。
きちんとstdcallだってのを置き換え関数で宣言したら、うまく動くようになった。
BCBとかdelphiは標準だとcdeclとかfastcallとかだったっけ。
とにかくみんなサンクス!!


329 :デフォルトの名無しさん:2008/08/13(水) 15:10:46
>>327
キャレット位置をどうやって計算しているかわかりますか?

330 :デフォルトの名無しさん:2008/08/13(水) 15:26:17
一文字ずつ幅を足していく

331 :デフォルトの名無しさん:2008/08/13(水) 15:34:53
WM_LBUTTONDOWN
クリック位置x.y座標取得
GetTextExtentPoint32関数で得られた文字列のサイズと比較していく、って事ですか?

332 :デフォルトの名無しさん:2008/08/13(水) 19:09:19
GetTextExtentExPointを流用してもいいけど

333 :デフォルトの名無しさん:2008/08/13(水) 20:11:50
あるアプリのタブコントロールを別のプロセスから変化させたいのですが
別プロセスからTCM_SETCURSELをSendMessageすると、タブの位置は
変化するものの、TCN_SELCHANGEなどの通知メッセージがアプリ側で
発生しないので、肝心の内容が置き換わりません。
仕方なく、別プロセスから続けてWM_NOTIFYを発生させる事を考えたのですが、
別プロセスからでは構造体(NMHDR)を渡すようなメッセージは
伝わらない様です。
別プロセスからうまくタブが変化した事を通知する方法はないでしょうか。

該当コード
SendMessage(htab, TCM_SETCURSEL, 3, 0);
{ NMHDR nmhdr;
nmhdr.hwndFrom = htab;
nmhdr.idFrom = GetDlgCtrlID(htab);
nmhdr.code = TCN_SELCHANGE;
SendMessage(hmain, WM_NOTIFY, GetDlgCtrlID(htab), (LPARAM)&nmhdr);
}


334 :デフォルトの名無しさん:2008/08/13(水) 20:29:33
VirtualAllocEx
WriteProcessMemory

335 :デフォルトの名無しさん:2008/08/13(水) 20:41:43
sendinputを使おうと思って検索したらこんな2種類の書き方が出てきました。

lpKey->type = INPUT_KEYBOARD;

inputKey[cnt].type = INPUT_KEYBOARD;

この -> と [ ].type はどう違うんですか?

336 :デフォルトの名無しさん:2008/08/13(水) 20:53:59
>>335
C言語スレ池

337 :デフォルトの名無しさん:2008/08/13(水) 21:30:56
ステータスバーの文字の色を変えるにはどうすればよいですか?

338 :デフォルトの名無しさん:2008/08/13(水) 21:38:25
MSDN読め

339 :デフォルトの名無しさん:2008/08/13(水) 21:56:25
>>336
分かりました。

340 :デフォルトの名無しさん:2008/08/13(水) 22:14:10
>>334
ありがとうございます。
できました。
かなり泥臭いですね・・

341 :デフォルトの名無しさん:2008/08/14(木) 07:25:29
BitBltする大きさが少し違っただけで、いきなり速度が変わるんですが、なんか理由があるんですか。
あとディスプレイを2つつないでる環境でも、速度が結構落ちるんですが。

342 :デフォルトの名無しさん:2008/08/14(木) 07:31:47
そりゃそうでしょうね

343 :デフォルトの名無しさん:2008/08/14(木) 07:54:37
ヒントでもいいから教えて

344 :デフォルトの名無しさん:2008/08/14(木) 08:11:23
おっ
典型的ゆとり発言

345 :デフォルトの名無しさん:2008/08/14(木) 09:15:43
知らないならレスしないでください

346 :デフォルトの名無しさん:2008/08/14(木) 09:52:15
自己解決しました
ありがとうございました

347 :デフォルトの名無しさん:2008/08/14(木) 11:19:44
間違ってました
やっぱり教えてください

348 :デフォルトの名無しさん:2008/08/14(木) 14:55:53
教えてもいいが
気に入らない態度がお前の

349 :デフォルトの名無しさん:2008/08/14(木) 15:50:41
知らないならレスしないでください

350 :デフォルトの名無しさん:2008/08/14(木) 17:42:44
自己解決しました
ありがとうございました

351 :デフォルトの名無しさん:2008/08/14(木) 18:46:37
標準入力にデータが存在するかを調べるにはどうすれば良いでしょうか。

_kbhitやPeekConsoleInputを試してみたのですが、リダイレクトされた場合に機能しないようです。
CreateFileでOVERLAPPEDが使えるかとも思ったのですが、Consoleでは無視されると説明されていて
実際試してもうまくいきませんでした。

352 :デフォルトの名無しさん:2008/08/14(木) 19:22:58
そういうときには実際に読んでみればいいんだよ。

353 :デフォルトの名無しさん:2008/08/14(木) 19:41:47
DialogBoxやCreateDialogから行くcallback関数に変数等を渡す場合
はグローバルで宣言しておくしかないですか?

354 :デフォルトの名無しさん:2008/08/14(木) 19:48:42
>>353
DialogBoxParam・CreateDialogParamの初期値で適当な構造体のポインタでも渡しとけ

355 :デフォルトの名無しさん:2008/08/14(木) 20:00:22
>>352
申し訳ありません、情報が足りませんでした。
入力がない間は他のことをしたいのです。

356 :デフォルトの名無しさん:2008/08/14(木) 20:04:00
スレッド分けれ

357 :デフォルトの名無しさん:2008/08/14(木) 20:05:00
>>354
出来ました。ありがとうございます

358 :デフォルトの名無しさん:2008/08/14(木) 20:20:26
>>356
元が*nixなコンソールプログラムの処理中に、
出来るだけ手を加えずにほんのちょっと通信したかっただけなんで
スレッド分けとかソケットは遠慮していたのですが、やはりそこまでやらないと駄目ですかね。

シグナルとかあればそれでもいいのですが。

359 :デフォルトの名無しさん:2008/08/14(木) 20:40:50
Win32APIをC++でラッパしたフリーのライブラリ
でお勧めのものがありましたら教えて下さい.


360 :デフォルトの名無しさん:2008/08/14(木) 20:44:41
Boost

361 :デフォルトの名無しさん:2008/08/14(木) 20:53:10
http://msdn.microsoft.com/ja-jp/magazine/cc534994.aspx
これとか?

362 :デフォルトの名無しさん:2008/08/14(木) 21:08:18
WTLを勧める

363 :359:2008/08/14(木) 21:57:02
ありがとうございます。
自作ライブラリの参考にしたいので、
単純で解析しやすいのは無いでしょうか?

eGUI++は、相当頑張ればなんとか読めそうでしたが、
WTLの方は[!endif]とか変な記号があってわかりませんでした。


364 :デフォルトの名無しさん:2008/08/14(木) 22:00:52
へ?俺が見た限り、WTLに[!endif]なんて存在しないけど・・・

365 :デフォルトの名無しさん:2008/08/14(木) 22:39:08
>>359
STLSoft

366 :デフォルトの名無しさん:2008/08/14(木) 23:43:56
>>363
[!endif]はVSのプロジェクトテンプレートだろうがw

367 :359:2008/08/15(金) 08:00:34
Win32APIとなんらかのC/C++コンパイラ・リンカ
があれば使えるようにできるといいなと思います。

つまり、リソースは使わずに、
マクロも極力避けるという感じで。

STLSoftも良さそうですね。


368 :デフォルトの名無しさん:2008/08/15(金) 11:32:16
Perl.

system ('notepad.exe','abcde.txt');

↑これでメモ帳が開けるんだけど、
win32APIの観点から、なにか
アドバイスはありませんか?

369 :デフォルトの名無しさん:2008/08/15(金) 11:42:45
ありません

370 :デフォルトの名無しさん:2008/08/15(金) 12:23:23
何を求めてるのか具体的に書かんと分からんよ
アドバイスって何よ

同じ事をしたいだけならShellExecute

371 :デフォルトの名無しさん:2008/08/15(金) 13:47:36
Perlは便利というアドバイス

372 :351:2008/08/15(金) 22:39:32
自己解決しましたので報告します。

GetStdHandleなどで得たハンドルを直接WaitForSingleObjectに入れることが出来ます。
ただしそのままではKeyDownだけではなくKeyUpでもシグナル状態になってしまうため、
WaitForSingleObject+ReadFileまたはWaitForSingleObject+ReadConsoleの組み合わせだけではブロックします。

FlushFileBufferやCancelIOではキーボードイベントをフラッシュする事が出来ず、
他にフラッシュできそうなAPIを見つけることが出来ませんでしたので今回は採用を諦めます。

どうしても直接入力/リダイレクト両対応でノンブロッキングな標準入力を行いたい方は
シグナル状態になった際にPeekConsoleInputで無関係なシグナルを検出し、
その時だけReadConsoleInputでイベントを取り除いてください。
>>356さんの言うようにスレッド化するのも手だと思いますが、ブロックするのでスレッドを終了できなくなるはずです。

373 :デフォルトの名無しさん:2008/08/15(金) 22:48:15
別にスレッド終了せんでもええやん?

374 :デフォルトの名無しさん:2008/08/16(土) 01:25:25
CreateThreadまたは__beginthreadexを使用する時に
指定するスタックサイズは皆さん「0」指定で使ってますか?

通常は「0」で問題は無いのでしょうが
もし仮に明示的なスタックサイズを指定している方がいれば
その利点などについて詳しく教えてもらえるとうれしいです。


375 :デフォルトの名無しさん:2008/08/16(土) 01:46:41
0って言ってもデフォルトサイズを使うって指定しているんだから、サイズによって何が変化するか自分で考えろよゆとり馬鹿

376 :デフォルトの名無しさん:2008/08/16(土) 01:49:05
・デフォルトのスタックサイズでは足りない場合に増やす
 スタックがあふれるようなアルゴリズムが悪いんだが、やむを得ない場合があるかもしれない

・スタックを減らしてアドレス空間を節約する
 スレッドを大量に作るとき、スレッド1個ごとに何MBも取ってると、アドレス空間の枯渇が早い

という利点は思いつくが、今のところ俺は0以外を指定したことはない

377 :デフォルトの名無しさん:2008/08/16(土) 04:24:02
STACK_SIZE_PARAM_IS_A_RESERVATION が指定できない2000以前じゃデフォルトより下げても意味なかったし0以外ねーな

378 :デフォルトの名無しさん:2008/08/16(土) 04:51:04
64bitコードならともかく、32bitコードじゃスタックサイズを増やすのはまずねーだろ。
アドレス空間足りねーよ。

379 :デフォルトの名無しさん:2008/08/16(土) 12:18:14
デフォルトで1MBくらいなんだから、スタックサイズちょっと増やしたくらいでアドレス空間足らなくはならんだろ。

380 :374:2008/08/16(土) 12:24:45
>>375-379
回答ありがとうございます。


>>376の言うとおりスタックを減らしてアドレス空間の
節約をした方がいいのか迷っていたので、
ほかの人の意見を聞いてみようと思って質問しました。


スレッドのスタックサイズに関しては特に意識する必要は無いという事ですね。

381 :デフォルトの名無しさん:2008/08/16(土) 12:50:42
質問です。。。

現在keybd_eventを使用して実際のキー操作をシミュレートしようとしているのですが,

keybd_event( 'A', 0, 0, 0 );

のようなコードでは,実際にAをずっと押しているときのように,動作しません。
(例えば,テキストエディタをアクティブにしていたらAがいくつも入力される。


どうしたら,実際のキーボードを押しているように動作させることが出来るのでしょうか?

382 :デフォルトの名無しさん:2008/08/16(土) 12:54:08
スタック領域って減らせるのか?
最初は4KBぐらいしか確保されてなくて必要に応じて動的拡張されるとかじゃなかったっけ?

383 :デフォルトの名無しさん:2008/08/16(土) 14:27:15
GetOpenFileNameのダイアログ使ってるとMAX_PATH超えられないけれど
対策もしくは代替手段て有りますか?

384 :デフォルトの名無しさん:2008/08/16(土) 15:13:42
ダイアログを自作する

385 :デフォルトの名無しさん:2008/08/16(土) 17:02:35
perlで
ShellExecuteで、
notepad.exeを開きたい場合は
どう書けばいいの?

386 :デフォルトの名無しさん:2008/08/16(土) 17:14:04
`notepad.exe`


387 :デフォルトの名無しさん:2008/08/16(土) 17:18:04
>>386
試してみたら、確かにメモ帳が開きましたが、
それってShellExecuteで開いてるの?

388 :デフォルトの名無しさん:2008/08/16(土) 21:23:53
>>383
フックプロシージャの中からだとそういう制限は無かった気がする。
違ったらごめん。

>>387
ShellExecuteの中の人は、拡張子exeの関連付けに従ってプロセスを起動する。
何も特別なことはない。

389 :デフォルトの名無しさん:2008/08/16(土) 21:52:03
>>387
どういうAPIを使ってるのかは、それが仕様化されてるのでなければ
処理系の実装依存だろうな。

直接ShellExecuteを呼びたいのなら
ActivePerl Win32 API ShellExecute
とかでググれ。
それでわからなければPerlの人に訊け。

390 :デフォルトの名無しさん:2008/08/16(土) 22:55:06
今の状況だと、
真っ黒なDOSプロンプトが開いて、
そのDOS窓が残ったままで、
メモ帳も開く、という動作なのですが、
DOS窓が開かないで、
あるいは一瞬だけ開いて、
それでメモ帳が開く、というのを
するのに、shellexcuteを使えば
いいんでない?と思ったのですが、
違いますか?

391 :デフォルトの名無しさん:2008/08/17(日) 00:09:09
コマンドプロンプト経由で起動する事情なんざ、Win32的には知ったこっちゃないな。
Perlが勝手にやってることなんだから、あっちで聞け。

392 :デフォルトの名無しさん:2008/08/17(日) 06:24:19
やだね
お前が勝手に聞いてろ

393 :デフォルトの名無しさん:2008/08/17(日) 09:20:57
perlをWindowアプリとしてリコンパイルすれば解決する

394 :デフォルトの名無しさん:2008/08/17(日) 10:40:24
perlネタはもういいよ。

395 :デフォルトの名無しさん:2008/08/17(日) 13:01:22
perlがコンソールアプリだからだろ
active perl scriptを使えばいい

396 :383:2008/08/17(日) 13:34:18
>>388
フックプロシャージャ作って中でCDM_GETFILEPATH使っても
MAX_PATH以下になるようになってるみたいです。

CDM_GETFOLDERPATHやCDM_GETFOLDERIDLISTだと
フォルダまでがMAX_PATHであれば選択ファイル名を追加で
その分超えることは出来るみたいですがOKボタン押させて貰えない。

さらに深いフォルダにはアクセスさせてもらえないし
他の大半のアプリも触れない領域じゃ独自ダイアログにするほどのことでもない気がするので諦めます。
あとD&Dもメッセージが飛んでこないので駄目みたいです。

397 :デフォルトの名無しさん:2008/08/17(日) 14:36:47
なんか知らんがUnicodeに汁

398 :デフォルトの名無しさん:2008/08/17(日) 16:18:46
>>381

399 :デフォルトの名無しさん:2008/08/17(日) 17:07:58
>>381
チート厨は氏ね

400 :381:2008/08/17(日) 17:31:50
>>399
Wiiリモコンをパッドにしたいだけなのに。。。

401 :デフォルトの名無しさん:2008/08/17(日) 17:33:55
>>400
それでもBAN対象のゲームは多いはず

402 :デフォルトの名無しさん:2008/08/17(日) 18:05:19
>>400
ヒント
っKEYEVENTF_KEYUP

403 :383:2008/08/17(日) 18:08:46
>>397
長いファイル名は必然的にUnicode関数使うし
最近のプログラムなんでUnicodeビルドしてる。

404 :デフォルトの名無しさん:2008/08/17(日) 19:39:11
シェル関数(SHGetPathFromIDListなど)がMAX_PATHを超えれないから
シェルに依存しているコモンダイアログも必然的にMAX_PATHを超えられないのだろう

てかMAX_PATHを超えてしまうほど深い階層にファイル置くなよ

405 :デフォルトの名無しさん:2008/08/17(日) 19:57:28
ThickFrame(ウィンドウサイズを変更する枠)で、
「ユーザーがウィンドウサイズを変更している間は、WM_ERASEBKGNDメッセージを無効にする」
という処理を加えたいんですけれど、

処理の開始は、WM_NCLBUTTONDOWNメッセージを捕まえてそれで問題ありませんでした。

処理の終了(サイズ変更の終了)も、同様にWM_NCLBUTTONUPメッセージを捕まえれば良いのかと思ったんですが、
うまくいきませんでした。


この場合の、「ウィンドウサイズ変更が終了した」という情報を、
アプリケーションが取得するにはどうしたら良いでしょうか?

誰かご存知の人は教えてください。


406 :デフォルトの名無しさん:2008/08/17(日) 20:03:49
WM_SIZEとかWM_WINDOWPOSCHANGEDとか?

407 :デフォルトの名無しさん:2008/08/17(日) 22:22:33
>>402
KEYEVENTF_KEYUPを引数としてキーが上がったということも書いているのですが,
>>400のやりたいことのように出来ません。。。

408 :デフォルトの名無しさん:2008/08/18(月) 01:09:41
初歩的な事で申し訳ないのですが、
実行ファイルのアイコンが指定通りに変わらず困っています。
WINDCLASSEX構造体には以下のように記述しています。

wcex.hIcon=(HICON)LoadImage(hInst,"ファイル名",IMAGE_ICON,
              0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
です。
リソースを使わずicoファイルにパスを通す方法で実現したいのですが、
表示されません。
hIconもNULLではない様なので問題ないと思うのですが・・・。
因みに、タイトルバーに表示される方は上手く表示されています。
ですので、ファイル名の指定でパスがおかしいということはないと
思います。

409 :デフォルトの名無しさん:2008/08/18(月) 01:35:39
WNDCLASS(EX)というのは、ウィンドウの設定をするだけ
実行ファイルのアイコンとかは何も変わらない

410 :デフォルトの名無しさん:2008/08/18(月) 03:10:32
>>408
exe のリソースに埋め込まれたアイコンの中で
一番番号の若い物が exe のアイコンになります

411 :デフォルトの名無しさん:2008/08/18(月) 03:49:06
>>409
そうだったんですか・・・。
前は普通にリソースで入れてたんで、気づきませんでしたが
そこに指定したらアイコンになるもんだと思ってました・・・。
>>410
409の方のを読んで色々と調べていたんですが、
やっぱり、リソースを埋め込むものなんですね。
>一番番号の若い物が exe のアイコンになります
知りませんでした・・勉強になります。

おかげさまで一応解決しました。

412 :デフォルトの名無しさん:2008/08/18(月) 07:58:09
常駐型アプリを作ってます
タスクバーに表示されず
タスクトレイにアイコンを表示させるとこまできましたが、
タスクマネージャ−アプリケーションで見ると
タスクの欄にしっかり表示されてしまいます

他のアプリを見るとここには表示されていません
タスクマネージャ−アプリケーションに表示されないように
常駐アプリを作るにはどうすればいいですか


413 :デフォルトの名無しさん:2008/08/18(月) 09:32:48
ウィンドウが出てるんだろ

414 :デフォルトの名無しさん:2008/08/18(月) 17:26:55
ヴィザードで、自動で次のページに移行したいんですけれど、

PSHNOTIFY myLp={NULL,};
myLp.hdr.code = PSN_WIZNEXT;
SendMessage(hDlg,WM_NOTIFY,NULL,(LPARAM)&myLp);

↑のコードじゃ駄目なんですかねぇ??


case WM_NOTIFY:
 LPPSHNOTIFY lppshN = (LPPSHNOTIFY)lp;
 switch (lppshN->hdr.code){
 ...
 }

↑のコードで、「戻る」「次へ」等のメッセージは取得できるので、
同様のメッセージを送ってみたのですが・・・。


ウィザードで、自動で次のページに移行させる方法
(「次へ」ボタンを押した場合と同じ効果を出す方法)
をご存知の方、ご教授下さい。

415 :デフォルトの名無しさん:2008/08/18(月) 17:53:07
>>414
MSDN読め

416 :デフォルトの名無しさん:2008/08/18(月) 19:12:39
>>407
入力送信後にSleep(100);とかしたらどうかに?

417 :デフォルトの名無しさん:2008/08/18(月) 21:51:40
>>414
WM_COMMAND投げたら?

418 :デフォルトの名無しさん:2008/08/18(月) 22:37:30
>>416
いれてみましたがだめでした><

419 :デフォルトの名無しさん:2008/08/18(月) 23:03:29
PC再起動すると動く場合がある

420 :デフォルトの名無しさん:2008/08/18(月) 23:12:33
>>419

421 :デフォルトの名無しさん:2008/08/19(火) 13:21:09
>>419

422 :デフォルトの名無しさん:2008/08/19(火) 13:30:32
PCを起動すると動く場合がある

423 : ̄ ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄:2008/08/19(火) 13:33:11

    / ̄ ̄ ̄ ̄\
   (  人____)
   |./  ー◎-◎-)
   (6     (_ _) )    カタカタカタ
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄


424 : ̄ ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄:2008/08/19(火) 13:57:04
    / ̄ ̄ ̄ ̄\
   (  人____)
   |./  ー◎-◎-)
   (6     (_ _) )    カタカタカタ
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

425 :デフォルトの名無しさん:2008/08/19(火) 23:53:51
別exeで動いているTimerを停止させるAPIはないでしょうか?
またはタイマーIDかタイマー識別子を取得する方法があれば
KillTimerできるのでしょうけど・・・


426 :デフォルトの名無しさん:2008/08/19(火) 23:58:51
>>425
APIフック

427 :デフォルトの名無しさん:2008/08/20(水) 00:02:40
タイマIDはプロセスごとに独立してる

428 :デフォルトの名無しさん:2008/08/20(水) 00:03:23
char* str = "aあbい";

みたいに1バイト文字とマルチバイト文字が入り交じった文字列を、
1文字ずつのcharの固まりに分解したいんですが、
IsDBCSLeadByte でcharを1つずつ調べていくしかないでしょうか?

429 :デフォルトの名無しさん:2008/08/20(水) 00:17:09
>>425

別プロセスから、
タイマ停止させるためのメッセージ投げる。
それ受けたらタイマを止める。


430 :デフォルトの名無しさん:2008/08/20(水) 00:19:00
SJISならググって文字コード表見ながら自作
あるいはWideCharToMultiByteして1文字ずつMultiByteToWieeChar

431 :デフォルトの名無しさん:2008/08/20(水) 00:20:58
>>428
CharNextExA / CharPrevExA とか?

432 :デフォルトの名無しさん:2008/08/20(水) 00:35:28
>>430
>>431
どうもありがとうございます。
ググってみたところ、どっちも使えそうです。

>>430 はWideCharToMultiByteとMultiByteToWieeChar 逆ですよね。

433 :デフォルトの名無しさん:2008/08/20(水) 02:28:26
事務より簡単で誰でもできる仕事なのに時給は技術者!
ITテスターで稼ぐための情報を交換するスレです。

☆派遣先は大企業じゃないと駄目です。中小だとテスターもプログラムの仕様が
 わからないといけないとかテストプログラムを書けとか言われちゃいますよ。
 大企業ならプログラムを触るだけのテスターでも大丈夫。

☆派遣先ではテスターはプログラムを触るだけでいい、
 そんな空気を作っていきましょう。仕様書読んでください、
 とか言われたら「なんでテスターが仕様書読むんですか」って食い下がって。
 プログラムの仕様書を読んだり、テストの仕様書を書いたりするのは大変ですよ。

☆普通にプログラムを触ってテストしてると、何をテストしているのかわからない、
 とか言い出す人、いるんですよ。プログラマとかってこういう人多いです。
 そういう人は上司にあることないこと告げ口して追い出しちゃいましょ。
 人事権のある人とは仲良くしておくことが大切。
 
☆納品して何かあったら大変だからとプログラムの仕様書を読んだり、
 テスト仕様書を書いちゃうテスターがいますけど、
 こっちもやることになるからすごく迷惑。
 テスト結果の責任は担当の正社員にありますよね。
 納品後のクレームは最終チェックを怠った正社員が悪いんだから
 派遣は関係ないです。 

434 :デフォルトの名無しさん:2008/08/20(水) 02:32:01
cp932->utf16->cp932なんて処理をすると元の文字に戻らなくてはまるかも

435 :デフォルトの名無しさん:2008/08/20(水) 03:06:31
wave dash とか?他何があったっけ?

436 :デフォルトの名無しさん:2008/08/20(水) 03:24:13
いいかげんシフトJISを捨てようぜ。

437 :デフォルトの名無しさん:2008/08/20(水) 04:24:17
>>436がまずやるべきは2ちゃんねるを捨てるところからだな

438 :デフォルトの名無しさん:2008/08/20(水) 07:00:22
>435
すくなくても、WaveDashは戻る。ここがWin32API質問箱である以上は。

439 :デフォルトの名無しさん:2008/08/20(水) 07:17:19
↑話を理解してない馬鹿

440 :デフォルトの名無しさん:2008/08/20(水) 07:26:08
TextBoxでフォームが非アクティブになってもキーボードフォーカスを
常に持ち続けるにはどうすればいいでしょうか。

441 :デフォルトの名無しさん:2008/08/20(水) 07:46:26
>435
つ ttp://support.microsoft.com/kb/170559/ja

442 :デフォルトの名無しさん:2008/08/20(水) 10:09:22
とあるVC++のプログラムを引き継いだのですが
スレッドの作成にCreateThreadが使用されていました。
スレッドはひとつしか作成されないのですが
そういう場合ならCreateThreadでもよいでしょうか?
_beginthreadに修正したほうがよいでしょうか?

443 :デフォルトの名無しさん:2008/08/20(水) 10:14:14
内容による。
それだけで他人が判断できると思っているのなら、ヘルプの読み込みが全く足りない。

444 :デフォルトの名無しさん:2008/08/20(水) 10:18:13
ヘルプを読み込んでみたところ問題ないようです。
ありがとうございました。

445 :デフォルトの名無しさん:2008/08/20(水) 12:26:29
CRTを一切使っていないなら(実際には使っても問題の無いCRTもあるが)
CreateThreadでもいい。

446 :デフォルトの名無しさん:2008/08/20(水) 12:30:19
CRTバリバリ使ってます

447 :デフォルトの名無しさん:2008/08/20(水) 12:47:32
DLL版にリンクすれば問題ない

448 :デフォルトの名無しさん:2008/08/20(水) 13:08:50
お世話になります。
wininetのFindFirstUrlCacheEntryで、特定のキャッシュを探す場合、
第一引数のlpszUrlSearchPatternにどういったものを渡してやればいいのでしょうか。

ttp://msdn.microsoft.com/en-us/library/aa384026(VS.85).aspx (FindFirstUrlCacheEntry)

http://support.microsoft.com/kb/326201/ja
現状は、これを見ながらDeleteUrlCacheEntryの所を書き変えて検索していますが、
lpszUrl〜にURL文字列を直接渡してもnullを渡したときと動作が変わらず、毎回同じ順番で検索されてしまいます。
一応、言語はC#です。

449 :440:2008/08/20(水) 13:56:17
すみません。言語別スレに行きます。

450 :デフォルトの名無しさん:2008/08/20(水) 20:21:51
>>448
This parameter can only be set to "cookie:", "visited:", or NULL.

451 :デフォルトの名無しさん:2008/08/20(水) 22:12:17
>>450
日本語でおk

452 :448:2008/08/20(水) 22:59:26
>>450
ということは基本的に全数で探すしかないってことですか・・・。
それほど時間はかからないみたいなのでとりあえずこのままでいきます。
ありがとうございました。

453 :デフォルトの名無しさん:2008/08/21(木) 00:30:00
C++でウインドウをクラスで実装してみてるのですが、コンストラクタ内にウインドウ生成のコードを書いてしまうのはアリでしょうか?教えてください。

454 :デフォルトの名無しさん:2008/08/21(木) 01:41:28
サービスプログラムとしてタスクトレイに常駐するプログラムを
作成してるのですが、ユーザーがログインした段階で
Windowを作成しないと、コントロールなどの表示が崩れてしまうようです。
ユーザーがログインているかどうかを判定する方法があれば教えてください。
Windows XPです。

455 :デフォルトの名無しさん:2008/08/21(木) 07:10:57
>>454
もしかして一つのプログラムで全部やるつもりか?
HKLMのRunキーで起動したタスクトレイのプログラムがサービスと通信する、
というのが普通の作り方だと思うのだが。

456 :デフォルトの名無しさん:2008/08/21(木) 08:25:06
>>455
WebやAPI本とかの断片的な知識しかないので
できればその普通のやり方が載っている情報源を知りたいのですが。
MSのセミナーとかですか?

457 :デフォルトの名無しさん:2008/08/21(木) 09:27:11
今までWindowsを使ってきた経験からの普通

458 :デフォルトの名無しさん:2008/08/21(木) 09:32:29
>>453いいんじゃね?

459 :デフォルトの名無しさん:2008/08/21(木) 10:27:00
>>457
やっぱり知ったかでしたか。
関係ない話を始めた段階から読めてました。

460 :457:2008/08/21(木) 10:31:51
オレは通りすがりだよ。
ちなみに、サービスはNT4の頃から作ってる。

461 :デフォルトの名無しさん:2008/08/21(木) 10:48:25
はいはい。もういいよ。
ちなみに自己解決しました。

462 :デフォルトの名無しさん:2008/08/21(木) 10:51:34
サービスが直接ウィンドウ作るのが普通だとしたら、
わざわざ「デスクトップとの対話を許可する」がデフォルトでオフになっているわけがない。

463 :デフォルトの名無しさん:2008/08/21(木) 10:53:27
デフォルトって。プログラムからオンにできるわけだが。

464 :デフォルトの名無しさん:2008/08/21(木) 10:54:14
http://www.google.co.jp/search?hl=ja&q=%E8%B3%AA%E5%95%8F%E3%82%92%E8%B3%AA%E5%95%8F%E3%81%A7%E8%BF%94%E3%81%99&lr=


465 :デフォルトの名無しさん:2008/08/21(木) 10:57:22
サービスそのものは誰もログオンしていなくても動作するもんだから
ウィンドウそのものを自分で作るようにはできてない。
無理やり後付けで作るのは勝手だが、普通じゃない。

466 :デフォルトの名無しさん:2008/08/21(木) 10:58:44
そもそもレジストリいじるだとか別プロセスにするだとか、
完全に知ったかの妄想なんだよ。


467 :デフォルトの名無しさん:2008/08/21(木) 11:01:26
VNCとかはどうなってんの?

468 :デフォルトの名無しさん:2008/08/21(木) 11:15:35
なんか知ったかという言葉を使いまくってる真性がいるなw

469 :デフォルトの名無しさん:2008/08/21(木) 11:16:03
人格攻撃キター

470 :デフォルトの名無しさん:2008/08/21(木) 11:37:29
お前ら前置きに反応しすぎ

ユーザーがログインているかどうかを判定する方法があれば教えてください。


471 :デフォルトの名無しさん:2008/08/21(木) 11:47:32
ターミナルサーバーとかで、複数同時にログインしてるのも考慮?

472 :デフォルトの名無しさん:2008/08/21(木) 11:54:22
GetDesktopWindow()でデスクトップが取れたらでいいんじゃね?

473 :デフォルトの名無しさん:2008/08/21(木) 11:55:57
ユーザーセッションの数が1以上、とかでいいのかなあ。
試さないとなんとも言えんな。

474 :デフォルトの名無しさん:2008/08/21(木) 11:56:11
>>470
サービスでって前提なかったら、GetUserNameでイイジャンって言われちゃうぜ?w

試してないけど、NetUserEnumで列挙してNetUserGetInfo
USER_INFO_2の最後のログオン/ログオフの時間取得してとかかなぁ

475 :デフォルトの名無しさん:2008/08/22(金) 00:32:43
サービス語るならせめてAdvancedWindowsと
プログラミングMicrosoft Windows 2000位読め
なぜWindowを持つサービスを作るべきでないかは読めば分かるから

476 :デフォルトの名無しさん:2008/08/22(金) 08:05:36
知らないならレスしないでください

477 :デフォルトの名無しさん:2008/08/22(金) 11:48:40
知ってるよw

478 :デフォルトの名無しさん:2008/08/22(金) 11:51:32
じゃあレスしてください

479 :デフォルトの名無しさん:2008/08/22(金) 14:40:46
誰もサービスについての質問なんかしてないのに

480 :デフォルトの名無しさん:2008/08/22(金) 14:48:06
>>454

481 :デフォルトの名無しさん:2008/08/22(金) 15:29:09
>>480
> ユーザーがログインているかどうかを判定する方法があれば教えてください。
これが質問内容だろ
「サービスについての質問」ではない

日本語が読めない奴は黙ってろ

482 :デフォルトの名無しさん:2008/08/22(金) 15:31:30
サービス以外でユーザーがログインしているかどうかを知る必要はない。
だってログインしているから

483 :デフォルトの名無しさん:2008/08/22(金) 16:36:43
クレデンシャルプロバイダやGinaモジュールでも取得したい場合はあるかも?

484 :デフォルトの名無しさん:2008/08/22(金) 20:56:09
explorer.exeのプロセスが居たらログオン中でいいんじゃね?

485 :デフォルトの名無しさん:2008/08/22(金) 21:18:48
>>484
ばーか

486 :デフォルトの名無しさん:2008/08/22(金) 21:32:56
>>485
なにが?w

487 :デフォルトの名無しさん:2008/08/22(金) 21:43:41
>>484の回答が馬鹿丸出しということ

488 :デフォルトの名無しさん:2008/08/22(金) 22:05:08
あ〜あ、
>>485は反例を一つ示せば>>484を完全否定できたのにね

これじゃ>>485の方が馬鹿に見える

489 :デフォルトの名無しさん:2008/08/22(金) 22:06:37
顔真っ赤ですよ

490 :デフォルトの名無しさん:2008/08/22(金) 22:10:44
>>482
そのプログラムをタスクスケジューラに登録する場合はどうかな?

491 :デフォルトの名無しさん:2008/08/22(金) 22:26:00
>>490
タスクスケジューラは設定されたアカウントでログオンするよ。

492 :デフォルトの名無しさん:2008/08/22(金) 22:34:00
>>484
ユーザーのログインシェルがexplorer.exe以外の場合がある、
とか聞いたことある気がするけど、そんなケース無視しても良い気がするし。
>>484の方法でダメな場合って他に何かあったっけ。


493 :デフォルトの名無しさん:2008/08/22(金) 22:48:47
explorer.exeが異常終了したとき

494 :デフォルトの名無しさん:2008/08/22(金) 23:21:25
そもそもログインしているユーザの一覧なんて
権限さえあれば取得できないわけがないと思うんだけど。

495 :デフォルトの名無しさん:2008/08/22(金) 23:32:58
なんか知らんが、たぶんOSごとに違うと思う

496 :デフォルトの名無しさん:2008/08/22(金) 23:34:44
Windows TIPS 現在ログオン中のユーザー名を調べる
http://www.atmarkit.co.jp/fwin2k/win2ktips/646logonuser/logonuser.html

プログラムでやる場合、やはりexplorer.exeの有無ぐらいしかないのかね?


497 :デフォルトの名無しさん:2008/08/22(金) 23:51:24
GetCharABCWidths()で取得されるA寸法は、 GetGlyphOutlineで取得されるGLYPHMETRICSのgmGlyphOrigin.xとは違うものなんでしょうか?
説明を読むと同じに見えるけど、違う値が返ってきて混乱してます。

498 :デフォルトの名無しさん:2008/08/23(土) 00:03:54
>>497
アンダー・オーバーハングに対応した文字だと違ってくるんじゃないかな。

499 :デフォルトの名無しさん:2008/08/23(土) 00:46:12
>>493

異常終了したらwinlogon.exeがexplorer.exeを再起動するぞ。


500 :デフォルトの名無しさん:2008/08/23(土) 00:47:42
>>499
タスクマネージャで終了したら再起動しない

501 :デフォルトの名無しさん:2008/08/23(土) 01:02:59
たまにその対策をしてない常駐アプリはタスクトレイから消えちゃうんだよな

502 :デフォルトの名無しさん:2008/08/23(土) 01:19:26
俺が使ってる常駐アプリの中ではその対策をしてる方が少ないな

503 :デフォルトの名無しさん:2008/08/23(土) 01:45:23
>>454 はユーザがログオンしてるかどうか判定したいと言ってるけど、
実際は通知領域の表示ができるかどうかの問題なわけよ。
だから、シェルとしてのexplorer.exeで判定するのが正しい。
あと、起動処理が終わったかどうか調べる必要があるのかもしれない。
WaitForInputIdle?

504 :デフォルトの名無しさん:2008/08/23(土) 02:10:50
GetDesktopWindowだとどうなるんだろう。
ログオフ中はきちんとNULLが返るのかな?
適当な値が返ってきたらやだな。


505 :デフォルトの名無しさん:2008/08/23(土) 02:49:50
>>503
それならShell_NotifyIconが成功するまで適当な間隔で何度も呼び出せばいいだろ
そもそもXP以降はそうしろとMSのサイトにも載ってるし、ログオンとか関係ない話になる

506 :デフォルトの名無しさん:2008/08/23(土) 07:53:52
>>495
俺もなんか知らないけどWMIで取得できそうな気がする。

507 :デフォルトの名無しさん:2008/08/23(土) 22:09:42
>>500

それはWindowsが異常終了として扱わない。
explorer.exeが異常終了した場合はwinlogon.exe(MSGINA.DLL)がWlxStartApplicationで検出する。
そこでSHELLとしてのexplorer.exeが再度起動される。






508 :デフォルトの名無しさん:2008/08/23(土) 23:08:46
空行ウザイ

509 :デフォルトの名無しさん:2008/08/24(日) 01:15:50








510 :デフォルトの名無しさん:2008/08/24(日) 01:19:59







↑だからうぜーってば








511 :デフォルトの名無しさん:2008/08/25(月) 18:46:42
しばらく放置しないと、感染症になる雰囲気だけど、
ミソギを兼ねて、つまんない質問を。

Debug バージョンで HeapFree() で落ちるのは、スタックなどの管理領域を
壊したからですか。一時メモリで取った領域でないところに書き込んでも、
運よく、そういう領域でないなら落ちませんか。それとも必ず落ちますか。

512 :デフォルトの名無しさん:2008/08/25(月) 19:31:46
落ちますん

513 :デフォルトの名無しさん:2008/08/25(月) 19:35:47
HeapAlloc/HeapFreeの管理するメモリ領域は
普通はDebugランタイムのチェック対象ではないが
DebugランタイムがAPIフックするような開発環境ならその限りではない

514 :デフォルトの名無しさん:2008/08/25(月) 19:54:21
運がよければ落ちないかもね
しかし運に頼ってプログラミングするのはやめてもらいたい

515 :デフォルトの名無しさん:2008/08/25(月) 20:09:50
Windows2000からは、ヒープにチェック機構が追加されたので、
バッファオーバーラン等は、ページ単位より細かくチェックが入るようになり、
HeapFree呼び出し時に例外(ブレークポイント)を発生させるようになった。

516 :511:2008/08/25(月) 20:30:59
早速、有難うございました。
>>514
Xp & VC++6.0 では落ちてなかったのに、Vista & VC++2008EE でだめになったからネ。


517 :デフォルトの名無しさん:2008/08/25(月) 23:51:30
ネットワーク接続時にタスクトレイに出すことの出来る
ローカルエリア接続等で出ている送受信の総量などは
APIなどで所得出来るものですか?もし出来る場合どのようなAPIで可能
でしょうか?

518 :デフォルトの名無しさん:2008/08/26(火) 00:13:06
休止やスリープから戻ってくるとアプリは起動しているけどパスワード入力画面という状態になってしまいます。
パスワード入力画面の最中は処理を行いたくないのですが、ログイン(?)したかどうかを調べることはできないでしょうか?

519 :デフォルトの名無しさん:2008/08/26(火) 00:21:23
WTSナントカ

520 :デフォルトの名無しさん:2008/08/26(火) 00:26:07
WM_WTSSESSION_CHANGE

521 :518:2008/08/26(火) 00:35:22
ありがとうございます。これで解決できそうです。

522 :デフォルトの名無しさん:2008/08/26(火) 07:17:55
>>517
http://www.geekpage.jp/programming/iphlpapi/


523 :デフォルトの名無しさん:2008/08/26(火) 11:04:12
ユーザ名やパスワードなどの文字列を暗号化してINIファイルに書き込んだり、
それを取り出して複合したりといった処理を行いたいのですが、
なにかよいAPIやサンプルはありませんでしょうか。

524 :デフォルトの名無しさん:2008/08/26(火) 11:15:08
CryptoAPI

525 :デフォルトの名無しさん:2008/08/26(火) 11:17:04
サンプルは↓の右下の奴とか結構とっつき易い
ttp://www.trustss.co.jp/

526 :デフォルトの名無しさん:2008/08/26(火) 15:08:12
APIじゃないかも知れないんですが、
MCEリモコン制御に対応させるためのsdkやらドキュメントの
手がかりってどの辺にありますでしょうか?

うまい検索単語が思いつかずに、開発とは関係ないページしか
引っかかりません

527 :デフォルトの名無しさん:2008/08/26(火) 15:21:40
指定PCにpingして生存確認したいんですが、pingするAPIを教えてくださいよ

528 :デフォルトの名無しさん:2008/08/26(火) 15:23:00
ずばりpingするようなAPIはないからググってサンプル見つけるんだ。

529 :デフォルトの名無しさん:2008/08/26(火) 15:52:08
ああ、いやいや、どっかやりかた載ってるサイトを教えてくださいよ

530 :デフォルトの名無しさん:2008/08/26(火) 15:57:19
CreateProcess+ping.exe

531 :デフォルトの名無しさん:2008/08/26(火) 15:59:05
ああ、ping.exeとかそんなんじゃなくておねがいしますよ

532 :デフォルトの名無しさん:2008/08/26(火) 15:59:55
>>527
DWORD PingToComputer(LPCTSTR HostAddress);

533 :デフォルトの名無しさん:2008/08/26(火) 16:00:14
API関係ないがな
ICMP プロトコル あたりでググればサンプルあるだろう

534 :デフォルトの名無しさん:2008/08/26(火) 16:00:33
IcmpSendEcho

535 :デフォルトの名無しさん:2008/08/26(火) 16:04:27
IcmpSendEchoってまだ使えるのか・・・?

536 :デフォルトの名無しさん:2008/08/26(火) 16:09:25
PFSDK windows server 2003 の IP Helper には
IcmpSendEcho 居て XP も可能と書いてある

最新のは知らない

537 :デフォルトの名無しさん:2008/08/26(火) 16:11:05
なんだよお前らなんでそんなに優しいんだよ?
いつものお前ららしくないぜ?

>>532-536
とりあえずさんくす。
何かその辺を調べてみますわ

538 :デフォルトの名無しさん:2008/08/26(火) 16:24:21
winsock2

539 :デフォルトの名無しさん:2008/08/26(火) 16:25:23
http://www.geekpage.jp/programming/iphlpapi/send-icmp.php

540 :デフォルトの名無しさん:2008/08/26(火) 16:26:46
>>522>>539
宣伝ご苦労様です

541 :デフォルトの名無しさん:2008/08/26(火) 16:26:59
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/rawping.html

542 :デフォルトの名無しさん:2008/08/26(火) 17:50:12
>>526
ttp://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/MED001_WH06.ppt


543 :デフォルトの名無しさん:2008/08/26(火) 21:38:10
>>522
おおお!ありがとうございます!

544 :デフォルトの名無しさん:2008/08/26(火) 22:03:51
WM_CREATEの所に
{
 LPCTSTR lpszTxt = TEXT("猫でもわかるWindowsプログラミング");
 HDC hdc;
 hdc = GetDC(hWnd);
 TextOut(hdc, 10, 10, lpszTxt, lstrlen(lpszTxt));
 ReleaseDC(hWnd, hdc);
}
を張り付けても文字列が表示されないのはなぜでしょうか。

545 :デフォルトの名無しさん:2008/08/26(火) 22:27:42
すぐに消えてしまうからです

546 :デフォルトの名無しさん:2008/08/26(火) 22:39:23
WM_CREATEは作成中だったような

547 :デフォルトの名無しさん:2008/08/26(火) 22:39:27
描画はWM_PAINTで

548 :デフォルトの名無しさん:2008/08/27(水) 00:14:05
DLLインジェクションを使ってiexplore.exeに割り込んで
IAT書き換えでWSARecvとrecvをフックしてみたんだけど、
どうやらフック先の関数が呼ばれていないみたいなんだ。

MessageBox表示だけのプログラムに割り込んで
MessageBoxをフックするのは出来たんでインジェ
クション部分に問題はないと思うんだけど…。

なんかアドバイスもらえませんか?

参考にしたサイト
ttp://ruffnex.oc.to/kenji/text/api_hook/


549 :デフォルトの名無しさん:2008/08/27(水) 00:21:36
recvだのなんだのしてるのはMSHTMLとか下請けモジュールだろ?

550 :デフォルトの名無しさん:2008/08/27(水) 00:30:39
つまり実際にrecvなりなんなりしてるモジュールに対して
Hookかけないとダメってことですか。


551 :デフォルトの名無しさん:2008/08/27(水) 00:33:27
>>548
あまり関係無いけど、その人の書いたこれ
ttp://ruffnex.oc.to/kenji/text/listexport/
DllMainの中でLoadLibrary呼び出すコードを出力してたのを思いだした。

552 :デフォルトの名無しさん:2008/08/27(水) 00:36:18
GetProcAddressで直接呼んでるのかもしれない。
GetProcAddressもフックしてみては。

553 :デフォルトの名無しさん:2008/08/27(水) 00:44:36
ヒント: ブラウザの実装コードは何処にある?

554 :デフォルトの名無しさん:2008/08/27(水) 01:01:52
正解:地球

555 :デフォルトの名無しさん:2008/08/27(水) 01:27:46
ありがとうございます。

>>552
GetProcAddressもフックして試してみます。

>>553
実装コード自体はiexplore.exeはもっていないんですね。
もう少し調べてみようと思います。


556 :デフォルトの名無しさん:2008/08/27(水) 01:55:53
フックならジェイソン尾妻に聞くといいよ

557 :544:2008/08/27(水) 14:29:36
<<545,<<546,<<547
ありがとうございます。

ウィンドウを生成した後にこのコードを載せたら
そのタイミングでは表示できるのに……

すぐに消えるのはなぜでしょうか。
できればもう少し詳しくお願いします。

558 :デフォルトの名無しさん:2008/08/27(水) 14:57:54
>>557
WM_CREATE の時点ではまだウィンドウが非表示だから
何描いても無駄。

559 :デフォルトの名無しさん:2008/08/27(水) 15:00:14
WM_CREATEの先頭で無理やりShowWindowしたら出たw

560 :デフォルトの名無しさん:2008/08/27(水) 15:14:13
普通は WM_PAINT だろ

561 :デフォルトの名無しさん:2008/08/27(水) 15:55:23
>>559
そして他のウィンドウを重ねると文字が消えると

562 :デフォルトの名無しさん:2008/08/27(水) 16:07:24
>>561
それが、Vistaだとなかなか消えないんだよねえ。
リサイズして描画範囲より小さくしてやるとか、最小ボタン押して戻すとかしないと消せなかった・・・

563 :デフォルトの名無しさん:2008/08/27(水) 16:12:46
そりゃ、DWI動いてるからな。

564 :デフォルトの名無しさん:2008/08/27(水) 16:22:23
今すぐAeroGlassをオフにして試せ

565 :544:2008/08/27(水) 18:15:33
答えてくれた方々ありがとうございます。
このエラーで教えられながらいろいろ調べて
こんなに勉強になるとは思いませんでした。

もう一つ気になるエラーがあるのですが、
WM_PAINTの所で

hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 20, 20, (LPCTSTR)szStr, (int)strlen(szStr));
EndPaint(hWnd, &ps);
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 90, 90, (LPCTSTR)szStr, (int)strlen(szStr));
EndPaint(hWnd, &ps);

とやると初めのTextしか表示されません。これはなぜなのでしょう。

566 :デフォルトの名無しさん:2008/08/27(水) 18:17:48
>>565
なんでBeginPaint と EndPaint は1回でおk

567 :デフォルトの名無しさん:2008/08/27(水) 18:18:55
EndPaintで無効領域が全部リセットされてるから。
デバイスコンテキストは無効領域の部分しか更新しない。

568 :デフォルトの名無しさん:2008/08/27(水) 18:20:21
>>565
BeginPaintとEndPaintは最初と最後に置くだけ。
一回のペアで無効領域(書き換えの必要な範囲)がなくなるから
2回目呼んでも書き換え範囲外になって何もかかない。

569 :デフォルトの名無しさん:2008/08/27(水) 19:27:07
invalidateRectで無効にすれば良い訳ですね?

570 :デフォルトの名無しさん:2008/08/27(水) 19:36:52
>>563
DWIって何ですか?

571 :デフォルトの名無しさん:2008/08/27(水) 19:50:06
ggrks

572 :デフォルトの名無しさん:2008/08/27(水) 20:02:11
DWM、、、ね。ミスったわ。

573 :デフォルトの名無しさん:2008/08/27(水) 20:51:18
>>569
そして、またWM_PAINTが飛んできて無限ループするのですね。わかります。

574 :デフォルトの名無しさん:2008/08/28(木) 01:30:33
こういう通過儀礼って必要だと思います。
自分で考える力を養うためにしばらくそっとしてあげて!

575 :デフォルトの名無しさん:2008/08/28(木) 01:56:18
一方ロシアは

576 :デフォルトの名無しさん:2008/08/28(木) 03:00:52
WPFを使った

577 :デフォルトの名無しさん:2008/08/28(木) 21:13:25
つまり

578 :デフォルトの名無しさん:2008/08/28(木) 23:16:23
  \         /_ /     ヽ /   } レ,'        / ̄ ̄ ̄ ̄\
  |`l`ヽ    /ヽ/ <´`ヽ u  ∨ u  i レ'          /
  └l> ̄    !i´-)     |\ `、 ヽ), />/        /  地  ほ  こ
   !´ヽ、   ヽ ( _ U   !、 ヽ。ヽ/,レ,。7´/-┬―┬―┬./  獄  ん  れ
  _|_/;:;:;7ヽ-ヽ、 '')  ""'''`` ‐'"='-'" /    !   !   /   だ.  と  か
   |  |;:;:;:{  U u ̄|| u u  ,..、_ -> /`i   !   !  \   :.  う  ら
   |  |;:;:;:;i\    iヽ、   i {++-`7, /|  i   !   !  <_      の  が
  __i ヽ;:;:;ヽ `、  i   ヽ、  ̄ ̄/ =、_i_  !   !   /
   ヽ ヽ;:;:;:\ `ヽ、i   /,ゝ_/|  i   ̄ヽヽ !  ! ,, -'\
    ヽ、\;:;:;:;:`ー、`ー'´ ̄/;:;ノ  ノ      ヽ| / ,、-''´ \/ ̄ ̄ ̄ ̄
                 ̄ ̄ ̄            Y´/;:;:;\




579 :デフォルトの名無しさん:2008/08/29(金) 00:38:27
SetConsoleTextAttribute関数でRGBを任意指定をしたいんですけど、これってできないんですか?

580 :デフォルトの名無しさん:2008/08/29(金) 00:43:58
>>579
無理です

581 :デフォルトの名無しさん:2008/08/29(金) 01:49:35
頑張れば可能じゃないの?
例えばの話だが、
赤にする→文字を書く→緑にする→同じ位置に文字を書く
を目にも止まらぬ速さで繰り返せば理論上は黄色に見えるだろ。
ただポケモンショックでぶっ倒れても俺は知らん。

582 :デフォルトの名無しさん:2008/08/29(金) 17:00:30
自分のstartupinfoを書き換えるにはどうすればいい?

583 :デフォルトの名無しさん:2008/08/29(金) 17:02:30
自分自身の書き換えではないけど…
差し替えた STARTUPINFO で 自アプリを CreateProcess して、自分自身は死ぬ とか?

584 :デフォルトの名無しさん:2008/08/29(金) 17:06:47
やだ死にたくない

585 :デフォルトの名無しさん:2008/08/29(金) 17:55:23
>>582
SetStartupInfo

586 :デフォルトの名無しさん:2008/08/29(金) 17:58:38
しにたくないよう

587 :デフォルトの名無しさん:2008/08/29(金) 18:08:44
マジレスするとGetStartupInfoWはRTL_USER_PROCESS_PARAMETERSの内容を写してるだけ

RTL_USER_PROCESS_PARAMETERS* p = (RTL_USER_PROCESS_PARAMETERS*)0x20000;
でアドレスが得られるから後は煮るなり焼くなり好きにしろ

588 :デフォルトの名無しさん:2008/08/29(金) 18:21:31
ttp://undocumented.ntinternals.net/UserMode/Structures/RTL_USER_PROCESS_PARAMETERS.html

>>RTL_USER_PROCESS_PARAMETERS is located at address 0x20000 (for all processes created by call WIN32 API CreateProcess).

今はどのOSでもそうなのかもしれないが、将来はどうなるかわからん
まあ頑張れ

589 :デフォルトの名無しさん:2008/08/29(金) 18:44:01
そんなの気にしなくていいよ

590 :デフォルトの名無しさん:2008/08/29(金) 19:24:55
何という糞プログラムw

591 :デフォルトの名無しさん:2008/08/29(金) 19:49:04
>>587-588 ありがと!

592 :デフォルトの名無しさん:2008/08/29(金) 20:17:29
STARTUPINFOを書き換えるなんてのがそもそも糞プログラムなんだから
方法がOS依存しようがそんな事どうでもいいだろ

593 :デフォルトの名無しさん:2008/08/29(金) 21:40:15
個人的には、GetCommandLine()の書き換えも同じくらい糞だと思うが、
argvの書き換えが認められているから、こっちは許容されている感じがする……。


594 :デフォルトの名無しさん:2008/08/29(金) 22:19:50
リストボックスの文字列の高さを決めたいんだけど、
TEXTMETRICのtmHeightじゃ高すぎて(上下の文字列と空間開きすぎ)
LOGFONTのlfHeightじゃ低すぎるんだけど(英語OSだとgとかpとかの下が切れた)

どうやったらいいのかな?

595 :デフォルトの名無しさん:2008/08/29(金) 22:31:50
WNDCLASSとWNDCLASSEXの違いってなんですか?


596 :デフォルトの名無しさん:2008/08/29(金) 22:56:11
拡張版か否か

597 :デフォルトの名無しさん:2008/08/29(金) 23:05:40
>>581
そんなことでポケモンショックになるならDLPプロジェクタが発売禁止になってるて。

598 :デフォルトの名無しさん:2008/08/29(金) 23:09:12
>>581
やってみたら?


599 :デフォルトの名無しさん:2008/08/29(金) 23:09:31
>>594
TEXTMETRIC.tmHeightが開きすぎるように感じるのは、
むしろ日本語フォントが詰めて描画される傾向にあるから。
メイリオの話なら、それはフォント自体の仕様でそれが正常。
LOGFONT.lfHeightが低すぎるのは、
高さを決めたときのフォントと違うフォントで描画している。

とエスパーレスしてみる。

600 :デフォルトの名無しさん:2008/08/29(金) 23:29:32
CreateWindowで作ったウインドウの背景色を後から変更するにはどうしたら良い?

601 :デフォルトの名無しさん:2008/08/30(土) 00:05:33
>>600
CreateWindowで作ったウインドウの背景色を後から変更したら良い

602 :デフォルトの名無しさん:2008/08/30(土) 00:25:41
>>600
h ttp://winofsql.jp/VA003334/CprogSTD020726201337.htm
など

603 :600:2008/08/30(土) 00:27:55
>>601
なるほど。 ありがとうございます。

604 :デフォルトの名無しさん:2008/08/30(土) 00:29:12
ある拡張子のファイルを開くプログラムに自作のソフトを設定して複数のファイルを同時に開いた時
コマンドで複数の引数を渡されるのではなく、開いた数だけプログラムが起動してしまうんだけど
これを何とか一つのプログラムで開けるようにできないですか?

605 :デフォルトの名無しさん:2008/08/30(土) 00:32:28
>>604
出来ます。

606 :デフォルトの名無しさん:2008/08/30(土) 00:34:03
>>604
mutex でググってみる?

607 :デフォルトの名無しさん:2008/08/30(土) 00:34:12
まあ単色塗りつぶしにPatBltとか使うのは無能なんだが。

608 :600:2008/08/30(土) 00:36:53
>>603は私じゃありません。

609 :デフォルトの名無しさん:2008/08/30(土) 00:39:40
>>600
SetClassLong

610 :デフォルトの名無しさん:2008/08/30(土) 01:40:31
素直にFillRect使っとけ、って感じはするね。
ExtTextOut使えとは流石に言わないけど。

611 :デフォルトの名無しさん:2008/08/30(土) 02:09:48
>>599
日本語OSだとMS UI Gothicで
外語OSだとMS Shell Dlgとかいうフォントがきてる

日本語OSだとLogFont.lfHeightはちょうどいい感じ
外語OSのときに狭い。tmHeightは広い。
lfHeightt+2か3くらいで出せるとよさげ。
tmExternalLeadingとかいうのが2できてるけど、
日本語だろうと外語だろうと関係なくきてるから根拠がわからん。
tmInternalは常に0だし(´・ω・‘)

情報が良くわかってなくてスマンコ

612 :デフォルトの名無しさん:2008/08/30(土) 05:19:24
>>610
昔はExtTextOut使った方が速かったんだけどね

613 :デフォルトの名無しさん:2008/08/30(土) 09:03:08
>>602>>609>>610
どーも。SetClassLongを使ったら無事できました。

614 :デフォルトの名無しさん:2008/08/30(土) 10:03:19
リッチエディットについて質問させて下さい。

リッチエディットにアイコンまたはビットマップをテキストと混在させて
表示することはできるのでしょうか?
また、そのアイコンやビットマップをクリックしたことを検出することは
できるのでしょうか。

もし可能でしたら、参考になるサイトや資料へのポインタ等をお教えいただければ
ありがたいです。

615 :604:2008/08/30(土) 12:11:09
一応できたので報告。
mutexで二重起動を防止しつつ既に起動しているなら
FindWindowでそのウィンドウを見つけてCOPYDATAメッセージでコマンド引数を渡し
読み込み、後起動のウィンドウを閉じる。
となりました。ありがとうございました。

616 :デフォルトの名無しさん:2008/08/30(土) 12:58:30
// ウィンドウの作成
if(isFullScreen) { // フルスクリーン
int sw;
int sh;
// 画面全体の幅と高さを取得
sw = GetSystemMetrics(SM_CXSCREEN);
sh = GetSystemMetrics(SM_CYSCREEN);


画面全体の高さを幅を取得とありますが

今使っているディスプレイのサイズを取得するってことですか?

617 :デフォルトの名無しさん:2008/08/30(土) 13:04:24
プライマリモニタ

618 :デフォルトの名無しさん:2008/08/30(土) 13:07:34
>>616
シングルモニタの場合には解像度が得られる
マルチモニタ環境の時には思ってるものと違うものが返ってくるかもしれない

619 :デフォルトの名無しさん:2008/08/30(土) 13:09:44
ありがとうございます

620 :デフォルトの名無しさん:2008/08/30(土) 13:34:49
>>614
リッチエディットにテキストとビットマップを混在させるのは可能。
ttp://www.codeguru.com/cpp/controls/richedit/article.php/c5383/
この辺が参考になるかと。

621 :デフォルトの名無しさん:2008/08/30(土) 16:08:24
パフォーマンスカウンタから自分自身のCPU使用率を得たいのですが、
自分自身を表すインデックスを取得するのにうまい方法は無いのでしょうか。
列挙するしか無いんですかね。

622 :デフォルトの名無しさん:2008/08/30(土) 17:03:51
>>621
WMI

623 :デフォルトの名無しさん:2008/08/30(土) 17:26:42
あー、自分自身ってのはプロセスのことです。説明不足があったらすみません。
自分自身のプロセスのCPU使用率を取得したい、ということです。

>>622
すみません、ぐぐったのですが、具体的な方法が分かりませんでした、、、

624 :デフォルトの名無しさん:2008/08/30(土) 20:34:18
もっともっとぐぐるんだ

625 :デフォルトの名無しさん:2008/08/30(土) 21:31:17
>>620
>ttp://www.codeguru.com/cpp/controls/richedit/article.php/c5383/

ありがとうございました。
同じ疑問を持った方のために要約しておきます。

リッチエディット(というよりもRTF)にテキストとビットマップを混在させるためには
1.MSDNの、"HOWTO: Insert a Bitmap Into an RTF Document Using the RichEdit Control"参照。
2.OLEを利用する。
3.IOleObjectを作成するために、ファイルからだと、OleCreateFromFile()が使える。
4.URLの先では、OleCreateStaticFromData()が用いられている。

もう一つの疑問であった、画像のクリックを判定できるかという問題ですが、
Oleなら当然ダブルクリックで再編集等の処理がかけるはずなので、可能ではないかと思われます。

626 :デフォルトの名無しさん:2008/08/30(土) 23:08:20
初歩的な質問ですみませんが、教えてください。

CreateCompatibleDCで取得したデバイスコンテキストを、アプリケーションが動いている間ずっと生かしておきたいのですが、
やはり終了時にはDeleteDCで開放しなくてはならないのでしょうか?

自作関数の中でstaticで宣言しているので、DeleteDCを呼ぶタイミングを作るのがすこし手間だなと感じているのです。

627 :デフォルトの名無しさん:2008/08/30(土) 23:15:34
>>626
APIとは無関係に、コンストラクタでDCを作成してデストラクタでDeleteDCするクラスAを作って
それをmain()の頭で作るなりstaticで作るなりすればいいんじゃないのか?

628 :デフォルトの名無しさん:2008/08/30(土) 23:18:57
終了時に勝手に開放される

629 :デフォルトの名無しさん:2008/08/31(日) 00:08:17
>>627-628
レスありがとうございます。
せっかくcppで書いているので、デストラクタを作ることにします。


630 :デフォルトの名無しさん:2008/08/31(日) 00:13:54
>>627
DCの作成に失敗したらどうするんだよ
例外でも投げるのか?

631 :デフォルトの名無しさん:2008/08/31(日) 02:09:56
>>630
アプリケーションの作成に必ず必要みたいだからそれでもいいけど
気になるなら、作成してから登録すればいいんじゃないの?

int main(...) {
DCの作成
成功していたら、デストラクタでDCを破棄するオブジェクトをスタック上に作って登録。
}

632 :デフォルトの名無しさん:2008/08/31(日) 02:11:23
>>630
素直に例外投げればいいよ。

633 :デフォルトの名無しさん:2008/08/31(日) 02:25:35
>>632
>>630 が暗に言っているのは、コンストラクタ中で作成に失敗した結果例外を
投げるとデストラクタが呼び出されなくなることじゃないのか?
それを回避したいなら>>631ってことだろ。

634 :デフォルトの名無しさん:2008/08/31(日) 02:36:19
>>633
http://www.kijineko.co.jp/tech/superstitions/dont-throw-exception-from-constructor.html

そもそも、作成に失敗したものを開放できなくてもなんら問題ないだろ。

635 :デフォルトの名無しさん:2008/08/31(日) 02:37:10
ReadConsoleで実際に読み込んだ文字数が多くなっちゃうんだけどなぜ?



636 :621:2008/08/31(日) 03:17:31
自前でプロセスを列挙してインデックスを求めて、パフォーマンスカウンタからCPU使用率を得ようと思ったのですが、それすらうまくいきませんでしたorz
どうも新しく同名のプロセスが起動したり終了したりするとインデックスが変わってしまうようです。

やっぱり確実な方法はWMIなのでしょうか、、、しかしなかなか情報が出てこない・・・orz

637 :デフォルトの名無しさん:2008/08/31(日) 03:37:20
>>636
中身読んでないから知らんけど
ttp://homepage1.nifty.com/kazubon/progdoc/tclock/sysinfo.html

638 :621:2008/08/31(日) 03:43:03
>>637
システム全体の使用率ではなく、自分自身のプロセスの使用率を求めたいです、、、

639 :デフォルトの名無しさん:2008/08/31(日) 04:02:24
>>634
DCの作成時に例外はでないんだから、その頁に書かれているリークの回避と
631は同じことだろ。明示的なキャッチで破棄するか、unwindにまかせるかの
違いしかないと思うが。
最後まで必要なオブジェクトの寿命が管理できて、例外が送出されても
自然終了してもどちらでも削除忘れがなくて、try/catchの
コストまで場合によってはかからない。より良い気がするんだが。

そもそもコンストラクタから例外を出してもいいか悪いか、という話じゃないだろ。
〜だったら、という話がどうしてそんなところに行き着くんだ?
アンカーが 630への付け間違いなら、仰るとおり。

640 :デフォルトの名無しさん:2008/08/31(日) 05:30:34
>>638
GetProcessTimes で時間当たりのCPU時間消費量で求まる。
普通はこの方法だよ。

641 :デフォルトの名無しさん:2008/08/31(日) 13:13:45
一時ファイルを一時バッファとして使用したいのですが、
CreateFile(m_szTempName, GENERIC_READ|GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS|FILE_FLAG_DELETE_ON_CLOSE, NULL);
でファイルを作成して、
SetFilePointer(m_hFile, 0, NULL, FILE_END);
WriteFile(m_hFile, lpBuffer, dwNumberOfBytesToWrite, &dwWriteLen, NULL);
FlushFileBuffers(m_hFile);
SetEndOfFile(m_hFile);
と書き込んで、この位置より前(ldOffset < EOF)を
SetFilePointer(m_hFile, (DWORD)(ldOffset & 0xffffffff), (LPLONG)&ldOffset, FILE_BEGIN);
ReadFile(m_hFile, lpBuffer, dwNumberOfBytesToRead, &dwReadLen, NULL);
で読み込むと、戻り値はすべて成功しますが、ReadFileでdwReadLenが0になり読めません。
なにがダメでしょうか。


642 :621:2008/08/31(日) 13:45:09
>>640
分かりました、ちょいと調べたら出来そうな感じです。
ありがとうございました。

643 :デフォルトの名無しさん:2008/08/31(日) 14:18:08
>>641
SetFilePointer
つーかエラー値調べろ

644 :デフォルトの名無しさん:2008/08/31(日) 14:32:49
>>643
SetFilePointerはWriteの前(追加しかしないので終端)と、readの前(開始位置)でしてます。
エラーは出てないですが、FileReadで1バイトも読めません。成功して0バイト(たぶんEOF)になります。
OSは、Vistaですが、Program Filesの下でもないです。



645 :デフォルトの名無しさん:2008/08/31(日) 14:40:48
>>641
> SetFilePointer(m_hFile, (DWORD)(ldOffset & 0xffffffff), (LPLONG)&ldOffset, FILE_BEGIN);

ldOffsetは64bit整数か?
リトルエンディアンだと (LPLONG)&ldOffset は上位DWORDを指してる事にはならないぞ。

646 :641:2008/08/31(日) 14:47:37
>>645
その通りでした。
戻りが下位ワードしか帰ってないので気づきませんでした。
解決!

647 :デフォルトの名無しさん:2008/08/31(日) 16:00:01
SetFilePointerに拘るより、素直にExを使っておく方が良いかもしれんね。
2000以降で既に対応しているし。

648 :デフォルトの名無しさん:2008/08/31(日) 19:53:47
>>611
MS Shell Dlgの実体はたしかMS Sans Self。
レジストリに対応付けが書いてある。

649 :デフォルトの名無しさん:2008/08/31(日) 21:10:42
MS Shell Dlgは俺も謎だった なんかのエイリアスだとは思ってそのまま使ってたわ

650 :デフォルトの名無しさん:2008/09/01(月) 01:06:37
>>648-649
情報thx
見てみる

651 :デフォルトの名無しさん:2008/09/01(月) 02:07:14
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes
9xだとWindows NT→Windowsなのかな?

652 :デフォルトの名無しさん:2008/09/01(月) 14:13:28
この中にJavaScriptのpromptみたいに簡単に文字入力できる仕組み作ってる人居ないですか?
そのーソース下され!

653 :デフォルトの名無しさん:2008/09/01(月) 14:17:52
JavaScriptにpromptはないけど

654 :デフォルトの名無しさん:2008/09/01(月) 15:35:54
ウィンドウオブジェクトにprompt()メソッドがあったような
つっても入力ダイアログ表示して戻り値で文字列返すだけだったと思うが

この程度だとソースも糞も無い

655 :デフォルトの名無しさん:2008/09/01(月) 16:31:36
GetOpenFileName で代用でもしとけ

656 :デフォルトの名無しさん:2008/09/01(月) 16:32:36
いいなそれw

657 :デフォルトの名無しさん:2008/09/01(月) 18:58:50
MoveFile()やMoveFileEx()は
移動先もファイル名まで指定しなければいけないようですけど、
移動先フォルダを渡すだけで済むAPI(名前を変えずに移動)は無いのでしょうか?

658 :デフォルトの名無しさん:2008/09/01(月) 19:43:11
がんばれよ

659 :デフォルトの名無しさん:2008/09/01(月) 22:07:24
SHFileOperation かな

660 :デフォルトの名無しさん:2008/09/02(火) 01:08:02
CreateProcessでコンソールアプリ(perlです)を起動して
そのコンソールの内容をWin32の起動元のアプリで受け取ることは
出来ますか?

661 :デフォルトの名無しさん:2008/09/02(火) 01:11:14
標準入出力のリダイレクト程度なら

662 :デフォルトの名無しさん:2008/09/02(火) 01:20:59
Win32APIで無くて良いならpopenの方が手っ取り早い

663 :デフォルトの名無しさん:2008/09/02(火) 02:34:35
popenというのを知りませんでした〜
なんとなく出来そうです有難うございます

664 :660:2008/09/02(火) 03:24:22
よく読んだら_popenはWindowsで使うなって書いてあった><;

665 :デフォルトの名無しさん:2008/09/02(火) 06:47:45
いや、それ標準出力持たないGUIアプリとかの話だから。
Perlでコンソールアプリなら問題ないよ。

666 :デフォルトの名無しさん:2008/09/02(火) 08:30:37
popenの中を調べたらどうなっとる?

667 :デフォルトの名無しさん:2008/09/02(火) 08:40:58
pop en って何?

668 :デフォルトの名無しさん:2008/09/02(火) 09:28:36
SetEvent関係をわかりやすく解説してるサイトありませんか?
IQ80でもわかるところがいいです。

669 :デフォルトの名無しさん:2008/09/02(火) 10:00:48
>>668
残念だが、IQ85ないとSetEventは理解できないんだわ。

670 :デフォルトの名無しさん:2008/09/02(火) 10:18:42
>>669
やっぱりそうですか・・・どこを見ても理解不能なのでorz

671 :デフォルトの名無しさん:2008/09/02(火) 10:21:20
頭悪すぎだろ…

672 :デフォルトの名無しさん:2008/09/02(火) 10:31:48
CreateEventとWaitForSingleObjectならシリアルポート関連で
使ったことあるけど、SetEventは無いや。


673 :デフォルトの名無しさん:2008/09/02(火) 10:56:50
>>669
「マルチスレッドプログラミング」 とか 「スレッド間」 「同期」 「通信」 あたりでググればそのうち巡りつく


674 :デフォルトの名無しさん:2008/09/02(火) 11:17:43
ExplorerやIEやOfficeが固まるたびに思うんだが
阿呆はマルチスレッドやプロセス間通信を使うべきではない

675 :デフォルトの名無しさん:2008/09/02(火) 11:33:33
スレッドを使わないがために、何かの待ち等で画面が固まってしまうようなソフト(の作者)もアレだが

676 :デフォルトの名無しさん:2008/09/02(火) 11:59:56
>>675
いや、そういうのはスレッド使ってもロクでもないことになる可能性が
高いと思うが?
マルチスレッドの怖さは、外部にロックアップの原因となるイベント現を
持たない場合でもデザインが下手だとタイミング次第で固まる可能性が
あるってことさ。つまり、ちょっくら難しい。無論、悪ではない。

677 :デフォルトの名無しさん:2008/09/02(火) 14:03:46
だがしかし、

678 :デフォルトの名無しさん:2008/09/02(火) 17:55:24
スガシカオ、

679 :デフォルトの名無しさん:2008/09/02(火) 17:57:29
だまれくず

680 :デフォルトの名無しさん:2008/09/02(火) 18:26:01
クリティカルセクション

681 :デフォルトの名無しさん:2008/09/02(火) 18:35:43
痛恨の一撃

682 :デフォルトの名無しさん:2008/09/02(火) 18:38:44
会心の一撃は敵からしてみれば痛恨の一撃なのですか?
それとも会心の一撃は会心の一撃なのでしょうか?

683 :デフォルトの名無しさん:2008/09/02(火) 18:43:50
毒針で急所を突いた

684 :デフォルトの名無しさん:2008/09/02(火) 18:49:23
痛恨の一撃を放つモンスターを仲間にしても痛恨の一撃のままじゃなかったっけ

685 :デフォルトの名無しさん:2008/09/02(火) 19:08:46
でも効果音はいっしょだよね

686 :デフォルトの名無しさん:2008/09/02(火) 19:29:48
>>676
昔、マルチスレッドをまともにテストするなら、
4CPUの環境を使えと書いてあるのを読んだことがあるな。
デュアルコア程度なら大丈夫だったコードも、コアが増え続けると厳しくなってくる予感。
アウトオブオーダーの罠とかも、あっさり踏んだりするようになるんだろうなあ。

687 :デフォルトの名無しさん:2008/09/02(火) 19:45:26
システムフックに関して質問です。
とある被所有型ウィンドウのプロセスが処理を終えるとウィンドウを最前面に出してくるのを無効化したいのですが、
WH_CBTのHCBT_ACTIVATEでウィンドウハンドル一致時にreturn 1返したり、
WH_CALLWNDPROCで同様にWM_WINDOWPOSCHANGING、WM_ACTIVATEの時にreturn 0にしても非アクティブ状態で最前面に出てきます。
Spy+で見る限りSetWindowPosでSWP_NOACTIVATEフラグでZオーダーのみ変更してるっぽいのですが、
どうしても指定プロセスと親に指定されたウィンドウが最前面に出させない方法が見つかりません。
最前面に出る時のSpy+のログは以下のような感じです。

WM_WINDOWPOSCHANGING>.WM_GETTEXT>WM_ERASEBKGND>WM_WINDOWPOSCHANGED
>WM_ACTIVATE(S)>.WM_SETFOCUS(S)>..WM_KILLFOCUS>.WM_SETFOCUS(R)>WM_WINDOWPOSCHANGING
>WM_PAINT(S)>.WM_ERASEBKGND>WM_PAINT(R)

(R):return, (S):send, 括弧無しは両方です。WM_TIMER等は省きました。
分かりづらい文章ですいません、、情報不足でしたら指摘していただけると幸いです。
フックのコードそのものは、殆ど猫でも〜の流用で動作自体は確認出来てます。

688 :デフォルトの名無しさん:2008/09/02(火) 19:56:18
WM_WINDOWPOSCHANGINGのWINDOWPOS構造体を書き換えてみるとか・・

689 :デフォルトの名無しさん:2008/09/02(火) 20:10:47
>>687
XPの自動更新で再起動するかっていうダイアログを黙らせる方法みたいなもの?
[後で再起動する]を選んでも、しばらくすると、作業中に奴が出てきて妨害するから。

奴のせいで二回予期せぬ再起動をしたことがあるTT

690 :687:2008/09/02(火) 20:22:06
レスありがとうございます。
一応それも思いついてやってみました。

if(nCode == HC_ACTION){
 if(wp == NULL){
  pcwp = (CWPSTRUCT *)lp;
   if(pcwp->message == WM_WINDOWPOSCHANGING){
   lpwp = (WINDOWPOS *)lp;
   lpwp->flags = SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER;
  }
 }
}
return CallNextHookEx(hHook, nCode, wp, lp);

こんな感じにしましたが変化無しでした。(ウィンドウハンドル一致if文は省いて抜粋)
>>689
具体的に書くとTWAINウィンドウがスキャン後に最前面に出てくるって感じですね。
別のスキャナの時は勝手に出てくる事が無かったのでドライバ側が終了時に呼び出してると読んでるんですが。。

691 :デフォルトの名無しさん:2008/09/02(火) 23:13:26
確かWH_CALLWNDPROCは変更不可じゃなかったか?

692 :687:2008/09/02(火) 23:41:20
>>691
確かそのようにどこかに記述があったので、
WM_WINDOWPOSCHANGINGやWM_ACTIVATEとハンドル一致の時だけreturn 0にしてみたのですが、ダメでした。

ちなみに、メッセージ条件にWM_PAINTを入れたら全ウィンドウ再描画がダメになったので止めました。orz
ウィンドウハンドルは一応メッセージボックス等で一致確認してあるんですが。。

693 :デフォルトの名無しさん:2008/09/03(水) 00:34:14
モードレスのダイアログプロシージャって返り値BOOLなの?INT_PTRなんですか?他に処理するものがないときは
DefDialogProc使うべきなんですか?

694 :デフォルトの名無しさん:2008/09/03(水) 00:56:33
DefDlgProcのことだと思うが、呼ばんでいい
デフォルトの処理をさせたいときは0を返す

695 :デフォルトの名無しさん:2008/09/03(水) 01:03:26
> ダイアログプロシージャ
昔(VC6の頃)はBOOL
最近(XP以降ぐらい?)はINT_PTR

つか、こういうの変えるなよなぁ
何のために大文字だらけのtypedefしてるんだか

696 :デフォルトの名無しさん:2008/09/03(水) 05:23:23
>>687
ちゃんと見てないんだけど、まさかフックして構造体を書き換えた後、
フックしたエントリーを呼び出してないよね?
ウィンドウを最前面に出すプロセスが、もう一度構造体を書き換えてるなんて
オチは・・・

697 :デフォルトの名無しさん:2008/09/03(水) 11:24:19
半透明ウィンドウへのマウス入力を直下のウィンドウへ透過させることはできないでしょうか?


698 :デフォルトの名無しさん:2008/09/03(水) 11:35:16
WS_EX_TRANSPARENT でいけそうですね。すいませんでした。


699 :デフォルトの名無しさん:2008/09/03(水) 13:03:33
GoogleChromeがAeroGlassをきちんと使った設計になっててびっくり
ソース公開されたらAPIの使い方の参考にしてみるか

700 :デフォルトの名無しさん:2008/09/03(水) 13:12:42
>>699
元MSの人にとってみれば得意分野だろうしなぁ。わくわく。

701 :デフォルトの名無しさん:2008/09/03(水) 13:34:36
うんこしたいんですけどどうしたらいいですか?

702 :デフォルトの名無しさん:2008/09/03(水) 13:39:58
うんこ
ttp://msdn.microsoft.com/en-us/library/aa393936(VS.85).aspx

703 :デフォルトの名無しさん:2008/09/03(水) 15:02:27
Rich Edit Control のカーソルが現れてブリンクしているかどうかを知る
API ってありますか。

EM_STREAMIN で Unicode 文書を読み込ませて、カーソルが出る前に画面を
クリックすると、「応答なし」になるんで、WAIT ポインタでも出して回避
したい。(時計も止まるんでそれを見ると 12 秒位かかっている。)

Vista SP1, 2.1GHz CPU, 2.0GB RAM です。文書は 450 KB 程度です。

704 :デフォルトの名無しさん:2008/09/03(水) 15:32:15
マルチディスプレイでプライマリモニタを変更する方法を探しています
最初はChangeDisplaySettingsExでプライマリモニタにしたいモニタにCDS_SET_PRIMARYを指定すればいいと思ったのですが効果がありませんでした
次にプライマリモニタにしたいモニタ以外をデタッチした後、デタッチしたモニタをアタッチしなおしてみました
この場合、当然ですがデタッチした時点では目的のモニタがプライマリになっていたのですが、アタッチし直すと何故かデタッチする前にプライマリだったモニタがプライマリに戻ってしまいました
どこで道を誤ったのか、解決方法をご教示ください

705 :デフォルトの名無しさん:2008/09/03(水) 17:08:41
>>704
プライマリモニタを変更しようと思ったこと

706 :デフォルトの名無しさん:2008/09/03(水) 18:03:36
>>705
できれば、その解決方法もお願いします…

707 :デフォルトの名無しさん:2008/09/03(水) 18:14:25
コンパネ開いて設定したらいいんじゃね
プログラムで

708 :687:2008/09/03(水) 18:52:31
>>696
レス遅れました。大体以下のような感じです。最初から載せれば良かったですね。
上に有るとおり、構造体は修正出来ないので0を返してますが、それでも勝手に最前面に出てきますね。
プロセス自体が何をやってるのかが掴めたらもうちょっと何とかなるんですが。
HC_CBTでアクティブ化無効は出来たのだけど、Zオーダーのみ変更のメッセージらしく意味無しでした。。orz
ちなみにタイマーで実行ボタンをSendMessageで押すツールを使ってるとバグなのか、たまにぴたりと最前面に出てこなくなります。

 if (nCode < 0 || nCode == HC_NOREMOVE) {
  return CallNextHookEx(hHook, nCode, wp, lp);
 }
 if(nCode == HC_ACTION){
  if(wp == NULL){
   pcwp = (CWPSTRUCT *)lp;
   if(pcwp->message == WM_WINDOWPOSCHANGING || pcwp->message == WM_ACTIVATE || pcwp->message == WM_SETFOCUS){
    hw = FindWindow("__Canon_ScanGear_Main__", "ScanGear");
    if(pcwp->hwnd == hw){
     return 0;
    }
   }
  }
 }

 return CallNextHookEx(hHook, nCode, wp, lp);

709 :704:2008/09/03(水) 21:24:11
多分自己解決しました
スレ汚し申し訳ありませんでした

710 :デフォルトの名無しさん:2008/09/03(水) 22:04:46
アンノウンポインタをピーウンコと呼んでいいのは小学校低学年まで

711 :デフォルトの名無しさん:2008/09/03(水) 22:05:30
XpSP3、VS2005、VB
CreateFileA、CreateFileMappingA、MapViewOfFileを使用してプロセス間での共有メモリの使用はできたのですが、
複数ユーザーでアプリケーションを実行し同じ共有メモリを使おうとするとCreateFileMappingAでエラー(ERROR_ACCESS_DENIED)が発生します。
どのようにパラメーターを指定すれば可能でしょうか?そもそもユーザー間で使用することは可能でしょうか??



712 :デフォルトの名無しさん:2008/09/03(水) 22:07:26
XpSP3、VS2005、VB
CreateFileA、CreateFileMappingA、MapViewOfFileを使用してプロセス間での共有メモリの使用はできたのですが、
複数ユーザーでアプリケーションを実行し同じ共有メモリを使おうとするとCreateFileMappingAでエラー(ERROR_ACCESS_DENIED)が発生します。
どのようにパラメーターを指定すれば可能でしょうか?そもそもユーザー間で使用することは可能でしょうか??


713 :デフォルトの名無しさん:2008/09/03(水) 23:35:09
VistaでIPを変えるにはどうすればいいか教えてください

714 :デフォルトの名無しさん:2008/09/03(水) 23:39:34
ケーブルを抜いてつなぎなおす。

715 :デフォルトの名無しさん:2008/09/03(水) 23:39:56
Windows板行け

716 :デフォルトの名無しさん:2008/09/03(水) 23:48:02
API板に行けって言われたのにwww
プログラム中にでIPアドレスって変えれるんだよね?

717 :デフォルトの名無しさん:2008/09/03(水) 23:52:42
まあ、OSもプログラムだからね。


718 :デフォルトの名無しさん:2008/09/03(水) 23:55:54
プロバイダでもハックすればいいんじゃね

719 :デフォルトの名無しさん:2008/09/03(水) 23:55:57
IPConfigとかnetshとか呼び出せばいいんじゃね?

720 :デフォルトの名無しさん:2008/09/03(水) 23:55:58
IPHelperFunctionsで再取得

721 :デフォルトの名無しさん:2008/09/04(木) 00:02:01
そもそも静的にIPを変えるのか、DHCPから再取得したいのか、
プライベートIPの話なのか、プロバイダから割り当てられたグローバルを変えたいのか、
やりたいことが全く説明されていない。

722 :デフォルトの名無しさん:2008/09/04(木) 00:06:45
グローバルIPです
同じサイトに違うIPで入りなおしたいんです

723 :デフォルトの名無しさん:2008/09/04(木) 00:07:40
自演したいだけか

724 :デフォルトの名無しさん:2008/09/04(木) 00:08:04
>>719
>>720
ありがとうございます

725 :デフォルトの名無しさん:2008/09/04(木) 00:10:29
IPの取得方法なんて色々あるからね
どの方法で取得されているのかによって変え方も変わって来る
そもそもそんな事すらわかってない奴にプログラムを書くのはとても無理

726 :デフォルトの名無しさん:2008/09/04(木) 00:48:27
まあ今までの材料だと無理だと思えるね
プロバイダもうひとつ契約するとか外にサーバ借りて串置くとかしないと

727 :デフォルトの名無しさん:2008/09/04(木) 01:20:41
そもそも今日び直で繋いでる奴はそうそういないだろ
もう夏休みは終わったというのに
大学はまだだが

728 :デフォルトの名無しさん:2008/09/04(木) 01:21:04
windows.hしかインクルードしてない状態だったらCreateThreadは安全っていえるの?


729 :デフォルトの名無しさん:2008/09/04(木) 06:51:55
Cの標準関数でリークが起きるって話のことか?

730 :デフォルトの名無しさん:2008/09/04(木) 07:46:12
作成するのがDLLならリークしない
EXEの場合ならCRTにダイナミックリンクする設定でビルドすればリークしない

731 :デフォルトの名無しさん:2008/09/04(木) 07:52:25
2分おきに値を10づつ増加せさるループの場合どのAPI関数を使えばいいでしょうか?

732 :デフォルトの名無しさん:2008/09/04(木) 07:53:02
リーク云々より、初期化が行われない方が問題なんじゃあるまいか。

733 :デフォルトの名無しさん:2008/09/04(木) 08:24:28
>>732=馬鹿

734 :デフォルトの名無しさん:2008/09/04(木) 08:49:00
>>731
WM_TIMERとか

735 :デフォルトの名無しさん:2008/09/04(木) 15:07:45
具体的にどのCRT関数でリークするとか情報あったっけ?
strtokなんかは怪しいが、strcpyでリークするとも思えないし。

736 :デフォルトの名無しさん:2008/09/04(木) 16:09:20
スレッドセーフな関数と
スレッド生成/消滅時の作業とはまた別ではなかろうかと。

関数をスレッドセーフにする為の準備作業が全てではないだろうと予測するけど
_beginthread の中身見てみないとワカランよなぁ…

737 :デフォルトの名無しさん:2008/09/04(木) 16:15:31
>>736
ソースついてなかったっけ?

738 :デフォルトの名無しさん:2008/09/04(木) 16:28:04
>>737
ランタイムスタートアップ の ソース (crt0.c とかね)は付いてるのは見たけど
_beginthread の本体はソース付いてたっけ?

入口→ 最終的には CreateThread(Ex) →出口 となっているだろうけど
挟まれている部分で何やってるか次第だな

739 :736:2008/09/04(木) 16:54:11
>>737
ごめん VC6 には付いてた
CRT/thread.c と CRT/threadex.c

俺のスキルでは、追っかけて理解できるかどうかは怪しい

740 :デフォルトの名無しさん:2008/09/04(木) 16:54:28
>>738
CreateThreadExなんてあったか?

741 :736:2008/09/04(木) 16:56:47
勢いで Ex つけちまった CreateThreadEx なんて無い

742 :デフォルトの名無しさん:2008/09/04(木) 17:07:02
>>735
ptd (per-thread data)がリークする
どのCRT関数が該当するかはソースを _getptd でgrepすれば分かる

リークするのが嫌ならCRTをダイナミックリンクにすれば済むので、
わざわざCreateThreadを避ける理由も無い

743 :デフォルトの名無しさん:2008/09/04(木) 17:11:11
>>742
わざわざ_beginthreadを避ける理由も無い

744 :デフォルトの名無しさん:2008/09/04(木) 17:13:11
↑話を理解してない馬鹿

745 :デフォルトの名無しさん:2008/09/04(木) 17:21:41
>>742
_beginthread は
CreateThread に渡すコールバック関数で _getptd 〜 _freeptd で挟んでいる

CreateThread 単体呼び出し + CRTのダイナミックリンクだと
プロセス終了時に _calloc_crt で得たメモリを一気に返却するけど

スレッド作って終わってが頻発するようなやつだと あぶなくね?

746 :デフォルトの名無しさん:2008/09/04(木) 17:22:19
まあ、BoostのどこかのMLで、VCはスタティックリンクだと、結局リークする場合があるなんていわれてたしな。
今どきのVCのCRTはDLLにしておくべきだろ。
VCのCRTのDLLは、DirectXのランタイムと違って、自由に同梱していいので、扱いは楽だし。

747 :デフォルトの名無しさん:2008/09/04(木) 17:23:46
>>745
スレッド終了時じゃないのか?
そのためのDLLだろ。

748 :デフォルトの名無しさん:2008/09/04(木) 17:31:12
>>746
最近のCRTはmanifestの関係でただ同梱するだけでは無理じゃなかったか?
そのせいか知らんがFirefox3は自前ビルドのCRTを用意してるみたいだが

749 :デフォルトの名無しさん:2008/09/04(木) 17:32:16
>>747
大変に申し訳ない
DLL_THREAD_DETACH で grep したら _freeptd あったわ

750 :デフォルトの名無しさん:2008/09/04(木) 17:50:29
>>743
話は逸れるけど、_beginthreadは勝手にCloseHandleしてくれるお節介付きだから、
_beginthreadexのほうがお勧めだよ。ラップすればCreateThreadと引数・戻り値同じにできるし。

751 :デフォルトの名無しさん:2008/09/04(木) 18:15:06
話を逸らすな

752 :デフォルトの名無しさん:2008/09/04(木) 19:10:02
話を戻して会心の一撃

753 :デフォルトの名無しさん:2008/09/04(木) 19:15:45
>>731
マルチメディアタイマ(timeSetEvent)、Waitable-timer、Timer-queueとかも。
他に何もするつもりがないなら、Sleep(120000)でループするのもあり。
受け狙いなら、Winsockのselect関数でfds全部NULLにしてタイムアウト待ち。

754 :デフォルトの名無しさん:2008/09/04(木) 19:40:08
WaitFor〜系関数のタイムアウト使うってのもあるな。

755 :デフォルトの名無しさん:2008/09/04(木) 20:46:01
WIN32API.TXTの最新版ってどこで手に入りますか?

756 :デフォルトの名無しさん:2008/09/04(木) 20:58:36
なくなりました。

757 :デフォルトの名無しさん:2008/09/04(木) 22:08:38
ゲームパッドの入力とか含めてすべての仮想キーを収納できる配列の要素数はいくつですか?

758 :デフォルトの名無しさん:2008/09/04(木) 22:12:23
0x00 - 0xFF

759 :デフォルトの名無しさん:2008/09/04(木) 22:56:58
>>746
OSがFlsAllocに対応してればそれでも結局は解放されるかな。
現実的には、XPが長生きするのでFlsAllocは当てにできないんだけど。

760 :デフォルトの名無しさん:2008/09/04(木) 23:06:16
>>758
挿しているJoyパッド n個全て独立して取り扱うとすると…
DirectInput のデバイス列挙で可変長個数 量的に突破する可能性があるかもないかも

761 :デフォルトの名無しさん:2008/09/04(木) 23:07:58
assert.h complex.h ctype.h errno.h fenv.h
float.h inttypes.h iso646.h limits.h locale.h
math.h setjmp.h signal.h stdarg.h stdbool.h
stddef.h stdint.h stdio.h stdlib.h string.h
tgmath.h time.h wchar.h wctype.h

このへんを使わなければCreateThreadでもいいってことでおk?

762 :デフォルトの名無しさん:2008/09/04(木) 23:12:12
それだけじゃVC以外のCRTって事しか判らないので、何ともいえない。
つうか、complex.hとか何時の時代だよ。

763 :デフォルトの名無しさん:2008/09/04(木) 23:18:56
完全に追跡しきってないけど ptd の中身(mtdll.h) に
FPエラー や シグナル C++例外ハンドラ を持っているんだよね

これ未初期化の状態で 例外発生したり、シグナル立ったりしたら どーなるんだろ?

764 :デフォルトの名無しさん:2008/09/05(金) 05:24:34
> 未初期化の状態で
_getptdで同時に初期化も行ってるから問題ない。CRTのソース読め


てかダイナミックリンクすればCreateThreadとか_beginthreadexとか気にしなくて済むと何度も出てるだろうに
ランタイムの再配布権利が無いExpressEdition使ってる奴しかいないのか?

765 :デフォルトの名無しさん:2008/09/05(金) 09:55:59
>>764
いや 生成された新規スレッド側で CRT系未呼び出しの間のスキマの話

dllcrt0.c に DLL_THREAD_ATTACH ハンドリングしてなくて、_getptd 居ないのが気になるの

766 :デフォルトの名無しさん:2008/09/05(金) 10:02:30
ダイナミックリンクすれば CreateThread とか_beginthreadex とか気にしなくて済む
ということで その詳細は気になるなら各自確認汁

767 :デフォルトの名無しさん:2008/09/05(金) 10:48:33
>>765
CRT関数が呼ばれてなければ未初期化とか関係ないだろうが
馬鹿ですか?

768 :デフォルトの名無しさん:2008/09/05(金) 11:45:27
なんでこんな話題でのびてんの?
スレッド作るときは、_beginthreadex 使え、以上。
って話じゃないの?

もの凄くコアの多いCPUで、もの凄く小さいスレッドを、
もの凄くたくさん作る場合で、オーバーヘッドが問題になるような
もの凄く特殊な場合を除いて、CreateThread を使わなければ
ならないようなシチュエーションはなさそうな気がするんだが。

769 :デフォルトの名無しさん:2008/09/05(金) 11:55:04
スレッドって何個まで作れるの?

770 :デフォルトの名無しさん:2008/09/05(金) 12:03:02
255

771 :デフォルトの名無しさん:2008/09/05(金) 12:28:29
>>769
2,028個/プロセス
ttp://msdn.microsoft.com/ja-jp/library/cc429080.aspx

772 :デフォルトの名無しさん:2008/09/05(金) 13:10:01
>>768
馬鹿は黙っててね

773 :デフォルトの名無しさん:2008/09/05(金) 13:16:39
>>769-771
2032個まで作れたぞ。

DWORD i, d;
for(i=0; CreateThread(0,0,(LPTHREAD_START_ROUTINE)Sleep,(void*)INFINITE,0,&d); i++);
printf("%d\n", i);

774 :デフォルトの名無しさん:2008/09/05(金) 13:42:16
スレッドの数ってアドレス空間の問題なんじゃね?
ひとつのスレッドにつき、MSVCのリンカーは、デフォルトで1MBのスタックサイズにするから。
32bitだと2GBだからな。
64bitコードならもっと作れるんじゃね?

775 :デフォルトの名無しさん:2008/09/05(金) 13:45:44
>>768
あと、C/C++でないので、CRTを使わない場合もCreateThreadにすると思う。

776 :デフォルトの名無しさん:2008/09/05(金) 13:55:48
>>775
馬鹿なんだからほっとけ

777 :デフォルトの名無しさん:2008/09/05(金) 14:23:17
ヤフーなどの検索サイトを開くと検索窓にフォーカスがありますが
それを外すにはどうすればいいですか?
Tabキー送信では隣の検索ボタンに移動してしまいますし…

778 :デフォルトの名無しさん:2008/09/05(金) 14:25:02
それって解決してるじゃん

779 :デフォルトの名無しさん:2008/09/05(金) 15:24:49
>>777 です。
>>778
いやサイトによるでしょ?必ずしも検索サイト全てがTabキー押せば隣のボタンに移動って
限らない。

780 :デフォルトの名無しさん:2008/09/05(金) 15:32:54
>>779
JavaScript切ればいいだろ

781 :デフォルトの名無しさん:2008/09/05(金) 22:01:44
ゲームってWinMainでメッセージループを処理して
ゲームのロジックとか描画は別にスレッドを走らせて処理するんですか?


782 :デフォルトの名無しさん:2008/09/05(金) 22:46:25
ググれば分かるがメッセージループで手の空いた時に描画している

783 :デフォルトの名無しさん:2008/09/05(金) 23:38:11
ぐぐってみた
PeekMessageでメッセージがあればそれの処理、メッセージがなければ1フレーム進めるという無限ループということ?
でもこれって移動用の方向キーを押しっぱなしにしてキャラを歩かせようとしたら
メッセージにWM_KEYDOWNが入りっぱなしになってゲームの処理がなかなか進まなくなるのでは?

784 :デフォルトの名無しさん:2008/09/05(金) 23:39:40
>>783
必要ないときは読み捨てればおk

785 :デフォルトの名無しさん:2008/09/05(金) 23:44:45
   ∩___∩         |

   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

786 :デフォルトの名無しさん:2008/09/06(土) 00:04:26
タイマー投げてPeek…いや、なんでもない

787 :デフォルトの名無しさん:2008/09/06(土) 00:07:11
何度も駄目だといわれ続けてきた方法を公然と言い放つ>>782
サンプルをコンパイルする程度しかやったことがないんだろうな

788 :デフォルトの名無しさん:2008/09/06(土) 00:28:41
そんなに駄目出しされていたとは初耳だなあ。

789 :デフォルトの名無しさん:2008/09/06(土) 00:46:31
CPU使用率が100%になるとかそういう事が言いたいんだろ
Sleep(1);でも入れとけばいい

790 :デフォルトの名無しさん:2008/09/06(土) 00:49:15
メッセージが来るかタイマーなどがシグナル状態になるまで待つAPIがあるだろ。

791 :デフォルトの名無しさん:2008/09/06(土) 01:00:18
だから?

792 :デフォルトの名無しさん:2008/09/06(土) 03:24:19
つうか普通ウェイトかけるだろ
全力で描画してどうするよ

793 :デフォルトの名無しさん:2008/09/06(土) 03:41:13
>>792
>>789

794 :デフォルトの名無しさん:2008/09/06(土) 03:58:13
いや・・Sleepはないだろ・・・

795 :デフォルトの名無しさん:2008/09/06(土) 04:15:53
>>794


796 :デフォルトの名無しさん:2008/09/06(土) 08:49:36
Sleepをいれたら通常メッセージの応答まで鈍くなるぞ

797 :デフォルトの名無しさん:2008/09/06(土) 08:56:09
データファイルの読み込みや展開に時間がかかる場合に、
メッセージループで処理すると、その間ウインドウメッセージに反応出来ずに、
全く応答しない駄目アプリになる。

小規模なサンプルプログラムをいじっている程度なら気にならないが、
まともなものを作ろうとすると、そんな手法は使い物にならない。

798 :デフォルトの名無しさん:2008/09/06(土) 09:03:48
読み込みだけは非同期で何とかなるが。

799 :デフォルトの名無しさん:2008/09/06(土) 09:06:44
結局どうすればいいのさ
別スレッドでゲームループを回すの?

800 :デフォルトの名無しさん:2008/09/06(土) 09:11:21
スレッド以外に選択肢はない

801 :デフォルトの名無しさん:2008/09/06(土) 09:36:42
スレッド以外の選択肢が思い浮かばない奴は馬鹿

802 :デフォルトの名無しさん:2008/09/06(土) 09:43:32
↑馬鹿

803 :デフォルトの名無しさん:2008/09/06(土) 10:22:26
↑大馬鹿

804 :デフォルトの名無しさん:2008/09/06(土) 10:30:17
一通り状況は分かったはずだから、あとは使う人間が判断すればいい。
小規模なものならメッセージループでやってもいいし、
負荷がかかるものならスレッドをわければいい。

805 :デフォルトの名無しさん:2008/09/06(土) 11:23:50
メッセージをスレッドで処理してゲームをwinmainで進めるのと
メッセージをwinmainで処理してゲームをスレッドで進めるのはどっちが素敵?

806 :デフォルトの名無しさん:2008/09/06(土) 11:26:20
>>805
後者

807 :デフォルトの名無しさん:2008/09/06(土) 11:27:51
>>805
マジレスすると、メッセージキューはスレッドごとに独立しているから、
ウインドウを作成したスレッド以外では処理できない。

808 :デフォルトの名無しさん:2008/09/06(土) 13:23:13
警察ならまだしも私立探偵が人の部屋に勝手に入って捜査していいもんなの?

809 :デフォルトの名無しさん:2008/09/06(土) 13:24:55
あれれー誤爆しちゃったぞー

810 :デフォルトの名無しさん:2008/09/06(土) 14:01:10
警察だろうがなんだろうが、現行犯でなければ令状無しに捜査することは出来ない。

811 :デフォルトの名無しさん:2008/09/06(土) 15:45:13
異なるスレッドからひとつのグローバルな変数にアクセスするときに
書き込みと書き込み、書き込みと読み込みだとやばいってのはわかるんだけど
読み込みと読み込みだったら別に安全な気がするんだけど、どうなんでしょう?やっぱりだめですか?


812 :デフォルトの名無しさん:2008/09/06(土) 15:53:08
>>811
安心しろ、大丈夫。

813 :デフォルトの名無しさん:2008/09/06(土) 19:44:20
InterlockeExchange

814 :デフォルトの名無しさん:2008/09/06(土) 19:51:50
>>811
volatileで十分w

815 :デフォルトの名無しさん:2008/09/06(土) 19:59:30
InterlockedExchangeだった

816 :デフォルトの名無しさん:2008/09/06(土) 22:17:28
CreateDialogIndirectParamで作ったダイアログにSetWindowTextでタイトルを設定しようとしたら
WM_SETTEXTメッセージのLPARAMが空になっていました。なぜなのでしょうか?

817 :デフォルトの名無しさん:2008/09/07(日) 11:07:08
HeapCreateの最大サイズを0にしておけばHeapAllocで初期サイズを超えるメモリをとっても問題ないってことですか?
細かい管理を考えなければHeapCleate(0, 0, 0)でいいってことでしょうか

818 :デフォルトの名無しさん:2008/09/07(日) 12:12:54
> HeapCleate(0, 0, 0)でいい

はい

819 :デフォルトの名無しさん:2008/09/07(日) 14:03:10
Cleate(笑)

820 :デフォルトの名無しさん:2008/09/07(日) 14:31:59
っつーか質問じゃないんだけど
ちょっと玄人気取りで_endthreadexでスレッド終了してると、デストラクタ呼ばれないのな。
頭では分かっていたはずなのに、なんだこの体たらく。俺どんだけ素人なんだ・・

821 :デフォルトの名無しさん:2008/09/07(日) 14:46:38
ウインドウにスキン機能をつけたいと考えています。
アルファ付きPNGをアルファブレンドしながらウインドウと合成して表示するにはどうしたらよいでしょうか?

Win2000以降のレイヤードウインドウがそれかと思いましたが、
カラーキーを利用して一部のみをクリッピング?する、及び、
全体を透明度を指定して半透明化するサンプルしか見つかりませんでした。

822 :デフォルトの名無しさん:2008/09/07(日) 14:48:58
>>821
UpdateLayeredWindow

823 :デフォルトの名無しさん:2008/09/07(日) 15:05:21
>>822
thanx!!
UpdateLayeredWindowで32bit bitmapのDCを渡してやればいけそうです

824 :デフォルトの名無しさん:2008/09/07(日) 16:04:34
>>820
素直にreturnしなはれ

825 :デフォルトの名無しさん:2008/09/07(日) 16:24:25
タブコントロールについて質問です。TVIF_TEXTでマスクを初期化して追加したタブを
TabCtrl_GetItemマクロで取得した時何故かTCITEM構造体のmaskメンバがとんでもなくでかい数に
なっています。表示等はされているのですが、どんな現象が起こっていると考えられるのでしょうか?

826 :デフォルトの名無しさん:2008/09/07(日) 16:27:56
ListCtrlにツールチップ作ってサブアイテム判別し表示させようと思って作ったのはいいんだけど
debugビルドだと何も問題ないのにreleaseビルドになると作ったツールチップが上手く機能しない
Spy++で見てみるとreleaseだとツールチップのメッセージが全く無関係で親子関係のないツールチップから飛んできてるし
debugだと普通に自分で作ったツールチップから飛んできてるのに・・・
なんなんだこれは('A`)

827 :デフォルトの名無しさん:2008/09/07(日) 18:05:57
別々の場所にある2台のPCそれぞれについて
同じ処理を行なったときの時刻を求めたいと考えています。

GPSを用いて1msくらいの精度でPC間の時刻同期はできると思うんですけど
GetLocalTimeを用いてそれぞれのPCで特定の処理を行なった瞬間の時刻を求めても
10msくらいの精度でしか現在時刻を取得することができません。

timeGetTimeとかだと1ms精度のタイマとなるようですが
時刻を求めるような関数ではありません。

Windows上で、ms精度で現在時刻を求めるような方法ってありませんか?

828 :デフォルトの名無しさん:2008/09/07(日) 18:12:20
NTPサーバを利用する

但し、精度はネットワーク品質に依存

829 :827:2008/09/07(日) 18:29:27
>>828
ありがとうございます。

時計合わせのほうはGPSを用いて1msくらいの精度は出せると思うんですけど
プログラム上での時刻取得の精度を上げたいと考えています。

830 :デフォルトの名無しさん:2008/09/07(日) 18:39:26
>>829
デバッグビルドで動作するがリリースビルドでこける現象の99%はワークの初期化忘れ。

831 :デフォルトの名無しさん:2008/09/07(日) 18:40:15
>>830
>>826
×>>829

832 :デフォルトの名無しさん:2008/09/07(日) 18:43:04
>>829
ちょっとググってみたが、Windowsは15.625msか10.0144msおきの
クロック割込みで時刻を進めるという話ばかりだぞ。無理じゃないか?

>>828
SNTPじゃないNTPならネットワークの遅延も考慮して計算するはず。

833 :デフォルトの名無しさん:2008/09/07(日) 18:44:37
確か、デバッグビルドだと確保したスタックやメモリは0xccで埋められるんだったな
てか確保したメモリを自動的に0x00で埋めてくれるコンパイラオプションが欲しい

834 :デフォルトの名無しさん:2008/09/07(日) 19:20:17
WM_MOUSEWHEELからホイールを上下どちらに動かしているかを取ろうとしています

short delta = GET_WHEEL_DELTA_WPARAM(wp);

if(delta > 0)
 printf("UP!\n");
else
 printf("DOWN!\n");

これでやるとホイールを上下どちらに動かしても常にDOWNしか取れません
正の値が上で負の値が下と思ってるんですが違うんでしょうか?

835 :デフォルトの名無しさん:2008/09/07(日) 19:36:00
>>829
GPSから時刻が得られるなら、GPSから得ればいいじゃないか。

836 :デフォルトの名無しさん:2008/09/07(日) 19:51:21
QueryPerformanceCounterとGPSのPPSあたりでPLLを構成するとか。
10MHz Outの出るGPSでをカウンタに突っ込むとか。

837 :デフォルトの名無しさん:2008/09/07(日) 20:06:59
言えない・・・
ASSERT()にAPI突っ込んでいただなんて言えない・・・

838 :デフォルトの名無しさん:2008/09/07(日) 20:18:04
assertに副作用のある式を書くなとあれほど

839 :デフォルトの名無しさん:2008/09/07(日) 20:18:30
ASSERT()使ったことないんだけぢ

840 :デフォルトの名無しさん:2008/09/07(日) 20:51:53
ASSERTを使ったことが無い奴は大したプログラムを書いたことが無い奴

841 :デフォルトの名無しさん:2008/09/07(日) 21:44:51
どんなときに使うの?

842 :デフォルトの名無しさん:2008/09/07(日) 22:36:28
>>825
タブのマスクはTCIF_TEXTでは

843 :デフォルトの名無しさん:2008/09/07(日) 22:36:47
アサートしたいとき

844 :デフォルトの名無しさん:2008/09/07(日) 22:45:18
>>830
デバッグビルドで、0x00が格納されているならともかく、
0xccで埋められてるのに動作するってのは変じゃない?

845 :デフォルトの名無しさん:2008/09/07(日) 23:01:34
ターミナルサービスとかで接続すると別のセッションができますよね
この「自分とは別のセッション」に任意のプロセスを生成することって出来ますか?
(CreateProcessにセッションIDを指定するようなイメージ)

よい方法があれば教えてもらえるとうれしいです

846 :デフォルトの名無しさん:2008/09/07(日) 23:03:38
>>830
俺はバッファオーバフローをおすね

847 :デフォルトの名無しさん:2008/09/07(日) 23:18:18
デバッグビルドだと、大きめにメモリが確保されるんで、
少々はみ出して書き込みしても大丈夫だけど。
リリースビルドだと、モロ、他の変数の値を破壊してしまうから、
だったかな。

848 :デフォルトの名無しさん:2008/09/07(日) 23:21:42
普通デバッグビルドだとオーバーラン検知のために
シグネチャを埋め込んであるもんだと思ったが
DEADBEEFとか

849 :デフォルトの名無しさん:2008/09/07(日) 23:26:40
>>848
cc をうっかり「実行」するとブレークするから cc で埋めるんだよ

850 :デフォルトの名無しさん:2008/09/07(日) 23:32:18
あぁスタックの話ね

851 :デフォルトの名無しさん:2008/09/08(月) 00:08:03
自作プログラムからCFカード上(固定、リムーバブルどちらでも)のボリュームの削除をするプログラムを作成しております。
DeviceIoControlを使用して、
FSCTL_LOCK_VOLUME
IOCTL_DISK_SET_DRIVE_LAYOUT
IOCTL_DISK_VERIFY
FSCTL_UNLOCK_VOLUME
の順番で実行させてみましたがIOCTL_DISK_VERIFYが失敗し上手く作成できませんでした。
CreateFileでのデバイスハンドルは正常に取得出来ています。

また削除の方は、着手出来ていませんが
FSCTL_DISMOUNT_VOLUMEを使用すれば良いのでしょうか?

サンプルソースの情報などありましたらよろしくお願いいたします。

852 :デフォルトの名無しさん:2008/09/08(月) 01:16:30
>>845
CreateProcessAsUserとかCreateProcessWithLogonWとかでどぉ?

853 :デフォルトの名無しさん:2008/09/08(月) 05:42:29
>>852
どうもです
まだ試してないのですが 
サービス経由で当該セッションのwinlogon.exeのトークンを取得してCreateProcessAsUser
で出来るみたいです 

854 :デフォルトの名無しさん:2008/09/08(月) 07:00:20
>>844
ヒント:AUTO変数

855 :デフォルトの名無しさん:2008/09/08(月) 08:31:00
>>853
わが国のITはユーザに使用法を十分説明する時間がありません。
このため、初心者がベテランに疑問についてたずねる光景を目にすることがあります。
しかし本来は事故(情報漏えいなど)が発生した場合の責任は、
接続業者、サーバ運営者、システムを開発したエンジニアにあります。
メーカあるいは購入店にたずねるべきです。
利用者の仕事は自治(掲示板の秩序を守ること)です。助言を行ってはなりません。
素人が専門技術に言及するのは「親切」ではありません。「無責任」です。
海外のプロフェッショナルは、「私の仕事ではない」と答えるはずです。

856 :デフォルトの名無しさん:2008/09/08(月) 08:36:14
スレタイの趣旨を思いっきり無視しているなw

857 :デフォルトの名無しさん:2008/09/08(月) 12:44:30
>>838-840
リリースビルドでも式を評価だけはするVERIFYってなかったっけ
あれはMFCか?
まあ無ければ自分で書きゃいいんだが

858 :デフォルトの名無しさん:2008/09/08(月) 12:45:43
自分で書くなんて御免だね

859 :デフォルトの名無しさん:2008/09/08(月) 13:30:37
じゃあオレが代わりに書いてやる

860 :デフォルトの名無しさん:2008/09/08(月) 14:13:52
いや俺が

861 :デフォルトの名無しさん:2008/09/08(月) 14:18:28
じゃ書いて

862 :デフォルトの名無しさん:2008/09/08(月) 14:31:11
お前がかけよ

863 :デフォルトの名無しさん:2008/09/08(月) 14:35:47
うん

864 :デフォルトの名無しさん:2008/09/08(月) 14:54:31
やっぱり俺が

865 :デフォルトの名無しさん:2008/09/08(月) 14:55:49
どうぞどうぞ

866 :デフォルトの名無しさん:2008/09/08(月) 14:57:05
#define VERIFY(a) (a)

867 :デフォルトの名無しさん:2008/09/08(月) 15:02:21
HDC hForeScrDC, hBackScrDC;
HBITMAP hBackScrBMP, hFormerBMP;
ダブルバッファリングでアニメーションさせたいんですが
流れは↓見たいな感じで間違いないでしょうか?

hForeScrDC = GetDC(hWnd);
hBackScrDC = CreateCompatibleDC(hForeScrDC);
hBackScrBMP = CreateCompatibleBitmap(hBackScrBMP, width, height);

hFomerBMP = (HBITMAP)SelectObject(hBackScrDC, hBackScrBMP);

while(アニメーション中){
// hBackScrDCに描画
BitBlt(hForeScrDC, x, y, width, height, hBackScrDC , 0, 0, SRCCOPY);
}

SelectObject(hBackScrDC, hFormerBMP);

DeleteObject(hBackScrBMP);
DeleteDC(hBackScrDC);
ReleaseDC(hWnd, hForeScrDC);


868 :デフォルトの名無しさん:2008/09/08(月) 15:04:01
すいません間違えました
ダブルバッファリングでアニメーションさせたいんですが
流れは↓見たいな感じで間違いないでしょうか?

HDC hForeScrDC, hBackScrDC;
HBITMAP hBackScrBMP, hFormerBMP;

hForeScrDC = GetDC(hWnd);
hBackScrDC = CreateCompatibleDC(hForeScrDC);
hBackScrBMP = CreateCompatibleBitmap(hBackScrBMP, width, height);

hFomerBMP = (HBITMAP)SelectObject(hBackScrDC, hBackScrBMP);

while(アニメーション中){
// hBackScrDCに描画
BitBlt(hForeScrDC, x, y, width, height, hBackScrDC , 0, 0, SRCCOPY);
}

SelectObject(hBackScrDC, hFormerBMP);

DeleteObject(hBackScrBMP);
DeleteDC(hBackScrDC);
ReleaseDC(hWnd, hForeScrDC);

869 :デフォルトの名無しさん:2008/09/08(月) 15:36:15
複数のエディットコントロールを配置して
エンターが押されたら次のコントロールに移動するようにしたいのですが
日本語変換して決定するときのエンターも取得されてしまいます。

今はフック関数の中でエンターが押されたかどうかで調べていますが
変換決定のエンターと移動する際に押すエンターを区別する方法はありますか?

.net2003 C++

870 :デフォルトの名無しさん:2008/09/08(月) 15:45:19
WM_IMECOMPOSITION見たら?

871 :デフォルトの名無しさん:2008/09/08(月) 16:21:29
調べてみてとても参考になりました。
ありがとうございました。

872 :デフォルトの名無しさん:2008/09/08(月) 16:54:02
もちろん俺が答えました

873 :デフォルトの名無しさん:2008/09/08(月) 17:05:46
各ユーザーのAppDataにデータを保存するアプリを作っています。
これのアンインストーラを自前で用意するんですが、AppData内のデータを削除するのに
例えばユーザーA・B・Cの3人がこれを使っていたとして、Aがアンインストールを実行すると、
A\AppDataはCSIDLでAppDataを拾えば消せますけど、B\AppDataやC\AppDataは簡単には
消せない(簡単にパスが拾えない)と思います。

これは自前で各ユーザーを列挙し、そのフォルダを消すように実装するしかないでしょうか?
アンインストーラは管理者権限を必要とさせますので削除権限は問題ないと考えられます。

WindowsInstallerのAPIなどにはこういう処理に対応するものがあるんでしょうか。

874 :デフォルトの名無しさん:2008/09/08(月) 17:16:06
すみません。うんこしてきます。

875 :デフォルトの名無しさん:2008/09/08(月) 17:39:00
基本的にアンインストールでデータは消さないんじゃないの?
再インストールのたびに初期化されたらたまらんw

876 :デフォルトの名無しさん:2008/09/08(月) 23:53:24
>>868
CreateCompatibleBitmapの引数がおかしい。

877 :デフォルトの名無しさん:2008/09/09(火) 01:29:47
乱数発生用のWIN32APIとかって無いの?

878 :デフォルトの名無しさん:2008/09/09(火) 01:35:43
CryptGenRandom

879 :デフォルトの名無しさん:2008/09/09(火) 02:53:04
>>122
ベンダーと組んで
専用マウス強制販売

それ以外はシャットアウト

880 :デフォルトの名無しさん:2008/09/09(火) 03:14:59
__beginthreadとSEHの事で質問です
現在、__beginthreadを用いてスレッドを生成するユーティリティクラスを作り使用しています
これによって生成された任意のスレッド内でメモリアクセス違反などの例外が発生した場合に
SEHにて捕捉したいのですがどのようにすればいいのでしょうか?

881 :デフォルトの名無しさん:2008/09/09(火) 07:29:41
__beginthread なんて見当たらないが、自作関数か?

_beginthread や _beginthreadex なら見つかったが。

882 :デフォルトの名無しさん:2008/09/09(火) 12:37:58
関数名間違いはいいとして
普通にスレッド関数内で何とかすればいいだろ

883 :デフォルトの名無しさん:2008/09/09(火) 12:49:21
プログラムがメモリリークしてるかどうかチェックするにはどうすればいい?

884 :デフォルトの名無しさん:2008/09/09(火) 14:51:16
とりあえずうんこしてくるからそれまでにレスしとけよ

885 :デフォルトの名無しさん:2008/09/09(火) 15:36:15
どうやってメモリを確保してるかによる

886 :デフォルトの名無しさん:2008/09/09(火) 15:42:46
うんこしてきた

887 :デフォルトの名無しさん:2008/09/09(火) 15:49:21
APIで?

888 :デフォルトの名無しさん:2008/09/09(火) 15:53:15
BoundsChecker とか Purify 使うとか

889 :デフォルトの名無しさん:2008/09/09(火) 15:55:09
APIでうんこしないよばかー

890 :デフォルトの名無しさん:2008/09/09(火) 19:49:34
ウィンドウが完全に破壊されるのは、WM_DESTROYを経てウィンドウプロシージャを抜けた直後と考えてよいのですか?
もしそうならば、PostQuitMessageでポストしたものが、メッセージループのGetMessageに届いたときには、
すでにウィンドウは存在しないということですか。

891 :デフォルトの名無しさん:2008/09/09(火) 20:08:53
まだその後にWM_NCDESTROYが来るけど、
まぁそのときにはウィンドウはすでに存在しないかもね

892 :デフォルトの名無しさん:2008/09/09(火) 20:40:12
じゃあスレッドが破棄されるタイミングは?

893 :デフォルトの名無しさん:2008/09/09(火) 20:45:01
プロセス終了時じゃね

894 :デフォルトの名無しさん:2008/09/09(火) 23:37:36
すいません。今まで4:3の液晶ディスプレイを使って自作ゲームをフルスクリーンの640x480の解像度で表示してきたのですが、
この度ワイド液晶を導入したところ、ゲームの画面が横に伸びた感じで表示されてしまいます。
液晶ディスプレイがどちらでも4:3のときのように表示できるようにするにはどうしたらいいですか。

895 :デフォルトの名無しさん:2008/09/09(火) 23:41:37
モニタかビデオカードの設定。

896 :デフォルトの名無しさん:2008/09/09(火) 23:41:50
ビデオカードかディスプレイ側のストレッチを切るか、
ディスプレイが対応する適切な対応解像度にプログラム側が対応する

897 :デフォルトの名無しさん:2008/09/10(水) 00:39:00
>>611
WM_GETFONTメッセージでHFONT取得したあとに
SelectObjectしなきゃいけなかったらしいです

GetDCとSendDlgMessageで同じHWND使ってるのに
関連付けを自分でやんなきゃダメってちょっと納得いかない(´・ω・`)

で、これすることで正確なTEXTMETRIC構造体がとれるようになった

いじょ

898 :デフォルトの名無しさん:2008/09/10(水) 09:43:15
>>897
そんな事は 常 識 です

899 :デフォルトの名無しさん:2008/09/10(水) 12:10:02
くだらない消防が紛れ込んでるなぁ…

900 :デフォルトの名無しさん:2008/09/10(水) 13:34:39
くだらない厨房がご立腹ですよおまえら

901 :デフォルトの名無しさん:2008/09/10(水) 13:44:25
す、すいません

902 :デフォルトの名無しさん:2008/09/10(水) 13:53:04
くだらない厨房が紛れ込んでるなぁ…

903 :デフォルトの名無しさん:2008/09/10(水) 15:09:34
くだらない消防がご立腹ですよおまえら

904 :デフォルトの名無しさん:2008/09/10(水) 16:49:02
す、すいません

905 :デフォルトの名無しさん:2008/09/10(水) 17:15:00
とりあえずうんこしてくるからそれまでにレスしとけよ

906 :デフォルトの名無しさん:2008/09/10(水) 17:23:40
どうやってメモリを確保してるかによる

907 :デフォルトの名無しさん:2008/09/10(水) 17:27:42
うんこしてきた

908 :デフォルトの名無しさん:2008/09/10(水) 17:29:14
while (1) {
 Unko();
}

909 :デフォルトの名無しさん:2008/09/10(水) 17:35:20
void Unko(){
exit(EXIT_SUCCESS);
}

910 :デフォルトの名無しさん:2008/09/10(水) 17:41:44
いまうんこしながられすしてるとこ

911 :デフォルトの名無しさん:2008/09/10(水) 18:59:12
作っているプログラムがクラッシュする度にユーザーのフォルダの中にある
ReportArchive ってフォルダにクラッシュ情報がどんどん溜まるんですが、
あれはいつか排泄されるんもんでしょうか。下剤とかあるなら教えて下さい。

912 :デフォルトの名無しさん:2008/09/10(水) 19:07:51
今下痢してるから

913 :デフォルトの名無しさん:2008/09/10(水) 19:09:07
汚いスレだなぁ

914 :デフォルトの名無しさん:2008/09/11(木) 08:38:20
他のプログラムを起動する方法を教えてください。

915 :デフォルトの名無しさん:2008/09/11(木) 08:45:19
エクスプローラでファイルをダブルクリックする

916 :デフォルトの名無しさん:2008/09/11(木) 08:59:24
          ハ,,ハ
   _    ( ゚ω゚ ) お断りします
  ◎ー)   /    \
   |  |  (⌒) (⌒二 ) ブッ!ブバァァ!!ビチビチィィ!!
   ~~~  /⌒ヽ( ̄、 ヽ プシャァァ!!ブチャブチャァァ!!!
      /    Lヽ \ノ ゲリゲリー!!ブリュッブリュブリュゥゥ!!!
      ゙ー―――(__)

917 :デフォルトの名無しさん:2008/09/11(木) 10:35:59
shellexecuteex

918 :デフォルトの名無しさん:2008/09/11(木) 11:43:16
ダブルバッファリングでちらつきを抑えるのには成功したんですけど
たまに残像というか微妙なちらつきが現れます
ゲームボーイのようにロゴマークを画面外から中央まで落とすといった白黒のアニメーションなんですが・・・
これは画面のリフレッシュレートの問題なのでしょうか?


919 :デフォルトの名無しさん:2008/09/11(木) 11:52:45
背景書き直しを抑制してない、とか?
まあVsync跨いでんじゃないかとは思うが。

920 :デフォルトの名無しさん:2008/09/11(木) 11:58:08
vsyncでぐぐったらそれっぽかったです
本当にありがとうございました

921 :デフォルトの名無しさん:2008/09/11(木) 12:19:09
ぐぐってみたかんじ垂直同期を待つWIN32APIはないっぽいすね
DirectXかOpenGLあたりならできるみたいですけど・・・
勉強することが増える一方で作りたいものがなかなか進まないよ

922 :デフォルトの名無しさん:2008/09/11(木) 12:48:09
そりゃそうさ
一人で何でもかんでも作れたらゲーム会社なんか必要ない

923 :デフォルトの名無しさん:2008/09/11(木) 12:54:54
一人で何でもかんでも作れない奴が職業プログラマになるんだろ

924 :デフォルトの名無しさん:2008/09/11(木) 13:00:03
>>921
GDIならInvalidateRect()+WM_PAINTで描画してれば、ある程度ティアリングは抑えられるんじゃないか。
他のイベントでGetDC()して描画してるとティアリングが起きやすい気がする

925 :デフォルトの名無しさん:2008/09/11(木) 13:09:42
WM_PAINTの時点で問題外

926 :デフォルトの名無しさん:2008/09/11(木) 13:32:44
>>925
知らないならレスしないでくださいうざいです

927 :デフォルトの名無しさん:2008/09/11(木) 14:40:04
borland Compilerでソフト作った場合、ランタイムは
いるんですか?

928 :デフォルトの名無しさん:2008/09/11(木) 14:40:33
>>921
WPFの世界においで

929 :デフォルトの名無しさん:2008/09/11(木) 14:54:05
WPFは面白そうなんだけど、ゲーム向きなんでしょうか?

930 :デフォルトの名無しさん:2008/09/11(木) 14:59:03
それをいうならGDIもゲーム向きじゃないんじゃ

931 :デフォルトの名無しさん:2008/09/11(木) 15:02:16
>>925
マジレスすると、GDIなら問題外でも何でもない。
WM_PAINTの更新領域を、ダブルバッファの完成してる方から画面に
BitBltするのは、当たり前の技法だ。
WM_PAINTじゃなくてWM_DRAWだろとかいうんなら、それはまた別の話。
WM_PAINTでダブルバッファの裏側を描画するとか言うなら、確かに論外。

>>921
windows3.1/95時代に、Inside windowsあたりで、GDIの描画はちゃんと
VSYNC見てるとかいう話が出てたような気がする。だから無いのかも。

>>924
GDIは、スレッドセーフに出来ていないので、複数スレッドで同期を取らずに
描画したりすると、画面が変になるかも。あとGDIの実行キャッシュをフラッシュ
せず、CreateDIBSectionあたりで取得したサーフェスに直接書き込んでも変になる。

932 :デフォルトの名無しさん:2008/09/11(木) 17:05:43
WM_DRAW(笑)
ホントに何も知らないんだな

933 :デフォルトの名無しさん:2008/09/11(木) 17:07:38
>>932
知らないならレスしないでくださいうざいです

934 :デフォルトの名無しさん:2008/09/11(木) 17:19:23
WM_DRAWって何だ?
もしかしてMFCのOnDraw()はWM_DRAWというメッセージのハンドラだと思ってるのか?

935 :デフォルトの名無しさん:2008/09/11(木) 17:24:37
>>934
知らないならレスしないでくださいうざいです

936 :デフォルトの名無しさん:2008/09/11(木) 17:25:00
>>935
知らないならレスしないでくださいうざいです

937 :931:2008/09/11(木) 17:25:33
WM_DRAWすら知らないお子様がプログラミングする時代なのね

938 :デフォルトの名無しさん:2008/09/11(木) 19:02:20
モードレスダイアログを使うときはIsDialogMessageでチェックする必要があるみたいだけど
複数のモードレスダイアログがある場合はその全てについてチェックすべきなん?

939 :デフォルトの名無しさん:2008/09/11(木) 19:07:34
http://www.google.co.jp/search?num=100&hl=ja&q=WM_DRAW&lr=lang_ja

940 :デフォルトの名無しさん:2008/09/11(木) 20:06:15
>>929
そんなことはない。
コントロールの柔軟性が高さは一度体験してみるべき。

941 :デフォルトの名無しさん:2008/09/11(木) 20:22:57
日本語でおk

942 :デフォルトの名無しさん:2008/09/11(木) 20:53:56
>>941
そのようなaものが全くありません。
コントロールの柔軟性は一度高さになるべきです。

943 :デフォルトの名無しさん:2008/09/11(木) 21:28:06
>>938
アクティブになっているダイアログだけチェックすればおk

944 :デフォルトの名無しさん:2008/09/11(木) 21:40:24
>>943サンクス
ところで自作ウィンドウクラスのイベントハンドラを呼び出す時SetProp/GetPropを使って
ポインタを取り出すのと、std::mapで関連付けた物を使うのとではどっちの方がいいんだろうか
使い分けってことだろうけど・・・

945 :デフォルトの名無しさん:2008/09/11(木) 21:53:30
聞きたいことがありまして質問させてください。

開発環境は、XP SP2、VS2005 Standard Edition
VC++ 2005、Win32API + SDKでプログラミングしおります。

時計アプリを作っています。

クイック起動にある「デスクトップの表示」をクリックして
全ウィンドウがデスクトップから最小化されますが、時計アプリだけ
ウィンドウを表示したままにしたいのです。

時計アプリを最前面にすると「デスクトップの表示」をクリックしても
時計アプリのウィンドウが表示されたままになりますが、時計アプリの
ウィンドウの最前面を解除するとどうしても隠れます。
何かウィンドウメッセージが来ればいいのですが、それらしきメッセージが
来ません。

アドバイスをお願いいたします。

946 :デフォルトの名無しさん:2008/09/11(木) 21:55:45
最小化された時反応するイベントに書いたら?

947 :デフォルトの名無しさん:2008/09/11(木) 22:03:32
最前面に固定しとけばいいんじゃね

948 :デフォルトの名無しさん:2008/09/11(木) 23:22:41
>>944
グローバル変数でmap使うと、
登録とかで書き込み処理するし排他制御がいる分、面倒そうな感じがする。


949 :デフォルトの名無しさん:2008/09/12(金) 00:08:08
Win32APIをがちがちに使ったほうが美しく感じるぜ!

まーためしに土日で両方書いてみたら楽しいんじゃない?

950 :デフォルトの名無しさん:2008/09/12(金) 00:15:58
>>948
map使わずにInterlockedPushEntrySList辺りで書けば排他制御無くせそうだな

951 :デフォルトの名無しさん:2008/09/12(金) 00:35:21
>>949さっきどちらも試してみました。
>>948,950
とりあえず
mapはマルチスレッドで使う時は排他制御がいる。要素数が増えてくるとメッセージ毎のポインタ検索の
負荷が大きくなる。→シングルスレッド・少数起動向け
32APIはマルチスレッドでも使える。ハンドルからポインタを得るのは要素数に対してはO(1)で済む。
→本格的(?)にする場合はこっち?
という感じでしょうか?当面はmapでやってみます。ありがとうございました。

952 :デフォルトの名無しさん:2008/09/12(金) 00:50:16
MyWindow* table[0x4000];

#define HWND2INDEX(hWnd) (((INT_PTR)(hWnd) >> 2) & 0x3fff)

こんな感じでいいだろ。
table[HWND2INDEX(hWnd)]でアクセスできるし排他制御も不要でO(1)だ。

最大の欠点は、Win9x系でしか正常動作しない事ぐらいか。

953 :デフォルトの名無しさん:2008/09/12(金) 00:52:42
それは結構な欠陥だと思うぞw

954 :デフォルトの名無しさん:2008/09/12(金) 02:38:05
逆ならまだしもな

955 :デフォルトの名無しさん:2008/09/12(金) 09:25:04
サンク最強説

956 :デフォルトの名無しさん:2008/09/12(金) 12:20:01
OSどころかCPUに依存しまくるサンクのどこが最強なんだか

957 :デフォルトの名無しさん:2008/09/12(金) 12:29:17
> ハンドルからポインタを得るのは要素数に対してはO(1)で済む
これは大嘘だろ

958 :デフォルトの名無しさん:2008/09/12(金) 13:29:30
要素をそのウィンドウに関連付けられたプロパティとすればO(N)とかでも
要素をウィンドウハンドルの数と考えたらO(1)じゃないの?他のウィンドウは関係ないんだから

959 :デフォルトの名無しさん:2008/09/12(金) 13:52:31
じゃあ要素をそのウィンドウに関連付けられたプロパティとすればO(N)とかでも
要素をウィンドウハンドルの数と考えたらO(1)じゃないの?他のウィンドウは関係ないんだからってこと?

960 :デフォルトの名無しさん:2008/09/12(金) 14:07:43
>>958
はあ?

961 :デフォルトの名無しさん:2008/09/12(金) 21:34:27
SetProp/GetPropがO(1)とかアホすぐるだろwww

962 :デフォルトの名無しさん:2008/09/12(金) 21:36:54
ハッシュで持てよ

963 :デフォルトの名無しさん:2008/09/12(金) 22:13:13
文字列をGUIDに変換したいと思っているのですが、そのようなapiが見つかりません。
GUIDFromStringのような名前のものが欲しいのですが、
StringFromGUID2というGUIDから文字列を取得する関数しかありません。
ご教授願います。

964 :デフォルトの名無しさん:2008/09/12(金) 22:15:21
mapをstatic libに入れて、exeとdllでlibを利用する場合、
mapを唯一にするにはどうしたらいいの

965 :デフォルトの名無しさん:2008/09/12(金) 22:28:49
>>963
つ IIDFromString

966 :デフォルトの名無しさん:2008/09/13(土) 00:21:41
>>964
「map」が何のことか分からないが
exe dll 共に static library をリンクするなら実体は複数になる

exe と dll で
データを共有したい?
コードを共有したい?

967 :デフォルトの名無しさん:2008/09/13(土) 00:48:31
>>966
ひとつのプロセス内のexeとdllでデータを共有したいです。
また、exeが当該static libを使っていない場合もdllを使いたいです。

968 :デフォルトの名無しさん:2008/09/13(土) 00:50:42
共有データセグメント

969 :デフォルトの名無しさん:2008/09/13(土) 00:58:07
>>963>>965
CLSIDFromStringも忘れないで。

GUIDFromStringもあるにはあるけど、使ってほしくないみたい。
http://msdn.microsoft.com/en-us/library/bb776431.aspx

970 :デフォルトの名無しさん:2008/09/13(土) 01:02:01
>>963>>965>>969
こんなもんsscanfで出来るだろ

971 :デフォルトの名無しさん:2008/09/13(土) 01:07:23
>>970
よく寝たほうがいい

972 :デフォルトの名無しさん:2008/09/13(土) 01:10:06
↑話を理解してない馬鹿

973 :967:2008/09/13(土) 12:55:47
>>968
これだとプロセス間で共有されるような気が

974 :デフォルトの名無しさん:2008/09/13(土) 13:16:18
グローバルじゃない方のAtomは一応プロセス単位で一意だな。
とはいえ、素直に共有DLL使ってシングルトンした方が良いような気もするけど。

975 :デフォルトの名無しさん:2008/09/13(土) 15:19:20
PIDで名前付き共有メモリブロックでも使ったらいいんでね?

976 :デフォルトの名無しさん:2008/09/13(土) 15:30:44
> ひとつのプロセス内のexeとdllでデータを共有したい
ってどういうこと?
同一プロセスならアドレス空間が同じだから共有も何も無いんじゃね?

977 :デフォルトの名無しさん:2008/09/13(土) 20:38:21
ウィンドウハンドルだかDCだかなんかをスレッドのパラメーターで渡して操作しようとしたらバグったんだけどなんで?

978 :デフォルトの名無しさん:2008/09/13(土) 20:39:46
>>977
何を渡したのかも分からないのかよw

979 :デフォルトの名無しさん:2008/09/13(土) 20:49:32
>>977
何を渡したのかも正確に書けない馬鹿がプログラムを作ったせい

980 :デフォルトの名無しさん:2008/09/13(土) 21:37:46
結構前のことで忘れちゃったんだよ


981 :デフォルトの名無しさん:2008/09/13(土) 21:48:34
もう忘れるんだ
そして俺の胸の中に飛び込んでこい

982 :デフォルトの名無しさん:2008/09/13(土) 22:06:32
ウィンドウはスレッドに関連づくよ
DCもたぶんそう


983 :デフォルトの名無しさん:2008/09/13(土) 22:07:58
>>981
無理。臭い

>>982
ありがとう

984 :967:2008/09/13(土) 22:26:22
>>976
共有したいデータはstatic libraryの中にあり、
exeとdllはこのlibraryを使っています。
別のexeはこのlibraryを使うけどdllは使わない、
さらに別のexeはこのlibraryを使わないけどdllは使う。

上記のいずれでもデータを一意にする方法を教えてください。

985 :デフォルトの名無しさん:2008/09/13(土) 22:32:22
>別のexeはこのlibraryを使うけどdllは使わない、
>さらに別のexeはこのlibraryを使わないけどdllは使う。

使っていないのならデータが多重にならないんだから、その時点で一意だろ。
頭は大丈夫か?

986 :デフォルトの名無しさん:2008/09/13(土) 23:03:43
共有するのか一意にするのか、どっちなんだよ

987 :デフォルトの名無しさん:2008/09/14(日) 01:29:51
windowsアプリってちょっと作業進めると、新しい知識が入ってきて前にやってた作業部分を書き直したくなってぜんぜん進まないね

988 :デフォルトの名無しさん:2008/09/14(日) 01:32:23
どうせ同じような場面に遭遇するんだからわざわざ書き直さない

989 :デフォルトの名無しさん:2008/09/14(日) 01:36:57
別にWindowsに限ったことではない。

990 :デフォルトの名無しさん:2008/09/14(日) 02:12:48
>>987
お前が未熟なだけだ

991 :デフォルトの名無しさん:2008/09/14(日) 02:22:51
次すれ
http://pc11.2ch.net/test/read.cgi/tech/1217687038/

992 :デフォルトの名無しさん:2008/09/14(日) 02:24:02
立ててきた
http://pc11.2ch.net/test/read.cgi/tech/1217687038/

993 :デフォルトの名無しさん:2008/09/14(日) 07:34:18
アホか

994 :821:2008/09/14(日) 07:55:07
>>821です
UpdateLayeredWindowを使ってみているのですが、
UpdateLayeredWindowに渡すDCのビットマップは
もしかして、表示されるときに加算っぽくされますか?

各ピクセルにアルファを掛けないと上手く表示されません。
(実際には、Color * Alpha / 255)

これってビットマップを合成させるとか、アニメーションさせたいととか思ったら、
オフスクリーン用のBitmapをもう1枚用意して
最後にUpdateLayeredWindowに渡す用に変換するという感じで使うのかな・・・

ネットのサンプルとか見ても、各ピクセルにアルファを掛けないと上手く表示されない件に関して、
記述がなくハマったんですが・・・

995 :デフォルトの名無しさん:2008/09/14(日) 08:13:35
>>994
ttp://msdn.microsoft.com/en-us/library/ms532306(VS.85).aspx

まあその通りなんだが。

996 :821:2008/09/14(日) 08:23:36
そんなところにドキュメントが・・・(´д`)
りgたとう

997 :デフォルトの名無しさん:2008/09/14(日) 17:41:58
WinapiのCHMヘルプ作ってください。 文書はオンラインMSDNを表示します。
最近のヘルプは重いです。

998 :デフォルトの名無しさん:2008/09/14(日) 18:06:40
>>998
CPUとHDDを新しい物に取り替えたら軽くなるよ

999 :デフォルトの名無しさん:2008/09/14(日) 18:11:08
999 !!!!!!


1000 :デフォルトの名無しさん:2008/09/14(日) 18:21:49
しょこたん!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

206 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)