1 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:40:03 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage 【前スレ】 61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
2 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:43:45 ] - MSDN ホームページ www.microsoft.com/japan/msdn/ - MSDN ライブラリ msdn.microsoft.com/library/ msdn.microsoft.com/library/ja/ - MSDN2 ライブラリ msdn2.microsoft.com/en-us/library/ msdn2.microsoft.com/ja-jp/library/ - MSDN ライブラリ (ローカル版) www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=ja www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja - Windows SDK & Platform SDK www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
3 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:44:29 ] - Google www.google.com/ - 猫でもわかるプログラミング www.kumei.ne.jp/c_lang/ - Win32 API入門 wisdom.sakura.ne.jp/system/winapi/ - Win32 プログラミング入門 www7.plala.or.jp/keny01/ - Advanced Windows (書籍) www.amazon.co.jp/dp/4756138055 -おまけ Build19が見たい人で余裕のある人は●でも買ってくれ。
4 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:54:07 ] 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/ 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/
5 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:54:39 ] 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/ 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/
6 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 02:55:10 ] 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 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 03:54:28 ] >>1 乙
8 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 17:41:20 ] いろいろググってわからなかったので、質問します。 GetFocus()でフォーカスのあるウィンドウハンドルを取得し、このウィンドウが文字入力できるかできないかを知るためにはどんな関数があるでしょうか? Immやウィンドウ情報関係を見てみたのですが、見つかりませんでした。 ボタンに対して文字入力できない、エディットボックスはできる、という判定をしたいためです。 有識者の方、よろしくお願いします。
9 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 17:46:44 ] よ〜く考えればわかる
10 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 17:51:07 ] なんか押してみる
11 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:08:06 ] サブクラス化してて入力できるボタンだったり、完全オリジナルなコントロールだったらどうするんだろう?
12 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:13:42 ] WM_GETDLGCODEを送ってみるとか
13 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 19:22:41 ] ウィンドウクラスがEDITかどうかとか
14 名前:前スレ981 mailto:sage [2008/02/05(火) 00:09:30 ] >>984 へんな書き方ですいません。 項目ABCがリソース使ってメニューを作れることは確認してます。 また、項目ABCDEFをリソースで持たずに、全てInsertMenu()でも作ってみました。 わからないのは、 項目ABCはリソースで持ってて、 Bのサブメニューである項目DEFをInsertMenu()あたりの関数で追加して作る方法があるかどうか、 ということでした。 ご存知ありませんか?
15 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:11:44 ] 質問なんですが ウインドウにエディットボックスを作ったのですが エディットはサブクラス化していてWM_PAINTで 線を描画したのですがエディットに書き込むことが できなくなりました。何か良い方法ないですか?
16 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:33:07 ] >>14 D,E,Fを持ったメニューハンドルをhSubMenuとして、 SetMenuItemInfo()でBを書き換えればいいんじゃないの?
17 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 09:09:19 ] >>15 エディットボックスをサブクラス化してWM_PAINTを奪ったんだろ? それって、書き込まれたものを描画してないだけじゃねーの?
18 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 09:49:08 ] どうもすみません、教えてください。 縦スクロールするウィンドウの全てを、1枚の画像としてキャプチャしたいのですが、 PrtScを擬似的に発生させる方法では、不可能ですよね?? (PrtScでは、画面に表示させている部分しかキャプチャされないので・・・) そういった機能を持ったフリーソフトも幾つかある様なので、 何かしら方法があると思うのですが、どうしても分かりません(ググっても分かりませんでした)。 『 縦スクロールするウィンドウの全てを、1枚の画像としてキャプチャする方法 』 をご存知の方は、ぜひともご教授ください。 お願い致します。m(。−_−。)m
19 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:05:20 ] >>18 ウィンドウをスクロールさせつつキャプチャしてるだけだと思われ 現在のスクロールバーの位置みて、動的に描画してるアプリもあるだろうし、 API一発でゴッソリ抜けるってのはないかと
20 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:20:59 ] > PrtScを擬似的に発生させる方法では、不可能ですよね?? 仮にそんな方法で出来たとしてもキャプチャの為だけにクリップボードを勝手に書き換えるソフトなんてやだなあ それはそうと、IEの描画をキャプチャしてるソフトとかはIEのinterface使ってると思われ とりあえずIHTMLPainterとかそれっぽいのが見つかった IE以外だとスクロールバーを自前で描いてるソフトもあるから結構難しいと思う
21 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:25:17 ] 既にある加え新しく作ったウィンドウを作った場合、そのウィンドウを終了する際の 処理ってDestroyWindowだけでPostQuitMessage(0);はいらないんですか? PostQuitMessage(0);をすると全てのウィンドウが消えてしまうんですが
22 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:32:26 ] >>21 いらない PostQuitMessageはメッセージループを終了させるのに使う
23 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:56:47 ] PostQuitMessageはメインウインドウのWM_DESTROYで呼ぶべや。 メインウインドウをDestroyするのにPostQuitMessageを使ってたんか?
24 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 11:13:51 ] >>22 ありがとうございます。メッセージループを抜けるときだけに使うんですね >>23 WM_DESTROYでPostQuitMessageしてたんで、新しく作ったウィンドウのプロシージャ の方にWM_DESTROYがきたときもPostQuitMessageしたらプログラムが終了してしまった ので聞いてみました
25 名前:デフォルトの名無しさん [2008/02/05(火) 15:07:02 ] Win32プログラミングに関して英語で一番情報量が多いサイトってMSDN以外にはどこがありますか?
26 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:08:25 ] Google
27 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 16:03:14 ] >>26 MSDNを入れても一番情報量が多いなw
28 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:10:31 ] ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_118.htm このプログラムのhChild1のハンドルがFindWindow("mychild1",NULL)では取得できませんでした 取得できない理由を教えてエロい人
29 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:27:42 ] msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_findwindow.asp 調べろカス
30 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 18:42:17 ] うは。。。親を持たないウィンドウのみだったのね。。。
31 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:48:42 ] >>28 のプログラムでいうhWndのハンドルってグローバル使わない方法で取得するとしたらスマートな方法ある? あとCreatWindow()で親ウィンドウのハンドルだけ与えてWS_CHILDをつけないのって問題あり?
32 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:17:17 ] #define WS_OVERLAPPED 0x00000000L
33 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:18:22 ] >>31 前者の答えとしては、作成時に渡したIDでGetDlgItemを呼び出すか、 SetPropでウィンドウにデータを関連付けてしまう方法もある。 後者は、WS_CHILDもWS_POPUP無しだとWS_OVERLAPPEDになるな。 で、指定した親ウィンドウは、作ったウィンドウのオーナーになる。
34 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:57:49 ] _CrtSetDbgFlagで LocalAllocの発見は出来ないですか?
35 名前:は@ c44.010.c3-net.ne.jp ◆cplnFO9T0I [2008/02/06(水) 00:48:55 BE:272355269-2BP(1001)] ダイアログボックスについて質問です ・コントロールを一時的に無効化する方法 ・最大化メッセージを奪い取って破棄する方法 (→WM_SYSCOMMANDのSC_MAXIMIZEを横取りしてもうまくいかず、Spy++でアタッチしているときのみうまくいきました) この2つを教えてください。
36 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:21:01 ] >>35 前者:EnableWindow() 後者:wParam == SC_MAXIMIZEの時、return TRUE;
37 名前:8 mailto:sage [2008/02/06(水) 10:06:46 ] 返信いただいた方、ありがとうございます。 >>11 そこまで考慮していませんでしたが、対象外とさせてください。 >>12 試してみましたが、秀丸などエディタに対しては0リターンとなりました。これはウィンドウハンドルがダイアログじゃないからでしょうか。 ウィンドウハンドルならダイアログじゃなくても判断しないといけないので、これは採用できないです。 >>13 >ウィンドウクラスがEDITかどうか を判定するにはGetClassLong(hWnd, GCL_STYLE)を使えということでしょうか?
38 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:14:29 ] ほんとにEDITなのかを確認するのならGetClassName()でいいだろう で、質問者は何のためにそれが知りたいの? WM_CHARを受け付けるかどうかなんて、実際のとこ投げてみるまでわからんと思うが。
39 名前:8 mailto:sage [2008/02/06(水) 10:49:20 ] >>38 エディットボックスだけならGetClassName()でいけそうですが、秀丸のようなエディタのウィンドウだと任意の名称みたいなので、採用できなさそうです。 理由はIMEの仕事をしていまして、キーイベントを受け付けて文字表示する前に、文字入力可能な画面かどうかを判断したかったためです。 まわりくどいことしなくても、もっと◎な方法がありそうな気がして今もググってる最中です(-_-;)
40 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:55:48 ] そこまで行くと汎用的な方法は無いよ ググったって出てこない WM_CHARに対する実装は結局コード書いてる人依存だから エディットボックスだって反応する保障はない
41 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:04:57 ] マジレs 文字入力を支援するというか、標準的な入力として提供してるのがエディトボックスなわけで なにもエディトボックスをサブクラスしないと入力できないわけではない もし 8 が「入力できるウインドウ」と汎用的に言ってるなら 40 の言うように不可能かと。 そもそもエディトボックスしかり、入力したのが表示されるという仕組みまで見ると キーボードから入力があれば、なにを押されたかプロシージャなりで判断し自前のバッファに覚えて 「文字に見える画像やカーソル(キャレット)を画像として表示」しているウインドウにしかすぎない。
42 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:06:57 ] そういやIMEはどこで判断してるんだろうな。 リードオンリーなEDITでも出てこないよな。
43 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:07:21 ] >>39 1. GetWindowLongPtrでウィンドウプロシージャを得る 2. 逆アセンブラを積む 3. 得られたウィンドウプロシージャを順次逆汗してWM_KEYDOWN/WM_CHAR/WM_IME_***に対してエディタっぽい事をしてるか調べる この方法が現実的でない限り、方法は無いといっていいだろうなぁ ま、IMEの状態制御はアプリ側での実装になるからね
44 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:15:06 ] >>42 IMEの動作も実装者任せ。自分でやるならimm.h辺りを使えばいい
45 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:37:34 ] EDITしか使った事ないと、IMEやキャレットが自動的に出てくるもんだと思っちゃうかもな。 だから何か特別"文字入力できるウィンドウ"という属性があると考えるのかもしれない。
46 名前:8 mailto:sage [2008/02/06(水) 12:45:34 ] IMEが持っている情報の中でなんとかやってみる方向になりました。 いや〜IME側の資料ってほんと少ないです。 いろんな意見ありがとうございました。
47 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:46:21 ] 逆にいえば、IMEとしての体裁をしっかり作っておけば相手を気にしなくても動くはずなんだが。
48 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:07:24 ] exeファイルからDLLのように関数をexportすることって出来ますか? 普通ならmain.exe, sub.dllを作ってsub.dllからexportするんでしょうが mainsub.exeみたいにひとつにまとめられたらそうしたいんですが。
49 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:22:43 ] ひとつのexeにまとめるんならエクスポート/インポートする必要ないのでは?
50 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:28:19 ] いやいや
51 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:32:41 ] sub.dllを使うのはどのプログラムなん? main.exeだけだったら>>49 が言うようにmain.exeのソースコード内に書いておけばいい話だし
52 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:47:47 ] _CrtSetDbgFlagで LocalAllocの発見は出来ないですか?
53 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:48:31 ] exeがエクスポート関数を持ちたいって事? ふつーに__declspec(dllexport)とか.defファイル用意とか#pragma comment(linker, "/export:...")で出来ると思うが
54 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:49:13 ] >>52 二度も書くなボケ
55 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:50:53 ] >>52 それくらい、自分で試してみれば済むことだろ
56 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:57:37 ] DLLのスタートアップルーチン呼ばれない、EXEの関数呼び出したらプロセス起動する とか許容できるならいいんじゃないか。
57 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:01:45 ] >>55 試してメモリリークと報告されなかったから聞いているわけだが。
58 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:02:45 ] じゃあ「できない」でFAだろうがw
59 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:07:01 ] YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね / \ 【探した?】 NO → なら、ねぇよ \ NO → 死ね YES → 【成功した?】 ─ YES → じゃあ聞くな死ね / \ 【試した?】 NO → なら、できねぇよ \ NO → 死ね
60 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:25:41 ] ここの存在意義がwww
61 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:33:16 ] 「なら、ねぇよ」の所だけ回答が返ってくる可能性がある
62 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:36:29 ] 試せば分かる事をいちいち聞くな 試して分かった事をいちいち聞くな 探せば分かる事をいちいち聞くな 探して分かった事をいちいち聞くな 当然だろ それに、この程度で存在意義が無くなるスレでもないだろ
63 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:44:21 ] 早く解決策を書け
64 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:53:39 ] 何の解決策だよw
65 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:58:19 ] そもそもCRTはスレ違いだぼけなす
66 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:00:51 ] スレ違いだしCRTのソース読むかMSDN読めば分かるのに、こんな所で一日近く回答待つなんて馬鹿丸出し
67 名前:は@ cr4-172-178.seaple.icc.ne.jp ◆cplnFO9T0I mailto:Tage [2008/02/06(水) 18:19:43 BE:20174922-2BP(1001)] >>36 両者ともうまくいき、ありがとうございます。 ユーザーのリストを取得するにはどうしたらいいでしょうか? とあるスクリプトではDcuments and Settingsにあるフォルダから無理矢理取得しているのですが、 流石にそれはどうかな?と思いまして。
68 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:26:40 ] FormatMessageはAPIだろ
69 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:37:05 ] www.kumei.ne.jp/c_lang/sdk/sdk_100.htm これを参考にスクロールつけてたんですが SB_THUMBTRACKとそれ以外の場合ではスクロール上限が異なってしまいます SB_THUMBTRACKの上限に合わせるにはどうすればよいのでしょうか? nMaxをいじればいいのかと思ってやってたんですがどうにもうまくいかなくて
70 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:56:20 ] 具体的にうまくいかないコードを貼ると解決早い。 HIWORD(wParam)してる?
71 名前:69 mailto:sage [2008/02/06(水) 19:11:42 ] 変数名が変わっただけでコードは全く同じです;; si.nMaxの値を小さくするとLINEUP等のスクロール上限が下がるのですがTHUMBTRACKの上限にも影響が出たのでだめでした そこで、dy = max(-1 * si.nPos, min(dy, si.nMax - si.nPos));の「si.nMax」を「si.nMax-適当な固定値」にすると理想的な結果には近づけました ですが、固定値なんか使うと汎用性皆無なのでどうにかならないかと思い質問させていただきました
72 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:42:31 ] GDI+を使おうと考えてますが、C++で自動変数として用いる場合、問題のあるクラスってありますか? 例えば、Graphics、Font、StringFormat、Bitmap、BitmapData等のクラスを使おうと思っています。 ぱっと見、一応デストラクタで解放されてる気がしますが確信が持てず・・・
73 名前:デフォルトの名無しさん [2008/02/06(水) 19:51:14 ] C♯, C#相談室 Part34 pc11.2ch.net/test/read.cgi/tech/1162467959/
74 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:53:25 ] 素直にauto_ptrやboost::scoped_ptr等と組み合わせたほうがエレガントだと思う
75 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:23:39 ] MSDNライブラリにも特に注意点は載っていなかったはずだし、問題ないと思う。 せいぜい、デストラクタより先にGdiplusShutdown呼ばないように気を付けろ。 >>73 71はきっとネイティブ版の方を使うんだろ。
76 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:24:11 ] >>72 ありません。ただし GDI+ の初期化と開放の前や後で ctor や dtor が 動くといけないので、スタティック変数等では注意が必要か。 >>74 いや、GDI+ (のアレコレ)は C++ でなるべくスタック上に 取るのがスマートだしカッコイイと思う。 .Net で C# なんかだと Dispose の嵐でもーうんざり。
77 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:29:18 ] エディットボックスのクライアント領域内の行数 を調べるにはどうすればよいでしょうか?
78 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:37:52 ] 高さ を フォント高さ で割ってやればよいのではないか
79 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:43:31 ] >>76 C#ならusing使えよ……。
80 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:55:07 ] using( Graphics g = ... ) using(Bitmap bmp= ...) using(Pen pen= ...) using( Brush br1= .. , br2=...) using( Font font= ... ) g.draw〜 やってられっか(w
81 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:57:33 ] なんでインデントつけるんだよ。
82 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:00:49 ] >>74-76 レスありがとうございます。 問題ないようですし、startupやshutdownに注意しつつ、楽な自動変数で行きたいと思います!
83 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:01:37 ] >>81 知恵が無いから。
84 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:19:49 ] スコープだからに決まってるだろ。
85 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:31:44 ] つーかusingする必要あるか? .netならGCが勝手に開放するだろ まーWin9x系を考慮するなら、using使って明示的に開放しとかないとGC作動する前に システムリソース食い潰してOSごと死亡しそうな気はするが
86 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:38:25 ] GCを当てにしていいのはメモリだけ
87 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:16:35 ] というか実際には仮想メモリをどんどん使い始めてなかなか解放してくれないわけだ。 あまり気にしなければそれでいいわけだけど・・・・ Image.FromFile で作ったImage 等他のリソース(この場合ファイル)をつかみっぱなしの オブジェクなんかもあるし。 こういう場合は簡単にスコープと寿命を一致させられる C++ の方が気持ち良いな、俺は。
88 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:22:32 ] C的にDispose乱発するとか。
89 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:24:07 ] いやだからusingがあるんだろ・・・ ってスレ違いだね
90 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:25:42 ] 参照カウンタ付きのスマートポインタ使えばGCなんていらないと思ってる
91 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:27:24 ] それ何てGC?
92 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:30:45 ] それで循環参照の罠に引っかかるわけですね
93 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:33:56 ] using 文マジおすすめ
94 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:39:33 ] >>93 C++でusingしまくってるとGDI+使う時に衝突してエラーになるから一概におすすめとは言えないよ 最近のコンパイラだとエラー出ないようになってるのかも知れんが .Netの事を言ってるならスレチだから他でやってね
95 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:41:40 ] >>94 スレ違い
96 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:43:20 ] >>95 GDI+はスレ違いじゃないよ
97 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:45:04 ] C++はスレ違い
98 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:45:53 ] 名前空間の衝突はスレ違いだな
99 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:47:07 ] C++(/CLI)だと名前空間に別名付けるのが便利。
100 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:53:19 ] おまいらそろそろスレ違い杉w ところで、GDI+ってWin32APIとして見ると画像ファイルの読み書き以外に使える? 描画が全てソフトウェア処理だから重いし、Vistaでこの辺DirectXに丸投げしてくれるかと思ったらそうでも無さそうだし
101 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:57:46 ] もうやめて!GDI+のHPは0よ
102 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:05:25 ] >>100 アルファブレンディングとかしたいけどDirectX使うまでも無いって場合とか。
103 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:05:46 ] >>67 NetUserEnum とか HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥ProfileList みたいなのとか
104 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:08:09 ] >>102 MMXかSSEだろJK
105 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:26:44 ] アンチエイリアシング付き文字を手軽に描画したい時にGDI+使ってるな。 getglyphoutlineで描画するの面倒くさそうだったから・・・
106 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:30:15 ] つまりWPFを使えって事なワケですよ
107 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:51:30 ] wpfはアンマネージドインターフェイスが無いじゃん。 どうしてCOM Interopを可能にしなかったのか不思議で仕方ない。
108 名前:69 mailto:sage [2008/02/06(水) 23:55:22 ] >>70 HIWORD(wParam)がスクロールボックスの現在位置を保持してるのは理解できました これはスクロールボックスの上端の位置を示しているという理解でいいのでしょうか? 上端の位置を保持しているのならswitch文の記述には問題がないように見えます となるとやっぱりswitch文から抜けた後の処理が間違っている??? 他の人の質問に比べて低レベル過ぎて恥ずかしい
109 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:57:42 ] 補間拡大縮小をアルゴリズム設計無しで実装したい案件で使ってる
110 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:06:08 ] GDI+なんてハイフンな問題があるし使えんよ。 support.microsoft.com/kb/944975/
111 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:11:21 ] >>108 WM_VSCROLLのSB_THUMBTRACKの説明を読むと >The high-order word indicates the position that the scroll box has been dragged to. とのことだから、現在位置ではないんじゃね?
112 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:20:20 ] BitBltすらないわけだが
113 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:40:37 ] >>105 CreateFontにANTIALIASED_QUALITYを指定すればいい。
114 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:52:17 ] >>108 とりあえず、メッセージの値は見ずにGetScrollInfoで取得しとけ。 つうか、switch分の処理では絶対位置を確定させるべきだろうに。
115 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:36:28 ] SetWindowsHookEx() で WH_MOUSE を仕掛けるんですが、 カーソルが自プロセスのウィンドウから外に出てしまうとフックが 解除されてるみたいなんですが、解除されない方法あるでしょうか?
116 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:52:08 ] >>113 ANTIALIASED_QUALITYはフォントサイズ小さいとAAかからないってネットで見たので・・・
117 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:23:52 ] >>115 タイマーで監視しとけw
118 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:36:31 ] >>115 自スレッドにフックしてるんだったら当たり前じゃね?
119 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:49:27 ] ALOEZ
120 名前:69 mailto:sage [2008/02/07(木) 03:25:29 ] LINESIZEを1目盛分スクロールした時の移動量とすると スクロールの上限値(si.nMax)は「(表示したい画像の縦幅 - クライアント領域の縦幅)/LINESIZE」でうまいこと行きました スクロールボックスのサイズ(si,nPage)は「クライアント領域の縦幅/LINESIZE」としました これでできたと思ったらウィンドウをかなり小さくしないとsi.nMax==si.nPageにならずスクロールバーが出なくなりました;; スクロールが出現する閾値(表示したい画像の縦幅)≠スクロールの上限値なのにどちらもsi.nMaxがその役割を担っている。。。 どう考えても構造的に矛盾してる気がするんですが・・・
121 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:37:51 ] WM_SIZEがきたときリストビューのカラムの幅(LVCOLUMN ○○.cx)を変更したいんですが どうすればできますか?
122 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:54:17 ] ListView_SetColumnWidth
123 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 04:00:15 ] ありがとうございます
124 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 05:59:46 ] >>110 これ酷いなw 仕様となると、GDI+::String、Drawing::Graphics::DrawStringは使い物にならんな。 結局GDIへ回帰か。
125 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:16:32 ] >>120 WindowsSDKの'About Scroll Bars'から転載しとく。 MaxScrollPos = MaxRangeValue - (PageSize - 1)
126 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:50:13 ] GDI+使わないとAeroGlass上のグラスウィンドウでの描画が変になるんだよなぁ。 ただの図形描画ならDIB弄って何とかなるが、アンチエイリアスでフォント描画する場合に他に解決策がない。 GDIだけであれ解決する方法ないのかね?
127 名前:デフォルトの名無しさん [2008/02/07(木) 13:36:55 ] XP以前とXPとVistaでは、メッセージループに どれくらいの違いがあるのでしょうか? あるとすれば、どのような違いですか?
128 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:56:08 ] メッセージループの違い? 変わらないかと。 どの視点でその疑問を抱いたの?
129 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:34:12 ] >>120 スクロールバー初めて使う人がはまる指定の仕方だな。それ。 nMin, nMax, nPageの指定の仕方というか考え方がおかしい。
130 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 14:59:16 ] あたらしいMSDN Libraryインストールしたんだけど なんであのドキュメントエクスプローラあんなにちらつくん? マウスでフォーカス変えるたびに全画面再描画してるかんじ……
131 名前:69 mailto:sage [2008/02/07(木) 15:09:04 ] まだ、解決できない・・・ >>125 スクロール範囲は思い通りになりましたありがとうございます >>129 できればどこがおかしいのか教えていただけると幸いです・・・
132 名前:デフォルトの名無しさん [2008/02/07(木) 16:50:23 ] すみません、SDK(API)でダイアログベースアプリの勉強してるのですが 1つのエディットコントロールと1つのOKボタンからなるダイアログで エディットコントロール内でリターンキーを押すと、OKボタン押してないのに OKボタンが押されたのと同じ動作をするんです。すごいことにリターンキーに関する処理は書いてないのにですよ。 こんなすごいこと経験した人いる? エスパーさん、何か原因に心あたりないですか?
133 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:57:00 ] そういうものです
134 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:57:08 ] ダイアログなら普通の動作
135 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:58:54 ] デフォルトボタンとかデフォルトプッシュボタンで調べるといいよ
136 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:05:58 ] >>131 問題を勘違いしてたら悪いんだけど 要は、SB_THUMBTRACKだと16ビットしか使えないから、 デカい画像を表示しようとするとうまく動いてくれないってことかな・・・ だったら、wParamでサイズを取らずにGetScrollInfo使えばいいんじゃない?
137 名前:デフォルトの名無しさん [2008/02/07(木) 17:15:59 ] >>133-135 有難う、ありがとう、有難うございました。 ほえー、ダイアログでリターンキー押すことは、デフォルトプッシュボタンを 押すことと同じなのですか。うれしい動作に感動しました、うるうる。
138 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:20:58 ] TranslateMessageの仕事だけどな
139 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:56:42 ] IsDialogMessageの仕事じゃなかったっけ
140 名前:69 mailto:sage [2008/02/07(木) 18:21:06 ] >>136 したいことは「クライアント領域の高さが画像の高さ未満になったときにスクロールバーを出現させ、 SB_THUMBTRACK、SB_LINEUPをはじめ、どのスクロール方法でもスクロール範囲が同じにする」です GetScrollInfoから取得するようにしてるのですが問題は解決せず・・・ >>129 さんの言うとおり根本的なところで間違えているみたいです nMin = 0; nMax = 画像の高さ/スクロール一行分の高さ - (nPage - 1); nPage = クライアント領域の高さ/スクロール一行分の高さ これだとスクロール範囲は思い通りでもスクロールバーが出現する条件がうまくいきません スクロールバー出現条件とスクロール範囲を両立させるにはどうすれば・・・
141 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:34:55 ] nMin=0 nMax=画像の高さ - 1 nPage=クライアント領域の高さ でいいんじゃない? スクロール1行分なんてのは、SB_LINEUP/DOWNのときに動かす量を調節すればいいかと
142 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:39:31 ] GlobalAllocのGlobalRelease呼び忘れわ発見できますか?
143 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:51:10 ] そう>>141 でOK。ってより、「スクロール範囲が同じにする」の条件はようわからんけど。
144 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:47:16 ] >>142 GlobalReleaseって何だ?
145 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:56:49 ] 俺が画像ビューアにスクロール機能付けた時は、 一行は11pt換算で動かすように作ったな。 >>144 これじゃね? ( ) ジブンヲ ( ) | | ヽ('A`)ノ トキハナツ! ( ) ノω| __[警] ( ) ('A`) ( )Vノ ) | | | |
146 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:46:39 ] 私は、小学3年です。私には、彼氏がいます。彼とわたしは、デートの時、どちらかの家に行き、 だれもいないとき、部屋で横になって裸でだきあいます。それがだんだんエスカレートしていって、 学校の体育倉庫で服をぬがされ、まだ3年生ですが学年で1番大きいおっぱいを、つかむように触られたり、しゃぶったりされます。 最初は、苦手だったんだけどだんだん気持ちよくなりサイコーです。しかも、わたしは、学年1美人でもてます。 彼も同じで、美男美女でよくみんなにうらやましく、思われます。 このカキコ見たあなたは4日後に不幸がおとづれ44日後に死にます。それがイヤならコレをコピペして5ケ所にカキコして下さい。 私の友達はこれを信じず4日後に親が死にました。 44日後友達は行方不明・・・・。いまだに手がかりもなく私はこのコピペを5ケ所に貼り付けました。 すると7日後に彼氏ができ10日後に大嫌いな人が事故で入院しました。信じる信じないは勝ってです
147 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:57:30 ] 子ウインドウ:でキー操作をする方法ってありますか?
148 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:22:03 ] 質問は日本語で
149 名前:147 mailto:sage [2008/02/08(金) 01:30:13 ] ウインドウにエディットボックスを貼り付けているのですが エディットボックスのウインドウプロシージャでキー操作 がしたいのですが(VK_UPなどを使いたい)どうも上手く いきません。どのようにすればよいでしょうか?
150 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:42:34 ] 何がどう上手くいかないのか、具体的に書けって。
151 名前:147 mailto:sage [2008/02/08(金) 01:56:18 ] int i case WM_CHAR: if(wp == VK_UP){ i++;; } break; 「↑」を押しても i が変化がないです。
152 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:38:20 ] >>151 WM_KEYDOWN
153 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 07:11:29 ] そういう問題じゃないだろ いろいろいうことはあるが、、、もう出る時間なので
154 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 07:34:51 ] サブクラス化はちゃんと成功したわけ? iがローカル変数というオチではないの?
155 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:00:22 ] WM_CHARにVKが来る訳なかろ
156 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:16:30 ] GlobalAllocのGlobalRelease呼び忘れわ発見できますか?
157 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:45:53 ] 34 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/05(火) 23:57:49 _CrtSetDbgFlagで LocalAllocの発見は出来ないですか? 52 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/06(水) 16:47:47 _CrtSetDbgFlagで LocalAllocの発見は出来ないですか? 142 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/07(木) 18:39:31 GlobalAllocのGlobalRelease呼び忘れわ発見できますか? 156 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/08(金) 09:16:30 GlobalAllocのGlobalRelease呼び忘れわ発見できますか?
158 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:54:07 ] もうスルーで宜しく メモリ管理もできない奴はGCに頼れ で、GCを疑うなw
159 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:21:59 ] 明らかな弱点挙げて指摘したら〜もうスルーで宜しくって 分かり安すぎだなお前らw
160 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:33:49 ] (_ _ ) ヽノ) そのネタは飽きましたのでお引取り下さい ll
161 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:34:49 ] ⊂ ⊂ヽ、 /)/) c、 `っ( ヽ ( v)c、 `っ V''V ( v) / ̄`⊃ V''V | ⊃ ( v) ハ,,ハ V''V (゚ω゚ ) ⊂⊂ ヽ > ) (/(/ ハ,,ハ ( ゚ω゚ ) おことわりします / \ ((⊂ ) ノ\つ)) (_⌒ヽ ヽ ヘ } ε≡Ξ ノノ `J
162 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:44:24 ] 何の弱点だよw GlobalReleaseなんて呼んだ事ねーよwww
163 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:54:55 ] AllocにはFreeだ。GetにはReleaseだ。
164 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:10:04 ] そもそも、クリップボードにセットした場合なんかはGlobalFreeしてはいけない つう例外もあるからそう簡単にチェックできる物でもないだろ ま、どうせドトネト信者が「GCの無い言語なんて糞」とか言いたいだけかも知れんが
165 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:10:21 ] IMEを作るには何を実装すればいいか、誰か知りませんか。 IMEを制御する方法は山ほど見つかるんだけどな。
166 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:18:29 ] 基本的にはimm.dllと同じエクスポートを持ったDLLを作ればいいんじゃね ツールバーを出したければ別個にプロセスを起動してimm.dllから通信すればいい
167 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:22:52 ] >>166 そりゃ確かにOSのIME管理システムそのものを乗っ取れるかもしれませんが、 えらく大雑把だなあ。
168 名前:147 mailto:sage [2008/02/08(金) 11:32:11 ] >>154 サブクラス化は成功していると思います。 なぜかVK_RETURNは反応しています。 iはグローバル変数にしています。
169 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:41:28 ] キーコードと仮想キーコードごっちゃになってるね。君
170 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:01:04 ] GlobalAllocしたメモリのリーク検出なんてフックすれば簡単に出来る COMインタフェースのリリースし忘れの方が困る システムDLL内だったりシェル拡張が原因だったり
171 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:14:24 ] 昔のAdobe製品にはCOMの回収し忘れにより GetOpenFileNameがエラー起こすっていうバグがあってだな 今は知らん
172 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:22:05 ] >>170 つ IMallocSpy
173 名前:147 mailto:sage [2008/02/08(金) 13:19:53 ] >>169 どのようにすれば使えるようになりますか?
174 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:29:01 ] int i case WM_KEYDOWN: if(wp == VK_UP){ i++;; } break; で良いんじゃね >>152 に書いてあるけど
175 名前:デフォルトの名無しさん [2008/02/08(金) 15:19:28 ] MCI_SIGNALというのは、例えば一定の容量の再生毎にsignalが送られてくるように設定するというイメージでいいですか? MCI_SIGNALがなんのためにあるのかが分からない
176 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:42:55 ] MCIスレ立てて聞いてくれ。
177 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:48:08 ] >>165 OSごとにインターフェイスが異なるから、自分で調べられないなら辞めとけ。
178 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:02:47 ] SDKにIMEのサンプルコードあったべ。最近のは入ってないのかな。
179 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:03:39 ] それは操作用のだろ。今も入ってる
180 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:10:47 ] そうだっけ。簡易IMEみたいな、、、もはや今の仕様では使えないか
181 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:06:13 ] 今タスクマネージャの「パフォーマンス」タブみたいなCPU使用率の 画面を作っていて、マルチコアに対応させたいのですが、 プロセス(スレッド)毎にどのコアを使ってるか、という情報は どこで得られるのでしょうか?(コア毎の使用率は判るのですが)
182 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:10:48 ] GetProcessAffinityMask? スレッドは多分無い
183 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:18:36 ] >>182 ありがとうございます。 GetThreadAffinityMask相当のAPIは何故か無いみたいですね。
184 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:18:45 ] 多分NtQueryInformationProcess/NtQueryInformationThreadでPEB/TEBを見るしかないんじゃないの? ただ、ネットに出回っているPEB/TEB構造体の情報は9割ぐらいはXPSP1以前の物で 今時のOSのカーネルとはメンバが微妙に違うから、役に立つかどうかは知らない
185 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:30:21 ] >>165 GPLのSKKIMEのようにソースが公開されているものもあるよ。
186 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:13:07 ] 『涼宮ハルヒの憂鬱』より、SOS団のマスコット的存在“朝比奈みくる”が“鶴屋さん”と 同じく、焼きそば喫茶のメイド服姿で登場です。 ふわりと髪とスカートを翻し、振り返る瞬間をとらえたポーズで立体化。柔らかで 張りのある造形が抜群のプロポーションとマッチし綺麗なシルエットを楽しめます。 白と紺のコントラストが映える衣装と優しい笑顔が、彼女の清楚で穏やかな魅力を 引き立ててくれます。 商品名 涼宮ハルヒの憂鬱 作品名 朝比奈みくる メイドVer. 価格 6,090円(税込) 発売時期 08年06月未定 仕様 1/8スケール PVC製塗装済み完成品 全高約200mm 原型制作 沼倉としあき 発売元 アルター ソース:あみあみ www.amiami.com/shop/ProductInfo/product_id/91035 画像 ttp://www.amiami.com/images/product/main/HOB-FIG-8213.jpg ttp://www.amiami.com/images/product/review/HOB-FIG-8213_01.jpg ttp://www.amiami.com/images/product/review/HOB-FIG-8213_02.jpg ttp://www.amiami.com/images/product/review/HOB-FIG-8213_03.jpg ttp://www.amiami.com/images/product/review/HOB-FIG-8213_04.jpg ttp://www.amiami.com/images/product/review/HOB-FIG-8213_05.jpg ttp://www.amiami.com/images/product/review/HOB-FIG-8213_06.jpg ttp://www.amiami.com/images/product/review/HOB-FIG-8213_07.jpg アルターALTER Co.,Ltd www.alter-web.jp/
187 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:17:37 ] ( ゚д゚ ) _(__つ/ ̄ ̄ ̄/_ \/ /  ̄ ̄ ̄
188 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:22:51 ] やっぱアレか? スカートの中覗くのはデフォなのか?
189 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:26:19 ] おれが予約したフィギュアか
190 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:28:45 ] PGってやっぱアニオタ多いの?
191 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:58:33 ] 俺は2Dしか興味ないわ もともと平面な物をなんで立体化するのか本気でよくワカンネ と釣られてみる
192 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:01:02 ] 人形には興味ないけどメカ物には興味ある俺。
193 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:16:32 ] おれは長門有紀の魔女っ子姿が欲しい
194 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:23:56 ] ちなみになぜ186は貼られたのだ 弁解を聞こう
195 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:42:29 ] DrawTextのフラグがreturn DefWindowProc(hWnd, msg, wParam, lParam);の場合 元のRECTがあさってな状況でも描くのに必要な領域が返ってきますか?
196 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:52:34 ] 変わったフラグなだ
197 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:14:01 ] エディットボックスの背景を灰色にして入力できないようにするにはどうすればできますか? 入力できないようにするのはSetWindowLongでES_READONLYにしてできたんですが 灰色にする方法が分かりません
198 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:32:09 ] DT_CALCRECTでした。
199 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:39:10 ] なんでMSDNを読まないんだろう
200 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:52:27 ] 過度の四角くくない四角形はかけますか?
201 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:53:29 ] それは四角形ですか?
202 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:00:40 ] RoundRect
203 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:25:14 ] MSDNの見方がよく分からんのです ネタじゃなくてマジで
204 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:26:54 ] 最近のやつは Win32API が探しにくくなってる感はある。
205 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:29:06 ] >>195 あさっての矩形を指定して書いた場合に描画されるであろう領域が帰ってくるよ。 よく使うのは横幅を非常に大きくして、折り返ししない場合の幅を調べたり、 逆に高さだけ大きくして特定の幅で折り返し表示した場合の高さを調べたり、等。
206 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:31:26 ] >>204 さっさと.NETに移行させたいのだろ ま、探しにくいのは前からだと思うが Google検索でsite:microsoft.comした方が探し易いってどうよ?
207 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:43:27 ] MSDN内で検索するよりgoogleで検索した方が早いのは定説 しかしリンクが死んでる事も多い罠
208 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:44:35 ] >>206 ありがとう。探し方何となく分かった
209 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:48:30 ] 前はずっとGoogleでsite:microsoft.comを使って検索してたけど、最近は search.msdn.microsoft.com/search/Default.aspx?brand=msdn&lang=en-us&query= 検索文字列 という風にしてる。
210 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:53:36 ] MSDN2にWin32APIリファレンスの日本語バージョンないよね?
211 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:55:30 ] MSDN無印のほうも日本語訳はWin32apiところどころ欠けてるよ
212 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:58:17 ] 確かJOYSTICK関連は英語だったな まぁ簡単な英語だからいいけど DirectXつかえやコラ って事なんだろうな
213 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:02:08 ] >>206 Vistaが.netベースになったら喜んで移行してやったんだがな
214 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:23:13 ] >>165 DDKにFakeIMEというサンプルがある
215 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:44:49 ] MSDN 内を Google で検索するのが手っ取り早いよな。
216 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:45:30 ] Win32API を調べるなら VC6 についてた MSDN が一番 。
217 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:00:40 ] あれ載ってないAPIあるし、嘘訳書いてあることもあるし、 使い勝手のあるAPIは訳されてないし。なんつーか、PlatformSDKの 英語ドキュメントよんでたほうがマシ。
218 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:00:51 ] IMEの辞書ってプログラムで使う方法ありますか? 日本語文章を解析して何かしたいので、その辞書として使いたいのですが……
219 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:05:22 ] >>218 このスレで"IME"でレス抽出すると挙がってくる質問は全て君かね? そろそろIMEスレでも立ててしてくれ
220 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:08:44 ] おい、許可がでちまったぞw 立てちまえよマジで 俺も知りたいし
221 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:11:11 ] >>219 レス検索してみた。 ちょっといくつか気になるワードでググってきます ノシ
222 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:11:43 ] 昔変換候補出すときにフックして常に変換結果を「ちんこ」にした事はある IMEはバージョンに依存する動作が多くて面倒だった記憶が
223 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:06:45 ] ちんことか
224 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:42:49 ] ちんこウイルスか
225 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 04:33:22 ] URLDownloadToFileでダウンロードできるサイトと出来ないサイトがあるんだけど 何が原因だと思いますか? 別のPCで実行すると全てダウンロードできるんですがメインのPCで試してみると 出来るサイトと出来ないサイトが出てきてしまいます 色々試してみたけど規則性がまったく分からない コントロールパネルからインターネットオプションでプロキシを全てはずしても 同じ結果になってしまいます。他にもしかしたらこれが原因かもとかいうのありませんか?
226 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 04:39:04 ] hostsファイル?
227 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 05:36:48 ] 教えてください。 VC2008EEの環境でCreateWindowExが実行されないみたいです。 ビルドのエラーは出ていない、定義へ移動でwinuser.hに飛ぶ、 #pragma comment(lib,"user32.lib")をソースの頭に書いている状態です。 Debugでブレークポイント置いても実行可能コードは無いって言われます。 成功するRegisterClassExの後ろに置いてみても状況は変わりません。 まぬけなミスしてるんだと思うんだけど、どの様に直せば良いですか?
228 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 06:08:24 ] ソース晒せ
229 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 06:22:35 ] >>227 #pragma comment(lib,"user32.lib")を頭に書いてCreateWindowExで作ってみたけど 普通に動くよ。2008のProだけど >実行可能コードは無い プロジェクト作り直してみたら直ることがある
230 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:13:13 ] 横丁はパリのシャンゼリゼ〜 富士の白雪ぁフェニックス〜 だけど僕らのキョーちゃんは〜 豚足大好き、ブヒっ好き〜 キョーモト キョーモト きょうふのキョーーーーーーー(長いわ!)ーーーっちゃん
231 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:44:21 ] おれその頃のダウンタウン嫌いだったわ 意味不明な着ぐるみ系コントばっかりで
232 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:23:26 ] (もうええわ) じゃないか
233 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:43:11 ] *.rcファイルはソースファイルなんでしょうか それともリソースファイルなんでしょうか どちらに追加してもうまくいくようで気に入らないんですが
234 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:23:53 ] VC++の話? ビルドするときにはファイル毎にどういうことを行うかという設定を見ており、 (その設定はファイルを追加したときに拡張子から標準の設定がなされる) ソリューションエクスプローラでどこのフォルダに入っているかということはビルドに一切関係ない。
235 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:21:37 ] POINT pos = { 0, 0 }; draw( "hello world", pos ); と書くところを一旦posを定義しないで直接POINT型変数をdrawに与えるにはどうしたらいいですか draw( "hello world", { 0, 0 } ); 的な…
236 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:55:57 ] C++ならコンストラクタに引数付けて渡すとか。 draw( "hello world", myCPOINT(0, 0)); Cならdrawの関数宣言を変えてしまうとか。 typedef void (*tdraw)(const char *, int x, int y); tdraw pdraw = (tdraw)draw; pdraw( "hello world", 0, 0); スタックの積まれ方に注意。(xとy逆だったかも)
237 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:57:33 ] 直接 ((tdraw)draw)("hello world", 0, 0); でもいい。
238 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:00:24 ] そんな事するくらいなら最初のやり方の方がずっといい
239 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:05:17 ] うるせーボケ どうしたらいいですか、ときたから答えたまで 後出しジャンケン野朗が
240 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:21:34 ] draw( "hello world", (POINT){ 0, 0 } );
241 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:23:51 ] すまん >>240 はコンパイラ依存だ
242 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:30:28 ] あきらかにhackぽい方法を教えるなよ
243 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:55:55 ] POINT f(int x, int y){POINT pt = {x,y}; return pt;} draw("hello world",f(0,0));
244 名前:227 mailto:sage [2008/02/09(土) 13:59:44 ] ミスってる場所を外しているかもしれないので思い切って丸ごと上げました。 DLパスは名前の値です。 ttp://www.dotup.org/uploda/www.dotup.org0300.zip.html >>229 テストありがとう。基礎が出来てないだろう俺にはもう判りません…orz
245 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:25:53 ] >>244 CApplicationBase::GlobalWindowProc が大変なことになってるぞw CreateWindowExが失敗するのは、常にreturn S_OK;で処理しているため。 S_OK(=0)はCOMの正常終了値で使われる定義だが、 Window Procedureでは、正常終了値は大抵TRUE(=1)。 (※戻り値はメッセージにより異なる) Window Procedureの仕様は、下記参照。 msdn2.microsoft.com/en-us/library/ms633569 (VS.85).aspx
246 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:29:21 ] CWindowBase::LocalWindowProcでCDXWndBase::LocalWindowProcの戻り値をreturnしてない
247 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:38:27 ] 質問です。 現在実行中のプロセスが、管理者権限を持っているかを調べるAPIを教えてください。 UACが有効になっているVistaで、Administratorsに入っているユーザーが、 「管理者として実行」をしているかを調べたい、というのが動機です。
248 名前:227 mailto:sage [2008/02/09(土) 14:49:57 ] >>245 ,246 さんきゅう。その辺良く判ってないので、勉強してくる。
249 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:18:44 ] >>247 IsUserAnAdminはそういう用途には使えないのかなぁ
250 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:09:55 ] Windowsx.hの便利さは異常
251 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:52:16 ] SIF_DISABLENOSCROLLの説明の使用不可にするってのはつまみとかを触れなくするだけ? キースクロールでメッセージ投げる分には普通にスクロールするんだが
252 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:28:56 ] 天才現る
253 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:30:53 ] JPEGファイルの表示をするにはどうしたらいいですか
254 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:32:25 ] ブラウザで開く
255 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:33:07 ] WIN32APIの関数を使ってJPEGファイルの表示をするにはどうしたらいいですか
256 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:37:53 ] >>255 ShellExecute
257 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:41:35 ] BitBlt関数を使ってJPEGファイルの表示をするにはどうしたらいいですか
258 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:46:46 ] BitBlt(表示するDC, ... , ブラウザのDC, ...)
259 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:56:39 ] 外部プログラムを使わない方向でJPEGファイルを読み込んでBitBlt関数で表示するにはどうしたらいいですか
260 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:00:10 ] BitBlt(表示するDC, ... , 外部アプリのじゃないDC, ...)
261 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:06:36 ] その外部アプリのじゃないJPEGデータが展開されたDCはどうやって作成すればいいのですか
262 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:11:04 ] 漫才わろすw
263 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:17:41 ] GDI+とかOleLoadPictureとか
264 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:18:39 ] JPEGの仕様書を眺めてデコーダを作るといいよ
265 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:38:46 ] 離散コサイン変換
266 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:41:16 ] ハフマン符号
267 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:47:19 ] libjpegのソースに付随しているexample.cに GLOBAL(int) read_JPEG_file (char * filename) あるからそこからスタートしてみたら? デコーダーの気にくわない部分があれば、 すっ飛ばしてstaticにリンクすればよい。
268 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:49:02 ] Win32APIスレだっつーの。
269 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:05:53 ] じゃあ BI_JPEG?
270 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:17:39 ] Win32APIスレだからGDI+を使った回答はは禁止
271 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:30:39 ] デスクトップユーティリティを作っているのですが、 フォーカスのあるプログラムに対してIMEによる入力が行われているときとそうでないときで動作を変えたいのですが、 他のプロセスのIME状態を取得するにはどんな方法がありますか? #IME入力中にマウスクリックで別のウィンドウをアクティブにしてから戻しても #漢字変換を続行できるのを見ると結構ややこしそうです。
272 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:59:12 ] はは禁止
273 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:12:15 ] はは禁止禁止
274 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:35:01 ] >>270 GDI+も広義のWin32のうちだろ。 もちろんネイティブC++ APIの方。
275 名前:デフォルトの名無しさん [2008/02/10(日) 00:48:03 ] >>274 はあ?
276 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:00:44 ] Win32APIの定義を教えてください
277 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:01:27 ] 自治厨答えろよ。
278 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:47:40 ] Win32 Application Programing Interface
279 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:57:59 ] ja.wikipedia.org/wiki/Graphics_Device_Interface >Windows XPで、GDIはその後継であるC++ベースのサブシステムGDI+によって株を奪われた。 後継っつーならWin32APIスレの範疇にはいるんじゃないかと思う APIはApplicationProgramingInterfaceの略で文字通りの意味しかない 32ビットのWindows用だからWin32API 他にもPOSIXで策定してるPOSIXAPIとかいろいろある
280 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:01:26 ] そんなことは訊いていない
281 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:10:41 ] MS提供のAPIって事で良いよ。定義問題になると荒れるから。
282 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:50:20 ] >>281 つまり.NETもWin32APIって訳か
283 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:21:21 ] .NETは環境をWIN32に限定しないので残念ハズレ。
284 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:22:41 ] DirectXは?
285 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:56:28 ] DirectShowはSDKに統合されたからAPIの一部って事でいいんでね? 専用スレがあるのにここで聞いても誘導されるだけだと思うが
286 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 07:19:44 ] >>261 Susieプラグイン
287 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 07:43:54 ] NTでのWindowsサブシステムの標準APIと同等のAPI
288 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:03:12 ] COM周りでのも提供されてる微妙だな
289 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:05:08 ] Winsock, WinInet, WinHTTP, Theme, DWM, TSF, MSXML
290 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:44:43 ] >>288 日本語でおk
291 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:03:59 ] 数値を文字列に変換するAPIって何?
292 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:05:58 ] Shell Lightweight APIにもなんかあった気がするけど、wsprintf。
293 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:13:12 ] >>292 ありがとう。 頭文字が小文字なのでCランタイムの関数だと思ったら、user32.dllのAPIなのね。
294 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:41:09 ] >>282 ネイティブC/C++から満足に使えないからWin32 APIには入らないと俺は思う。 この立場からは.NETのUnmanaged Hosting APIはWin32。 でもこのスレにそんなこと質問してきたら、 それに関してはここよりわかる人がいそうな.NETのスレへ誘導するだろうけどね。
295 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:44:39 ] shlwapiはwnsprintfの方だな
296 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:43:12 ] MS提供のAPIなんて書いたら.NETどころかMFCやATLなんかもこのスレで扱う事になるだろ
297 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:44:28 ] このスレは技術レベル高い人が多いから、多少駆け込み寺みたいな 役割を求められても仕方がないのかも。 色んな質問が来るのは勲章だと思えばいいんじゃないかな。 広めに受け入れて、誘導できるものは誘導すればいい。
298 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:53:24 ] LoadImageで、パレットの違う2つの256色ビットマップから DDBを作り、少しずつ色を変えながら色を出力すると、 表示されない色が出て、その色は2つのビットマップで違うのですが、 DDBにもパレットみたいなのがあるのでしょうか。
299 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:12:53 ] 少しずつ色を変えながら出力とは、 LoadImageでできたDDBを出力先にし、 FillRectで小さい四角を、 色、位置を少しずつ変えながら出力する感じです。 出力先は普通はCreateBitmap等で作ったDDBに すると思うんですが、実験という事でそれに出力しています。
300 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:32:01 ] ひとつのプロセスが開いているハンドル (CloseHandleで閉じるハンドル・特にファイルハンドル) を列挙する方法はありませんか? GetProcessHandleCountっていうのを見つけたのですが、これだと数しかわかりません。
301 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:34:50 ] 高いのは技術レベルってより、知識量レベルだろ。その知識を生かして どうプログラムに落とすかがプログラマの真価が問われる。このスレじゃ、それはわからん。
302 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:44:10 ] 突然マの真価とか語られても・・・それこそマ板でやれ
303 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 19:12:22 ] 297に同意 >DDBにもパレットみたいなのがあるのでしょうか。 あるよ。 SelectPaletteやCreatePaletteなどのAPIはDDBでも使用可能
304 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:02:29 ] xpでVS2008express editionでスクリーンセーバー作ろうとしたら コンパイルできるのに起動時にエラーがでるのだが。 ちなみにsystem32以下のuser32.dllのタイムスタンプは2004年8月4日になってる。 わかる? エラーメッセージ 「エントリポイントが見つかりません プロシージャエントリポイントChangeWindowMessageFilterがダイナミックリンクライブラリUSER32.dllから見つかりませんでした」 ソース #include <windows.h> #include <scrnsave.h> #pragma comment(lib, "scrnsavw.lib") #pragma comment(lib, "comctl32.lib") LRESULT WINAPI ScreenSaverProcW(HWND hWnd, UINT msg,WPARAM wParam, LPARAM lParam) { return DefScreenSaverProc(hWnd, msg, wParam, lParam); } BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { return TRUE; } BOOL WINAPI RegisterDialogClasses(HANDLE hInst) { return TRUE; }
305 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:09:33 ] ChangeWindowMessageFilterはVistaにしかない
306 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:12:56 ] あれ?どこかのスレでも同じ質問みたな
307 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:13:57 ] 付属ライブラリがVista専用かよ
308 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:19:33 ] targetver.h 書き換えろよ。デフォルトがVistaになってるぜ。
309 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:26:04 ] >>306 VS2008スレで見たね
310 名前:304 mailto:sage [2008/02/10(日) 21:07:55 ] なんだ、2008はほとんどvista用か 2005入れ直すかな 他のスレに同じことやってる奴がいてわらた みんなthx
311 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:10:53 ] そして無視される308お陀仏……。
312 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:32:12 ] 他のスレでも同じように2005を入れなおそうという奴がいるのか それはちょっと面白いな
313 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:19:48 ] VS2008でセィバーだが、こっちにも俺と同じヤツがいたwww これ、MSのどっかにねじ込んでおけばいいんだよな?
314 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:03:00 ] タスクメニューのアイコンを右クリックすると、メニューが出るプログラムを作成しています。 一応完成したのですが、アイコンをクリックした時に 2回目のクリックからタスクバーのプロパティーまで表示されてしまいます。 マウスのイベントがタスクバーまで伝播しているようなのですが、 この回避方法はどうやればいいのでしょうか? 誰かご教授ください。
315 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:11:15 ] 貴様の間違ったコードを正しくすればいい。 正しく書いていればそのような挙動はしない。
316 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:03:52 ] こんばんは 早急に教えてください。 malloc() はどのDLLのエクスポート関数でしょうか?
317 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:07:02 ] msvcrt20.dllだな
318 名前:316 mailto:sage [2008/02/11(月) 03:11:10 ] >>317 ありがとう
319 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:17:57 ] ざくざくでてくるね。 crtdll.dll msvcrt.dll msvcrt40.dll mscvr70.dll mscvr71.dll mscvr80.dll mscvr90.dll mscvr71d.dll mscvr80d.dll mscvr90d.dll cc3250mt.dll (Borland) cygwin1.dll
320 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:26:49 ] ほとんどバージョンかデバッグ版かどうかの違いだな。
321 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:34:24 ] タブコントロールの行が複数行になるかどうかを調べる方法ってないですか? 誰か教えてください
322 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 05:03:20 ] >>314 もしかして通知トレイのことか? メニュー出す直前にSetForegroundWindow()を呼ぶ あとNULLでSendMessage()
323 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 05:11:46 ] っと、Postだった
324 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 05:59:42 ] 画像ビューアを作ってて、ファイルの並び順をエクスプローラと同期させたいのですが アイコンの整列の「名前」「サイズ」「種類」「更新日時」の状態を取得することって出来ないでしょうか?
325 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 06:45:49 ] エクスプローラを2つ表示させてソート順変更しても、 それぞれ同期してないけど、その場合どうするつもり? 後で指定されたソート方法を優先? そもそもこれってAPIの質問?
326 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 08:36:47 ] >>303 ありがとうございます。
327 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 09:06:30 ] >>324 IShellFolder2::GetDefaultColumn()でどう? msdn2.microsoft.com/en-us/library/bb775045 (VS.85).aspx msdn2.microsoft.com/en-us/library/bb775055 (VS.85).aspx 2000or98ME以降になっているが 95,98のIShellFolderやIShellDetailsにはそれらしきメンバは無いな。 エクスプローラを最後に閉じたときの状態が取得できるようなので 厳密に同期を取る325のいうようなケースは厄介そう。 > アイコンの整列の「名前」「サイズ」「種類」「更新日時」の状態を > 取得することって出来ないでしょうか? シェルを拡張してColumnが追加されているケースもありうるよ
328 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 09:26:54 ] >>321 スタイルにTCS_MULTILINEがついているかどうかで
329 名前:314 mailto:sage [2008/02/11(月) 13:36:41 ] >>322 レスサンクス!ActiveとNull送信はやってます。 原因はWM_ACTIVEをラップしてなかったからです。 商用アプリでも同じ現象が発生してて、ちょっとびっくりしてました。 どうもです。
330 名前:321 mailto:sage [2008/02/11(月) 16:16:49 ] >>328 すいませんちょっと情報不足でした スタイルにTCS_MULTILINEを設定しても、タブが少なかったら1行で表示されますよね? TCS_MULTILINEを設定して、タブを追加して、その結果として複数行で表示されるか否かを知る方法はないのでしょうか? ということが聞きたかったのですが
331 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:19:20 ] 難しい GetClientRectとTCM_ADJUSTRECTを使えば タブのつまみ部分に使われてる高さは分かる
332 名前:321 mailto:sage [2008/02/11(月) 16:51:59 ] >>331 レスありがとうございます 結果的に取得したかったのはタブのつまみの高さなので、それで十分です
333 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 20:41:11 ] >>330 ごめん。そこまで気が回らなかった。 解決したみたいだけど、 事前に知ることはできなそうだが、追加後でよければ TCM_GETROWCOUNTで行数を取得できるよ。
334 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:17:40 ] SelectObject( hdc, CreateSolidBrush(RGB( 0, 0, 0) ); とした場合はDeleteObject()しなくていいですか
335 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:42:06 ] >>334 だめです。 new = CreateSolidBrush(...); old = SelectObject(..., new); 個々で何らかの処理。 SelectObject(..., old); DeleteObject(new); とするべき。
336 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:47:10 ] こう書けなくもないはずだが、あまり見ない書き方だから、やめたほうがいい。 old = SelectObject(..., CreateSolidBrush(...)); DeleteObject(SelectObject(..., old));
337 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:00:10 ] けどそれなら、変数用意しなくて良いな。 別の方向に混乱しそうだけど。 どういう処理なのか一瞬わからんかったw
338 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:15:58 ] CreateSolidBrushの戻り値を見てないってのが気にはなるなあ。 滅多に失敗しないのは確かだけど。
339 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:46:29 ] もう面倒くさいしディリートしなくてもいいじゃん ディリートしないせいで問題が起きたことないし
340 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:52:44 ] 9xを使ったことがないから言えるセリフだな、それ。 いや、確かめたわけではないけれど。
341 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:52:50 ] ここで 「いちいちディリートしなくても勝手にGCしろよ」 とドトネト厨登場↓
342 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:56:18 ] RAIIクラスを作って デストラクタででぃりーとしろよ
343 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:59:50 ] Sleipnirが盛大にGDIリソースリークしてて、 連続稼動させてると他のアプリケーションまで表示がぐちゃぐちゃになったことがあったな。
344 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:23:45 ] こうですか、わかりません! class GDIBinder : noncopyable{ HDC mhdc; HGDIOBJ old; public: GDIBinder (HDC dc, HGDIOBJ obj) : mhdc(dc) { old = SelectObject( mhdc, obj ); } ~GDIBinder(){ SelectObject(mhdc, old ); } operator HDC (){return mhdc;} };
345 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 04:40:47 ] 重い処理をさせたらウィンドウを動かしたりできなくなるんですが、どうすれば WinRARみたいに重い処理をさせてもウインドウ動かしたり出来るようになりますか?
346 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 04:43:48 ] スレッドわけろ。
347 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 04:44:17 ] MultiThreadですよ。
348 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 04:48:56 ] ありがとうございます。やっぱりああいうのはマルチスレッド使ってるのか 勉強してみます
349 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 08:56:05 ] >>344 RestoreDCを忘れるなよ
350 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 12:47:18 ] >>225 クッキー
351 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 13:31:04 ] 何回もSelectObjectをかけながら処理してく場合、いちいち戻さないで 最初にSaveDC/最後にRestoreDCで一気に戻した方が楽な場合もある
352 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 13:56:30 ] Server2008対応の新SDK正式版出てたのね
353 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:50:18 ] >>352 urlぐらい書けよ
354 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:05:54 ] ttp://www.microsoft.com/downloads/details.aspx?familyid=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en
355 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:38:29 ] PlatformSDKの新版はもう出ないのかな・・・
356 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:32:21 ] まさにこれだろ。 WindowsSDKに名前が変わって、.NETも含まれるようにはなったけど。
357 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:39:13 ] >>356 .NET使わないんでPlatformSDKの頃みたいにWin32関連だけインスコできればなと 色々統合されてたりして無理なのかな
358 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:45:04 ] Windows SDK = Platform SDK + .NET Framework SDK
359 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:10:04 ] .NET FrameworkをインスコしないでPlatformSDKだけ入れさせろって意味
360 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:11:13 ] やってみれ
361 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:09:28 ] ボタンコントロールで質問です。 BM_SETSTATEで押し込んだ状態にできますが、 クリックしたり、クリックしたままボタンの上から移動すると 出っ張った状態に戻ってしまうんですが、 トグルボタンのようなものを作るにはどうしたらよいですか。 MFCなら同じメッセージを送ればそのまんま動くみたいですが MFCなしでお願いします
362 名前:デフォルトの名無しさん [2008/02/12(火) 20:34:05 ] リストビューコントロールについて質問します。 リポートビュースタイルを適用しています。 リストビューに項目を設定するには、 LVITEM lv; lv.iItem = 0; ListView_InsertItem(hListView, &lv); ListView_SetItemText(hListView, 0, 1, TEXT("項目1−1")); という形で大丈夫なはずだと思うんですが、なぜかうまくいきません。 どこがおかしいのでしょうか
363 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:55:26 ] >>359 インストール時のコンポーネント指定でドトネト関連だけ外せばいいじゃん ダウンロードするファイルのサイズ自体を減らしたいというならそれは無理な相談、だがwebインスコなら可?
364 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:06:07 ] Sleep(1);よりも短い時間のウェイトは作れない? 精度はまったくいらないんだけど。
365 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:11:35 ] じゃあ1でいいだろ
366 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:12:24 ] 精度要らないならSleep(1)でいいじゃん。
367 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:13:09 ] ビジーループでおk
368 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:15:10 ] >>362 そのリストビューはカラムを2つ以上追加した状態なのか?(ListView_SetItemTextの第3引数は一番左のカラムなら0) あとLVITEMは宣言時に { 0 } で初期化したほうがいい まずはリファレンスか入門サイト見たほうがいいよ
369 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:21:34 ] >>364 どんなウェイト? 他のスレッドに一瞬制御渡したい目的なら「メッセージポンプ」で検索。 そうじゃなきゃvolatile int i; for(i=0;i<100;i++);とかで適当に回すとか。
370 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:30:25 ] I/Oポート触ったら約1μ秒だ、ってどっかに書いてあった
371 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:33:47 ] >>364 精度がいらなくて短いウェイト? つSwitchToThread()
372 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 21:40:21 ] >>363 ランタイムは勝手にインスコされた気がするが。
373 名前:デフォルトの名無しさん [2008/02/12(火) 22:18:03 ] >>368 ゼロで初期化したら、”できました!!” カラムは4本です。だけど、不思議です。 ありがとうございました。!!!!
374 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:18:37 ] >>364 Sleep(0);
375 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:39:45 ] SetTimerのタイムアウト値って動的に変えるにはどうすればいいの? UINT型でキャストした変数じゃむりですた
376 名前:デフォルトの名無しさん [2008/02/13(水) 00:02:33 ] ウィンドウズのシステムの休止や終了に関する質問です。 システムの終了時を捉えるには、WM_ENDSESSION メッセージに対応すればいいと思うんですが、 ハイバネーションモードに入るのを捉えるにはどうしたらいいでしょうか タイマーでプログラムが生きてるかどうか確認する方法しか思いつかないです。 (定期的に時間差をとることで、復帰後にシステムが休止状態にあった時間を調べるという泥臭い方法くらい)
377 名前:デフォルトの名無しさん [2008/02/13(水) 00:03:33 ] >>375 普通に最初に指定したタイマーIDと同じIDを指定して、新しい時間を設定すればOKだと思いますが
378 名前:デフォルトの名無しさん [2008/02/13(水) 00:33:28 ] >>361 オーナードローを使えと言いたいところだが…
379 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:50:41 ] >>361 BS_RADIOBUTTON,BS_CHECKBOX,BS_AUTORADIOBUTTON,BS_AUTOCHECKBOX のいずれかとBS_PUSHLIKEを組み合わせればトグル動作するけど どうだろう?
380 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:54:37 ] >>376 WM_POWERBROADCASTとか
381 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 01:46:07 ] 人材管理は技術のないやつの逃げ道ですか
382 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 02:24:07 ] 他人を使うことができる人間は、1日に24時間以上の時間を使うことができるのです が、ム板にはこういうレスと人は不要です
383 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 05:52:26 ] これひょっとしたらAPI関係ないかもしれないんですけど、 スレッドの開始関数に情報を渡すときってどうすればいいんですか?グローバル変数?
384 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 07:21:02 ] >>383 void*の引数があるから、それで何とかしろ。 素人にはお勧めしない方法だが、下のような方法で組むことがあるな。 渡した内容をきちんと受け取るまで待っている所が重要。 static foo_data { volatile int flag; int data1; } DWORD ThreadProc (LPVOID lpParam) { struct foo_data param = *(struct foo_data *)lpParam; ((struct foo_data *)lpParam)->flag = 1; ... } HANDLE ThreadStartProc(int data1) { struct foo_data param = { 0, data1 }; HANDLE hThread; if ( (hThread = CreateThread(NULL, 0, ThreadProc, ¶m, ...)) != NULL ) { while ( !param.data1 ) Sleep(100); } return hThread; }
385 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 08:44:44 ] SleepにINFINITE渡しても49.7日後に起きないよね?
386 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:17:35 ] アクティブウィンドウとフォアグラウンドウィンドウとフォーカスの違いについて教えてください。
387 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:47:16 ] フォーカスは別物。正しくはキーボードフォーカスって言えばなんだかわかるよな?
388 名前:383 [2008/02/13(水) 16:34:53 ] >>384 すみません自己解決しました グローバル変数とクリティカルセクションを併用すればいいみたいです void *の引数はWindowsで使用する的なことが書いてあったので避けていたのですが、その方法でも出来るんですね 蛇足だけど、1行目のstaticってのはきっとstructのことですよね
389 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 17:22:10 ] 普通にnewなりmallocなりして渡せばいいのに
390 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 17:42:42 ] 素人にはお勧めしないとか言ってるくせに>>384 のコードが素人丸出しな件について
391 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 17:51:09 ] こっちの方が問題のような -while ( !param.data1 ) Sleep(100); +while ( !param.flag ) Sleep(100);
392 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:29:25 ] >>384 >>388 >>391 そういう待ち合わせにはイベントを使う。 クリティカルセクションとフラグじゃItaniumでうまく動かないし、 一回空振りしただけで無駄に 100msec も待ってしまう。 それからデータの受け渡しだけなら、new した構造体のポインタを渡して スレッド側で不要になったら解放すれば、そもそも待ち合わせる必要もない。
393 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:40:22 ] >>379 まさにそれでした。まさか普通のボタンではないとは。 ありがとうございました。
394 名前:384 mailto:sage [2008/02/13(水) 22:04:32 ] 確かに色々間違い杉だった。朝っぱらから書き込むもんじゃない。orz メモリバリアは完全に忘れてた。Interlock系API使わなきゃダメだな。 でもクリティカルセクションが駄目な理由が良く判らん。何で? まあ、Cで解放とか面倒なことをせずに済むように考えて書いたコードだから勘弁。
395 名前:383 [2008/02/13(水) 23:00:55 ] >>392 イベントですか・・・調べてみます
396 名前:392 mailto:sage [2008/02/13(水) 23:09:16 ] >>394 >でもクリティカルセクションが駄目な理由が良く判らん。何で? 漏れの眼か頭が悪くて、転記していながら見落としていたからw
397 名前:386 mailto:sage [2008/02/13(水) 23:43:26 ] >>387 どうもです。フォーカスはキー入力を受け付けるということで良いのですが、 フォアグラウンドとアクティブウィンドウはどう違うのでしょうか? SetForegroundWindow() の説明では「アクティブウィンドウにしてフォーカスをセットする」 と記述されてますが、アクティブウィンドウとはタイトルバーの色が変わっているウィンドウのことでしょうか?
398 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:13:51 ] WinAPI勉強し始めてからCPUの凄さに驚かされっぱなしです CUIの時は実感なかったけどこんな複雑な計算が一瞬で行われてるなんて… 人はなんて恐ろしいものを作ってしまったんだ
399 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:26:01 ] なんとなく宇宙ヤバイ思い出した
400 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:43:05 ] ヤバイ。CPUヤバイ。まじでヤバイよ、マジヤバイ。 CPUヤバイ。 まず速い。もう速いなんてもんじゃない。超速い。 速いとかっても 「リニアモータカーくらい?」 とか、もう、そういうレベルじゃない。 何しろギガ。スゲェ!なんか単位とか丸められてるの。何キロとか何万とかを超越してる。10億倍だし超速い。 しかもさらに速くなってるらしい。ヤバイよ、加速だよ。 だって普通は時間とか加速しないじゃん。だって寝てられる時間がだんだん短くなったら困るじゃん。5分しか寝られないとか困るっしょ。 朝日が出て、先月は沈むまで16時間だったのに、今日は2時間とか泣くっしょ。 だから時間とか加速しない。話のわかるヤツだ。 けどCPUはヤバイ。そんなの気にしない。加速しまくり。最も初期から考えると10億倍とかよくわかんないくらい速い。ヤバすぎ。 ギガって言ったけど、もしかしたらテラかもしんない。でもテラって事にすると 「じゃあ、テラの次ってナニよ?」 って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。 あと超熱い。約333ケルビン。摂氏で言うと60℃。ヤバイ。熱すぎ。生卵が温泉卵になっちゃう。怖い。 それに超高集積。超キツキツ。それに超高い。10億万円とか平気で出てくる。億万円て。小学生でも言わねぇよ、最近。 なんつってもCPUは計算力が凄い。WinAPIとか平気だし。 うちらなんてプログラムとかたかだかエクセルマクロで出てきただけで上手く扱えないから使わなかったり、 足し算くらいにしか使わなかったり、出来る人にやって貰ったりするのに、CPUは全然平気。WinAPIを機械語のまま扱ってる。凄い。ヤバイ。 とにかく貴様ら、CPUのヤバさをもっと知るべきだと思います。 そんなヤバイCPUを作ってるAMDとか超偉い。もっとがんばれ。超がんばれ。
401 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:45:03 ] わざわざ作ったのか
402 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:47:24 ] >>400 ワロタw
403 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:50:15 ] すまん、つい・・・
404 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:53:42 ] >>400 くると思ったw
405 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:50:46 ] >>400 和んだwww
406 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:17:51 ] 私はノートパソコンを使っているのですが、少し前にうっかりしてコカコーラをこぼしてしまいました。 慌てて逆さにしたり、ドライヤーで乾かしたりしたのですが、キーの入力がおかしくなってしまいました。 今はUSBキーボードを繋いでパソコンを使っているのですが、けっこうな頻度で押してないキーが押されている状態になります。 USBのキーボードを外していても起きるので、ノートのキーボードのほうからキーの入力が起きていると思われます。 コントロールパネルからドライバのアンインストールをしてみたのですが、再起動すると勝手にインストールされてしまいます。 なので、自作のプログラムでノートのキーボードからだけの入力をシャットアウトしたいのですが、APIで解決できますか?
407 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:20:50 ] ジュースの成分が残ってて短絡してるだけだからノートPCを分解してキーボードを水洗いすれば直るよ。
408 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:44:09 ] 分解ですか・・・。 機械音痴なので元に戻せるかどうかが心配です・・・。 いざとなったらやってみたいと思います。
409 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:26:01 ] 電源ボタンとキーボードが一体化されてないのなら キーボードをコネクタのとこから外しちゃえ。 ThinkPadにコーラ飲ませたときは電源入れるときだけ繋いでたなあ。
410 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 20:11:23 ] チソコパッド
411 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:35:19 ] >>392 > それからデータの受け渡しだけなら、new した構造体のポインタを渡して > スレッド側で不要になったら解放すれば、そもそも待ち合わせる必要もない。 横からだけど、そんなの気づかなかった。ずっとイベントで待ってた。トン
412 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:30:34 ] 不特定のプロセスに対して自身の再起動を要求するコードを書いているのですが、 新プロセス起動→自身死亡 だと対象になるプロセスが多重起動を禁止していた場合に上手く動きません 今のところ 新プロセスサスペンド起動→リモートスレッド作成(待機)→自身死亡→死亡をトリガにリモート待機解除→リジューム ぐらいの方法しか思いつかないのですが、なにか良い方法ってないですか?
413 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:32:50 ] 中継プロセス起動→自身死亡→新プロセス起動
414 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:51:29 ] > 不特定のプロセスに対して自身の再起動を要求するコード これって可能なの? メモ帳みたいに「保存しますか?」とか出るやつにはどう対応するの?
415 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:53:25 ] プロセスごと殺せばいいんじゃね
416 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:59:35 ] 編集中のデータが保存されないだろw
417 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:03:18 ] >>416 想像力低下していませんか? 世の中のアプリ全てがエディタではないのですよ。
418 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:17:25 ] >406 素直に修理に出したほうがいいよ。糖分は予後不良の原因になるから。
419 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:44:08 ] >>417 お前頭悪いな 「不特定のプロセス」という事はプロセスを強制的に殺したらデータが飛ぶ物もあるだろう
420 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:48:37 ] >>419 寝ているんですか? データが飛ばないものもあるってことに気付いてください。
421 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:49:33 ] 煽り合い的なものは外でやってくれると助かります
422 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:09:04 ] 419と420はなぜ対立しているのかわからない。 「プロセスを強制的に殺したら、データが飛ぶものもあれば飛ばないものもある」
423 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:12:29 ] 「あるプロセスを強制的に再起動する」というのが要件で、 そのとき処理中のファイルは壊れる・消えるかも知れないけど なんとかしる、ってのはたぶん要件に入ってないんだよ。
424 名前:デフォルトの名無しさん [2008/02/15(金) 02:20:05 ] Windowsのコントロールパネルにあるタスクについての質問です 再起動時刻と実行ファイルを指定して、目覚ましのような機能を実装するにはどうしたらいいでしょう このタスクというのはレジストリに記録するものなんでしょうか? このあたりの取っ掛かりがドコにもなくて困ってます
425 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:27:29 ] >>424 よく知らんけどITaskSchedulerというのがあるぞ
426 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:31:21 ] NetScheduleJobAddでもええのんか?
427 名前:デフォルトの名無しさん [2008/02/15(金) 04:35:35 ] >>425 >>426 おお トンクスです ITaskSchedulerはc++じゃないとダメみたいですけど、やっぱcだけじゃ先細りかなぁ ヘルプみながらやってみます。 こういう切っ掛けがもらえると、結構ありがたいです。 ありがとう
428 名前:412 mailto:sage [2008/02/15(金) 06:24:41 ] レスどうもです 413の方法がより良いですね(楽だし) DLLのみで実装しているので、コンポーネントが増えるのがちょっとなぁ という感じだったのですが、どこの馬の骨とも知らんプロセスにスレッド作るのも信頼性が無いですね で安全な自殺の問題に関しては>>423 の通りです 赤の他人のプロセスの正しい終了方法ってのは無いと思っているので 終了に関しては「いいから死ねよww」的実装にする予定です
429 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 07:33:05 ] >>427 インターフェースはCでもきちんとアクセスできるよ。 ヘッダににもC用のマクロが生成されているはず。
430 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:26:47 ] >>428 怖いソフトだな
431 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:45:53 ] 複数のウィンドウで別々の図形を表示する。 プログラムを作成しています。 www.gazoru.com/g-56c381307c3112291311c2c91b1d703f.jpg.html www.gazoru.com/g-3f62aa51c6bc698fbc545808c1d04fa0.jpg.html 最初は、別々に表示されるのですが、重なった場合 下のを上(アクティブ)にすると、一枚目と同じになって しまいます。 ○原因 ○対処方法 をお教え下さると有り難いです。 ソースは、一応付けます。 Pass=1 (win2000 vc6.0) www11.axfc.net/uploader/20/so/He_72578.zip.html
432 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:46:55 ] 主要部分プログラム case WM_PAINT: //1 hdc= BeginPaint( hWnd, &ps ); Rectangle(hdc, 100, 100, 400,400); ReleaseDC(hWnd, hdc); EndPaint( hWnd, &ps ); //2 RECT rect; GetClientRect( hWnd3,&rect ); hdc= BeginPaint( hWnd3, &ps ); Rectangle(hdc, 0, 0, 100,100); ReleaseDC(hWnd3, hdc); EndPaint( hWnd3, &ps ); //3 hdc= BeginPaint( hWnd5, &ps ); Rectangle(hdc, 50, 50, 200,200); ReleaseDC(hWnd5, hdc); EndPaint( hWnd5, &ps ); break;
433 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:47:16 ] case WM_SIZE: //2 hdc= BeginPaint( hWnd3, &ps ); Rectangle(hdc, 0, 0, 100,100); ReleaseDC(hWnd3, hdc); EndPaint( hWnd3, &ps ); //3 hdc= BeginPaint( hWnd5, &ps ); Rectangle(hdc, 50, 50, 200,200); ReleaseDC(hWnd5, hdc); EndPaint( hWnd5, &ps );
434 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:57:56 ] >>431 現象がよくわからん、2008でやっても再現しないみたい。 まあそれはおいといて、WM_PAINT以外でBeginPaintは使うな。 そこで書きたいならInvalidateでPAINTにまかすか、 GetDCで自分でDCもってこい
435 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:05:36 ] ってソース見るとむちゃくちゃやっとるな。 WM_PAINTの仕組みとか、ウィンドウプロシージャの動作とか 知ることはいっぱいありそうだけど、いったいどれを参考にしたのこれ?
436 名前:デフォルトの名無しさん [2008/02/15(金) 15:58:10 ] VC2008Expressをインストールしようと思っているのですが、これには前もってWindowsSDKをインストールしておいたほうがよいのでしょうか。 2005と違って2008は、最初からPlatformSDKが付いているようなので、WindowsSDKは必要ないように思っているのですが、どうなのでしょうか。
437 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:04:41 ] >>436 .h ファイルや .lib ファイルを参照したり、取り込むよう指定が不要なら 要らないんじゃないか。スペルがあやしいが、dialog や listbox ctrl など を使おうとすると、cmnctl32.lib とか要るだろう。 自分は dsound.h, dsound.lib も使うんで DirectX も入れたよ。
438 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:38:06 ] WindowsSDK6.1落としてきたんだが、6.0には付いてたコンパイラが入ってない? セットアップのコンポーネント一覧でグレーアウトしていてチェックできない・・・ それともVS2008が入ってると自動で弾かれるのか?(2008Proが入ってる) 2005の時と同じくソース解析対応コンパイラに差し替える裏技が使えると期待したんだが。
439 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:00:12 ] >>431 >>435 も言ってるけど、全体的にむちゃくちゃ。 基本から勉強し直した方がいいと思う。 とりあえず、複数のウィンドウで同じプロシージャを共有するのなら、 メッセージ受け取り時に、それを区別しないと。 www11.axfc.net/uploader/20/so/He_72614.zip.html Pass:1
440 名前:デフォルトの名無しさん [2008/02/15(金) 17:01:21 ] 質問です。 ゲームのチートツールを作るAPIって何ですか? 猫飯みたいに今実行してるプロセスのメモリを見れて いじれるものをつくりたいんですが。 つまり実行中のほかのプロセスのメモリを書き換えるAPIとかって無いですか?
441 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:11:24 ] WriteProcessMemory
442 名前:デフォルトの名無しさん [2008/02/15(金) 17:35:57 ] 色々と調べて分かったのですが、WindowsSDKというのは、PlatformSDKと.NETFrameworkを一緒にまとめたもののようです。 ということは、VCだけを使う場合であれば、.NETFrameworkは不要ということで、 WindowsSDKをインストールする必要はないように思えるのですが、実際どうなのでしょうか。 一番気になっているのは、VC2008に付属するPlatformSDKが、 APIを使ったWinプログラムに完全に対応しているかどうかです。 437の方が言うように、comctl32.libが抜けていたりしたら困るところです。
443 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:41:25 ] それくらいの基本的なものは揃っているから大丈夫。 ヘッダ・インポートライブラリに関してはVC++付属ので困ってから、 入れることを考えても遅くない。 だから、入れるとしたら、Windows SDKのツールやドキュメントが欲しいとき。
444 名前:デフォルトの名無しさん [2008/02/15(金) 17:49:23 ] なるほど。分かりました。 取りあえず、2008をインストールして、何が不足しているかを探ってみます。
445 名前:デフォルトの名無しさん [2008/02/15(金) 18:03:59 ] >>400 「じゃあ、テラの次ってナニよ?」 って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。 ネタとはいえ、どんだけ教養ないんだよとオモタ
446 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:20:19 ] テラの次と言えばハカだろjk
447 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:36:24 ] 自分が知ってるとこだけつっこむってのは、それ以外は知らないということでいいのか?
448 名前:デフォルトの名無しさん [2008/02/15(金) 18:41:30 ] >>441 ありがとー☆ さっそくつくってみる
449 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 19:28:57 ] >>448 がんばれ 超頑張れ DirectXとかゲームPGもいいけどそっちの世界も面白いぞ
450 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:59:45 ] >>446 テラって葬式だけやってるわけじゃないぞ
451 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:20:21 ] エキスプレスエディションは、コンソールアポリ作れるようなヘダーやリブラリーしか入って無くて、 ウィンドーズ.hとか、コモンコントール.hとかはウィンドーズSDKに入ってるから、 別途インストロールしないといけないと思ってたが、違ったのか。 つか、ウィンドーズSDKのコンパイラーいれないと、エキスプレスエディションだけじゃ、 RC.Exeがないから、リソースがコンパイールできませ〜ん、ってエキスプレスの妖精さんに言われたんだが。
452 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:22:26 ] そういや神社って葬式しないのかな? 皇室の葬儀もよく判らんし
453 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:31:01 ] >>451 VC++ 2008はWindows SDKのサブセットが入っている。
454 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:34:56 ] 神域は穢れを嫌うから神社で葬式はしないだろ 神格化していた頃ならいざ知らず
455 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:06:29 ] DT_CALCRECTでItaricの立ったフォントを計算して描くと右端が切れます。 仕様ですか?
456 名前:デフォルトの名無しさん [2008/02/15(金) 23:18:08 ] サクラエディタや寺パッドとかって標準のテキストボックスじゃないよね? だとしたらDrawTextとかで自力で書いてるの?
457 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:23:20 ] サクラエディタはソース公開されてるはずだから見てみれば?
458 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:23:53 ] テキストエディタの実装技術っつたらひとつの研究分野ですがな
459 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:36:36 ] VC++ 2005、WinXPで開発しています。 unicodeアプリです。 ある文字が全角文字か、半角文字かを判定したいと考えています。 どのようなAPIがあるでしょうか、よろしくお願いします。
460 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:39:14 ] 普通にデータの文字コードを見ろよ
461 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:47:41 ] U+00C0〜辺りも半角って言うの?
462 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:58:05 ] ユニコードコンソーシアムがUnicode文字の属性として全角・半角などを決めている。 それとどういう関係かは知らないけど、 Windows APIでは、GetStringTypeExのCtype 3で、全角・半角を取得できる。
463 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 00:48:44 ] ttp://wisdom.sakura.ne.jp/system/winapi/win32/index.html ↑のサイト見ながらWinAPI勉強し始めたばかりの者ですが コマンドライン引数の項に乗っている一番最初のサンプルプログラムをコンパイルしてみたところ PSTRとLPCWSTRの型に互換性がないと警告され、データファイルを実行ファイルにD&Dすると文字化けしたパスが表示されました その前のメッセージボックスの項で紹介されていた引数の型と違うからおかしいとは思っていたのですが・・・ 一応、型変換なども試してみたのですが表示されるのはいつも文字化けしたファイルのパスです なんとか文字化けさせずにD&Dしたファイルのパスをメッセージボックスに表示させたいのですがどうしたらいいでしょうか?
464 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:00:52 ] ユニコードについてと、Windows & VCでのユニコード文字の扱い、 プログラム上での表記について調べるがよい。 とりあえず、PSTR はchar型へのポインタ、LPCWSTR はwchar_t型へのポインタのハズ。 別ものだよ。 ただ、そのページの例にも問題があるなw
465 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:04:48 ] >>463 環境は? VisualStudio2005からはUNICODE文字セット使用がデフォルトになってるからな マルチバイト文字セット使用にするか、ソースをUNICODEにあわせるかどっちかで
466 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:06:28 ] >>464 ありがとうございます! 早速ユニコード文字について調べてきます
467 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:09:58 ] >>465 VC++2005EEです ・・・っということはやっぱりユニコードですか GUI作成に至るまでに覚えることは多そうだ・・・・・
468 名前:デフォルトの名無しさん [2008/02/16(土) 01:26:39 ] >>429 方法がさっぱりわかんねーです(涙涙涙涙涙涙涙涙涙涙涙涙;;;;;;
469 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:39:40 ] >>463 <tchar.h>をインクルードして、 int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PTSTR pCmdLine, int nCmdShow) とすればいい。
470 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 01:59:01 ] Lunaでグループボックス作ったんだけど文字の背景色が変だ どうやったら直るか誰か教えてorz
471 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:05:09 ] >>468 IXXX->lpVtbl->Func() って感じで書く。 ヘッダ見たほうが早いよ。 C用に下記みたいなマクロが用意されているし。 #define ITaskScheduler_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
472 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 11:04:46 ]
473 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:17:13 ] ttp://www.asahi-net.or.jp/~kv8s-yjm/another/yja001.htm 特別分かりやすいわけではないと思っているけど、Cでやるサンプルがある。
474 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:58:18 ] Kitty on your lapてなに?
475 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:01:51 ] hello worldと同じ
476 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:11:07 ] 膝の上の子猫
477 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:11:39 ] GlobalFreeで何故かエラーがでてしまいます。 書いてあった関数コメントアウトして確保と開放の処理だけにしてみたのにやっぱりエラー… 何故でしょうか? 問題の部分のソースとエラー unsigned long long int MojiCount=0; static HGLOBAL hMem; char *MojiBuf; MojiCount=Edit_GetTextLength(hEdit); hMem=GlobalAlloc(GHND,sizeof(char)*MojiCount+2); if(hMem==NULL) MessageBox(hWnd,"メモリが確保できませんでした","メモリエラー",MB_OK); MojiBuf=(char *)GlobalLock(hMem); MojiBuf[MojiCount+2]='\0'; Edit_GetText(hEdit,MojiBuf,MojiCount+1); //本当はここで関数に*MojiBufを渡しててそれが原因かと思って、コメントアウトしてみたけどやっぱりエラーでる GlobalUnlock(hMem); GlobalFree(hMem);//←ここにブレイクポイント設置、ステップインするとエラー Windows によって ○○.exe でブレークポイントが発生しました。 ヒープが壊れていることが原因として考えられます。○○.exe または読み込まれた DLL にバグがあります。 あるいは、○○.exe がフォーカスを持っているときに、ユーザーが F12 キーを押したことが原因として考えられます。 可能であれば、出力ウィンドウに詳細な診断情報が表示されます。 HEAP[○○.exe]: Heap block at 0023EF50 modified at 0023EF5A past requested size of 2
478 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:13:00 ] > ヒープが壊れていることが原因として考えられます。 > Heap block at 0023EF50 modified at 0023EF5A past requested size of 2
479 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:19:16 ] C言語の基礎から勉強するスレなのか?
480 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:26:07 ] MojiBuf[MojiCount+2]='\0';
481 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:43:58 ] >>480 ありがとうございます。MojiBuf[MojiCount+1]='\0'だったw 弄ってたらいつの間にかエラーでるようになってしまったと思ってたらEdit_GetTextLength で返ってくるのが文字数-1だと気づいて+2に変えたとき間違えて変えてしまってたみたい しかも精神衛生的に'\0'入れるのはEdit_GetTextの後にやった方がいいよね こんなのでずっと悩んでたなんて…
482 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 17:19:57 ] >>481 というか、これでいいんじゃないのか? MojiCount=Edit_GetTextLength(hEdit)+1; hMem=GlobalAlloc(GHND,sizeof(char)*MojiCount); MojiBuf=(char *)GlobalLock(hMem); Edit_GetText(hEdit,MojiBuf,MojiCount); GlobalUnlock(hMem); GlobalFree(hMem);
483 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 17:53:50 ] >>474 膝の上の同居人、っつーADVだったような。 というか、たるとといいミュウミュウといい、あのサイトの中の人はネコミミ属性のようだ。 普通の言語のテク紹介サイトだと思ってたら、何の前触れもなくたるととか出てきたから吹いたw
484 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:34:39 ] MSDN死んでる?
485 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:34:58 ] キャラが一世代古いな
486 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:57:20 ] >>483 そうそう!何の前触れもなくいきなりって、ネットで勉強してるとしょっちゅうあるよなww 俺は、それを流すんだが、その状況が可笑しくなってきちゃうんだがw 「あれー・・・、今なんか・・・。いや、勉強勉強!」っつってww
487 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:33:47 ] MessageBoxで処理をぶった切りまくったらポインタが大変なことになった。
488 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:53:11 ] ビットマップを表示するところとか、もうここでは書きたくない。
489 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:55:42 ] >>486 日本語でおk
490 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 20:28:09 ] (´・ω・`)しらんがな
491 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 21:43:45 ] > 俺は、それを流すんだが、その状況が可笑しくなってきちゃうんだがw 誰かこれを日本語に翻訳してくれ
492 名前:459 mailto:sage [2008/02/16(土) 21:46:57 ] >>462 ありがとうございます。それを使ってみることにします。
493 名前:431 mailto:sage [2008/02/17(日) 00:23:27 ] >>434 >>435 >>439 有難うございます。 また来ます。
494 名前:デフォルトの名無しさん [2008/02/17(日) 00:47:01 ] >>491 俺は、 「kitty on your lap」 この言葉を見てもいつも気にせずスルーして次の文にいくんだが、 毎回やるこの自分の行動に可笑しくなってきちゃうんだww
495 名前:デフォルトの名無しさん [2008/02/17(日) 02:09:22 ] MSTask.h にこういう文があるんだけど、interfaceキーワードって何ですか? K&Rにも載ってないです。 interface ITaskScheduler { CONST_VTBL struct ITaskSchedulerVtbl *lpVtbl; };
496 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:20:32 ] #define interface struct
497 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:50:52 ] 素直にC++使ったほうが楽だよ
498 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:54:29 ] C++しらねーんだYO!
499 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 03:11:26 ] >>498 ( ・∀・)人(・∀・ )ナカーマ!!
500 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 03:38:29 ] 素直にC++習得したほうが楽だよ
501 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 04:34:13 ] つーかCでCOMとか在り得ねー lpVtblとか第一引数とか&IID_〜とかめんどいしC++でスマートポインタ使わないとやってられん
502 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 04:49:19 ] C で COM なんて C++ 勉強するより難しいと思う。
503 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:19:02 ] COMが世に出た当初はC全盛だったけどな
504 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:36:47 ] そしてCOMの世界で死ぬ。小一時間死ぬ。手始めにアパートメントモデルで死ぬ。
505 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:38:21 ] COMって1997年か。C全盛だったか?
506 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:41:48 ] COM で結局オブジェクト指向を勉強するくらいなら C++ から入った方がマシ。
507 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 10:21:40 ] >>505 COMという言葉を前面に打ち出すようになったのはその頃からかもしれないけど、 技術的にはWindows 3.1までには出たはずのOLE2から始まったといっていいはず。。
508 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:41:31 ] ハンドルって何ですか?
509 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:43:26 ] FILE*のような、よくわからない何か。
510 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:48:13 ] 何らかの操作を行うときに必用になる識別子
511 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:12:06 ] char s[100]; sprintf(s,"%d",GetLastError()); MessageBox(NULL, s , NULL , MB_OK ); GetLastErrorを確認するには上のような書き方ですか?
512 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:14:22 ] それもいいけど、FormatMessageを使うと番号に対応するメッセージが得られる。
513 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:38:24 ] ハンドル=ポインタだと思っている
514 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:22:15 ] >>511 wsprintf使え
515 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:23:25 ] だったらcharもTCHARへ変えないと。
516 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:33:37 ] >>515 wsprintfってchar*使えなかったの?
517 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:42:48 ] つかえるのはwsprintfA
518 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:58:53 ] このスレでAとかWとかそんなレベルの話はやめようぜ
519 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:49:38 ] >>517 へぇ・・・ 俺BCCだから関係ないや
520 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:51:37 ] >>518 このスレだからやるんじゃないか 他所でやられるほうがウザい
521 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:56:37 ] >>518 大して難しい話でもないだろ charだと一文字1バイト、TCHARだと一文字2バイトってだけの話じゃないか
522 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:05:25 ] >>519 BCCでも、Win32 APIを直接使うなら関係ある話だろ?
523 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:07:58 ] >>521 なにいってんだ? TCHARは1バイトかもしんないぞ。
524 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:16:39 ] テーチャラは、チャラー型かヲチャラーテー型の切り替え用マクーロだろ
525 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:17:20 ] てーちゃらてーちゃら
526 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:23:40 ] ブチャラーテイに見えた
527 名前:デフォルトの名無しさん [2008/02/17(日) 16:37:35 ] 質問です。 タイトルバー以外のところをドラッグしてウィンドウを動かすために、WM_NCHITTEST で、 return DefWindowProc() == HTCLOSE ? HTCLOSE : HTCAPTION; ってやってるウィンドウで、ドラッグし終わったときを捉えたいのだけどどのイベントが飛んでくるのか判りません。 WM_LBUTTONUP と WM_NCLBUTTONUP かなーとか思って捕捉のためのイベントハンドラを作ったのだけど、 捕捉できず、Spy++ で何が飛んでくるのか確かめようと思ったらシステム全体が落ちてしまいます。 どなたか教えてください。 開発環境は VC2008EE + SDK + ATL/WTL で、VS2005proの include ディレクトリも include しています。
528 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:59:37 ] >>527 WM_MOVEじゃダメ?
529 名前:デフォルトの名無しさん [2008/02/17(日) 18:06:57 ] CoCreateInstance関数がちゃんと動いてくれません>< どうしてか理由が分からないです。 error C2115: 'function' : 互換性のない型が含まれています。 warning C4024: 'CoCreateInstance' : の型が 1 の仮引数および実引数と異なります。 error C2115: 'function' : 互換性のない型が含まれています。 warning C4024: 'CoCreateInstance' : の型が 4 の仮引数および実引数と異なります。 となります。 #include <windows.h> #include <mstask.h> HRESULT hr ITaskScheduler *pITS; hr = CoCreateInstance(CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void **) &pITS); どこかおかしいところがありますか?
530 名前:デフォルトの名無しさん [2008/02/17(日) 18:07:36 ] CoCreateInstanceの前に CoInitialize(NULL); があります。忘れました><
531 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:08:13 ] WM_EXITSIZEMOVEとか?
532 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:08:50 ] >>529 CとC++の違い
533 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:12:48 ] >>529 まずは、REFCLSIDとREFIIDの定義確認。
534 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:19:00 ] >>529 CTaskScheuler 用のヘッダファイルインクルードして無いじゃん。
535 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:28:46 ] >>527 Spy++使わなくても自分のWndProcなんだから、どんなイベントが飛んでくるか分かるっしょ。 DebugConsoleに吐きまくれ。
536 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:59:34 ] 拡張子をcppに変えればいいだけなのにね
537 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 20:51:08 ] ここは敢えて ->lpVtbl->
538 名前:527 [2008/02/17(日) 21:49:19 ] WM_EXITSIZEMOVE でいけましたー。ありがとうございました。 ところで、UINT uMsg の値から WM_〜 とかに変換してくれるライブラリとかありませんか? 変換がしんどかったのでw
539 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:59:55 ] 変換も何もそのまんまだろ
540 名前:デフォルトの名無しさん [2008/02/17(日) 22:03:55 ] あ、欲しいのは文字列です
541 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:05:53 ] WM_ のあるヘッダからテーブルを生成するプログラムを書いた気がする。
542 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:13:08 ] 文字列にしたいってことでしょ
543 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:15:16 ] だから文字列テーブルを作るんだよ
544 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:37:50 ] ラップされて、電子レンジに入れられてしまった子猫の事かと思ってたんだが違ったのか・・・。
545 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:40:28 ] >>544 まだその話してたんかいw
546 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 23:36:41 ] VC++のデバッガならウォッチ式にuMsg,wmとか書いてWM_が表示できた気がする
547 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:16:11 ] >>546 試してみたらほんとだった。 素直に感謝します。
548 名前:デフォルトの名無しさん [2008/02/18(月) 00:21:23 ] FindItem関連で質問があります。 仮想リストビューである文字列と文字列が一致した場合、アイテムを削除する処理を作ろうと思ってます。 lvfi.flags = LVFI_STRING; lvfi.psz = "ab"; int nItem = ListView_FindItem(cListView.hListReserve, -1, &lvfi); ListView_DeleteItem(cListView.hListReserve, nItem); 現在、一致する場合もしない場合もnItemには0しか戻ってきません。 仮想リストビューでは、ListView_FindItemは使えないのでしょうか? 回答よろしくお願いします。 環境はVC.NET + SDKです
549 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:26:01 ] コントロール側がデータを持っていたら、そもそも仮想の意味がないだろ。
550 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 01:33:20 ] アプリケーションを作成したのですが、 CPU使用率が高いです Orz どこが悪いのでしょうか?
551 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 01:46:25 ] お前の脳みそ
552 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 07:49:23 ] >>550 ループしてる場所にSleepを入れる
553 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:07:41 ] なあなあ CreateWindowExした直後にSetClipboardViewerするとウィンドウ無効で失敗するんだけどなんで? もちろんCreateWindowExは成功してる ちなみに CreateWindowExとSetClipboardViewerの間にSendMessage(hWnd,WM_NULL,0,0);挟んだら動いた MSDNにも何も書いてないんだけど… ttp://msdn2.microsoft.com/en-us/library/ms649052.aspx
554 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:11:00 ] >>553 UpdateWindowは?
555 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 12:23:23 ] WM_CREATEくるまで駄目とか。
556 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:29:54 ] いや、CreateWindowExから戻ったときは、 既にWM_CREATEからの応答も帰ってきた後。
557 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:36:57 ] メッセージループまで行ってないうちにってことか。 SendMessage挟んだら動いたのはたまたまかもなあ
558 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:49:16 ] >>555 CreateWindowEx→WindowProc(WM_CREATE)→SetClipboardViewerになるからそれはない WM_CREATE内でSetClipboardViewer呼んでるってんなら話は別だが
559 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:19:47 ] WM_CHANGECBCHAINやWM_DRAWCLIPBOARDを正しく処理してないんじゃないの? ここ見る限りだとSetClipboardViewerの返値にSendMessageしてるみたいだけど。 ttp://msdn2.microsoft.com/en-us/library/ms649016.aspx
560 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:23:15 ] 質問です TextOut等で描画する文字の下にドロップシャドウを描画したいのですが、何か良い方法はありますか? やはり、自分でシャドウを作らないといけないでしょうか? 宜しくお願いします
561 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:25:26 ] 数ドットほど右下にTextOutで灰色か黒の文字を描いておけば影に見えないこともない
562 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:27:47 ] DrawShadowText
563 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:12:50 ] VistaならDrawThemeTextにあった気がする
564 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:48:01 ] スレ違いかな? 縁取り文字の一番気持ちいい実装ってどんなの? 8方向に1pxずつずらした白文字、最後にまんなかに黒文字ってやってるんだけど ちょっと馬鹿っぽい。。
565 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:21:39 ] >>561 >>562 >>563 それらを参考にもう一度調べてみますね 情報ありがとうございました
566 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 17:35:47 ] >>564 BeginPath→DrawText→EndPath→PathToRegion→FrameRgn
567 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:01:37 ] PathとかRegionだと12ptくらいの小さい文字はつぶれるな
568 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:44:41 ] >>564 あらかじめ表示させたいフォントをビットマプとして保存しといて BitBlt・・ あんま変なAPI使うと古いOSで動かなかったりするんで。
569 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:54:14 ] 便乗で質問だけど、このスレ的にはどのOSから切り捨てるのが主流? さすがにXPより前はサポートしません とかはないだろうけど 9x系とNT4.0はもういいかなとか個人的には思ってる
570 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:57:47 ] Vista x64より前
571 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:58:28 ] 9x捨てるならウニコードにしたほうがパフォーマンスはよくなるのかな?
572 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:02:41 ] 2000から切り捨てるとかなり楽
573 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:29:43 ] 俺は2000以降をサポるようにしてる。WINVERの指定も0x0500。 なぜなら、俺の環境では2000が現役だから・・・
574 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:30:54 ] サボると読んで混乱するおいら。
575 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:33:44 ] 古いWindowsでも動かしたいと思うときで、 IE4.01以上など各種アップデートを施したWindows 95/NT4ということにしている。
576 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:40:13 ] 2000より前なんて俺の中では存在しない 98以前はネットに繋ぐなカス
577 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:42:10 ] コンパイラはまさかVC6?
578 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:53:08 ] >>571 実測して差が出るかどうかはわからないけど、理屈の上では変換のコストがなくなるので若干良くなる wchar_tにするとboostがイミフなエラー出したりすることもあるけど。。。
579 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:39:35 ] W<->A変換速度についてはダンゴさんの意見を聞きたいところだ
580 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:52:14 ] >>577 VC6現役で使ってるが何か?
581 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:54:44 ] VS2005 で素直にダイアログのフォントを使っています。 9x は切り捨て
582 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:01:39 ] 暮れに突如DLLラッパー書きたくなって2008Express落としたが重すぎ。 VC6探し出してインスコした。 これアカデミック版なんだよなー、歳は食いたくねぇ。
583 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:11:20 ] msdn2.microsoft.com/en-us/library/ しばらく前から検索すると503になるんだが、俺だけか? 左のツリーからは目的のページには行けるんだが、検索できないと面倒でしかたない。
584 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:31:57 ] GetGlyphOutlineの使い方に関する質問です www7a.biglobe.ne.jp/~lshen/EternalWindows/Graphics/Bitmap/Bitmap14.html ここのサイトのソースで アンチエイリアスを施すフォントにFW_BOLDを指定すると、 このソースではlp[0] = (GetBValue(cr))で例外が発生して、 アプリケーションが落ちてしまいます このソースに手を加えなければ正常に動く様です どの辺りが悪いのでしょうか? よろしくお願いします。
585 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:39:30 ] CreateFont(32, 0, 0, 0, 0, を CreateFont(32, 0, 0, 0, FW_BOLD, にしたってこと? 落ちないけどなー
586 名前:デフォルトの名無しさん [2008/02/19(火) 10:44:04 ] 教えてください GetDesktopWindowでハンドルとって GetDCで デスクトップの画像 取得しているんですが ログイン画面を取るときには たしかモニターの選択か なにかしければならないんですよね? 昔何かで観て、必要になったんだけど 見つからない・・・・ よろしくお願いします
587 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:46:12 ] ウィンドウステーション?
588 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:58:30 ] ウィンドウステーションだったかデスクトップだったか ログイン画面撮るのは難しそうな気もするけど頑張って下さい
589 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:02:15 ] >>586 スレ違いの回答だけど ログイン画面のキャプチャが欲しいだけなら、VirtualPCとかでOS立ち上げれば良い
590 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 13:02:05 ] >>585 はい、その通りです 落ちませんか... もう一度、一から確認し直してみます ありがとうございました
591 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:07:52 ] エディットコントロールのカーソルが何行目かしりたいのですが どうすればよいでしょうか? あと今表示されている一番上と一番下が何行目か知るには どうすればよいでしょうか?
592 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:50:25 ] >>586 >>588 XPまでならサービスで作っておけばできなくもない。 しかしVistaから実現は厳しくなった。
593 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:53:11 ] >>591 カーソル位置は、EM_LINEFROMCHAR 表示のほうは、EM_CHARFROMPOS とかでどうかなあ
594 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 14:55:06 ] あ、表示は行位置か。EM_CHARFROMPOS と EM_LINEFROMCHAR の組み合わせだな。
595 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:20:22 ] c:\foo.txt, c:\bar.bmpといった存在するファイルのパスを渡すと Explorerで表示されるアイコンと同じイメージを取得できる関数ってなんですか?
596 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:30:36 ] SHGetFileInfo でした
597 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:57:58 ] >>591 EM_GETFIRSTVISIBLELINE等々 っていうか、ヘルプのEM_で始まるメッセージは全部チェックしる
598 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:52:56 ] >>592 セッション0、か
599 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:00:33 ] 質問です ttp://wisdom.sakura.ne.jp/system/winapi/win32/win13.html ここのサンプルプログラムをVC++2005EEでコンパイルしてみたところ MessageBoxを呼び出すところで error C2065: 'LlpcsWnd' : 定義されていない識別子です といわれコンパイルできません どうも宣言した変数がlpcsWndなのにLlpcsWndと認識されてしまってるみたいです ためしにTEXTマクロの中身以外のlpcsWndをLlpcsWndと修正してみたところ コンパイルに成功し、実行できたのですがこんな修正をせずとも コンパイルを成功させ実行させる方法とかはありませんか? ひょっとしたらスレ違いかもしれませんがよろしくおねがいします
600 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:04:23 ] >>599 >>463
601 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:05:50 ] >>599 >TEXT(lpcsWnd->lpszName) TEXT( ) いらないよそこ
602 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:06:12 ] >>599 ShiftJIS でおk ってかサイトの方が TEXT マクロの使い方を間違ってる
603 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:12:59 ] >>600-602 早い返答ありがとうございます TEXTマクロの使い方が間違っている・・・ですか まずはネットで大まかにやった後本を買って足りないところを補おうと考えていたのですが やっぱり一冊は買っておくべきですね・・・
604 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:29:54 ] こういうサイトに載ってるコードって、無意識的に正しいと思っちゃうよね。
605 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:52:14 ] その考えは危険
606 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 03:12:04 ] MSのサンプルでも偶に間違ってるしな
607 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 03:12:59 ] モーダルダイアログのプロシージャ内で、 親ウインドウのハンドル(DialogBoxのhWndParentに渡したハンドル)を知るにはどうしたらいいですか? GetParentとかGetAncestorとかGetWindowとか試したんですが、どれも違うようです。
608 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 03:27:44 ] GetWindowLongPtr()
609 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:01:25 ] >>604 まあいくらなんでも、実際にコンパイル、実行してると思うわな
610 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:14:53 ] >>587 ,588 徹夜明けで返事が遅れてしまいました ヒント頂いてありがとうございます。 これからがんばってみます
611 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 10:47:09 ] >>606 ttp://watch.impress.co.jp/game%2Fdocs/20070927/wv.htm この記事おもいだした
612 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:25:40 ] >>609 tchar の型によっては全く問題なくコンパイルできる
613 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:25:54 ] サンプルコードはとりあえずAPIが正常終了返す条件を教えてもらう程度にしか見ないほうがいいよな。
614 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:31:53 ] >>612 あーそっか。
615 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:35:06 ] C言語を初めて覚えるのに「猫でも」で痛い目を見たから どこのサンプルでも一行ずつチェックして確かめてるわ。
616 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:34:14 ] ある文字列stringを描画したときに一定の幅にstringの何文字目まで収まるかを知りたいんだけど、 プロポーショナルフォントも考慮した場合GetTextExtentPoint32()あたりで1文字ずつ のばしていくしか方法無いかな? 要はテキストの折り返し処理をしたいんだけど、↑の方法だと行数が多いときに遅くなっちゃって。
617 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:43:26 ] 無いと思う
618 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:45:52 ] GetTextExtentExPointってのはどう?
619 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:48:16 ] >>616 >ある文字列stringを描画したときに一定の幅にstringの何文字目まで収まるかを知りたいんだけど DrawTextEx を DT_SINGLELINE で呼び出して、DRAWTEXTPARAMSのuiLengthDrawnを見る。
620 名前:616 mailto:sage [2008/02/20(水) 17:28:18 ] GetTextExtentExPointとDrawTextExググってみた感じどっちでもいけそうだな。 つか、レス早すぎだろwその知識はうらやましいわ。 ホントありがとう。
621 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:07:55 ] >DT_SINGLELINE 童貞シングルライフと読めて泣いた
622 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:23:10 ] >>621 どんだけ煮詰まってるんだw
623 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:14:00 ] つまんね
624 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:40:40 ] じゃあ死ねよ
625 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:06:50 ] はあ?
626 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:08:48 ] こういう出来ないばっか言う馬鹿女キライ
627 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:09:14 ] ハイ、すいません ゴバクが通りますよ
628 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 03:10:51 ] 自然な流れに吹いた
629 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 06:02:16 ] ワロタ ほんとに誤爆なのか
630 名前:デフォルトの名無しさん [2008/02/21(木) 07:41:00 ] InterlockedExchange関数の使い方、使うメリットを 解りやすく教えてください。 コレを使うと複数プロセスでのメモリアクセスの競合を保護できる? らしいのですが、イマイチ解りません。
631 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:30:31 ] 解かりやすく、と言われても 「同期オブジェクト」の仕組みを理解していないと伝わらないし、理解すれば解かるような…… 使い方もメリットもここに書いてある。 短時間でできる汎用の同期オブジェクト msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndllpro/htm/metrsect.asp 読むのは、「アトミック」、「スピンロック」、「デッドロック」、この3つの意味を正しく理解してから。 一度読んで終わらず何度も読めば良いと思うよ。 仕様を読んだうえでイマイチ解からないところを「ここは何故」と聞きに来ればいい。 同期オブジェクトの解説サイトは沢山あるから検索してみ。
632 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:33:38 ] >>630 使い方・・・ねぇ 例えば LONG 変数があったとして、 LONG x; この値を普通に操作すると、スレッド間で競合が起きるだろ? BOOL Lock() { if (x == 0) { x = 1; return true; } else { return false; } } void Unlock() { x = 0; } InterlockedExchangeを使えば、そういった問題は起きない BOOL Lock() { if (InterlockedExchange(&x, 1) == 0) { return true; } else { return false; } } void Unlock() { InterlockedExchange(&x, 0); } こんな例でわかるかなぁ・・・
633 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 09:37:04 ] あー>>631 の追記、 もし同期オブジェクトの解説サイトを読むときは、 日経BP(ITPRO)の解説の一部は人に薦めるようなものではないので 参考にする場合は気をつけて。
634 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:57:19 ] >>631 Interlocked系は同期オブジェクトじゃないだろ……
635 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:17:25 ] GDIのAPIってスレッドセーフなんでしょうか? 極端な例をいえば、1つのHDCの上半分・下半分を2スレッドでSetPixel()していくなど。 HDCへの描画は領域が被らない場合にスレッドセーフか?といったほうがいいのかな。
636 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:23:41 ] safe
637 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:34:47 ] 任意のDPI値を持つメモリDCを作成するには、 どのような関数を使えばよいのでしょうか? CreateCompatibleDC(NULL)で作成したものだと、 GetDeviceCaps(LOGPIXELSX)の値はモニタのDPI値のままになってしまいます。
638 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:48:05 ] ファイル名が変更されたりアプリやOSが再起動されたりしても 常に同じファイルを参照できる方法を探しています. FATをあきらめてNTFSに限定すれば GetFileInformationByHandle()の戻り値のBY_HANDLE_FILE_INFORMATIONに含まれる nFileIndexHighとnFileIndexLow(とdwVolumeSerialNumber)が ファイルのIDとして使えるようです. しかし,逆にこれらの情報をもとにファイルを取得する方法がわかりません. どなたかご教示お願いします.
639 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:14:33 ] OpenFileByIdってのがあるみたいだけど Requires Windows Vista. って書いてあるなぁ msdn2.microsoft.com/en-us/library/aa365432 (VS.85).aspx Win32 FileID API Library っての使えばXPでも使えるようになるのかな よくわからん
640 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:31:12 ] NTFSならApp Dataフォルダーにでもハードリンクなファイル作れば?
641 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:34:30 ] >>638 それって、例えばc:\abc.binを上書きするのに c:\abc.tmpを作成→c:\abc.binを削除→abc.tmpをabc.binにリネーム とかやるソフトだとファイルIDが変わると思うけど
642 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 21:43:42 ] なんか似たような話が書いてあった www.atmarkit.co.jp/fwin2k/keyword/linktracking/linktracking.html
643 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 02:20:04 ] ショートカットファイルの自動追跡を利用したらどうかね? Resolve()とかいうメソッドがあったような
644 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 04:11:41 ] そんな物アテになるかよ
645 名前:デフォルトの名無しさん [2008/02/22(金) 09:37:07 ] フォントのプレビュー画面を作成しているのですが、 フォントの言語によってサンプルの文字列を変更しようと思います。 日本語フォントなら日本語の文章を、欧文フォントなら英語の文字列といった具合です。 そのフォントのデフォルトの言語のようなものを得るにはどうしたらよいですか?
646 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:37:34 ] エディットボックスの現在のカーソル位置の段数調べたいんですが SendMessage(ハンドル名, EM_LINEFROMCHAR, -1, 0); この使い方であってますか? なぜか数字が合わないです。
647 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:49:24 ] 何が返ってくるん?
648 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:53:03 ] いくつを期待していくつになるんだよ。 最初の行は0だからな。
649 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:42:59 ] >>647 <<648 申し訳ないです。 自分のミスです^^; すいません、もうひとつ質問なんですが、 SetScrollInfoをつかってウインドウにスクロールバーを設置していますが ウインドウにツールバーが重なっていてるのですがスクロールバーの幅 を調節する方法はあるのでしょうか?
650 名前:649 mailto:sage [2008/02/22(金) 14:46:03 ] 訂正 ウインドウにツールバーとスクロールバーを設置しています。 ところがツールバーの上にスクロールバーが重なっています。 スクロールバーの幅を調節する方法はあるのでしょうか?
651 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:56:46 ] 2時間画面の前で待ってたんだぞ。何かよこせ ツールバーもエディットボックスもメインウィンドウの子なんでしょ? エディットを親にしてスクロールバー作れば重ならないはず
652 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:56:47 ] 妙なことするより、ツールバーに重ならないように子ウィンドウ作った方が楽かと
653 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:49:39 ] >>651 つ I これやるよ。
654 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:18:09 ] >>651 申し訳ないです。 ^^; ウインドウに段数をペイントで書いていまして、 ウインドウに書かれた段数の横にエディットコントロール を貼り付けています。そしてウインドウのスクロールバー でエディットコントロールのスクロールを連動させています。 >>652 子ウインドウにエディットコントロールは貼り付けられますか?
655 名前:デフォルトの名無しさん [2008/02/23(土) 20:00:44 ] WindowsでスプールファイルにEMFがあります。このファイルを元にし て、印刷しますがこのファイルを解析して、実際に紙に印刷される意味 のあるデータを取得すると言う事は出来るのでしょうか? RAWに関しては、解析して意味のあるデータを取得した事はありますが、 EMFに関しては良く分かりません。Windows XPの環境です。初心者です が、宜しくお願いします。
656 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:25:07 ] >>655 これかなたぶん? msdn2.microsoft.com/en-us/library/ms534514 (VS.85).aspx
657 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:57:42 ] Windows VistaでBeep関数を呼び出しても音が鳴りません。 何か仕様変更等あったのでしょうか。
658 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:58:33 ] EnumEnhMetaFileだろjk
659 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:32:15 ] VC++6.0、SDKでEDITボックスにドラッグアンドドロップしてファイル名を取得したいのですが DragAcceptFiles(::GetDlgItem(hWnd, IDC_EDIT1), TRUE); とやってもWM_DROPFILESのメッセージが拾えないです。 リストボックスに同様なものをしたら拾えたのですが EDITは特殊なのですか?
660 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 22:11:35 ] >>659 エディットボックス (というより自分自身がウィンドウプロシージャを握っていないウィンドウ) のメッセージを受け取ろうとしているのだから、サブクラス化しないと。
661 名前:デフォルトの名無しさん [2008/02/23(土) 22:53:06 ] >656 有り難う。しかし、日本語でないと良くわからん。日本語のサイトは無いのだろうか?
662 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:11:47 ] >>661 >>658
663 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:30:42 ] >>660 レスサンクス 調べてみる
664 名前:デフォルトの名無しさん [2008/02/24(日) 01:23:34 ] 作成したexeファイルと同フォルダにヘルプファイルを置いているので、 GetModuleFileName()を使って、パスを取得する処理を入れているのですが、 起動時にこの関数でエラーになってしまいます。 で、GetLastError()を使うとエラーコードは24とのこと。 エラーコード24は「プログラムがコマンドを発行しましたが、コマンドの長さが正しくありません。」らしいのですが、 これは何が理由でエラーとなっているのでしょうか。。
665 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:30:16 ] まずは自分コードを疑おう
666 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:48:07 ] プロセスにマップされたものでないならエラーになるに決まってるだろ
667 名前:666 mailto:sage [2008/02/24(日) 01:50:32 ] やるんならGetCurrentDirectory使うか INIとか設定ファイルなんかに持たせるとか そういうのでいいんでね?
668 名前:664 mailto:sage [2008/02/24(日) 01:53:59 ] >>665 もちろん自分のコードを疑っているんですが、 その取っ掛かりが欲しくて。 このエラーコードの意味やどういった時に起こるものなのかがわかれば、 どこから目を付ければいいかわかるかなと思ったんですが。 >>666 すみません。 プロセスにマップという意味がよくわかっていませんが、 要は、自exeファイルがあるパスを取得するには、 ただ単にGetModuleFileName()を呼び出すだけではダメだ、ということでしょうか?
669 名前:664 [2008/02/24(日) 02:20:23 ] >>667 ありがとうございます。 いま作ってるのが常駐するやつでして、 GetCurrentDirectory()もやってみたのですが、 常駐アプリの場合だと、C:\Document and Settings\[User Name]\ が返るみたいでした。
670 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:38:56 ] >>667 おいおいGetCurrentDirectoryとか嘘を教えるなよ カレントディレクトリ≠exeのディレクトリだと誤作動するアプリの元凶だろ >>669 GetModuleFileName→(PathRemoveFileSpec)→PathAppend
671 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:44:31 ] その exe を他のディレクトリに移してみてから実行したら どうなるかは試してみた?。 GetModuleFileName の使い方に問題がなければ アクセス権や MAX_PATH とかの問題じゃない?
672 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 02:48:10 ] ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い
673 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:33:51 ] 最小コードも何も、>>670 に書いてある3つのAPI名でググればすぐに見つかるだろ その程度の検索も出来ないような奴はプログラマには向いてない
674 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:00:40 ] 知りたいのはヘルプの位置じゃなくて、GetModuleFileNameがエラーを返す理由でないの? PathAppend とかぐぐってどうすんの。
675 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:02:39 ] DWORD GetModuleFileName(hinstModule, lpszPath, cchPath) 戻り値 関数が正常に終了した場合は、 バッファにコピーされた文字列の文字数を返します。 それ以外の場合は、 0を返します。拡張エラー情報を取得するには、 GetLastError関数を使います。
676 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:08:57 ] ずるずる引っ張るぐらいなら最小コードをうpしたほうが早い
677 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:19:44 ] もうさ、__argv[0]でも使ってれば?
678 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:22:54 ] #include<windows.h> #include<stdio.h> int main(void){ char filename[_MAX_PATH]; GetModuleFileName(NULL, filename, sizeof(filename)); printf("%.*s\n", sizeof(filename), filename); return 0; } >>676 何故自分で貼らない?質問者か? >>675 で分からないなら MSDN ダウンロードしなよ 無料だから
679 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:25:35 ] やっぱ勘違いしてたか。最小コード貼れってのは、質問者に言ってるんだよ。 エラーを再現できる最小限のコードを出せってな。
680 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:30:44 ] 672は誤解されてしまったようで申し訳ない 解決方法は、もちろん示されたAPIをググってコード見直せばOKなんだ エラー原因もそれで解決するはずなんだが、それができないのなら晒したら? という話
681 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:39:43 ] > GetModuleFileName(NULL, filename, sizeof(filename)); 今時こんなコード書く糞プログラマは偉そうな事言えんぞw
682 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:58:06 ] 普通誤解しないから
683 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:06:58 ] >>678 そんなヘドロみたいなコード貼るな
684 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:26:50 ] >>681 横レスですまないが、素人目にはどこが悪いかわからない。 sizeof(filename)/sizeof(char)としないとUNICODEビルドで問題が出るのかな。
685 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:35:55 ] DWORD GetModuleFileName(HMODULE, LPTSTR, DWORD);
686 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:43:13 ] 今は一々URLDownloadToFileで手元にファイルを保存→ファイルを開いて読み込む→ 処理→ファイルを消す。ってやってるんだけど、ファイルとして保存しなくても 直接ネット上から読み込む。みたいなスマートな方法ってありませんか?
687 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:46:49 ] 普通にソケットを使えばいいだろ
688 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:49:03 ] InternetReadFile
689 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:18:04 ] >>687-688 ありがとう。調べてみたら何となく分かった
690 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 13:52:58 ] なんかフルボッコなので書き直した #include<windows.h> #include<stdio.h> #include<wchar.h> #include<tchar.h> #define NITEM(arr) (sizeof(arr)/sizeof(arr[0])) int _tmain(void){ TCHAR filename[_MAX_PATH]; GetModuleFileName(NULL, filename, NITEM(filename)); _tprintf(TEXT("%.*s\n"), NITEM(filename), filename); return 0; }
691 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:11:01 ] Win32ならRTL_NUMBER_OFかARRAYSIZE使おうぜ。 と書こうとヘッダ見てたら、いつの間にかRTL_NUMBER_OF_V2が増えてる。 こっちはC++専用ながら、ポインタだとコンパイル通らないのか。
692 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:26:20 ] このスレ用のwikiなんてあったんだな どういう経緯で作られたの? まったく更新されてないようだけど
693 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:31:53 ] V2 というネーミングセンスに吹いたw
694 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:02:08 ] >>692 更新されてないどころか内容も無いし次からテンプレから消してもいいかもな
695 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:50:16 ] >>690 まだまだ叩かれる余地がある。 ttp://msdn2.microsoft.com/en-us/library/ms683197.aspx まず、2k/XPでは、ファイルパスがMAX_PATHより長かった場合、NULL終端されない。 MAX__PATHより長かった場合、\\?\を使った長いファイルパスを返す。 したがって、filename配列は32000ぐらい確保すれば安全だ。 あと、NTIMEなんていう汚いマクロ使うな。
696 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 15:56:29 ] NULL終端はされるんじゃないか? >the string is truncated to nSize characters including the terminating null character. 「null 文字も含め nSize 文字分に切り捨てる」でしょ?
697 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:04:58 ] Windows XP/2000: The string is truncated to nSize characters and is not null terminated. ~~~~~~~~~~~~~~~~~~~~
698 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:11:25 ] あ、本当だ。失礼しました
699 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:20:22 ] >The global variable _pgmptr is automatically initialized(略) 身も蓋もないとはまさにこのこと(w
700 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:22:52 ] そもそも_MAX_PATH(アンダースコア付き)なんてWin32APIで使う物では無かろう
701 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:45:36 ] 動けばいいじゃん こういうどうでもいいとこをグチグチ言ってくる奴多杉
702 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:39 ] お前アホだろ 特定の状況でまともに動かないからレスがついてんだろうが
703 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:51:54 ] >>701 お前みたいな思想を持つ奴が、Windowsのバージョンアップ程度で、動かなくなる糞コードを書く。
704 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:56:12 ] 偉そうなことを言う奴に限ってコードの出し惜しみ(というかかけない)とか ちょっとレベルの高い話になると何も答えられないんだよな。
705 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 16:58:26 ] 先生!ファイル名をnul.exeにしたんですけど、 どうやって起動すればいいですか!?
706 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:36:17 ] RunDLL32 shell32.dll,ShellExec_RunDLL nul.exe
707 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:00 ] C:\>RunDLL32 shell32.dll,ShellExec_RunDLL c:\nul.exe 指定されたデバイス、パス、またはファイルにアクセスできません。 アクセス許可がない可能性があります。
708 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:33:01 ] なにがしたいねん
709 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:56:06 ] prn とか、DOS時代からある予約名を たまに思い出したかったんだろう
710 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:58:24 ] C:\>dir nu* ドライブ C のボリューム ラベルがありません。 C:\ のディレクトリ 2008-01-21 22:09 130,765 NUL 2008-02-03 07:45 53,248 nul.exe
711 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:02:56 ] >>678 屑コード晒す >>690 書き直してもやっぱり屑コード >>701 「動けばいいじゃん」 ・・・w
712 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:07:59 ] | ∧ ∧ |/ ヽ ./ .∧ | `、 / ∧ |  ̄ ̄ ̄ ヽ | ̄ ̄ ̄月曜日 ̄ ̄ ̄) | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\ 煽りはいらない |ヽ-=・=-′ ヽ-=・=- / ただ私に絶望したまえ |:: \___/ / |::::::: \/ /
713 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:27:46 ] 動けばいいじゃんって言う奴ほど汚いコードかくんだよな むしろ動けばいいって言う前提で書いてるからなんだろうがw そういう奴は個人でソースを管理する趣味グラマーでいてくれ
714 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:49:09 ] モジュール単位で仕様がハッキリしておけば中身のコードなんてどうでもいいじゃん と趣味グラマーが申しております
715 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:52:38 ] その中身を保守する人のことを考えろ
716 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:54:25 ] 仕様通り動いてくれるなら正直悪くは無い。 仕様通り動かない、そもそも仕様自体が二転三転するとかだと楽し過ぎるからな。
717 名前:デフォルトの名無しさん [2008/02/24(日) 20:21:51 ] MessageBoxだとビープ音が鳴ってしまうのですが、 音を消すことはできますか? もしくは、MessageBoxに似た音の出ないapiはありますか?
718 名前:664 mailto:sage [2008/02/24(日) 20:30:38 ] 664でGetModuleFileName()関連の質問をした者です。 変な質問をしてすみませんでした。 >>676 で言われているように、 最小コードを作ったのですが、なぜかこちらではエラーが発生せず、 質問しようにも出来ない状態です。 自分で少しずつ調査して行こうと思います。 お騒がせしてしまって申し訳ありませんでした。 MUI化していないときはエラーになっていなかったので、 とりあえずはMUIあたりから調べてみます。 ありがとうございました。
719 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:55:24 ] >>717 MessageBoxのようなダイアログボックスを作るしか無いんじゃないの? たまーにMB_NOSOUNDとか欲しくなるんだけどね・・・
720 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:01:23 ] >>719 ありがとう
721 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:53:35 ] 先生! >>690 のコードをプロレベルのコードに修正お願いします。
722 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:12:30 ] 屑コードと言う人は、とりあえず そのコードを正しく直してから批判しな?
723 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:28:42 ] >>678 屑コード晒す >>690 書き直してもやっぱり屑コード >>701 「動けばいいじゃん」 >>722 「正しく直してから批判しな」
724 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:47 ] 「?」でこのスレを検索すると、特徴的な使い方している香具師が浮かび上がってくるね。
725 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:48 ] マイタ・デッヤーレ
726 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:06 ] #include <windows.h> #include <tchar.h> #include <stdio.h> #include <stdlib.h> #define CHECK(b) if(b); else goto ERROR int _tmain(void) { int exit_status = EXIT_FAILURE; LPTSTR filename = NULL; DWORD len; TCHAR dummy; len = GetModuleFileName(NULL, &dummy, 1); CHECK(len != 0); filename = malloc((len + 1) * sizeof (TCHAR)); CHECK(filename != NULL); len = GetModuleFileName(NULL, filename, len + 1); CHECK(len == 0); _tprintf(_T("%.*s\n"), len, filename); exit_status = EXIT_SUCCESS; ERROR: free(filename); return exit_status; }
727 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:45 ] >>699 そういうのって C++ のグローバルオブジェクトのコンストラクタから 正しく使えるんだろうか。 もっとも、GetModuleFileName も正しく使えるかどうか。
728 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:56:18 ] >>726 > CHECK(len == 0); これは拙く内海?
729 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:59:04 ] 間違えた。 0 の時は 「失敗」 なのか。
730 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:21:32 ] >>726 > len = GetModuleFileName(NULL, &dummy, 1); で成功すればlen=1だから > filename = malloc((len + 1) * sizeof (TCHAR)); filenameのバッファが全然足らねーだろ つーかcalloc使えよ 相変わらず屑コード全開だな
731 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:00:24 ] 質問と回答とこの俺のレス以外はいりません
732 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:01:02 ] なんでcalloc使わないといけないんだ?w
733 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:06:13 ] >>678 屑コード晒す >>690 書き直してもやっぱり屑コード >>701 「動けばいいじゃん」 >>722 「正しく直してから批判しな」 >>726 屑コードどころかバグありコード晒して恥の上塗り >>732 「なんでcalloc使わないといけないんだ?w」
734 名前:1 ◆GqrOSDYjeQ mailto:sage [2008/02/25(月) 01:11:01 ] >>726 #define CHECK(b) if(b); else goto ERROR このコードは個人的に盗ませてもらうかもしれない いいもん見せてもらったw
735 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:20:11 ] 煽ってるやつは同一人物か? 違うよな?な?でないとおかしいもんな
736 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:25:48 ] 煽ってるやつは同一人物か? 違うよな?な?でないとおかしいもんな
737 名前:731 mailto:sage [2008/02/25(月) 01:27:05 ] マジ黙れお前ら
738 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:28:46 ] こんな感じでいいのか? LPTSTR name = NULL, newptr; DWORD len = 32, rlen; do { rlen = 0; len *= 2; if ( (newptr = (LPTSTR)realloc(name, len * sizeof(TCHAR))) == NULL ) break; name = newptr; } while ( (rlen = GetModuleFileName(NULL, name, len)) == len ); if ( rlen ) _putts(name); free(name); 始め、GetLastErrorを使った切り捨てチェックで実装しようとして気付いたのだが、 SDK for WindowsVista 付属のドキュメントで、 GetModuleFileNameがバッファが小さくて切り捨てした時、 ERROR_INSUFFICIENT_BUFFERがセットされる、とあるけどこれ嘘だな。 いつからか誤った記述が紛れ込んだ予感。
739 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:32:22 ] >>734 が嫌味なのか真性なのか分からない俺はハントシーロムッテロなのか・・・
740 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:36:18 ] >>738 DWORD len = MAX_PATH, rlen; の方がrealloc呼ばれる回数が減っていいかも
741 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:36:49 ] MSDNは無謬 そんな風に思っていた時期が… 無い
742 名前:738 mailto:sage [2008/02/25(月) 02:06:26 ] 改めて見るとrealloc使う必要性全然ないな。 随時追加を実装する時のコードだ、これは。 free(name); if ( (name = (LPTSTR)malloc(len * sizeof(TCHAR))) == NULL ) break; これでいいや。
743 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:27:33 ] このスレからカルトを感じる
744 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 03:15:59 ] 適当な大き目のバッファをスタックに取ってOK それで取得できないような糞長いディレクトリを使うような池沼は無視して問題ない。
745 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:31:53 ] 俺も1KBくらい取って駄目なら止めるな 無駄な作業だもんw
746 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 05:00:57 ] プログラム板の住人はいつも無意味にピリピリしてるのれす
747 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 05:06:54 ] そもそも>>678 が勘違いして関係ない糞ース書くからだろ
748 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:41:48 ] そうか・・・。 バッファが足りないときは nSize がそのまま返ってきて ERROR_INSUFFICIENT_BUFFER エラーになるだけなのか。 あんま斜め読みして横レスするもんじゃないな。
749 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 07:45:05 ] そういう風に勝手にMaxを想定するプログラマが多いから、 東証のシステムが止まったりするんだよな。
750 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:04:45 ] >>749 Microsoft自体がそうだけどな。 Path系APIがMAX_PATHを超えるパスを正しく処理できない、とか。
751 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:12:57 ] それは、ANSI版使うからだね。Unicode版使えば、約32000文字まで扱えるかな?
752 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 08:50:50 ] 違うよ。Path関数はバッファ長を引数に渡さないからA/W版共にMAX_PATH固定で作ってあるんだよ。
753 名前:デフォルトの名無しさん [2008/02/25(月) 09:30:24 ] ダイアログボックスに関する質問です。 モーダルダイアログボックスで、キャプションバー付き、システムメニュー&最小化ボタン等付き、オーバーラップスタイルで作成しています。 タイトルは開発環境のダイアログプロパティで指定して、メニューも同様です。 普通のウィンドウって左上にアイコンがでますよね? ダイアログボックスでも普通はアイコンが表示されるんですが、メニューをダイアログボックスに指定する(追加する?)と このアイコンが表示されなくなってしまうんですが、どうしたらいいでしょうか メニューバーを付けないと、アイコンは表示されるんですが・・ 一応リソースの中身はこういう風になっています。 IDD_DIALOG1 DIALOGEX 32, 32, 155, 81 STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU CAPTION "タイトル" MENU IDR_MENU1 FONT 9, "MS Pゴシック"
754 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:19:12 ] 指定のフォルダ内にあるファイルのファイル名を全て取得するにはどうすればできますか? フォルダ内のファイルを全て開きたいんですが
755 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:26:52 ] FindFirstFile FindNextFile
756 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:28:28 ] FindFirstFile、FindNextFileで列挙する
757 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:48:10 ] ありがとうございます。できました
758 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 12:01:42 ] ああ、PATH系ってShell系のAPIね。それならそうかも。前、エクスプローラ使って、 頑張って長いパスのファイル・フォルダ作ろうとしたが、そこらへんの壁越えれなった
759 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 15:34:45 ] >>690 見て思ったんだが、配列なら_countof使ったらいかんの? (VC++2005以降だが2003でも定義コピペすれば使える)
760 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 18:43:09 ] _countofでもARRAYSIZEでもいいけど、 C89に入れてくれればそれで統一できて良かったのに……。 C99でも遅くない。次の改訂でも遅くないから。 C++だとboost::sizeがあるけど、配列に対してはstd::size_tを返すから、 Win32 APIでは少し使いづらい。定数式が必要なときも使えないし。
761 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:45:14 ] またboost厨か C++にはSTLがあるという話をするなら分からんでもないが 標準ライブラリでないboost前提で平然と話を進めるあたり流石としか言えない
762 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:59:44 ] つうかそんな小物のためにboost入れたくないな
763 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 01:20:15 ] CreateWindowExでES_MULTILINEを設定してEDITコントロールを作成すると WS_TABSTOPを記述してもtabでのコントロール間でのフォーカス遷移がそのコントロールでとまってしまいます。 ES_MULTILINEをスタイルに設定したEDITコントロールでもWS_TABSTOPが使えるようにするにはどうすれば良いですか?
764 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 01:39:18 ] sizeof も size_t 返すじゃん?
765 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 05:48:03 ] コンパイル時定数です C言語スレでどうぞ
766 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 07:10:14 ] >>763 WM_GETDLGCODEの戻り値を サブクラス化して弄ってやればいいような気がする。 タブが入力できなくなるかもしれんが、それは知らん。
767 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:55:53 ] lpBufSizeの分領域を確保しようとしてるんですが、HttpQueryInfoでHTTP_QUERY_CONTENT_LENGTH を指定してもlpBufに何も返ってきてくれません やっぱりHttpOpenRequestの3個目の引数が間違ってるんでしょうか? index.htmlや./、../など色々試してみても変らずだったんですが www.google.co.jp/ みたいに/の後に何も無い場合って何を入れればいいですか? //ソース hInet=InternetOpen(szClassName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); if(!hInet)return -1; hConn=InternetConnect(hInet,"www.google.co.jp",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,0); if(!hConn){ InternetCloseHandle(hInet); return -1; } hReq=HttpOpenRequest(hConn,"GET","/",NULL,NULL,NULL,0,NULL); if(!hReq){ InternetCloseHandle(hConn); InternetCloseHandle(hInet); return -1; } if(!HttpSendRequest(hReq,NULL,0,NULL,0)){ InternetCloseHandle(hReq); InternetCloseHandle(hConn); InternetCloseHandle(hInet); } HttpQueryInfo(hReq,HTTP_QUERY_CONTENT_LENGTH,lpBufSize,&dwSize,NULL); ※lpBufSizeに何も入らない…
768 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 14:58:53 ] google の / がどうかは知らないけど、content-length は必ずあるとも限らないしねぇ
769 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 15:50:39 ] index.htm、またはindex.html googleはindex.html www.google.co.jp/index.html = www.google.co.jp/
770 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:02:39 ] "/" 等のディレクトリへのアクセスは、普通はサーバーが解釈してくれるんじゃない? (index.html, index.htm, default.html, index.asp, ...)
771 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:04:49 ] 質問です。 RegisterHotKeyでホットキーを使いたいと思うんですが、 NumLockを外した状態のテンキー(カーソルやらHomeやらEndやらとして動作する) をホットキーとして利用したいんです。 ところがホットキーの仕様ではいわゆる普通のカーソルキーとテンキー部分との区別が無いので、 どっちのキーを押してもホットキーとして反応してしまいます。 テンキー部分のみをホットキーとして利用できるようなカラクリをこしらえられませんかね。 WM_KEYDOWNとかならExtendedKeyか否かで両者を区別できるんだけどな。 やっぱHookしか無いですかね。
772 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 16:29:15 ] >>770 解釈ってーかリダイレクトされるな多くの場合は。
773 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:00:23 ] >>768-770 ありがとうございます。とりあえず3番目の因数は/でいいんですね それでも何も入らないのはヘッダに情報が無いからなのかな 調べてたらInternetQueryDataAvailableでサイズ調べれることを知ったのでこれ を使って確保することにします
774 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 17:03:09 ] 突っ込んではいけない
775 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:02:33 ] ごめんInternetQueryDataAvailableで分かるのは一度に読み込めるバイト数だったのね とりあえずは諦めて読み込めない時は5000000確保することにしました それでこんな風に書いてみたんですが、yahooやgoogleでは途中までしかダウンロード されないんですが何故ですか? ずっとブレークポイントで止めたりググたりして調べてるんだけど分からなくて発狂しそうです とりあえずエラーチェック無しで書いてみてます if(lpBufSize[0]=='\0')lstrcpy(lpBufSize,"5000000"); BufSize=(atol(lpBufSize))+1; lpszBuf=(char *)GlobalAlloc(GMEM_FIXED,sizeof(char)*BufSize); memset(lpszBuf,0x00,sizeof(char)*BufSize); char *Buf=lpszBuf; while(1){ InternetReadFile(hReq,Buf,BufSize,&dwSize); Buf+=dwSize; if(dwSize == 0)break; }
776 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:35:23 ] 戻り値とGetLastErrorの確認
777 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:36:00 ] msdn2.microsoft.com/en-us/library/aa385103.aspx >To ensure all data is retrieved, an application must continue >to call the InternetReadFile function until the function >returns TRUE and the lpdwNumberOfBytesRead parameter equals zero.
778 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:33:00 ] >>776 ありがとう。ループ1回目はエラー無しで2回目からエラーコードERROR_INVALID_PARAMETERがでて 調べると「パラメータが間違ってる」らしいけど何が間違ってるのかわからない… 現在のソースは>>767 に>>775 をくっつけてる状態です >>777 完全にダウンロードするには、dwSizeが0かつ関数がTRUEを返すまでループさせないと いけないってこと? でもそれだと永遠ループしてしまう
779 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:35:22 ] 実際にはない部分の領域も書けるといっちゃダメって話じゃないの。 要するにBufSizeもちゃんと減らせと。
780 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:41:32 ] >>779 ありがとう。そういうことっぽかったです 試しにInternetReadFileの3つ目の引数を1にしてみたらいけました。 ただこれだと効率悪そうなのでまた今度ちゃんと考えて計算してみます インターネットに繋げるのに6時間以上かかってしまったけど上手くいってよかった
781 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:53:13 ] >>774 「因数」のことか?代わりに突っ込んどくか。 引数(ひきすう)が正しい。
782 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:20:34 ] if(lpBufSize[0]=='\0')lstrcpy(lpBufSize,"5000000"); BufSize=(atol(lpBufSize))+1; とか lpszBuf=(char *)GlobalAlloc(GMEM_FIXED,sizeof(char)*BufSize); memset(lpszBuf,0x00,sizeof(char)*BufSize); とか突っ込みどころ満載だな
783 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:36:56 ] いんすうwwwwwwwwwwwwwwwwww昔の俺だwwwwwwwwwwwww
784 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:50:34 ] >>782 どう直すと良くなる?
785 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:52:30 ] 今時クリップボード以外でGlobalAlloc使う意味あんの?
786 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:52:31 ] GlobalAlloc使う理由がわからん HeapAllocのがよろしいと思うんだけどね 0梅とかシングルスレッド用オプションとか多機能だし
787 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 22:58:16 ] スレ的にはnew使うのは無しか
788 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:01:08 ] lpBufSizeがどこから来ているかわからないが、 初めから整数型にしておけよ。特に関数の引数なら尚更。
789 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:05:12 ] 音訓交じりな"ひきすう"より"いんすう"と読む方が国語的にはセンスがある筈なんだけどね
790 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:06:54 ] それだと因数と同じ発音だから「ひきすう」と読むと説明される。
791 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:07:03 ] 正直HeapAllocも使わない malloc/callocやnew使ったほうがデバッグビルドでメモリリーク検出できるし
792 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:08:47 ] 引数が「ひきすう」なら因数は「よりすう」と読むべき。
793 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:11:29 ] 音訓が何か勉強しなおしてこいや
794 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:12:04 ] >>792 なんてこったいwww
795 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:21:44 ] 美肌(びはだ) という読み方が気にならないならおk
796 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:25:48 ] 魅せるとか言ってもいいですよ
797 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:27:30 ] 美姫と間違えるくらいなら びはだ でおk
798 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:31:42 ] 淫吸
799 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:32:06 ] そろそろ用語の読み方スレ池
800 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:41:28 ] HeapAllocのメリットはCreateして丸ごとDestroyできる とか
801 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 05:31:21 ] VMwareみたいなものを動かしていると、仮想ディスクのファイルの 断片化が著しいですが、固定サイズに設定した時のWindowsの ページファイル(意味伝わるでしょうか?)の様に、 ディスクの物理的な、ある領域区画だけしか使わないようにファイルを 更新する方法ってないでしょうか? デバイスドライバを書かないとだめでしょうか?
802 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 07:02:08 ] defragしたいの?
803 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 07:08:16 ] >>801 FDISKで小さい区画を作ってそこだけ使わせればいいじゃん
804 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 12:48:39 ] ウィンドウのタイトルバーをクリックされて何もせず離された時って プロシージャにはなんていうメッセージが送られるんでしょうか?
805 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 13:05:33 ] Spy++で監視
806 名前:デフォルトの名無しさん [2008/02/27(水) 13:16:29 ] 質問です。 クリップボードへのコピーが発生したとき、 それが自分のプロセスからかどうかを調べる 一般的な方法ってあるのでのしょうか? お願いします。
807 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 16:06:08 ] コピーが発生したとき通知するAPIはあるけど プロセスまではわかんなかった気が SetClipboardData見てれば
808 名前:卍凹 [2008/02/27(水) 18:01:52 ] 質問です ただいまゲーム作成中なのですが他のPCで実行したらバグが起こりました 環境 OS XP home 開発環境 VS 2005 Win32API C言語で作成 何を書いていいかわからないのでほかいってくれればすぐに書きます バグは自分の開発しているPCと他の自分のPCは実行できるが、 なぜか友人のPCでは途中で動きが遅くなりフリーズしてしまう…(;_:)こんな感じです。
809 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:25:35 ] エスパーのさらに上を期待してるのかw
810 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:29:51 ] スペック足りてないんじゃね
811 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:34:30 ] >>808 1208行目のループ文が無限ループしてる
812 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:38:57 ] >>808 メモリとかリソースの解放漏れ
813 名前:卍凹 [2008/02/27(水) 18:47:15 ] >>810 自分のPCよりスペックの高いPCを友人が持っていたのでためしたが駄目だった んでスペックが足りないってこともないと思います。 >>811 812 812だとすれば自分のPCでも症状は出ると思うのですけど、今のところはでていません
814 名前:デフォルトの名無しさん [2008/02/27(水) 18:56:33 ] 今日からスッドレの勉強はじめました。 歯痛制御って何ですか? セマホって何ですか? クリテカルスポットって何ですか?
815 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:32:43 ] そのまま勉強を続ければ時季に分かるだろう。
816 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:13:54 ] >>808 それはその友人の罠だな。すぐ逃げた方がいい
817 名前:デフォルトの名無しさん [2008/02/27(水) 20:21:27 ] クリティカルセクションつかって 会社の女のまんこに挿入したいのですが、 どうすればいいですか?
818 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:33:45 ] 自分では面白いと思って書き込むんだろうね。 リアルでも空気が読めずに相手にされないのがもろわかりな内容。
819 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:53:17 ] >>818
820 名前:卍凹 [2008/02/27(水) 20:53:52 ] 自分のPCはCeleronで友人のはPen4これぐらいしか大きなちがいはないのですが なぜ動かないのでしょうか?うpするからみてもらえませんか??
821 名前:デフォルトの名無しさん [2008/02/27(水) 21:10:15 ] 嫌です
822 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:13:34 ] 何故、他人が作ったもののデバッグをやらなきゃいかんのか、と
823 名前:卍凹 [2008/02/27(水) 21:15:39 ] すいませんでしたm(__)m
824 名前:卍凹 [2008/02/27(水) 21:16:22 ] すいませんでした
825 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:35:06 ] マジで回答期待してるなら うpロダにソース晒せ
826 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:47:26 ] 俺もゲームやりたい
827 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:03:14 ] CeleronがCovingtonなら、十分すぎるほど違いがあるな。
828 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:57:47 ] フォントの10.5ポイントとかとCreateFontの高さを相互変換するにはどうしたら良いですか?
829 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:04:25 ] MFC や WTL の CreatePointFont の実装をパクる
830 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:07:08 ] ポイント/72*DCのdpi = pixelという計算式がある。 MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
831 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:30:14 ] >>829-830 ありがとうございます。 そこらへんから調べてみます。感謝。
832 名前:771 mailto:sage [2008/02/28(木) 00:50:22 ] 誰も覚えてないだろうけど>>771 はどうにもならんかったのでフックで何とかした。 以上報告まで。
833 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 04:07:03 ] MSDNライブラリを読むと、BitBltやStretchBltは使えない環境もあるようですが、 AlphaBlendやTransparentBltにはそのような記述がないということは、 BitBlt等はデバイス(GPU?)が行い、AlphaBlend等は全てCPUが処理するということで合ってますか?
834 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 07:00:34 ] Vista以降を除けば合っていない。 GetDeviceCapsのSHADEBLENDCAPSで対応状況が解る。
835 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 07:01:10 ] AlphaBlendやTransparentBltはハードウェア処理できたらハードウェア処理するができなかったらソフトウェア処理だったと思う
836 名前:デフォルトの名無しさん [2008/02/28(木) 10:40:58 ] エクスプローラやAPIのCopyFileを使った巨大ファイルのコピー中に(完了まで数分掛かる) 現時点でのコピーされたバイト数を取得する方法は無いでしょうか? よろしくお願い致します。
837 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 10:49:50 ] CopyFileEx
838 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:22:29 ] BitBltが使えない環境なんて考えたことない。 そんなのが実在するなんて恐ろしいわ。
839 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 22:41:33 ] BItBltはオペレータの組み合わせ具合で ドライバのまずい部分をつつく可能性はあるね
840 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:52:06 ] >>833 「HDCは画面だけのものじゃない」ってのをよく考えれ。 >>836 アプリが動かしてるのを取得したいんならフックするのがベストかな。 自前ならどーとでもお好きなように。
841 名前:デフォルトの名無しさん [2008/02/29(金) 18:38:33 ] 質問があります。 プログラム中で、マウスホイールを禁止したいと思ってます。 またはプログラム中でホイール動作時の移動量情報を自分で決めたいと思っています。 できれば、WM_CREATE内で。。 ホイール動作時にWM_MOUSEWHEELメッセージが来るのは分かったのですが。。 環境はVC.net + SDK です。よろしくお願いします
842 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:44:39 ] C#のArrayListみたいなのに相当する 出し入れ自由なコレクションって自作するしかない?
843 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 18:56:20 ] どう考えても、OSの面倒見てくれる範囲じゃないだろ
844 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 19:17:04 ] 大抵のライブラリにはあるだろ
845 名前:デフォルトの名無しさん [2008/02/29(金) 19:58:24 ] CLISTってのはMFCとかいうのの機能なんでしょ?
846 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 19:59:47 ] >>842 どの言語?いずれにしてもその言語のスレ行きな、ここはスレ違いだから。
847 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:38:35 ] >>842 Dynamic Pointer Arrayという物がある。 比較的最近のSDKでないと定義されてないけど実はWin95でも使える枯れたAPIだったりする。
848 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:09:33 ] >>841 WM_MOUSEWHEELでdeltaを好きなようにしたらいかんべ
849 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:16:20 ] GUI部分と実際の処理部分を別々のソースファイルに書いています。 内部処理のソースファイルで定義した関数から SetWindowTextでEDITコントロールの内容を変更出来ないんですけど、原因分かりますか?
850 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:16:58 ] WinAPI難しいなぁ
851 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:21:18 ] ttp://wisdom.sakura.ne.jp/system/winapi/ テンプレの上記のサイトのメッセージボックス項の #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow ) { CHAR chStr[128]; wsprintf(chStr , "インスタンスハンドル : %d" , hInstance); MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK); return 0; } 上記のコードを実行しようとすると error C2664: 'wsprintfW' : 1 番目の引数を 'CHAR [128]' から 'LPWSTR' に変換できません。 error C2664: 'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。 このようなエラーが出ます chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。 これはどうすればいんでしょうか?コンパイラはVS2005です
852 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:23:54 ] >>851 マルチバイト文字セットに変更汁
853 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:29:54 ] >>851 CHAR→TCHAR >chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。 ってLPWSTR chStr[128]ってしたってこと?
854 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:36:59 ] またWISDOMかw
855 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:39:24 ] >>852 >>853 TCHARにすると error C2664: 'wsprintfW' : 2 番目の引数を 'const char [26]' から 'LPCWSTR' に変換できません。 こんなエラーが出ます このエラーからすると第一引数にはchar型が入るように見えるんですが、違う、のかなぁ >>chStrをLPWSTR[128]で宣言してもエラーは相変わらずです。 >ってLPWSTR chStr[128]ってしたってこと? です、エラーからしてそういうことかなぁと思いまして
856 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:40:49 ] >>855 TCHAR chStr[128]; wsprintf(chStr , TEXT("インスタンスハンドル : %d") , hInstance);
857 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:41:54 ] * UNICODE, ANSI ビルド * TCHAR, CHAR, WCHAR 型 * TEXT, _T マクロ この辺についてちゃんと調べるなりドキュメント読んだほうが良いと思う
858 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:48:20 ] >>855 違うよ。>>852 の意味は [プロジェクト]-[プロパティ]-[構成プロパティ]-[全般]-[文字セット]をマルチ バイト文字セットを使用する に変更するという意味だよ。
859 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:50:30 ] error C2664:〜〜〜〜 'A’ から 'B' に変換できません。 ※ABは char / wchar_t / LPSTR / LPWSTR / LPCSTR / LPCWSTR など 巷のサンプルコードがこのようなコンパイルエラーを発生させる場合、文字セットが適切ではないです。 開発環境の文字コードの設定をソースにあわせるか、ソースを開発環境の設定にあわせるかしましょう。 方法は各々の開発環境のスレへどうぞ。 この辺の文言がテンプレにあったほうがいいような気がするがお前らはどう思うか
860 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:50:41 ] >>849 コード見ないとわかんね ここエスパースレじゃねえし
861 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:52:53 ] >>860 分からないなら無理に答えていただく必要はありません
862 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:55:44 ] >>861 なりすまし乙 >>860 エスパーレスが欲しかったんですけど、ダメですかねえ
863 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:58:31 ] 違うプロセスのウィンドウに SetWindowText を使っているとか
864 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 22:58:37 ] 無茶言うなw
865 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 23:36:24 ] >>863 SetWindowText(WM_SETTEXT)は他プロセスでも平気じゃなかったか
866 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:04:58 ] >>865 WM_SETTEXT は大丈夫だけど SetWindowText は駄目 msdn2.microsoft.com/en-us/library/ms633546.aspx >To set the text of a control in another process, >send the WM_SETTEXT message directly instead of calling SetWindowText.
867 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:15:11 ] ちょっと占ってみると HWNDを間違えてる、とでますた。
868 名前:855 mailto:sage [2008/03/01(土) 00:27:56 ] ありがとうございました、1~10辺り200回くらい読みなおしてきます
869 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:47:18 ] VCってどの辺のバージョンからUnicodeビルドがデフォになってるの?
870 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:59:55 ] 2005。Expressロハ化と軌を一にしており 全国の初心者をドツボにハメた。
871 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:07:34 ] なんかしらんが、Unicodeが楽すぎ。マルチバイトで文字区切りなんて悪夢だ。
872 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:15:58 ] >>871 で、油断してるとサロゲートペアとかにはまると。
873 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:19:47 ] UTF16じゃなくて32ならよかったのにな
874 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:32:53 ] まだWin98が現役だというのに・・・
875 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 01:34:54 ] 現役じゃねえよバカ LANケーブル引っこ抜け
876 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:47:15 ] Windowsフォームアプリケーションでデザイナを使って生成されるコードはMFC?
877 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 02:47:54 ] 開発環境のスレで聞け
878 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:17:58 ] >>870 VS2005インスコして確かめてみたら、マジだ なんでデフォの動作をころころ変えるかねぇ・・・ つうかメモリ128MBでVS2005が予想以上に重いw
879 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 03:24:58 ] オレは今どきデフォでMBCSの方が嫌だよ
880 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:49:41 ] >>849 ですが解決しました、Win32APIと関係無いところでミスってたようです。 どもでした。
881 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:58:54 ] ktbr
882 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 07:44:23 ] ころころ動作を変えてねぇだろ。 いままでずっとMBCSだったじゃないか。 というかおれとしては2002か2003の時点で変えてほしかった。
883 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 08:41:54 ] 2005でもコマンドラインからclやnmake叩いてコンパイルすればデフォはMBCSじゃないの?
884 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 08:53:56 ] プロジェクト作ったときに、デフォルトで/DUNICODE /D_UNICODE あたりが定義されるだけだからなー。 だから、nmakeについてはMAKEFILEをどうやって作ったかにもよるんじゃね? あと、環境変数CLとかw
885 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 10:35:16 ] つーか今時メモリ128MBで開発しようなんて思うほうがどうかしてるよ。
886 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:23:20 ] UNICODE文字が全角幅か半角幅か簡単に調べる方法はありますか? デバイスコンテキストに固定長フォントセットしてGetTextExtentPoint32()呼び出すしかないでしょうか?
887 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:36:01 ] 一部罫線系の記号なんかは、フォントによって 全角半角の扱いがちがったりするし。 UNIXなら、wcwidthでいけるんだけどね。 まー、64Kbit程度のテーブル一回作れば終わるわけだし作れば。
888 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:37:29 ] 日本語ターゲットなら、SJISに変換して何バイト取るか調べる手もあるか。 BMP外にあるSJIS表現不能な連中はシラネ。
889 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:39:19 ] >>885 エミュレータだよ >>886 >>462
890 名前:886 mailto:sage [2008/03/01(土) 13:03:39 ] >>887-888 ありがとうございます。 記号なんかを含めるとそっちのほうが手っ取り早い気もしますね。 >>889 同じスレ内に答えあったとは・・・ ありがとうございました&すいませんでしたszo
891 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:12:53 ] >>889 エミュレータでしかもメモリ128KBなら、さくさく動くと思う方がおかしい。
892 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 13:52:39 ] >>891 うむ、たしかにそれは桁違いにおかしいな。
893 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:05:19 ] 今時128kのメモリなんて手に入らないだろw
894 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:08:47 ] 今時のCPUのキャッシュよりも小さいな。
895 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 14:41:47 ] 64KBのおれのマシンじゃ このスレのdatすら入らないんだぜ(現在194KB)
896 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:43:22 ] まぁ、基本的に文字が幅をもってるじゃなくてグリフが持ってるんだけどね。
897 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:13:11 ] ZwSetSystemInformationの使い方教えて〜
898 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 18:59:39 ] >>895 オンメモリ前提なんてここ数年の出来事なんだぜ もうちょっと前はオンディスクもほぼ不可能で人間様の手と手書きラベルが前提だったんだぜ もちっとまえはきりが無いので止めとく
899 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:00:53 ] 第一引数に動作モードの定数 第二引数に結果を受け取る構造体のポインタ 第三引数の第二引数が示す構造体のサイズ 戻り値はNTSTATUS 構造体と定数は目的によるのでぐぐる
900 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:02:57 ] ASIC内に内蔵されているメモリとかだと、128Kはそれなりに。
901 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 19:30:01 ] WindowsをスタンバイにするAPIは何でしょうか?
902 名前:デフォルトの名無しさん [2008/03/01(土) 19:38:13 ] 最小化されている任意のウィンドウの通常時のサイズを取得するには どうすればいいでしょうか?
903 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:23:34 ] GetWindowPlacement
904 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 22:26:34 ] IShellFolder::ParseDisplayNameの第3引数 MSDNの説明では入力専用のはずなのに、LPCWSTRじゃなくてLPWSTRです。 これは間違いという事でconstな文字列渡してもいいんでしょうか?
905 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:54:43 ] ぜんぜん知らんけど、コンパイラに怒られなかったら大丈夫なんじゃね コンパイラに怒られたら、渡す以前の問題だわな
906 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 00:14:17 ] さー? CreateProcessみたいな例もあるし、 いまのMSDNでconstじゃないなら、一応従っておいたほうがいいんじゃない?
907 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:09:43 ] フォルダを作成すると通知コードはどんなのが来るのでしょうか。
908 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:19:46 ] 来ねーよ 自分で待ち構えてないとな
909 名前:907 mailto:sage [2008/03/02(日) 05:01:13 ] >>908 ありがとうございます。 WM_で探してみたけどたしかにそれらしいものはありませんでした。 調べてみたところ、 RemoveDirectory()、CreateDirectory()はkernel32.dllの関数らしい のですが、これをフックして、戻り値を調べればわかるような気がしました。 難しそうなので、まだ自分には早そうですね。
910 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 05:05:17 ] >>907 そのディレクトリを作成したディレクトリをFindFirstChangeNotification()で監視しておけばいい。 どういうパラメータを設定すればいいかは忘れた。
911 名前:907 mailto:sage [2008/03/02(日) 05:23:18 ] >>910 ありがとうございます。 これは相当使えそうです。
912 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 06:15:29 ] ファイルやフォルダが作られる度に全ウィンドウへ WM_ なんて投げてたら重くてやってられないだろw >>911 ReadDirectoryChangesW を使った方がいい
913 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 07:16:31 ] 今回は選ばれない可能性が高いが、選択肢としてSHChangeNotifyRegisterもある
914 名前:907 mailto:sage [2008/03/02(日) 12:07:17 ] >>912 >>913 ありがとうございます。 ファイルなど個別に調べる場合に使えそうです。
915 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:35:32 ] ダイアログボックスのプロシージャの戻り値って、BOOLかINT_PTRどっちが正解ですか?
916 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:37:27 ] BOOL
917 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:40:46 ] 64 ビットのことも考えると INT_PTR じゃないの?
918 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:51:00 ] BOOL=INT_PTRだとばかり思ってたらwindef.hに typedef int BOOL; と書いてあって鬱になった俺が通りますよ
919 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:55:13 ] DLGPROC 型の定義を見てみたら? 仕様としては TRUE/FALSE 返すから BOOL なはずではあるけど、 知らない間に仕様拡張されてたら知らん。
920 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:18:00 ] あれってポインタ値以内ならなんでも返せるんじゃなかったっけ?
921 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:21:46 ] >通常、ダイアログボックスプロシージャはメッセージを処理した場合に 0 以外の値(TRUE)を、 >処理しなかった場合に 0(FALSE)を返すべきです。 >ダイアログボックスプロシージャが 0(FALSE)を返した場合、 >ダイアログマネージャはそのメッセージに応答して既定のダイアログ処理を実行します。 > >ダイアログボックスプロシージャが、特定の戻り値を必要とするメッセージを処理する場合、 >ダイアログボックスプロシージャは 0 以外の値(TRUE)を返す直前に >SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) を呼び出し、 >希望の戻り値を設定するべきです。 >0 以外の値(TRUE)を返す直前に、 >SetWindowLong を呼び出さなければならないことに注意してください。 >それより早く呼び出すと、ネストされたダイアログボックスメッセージが、 >DWL_MSGRESULT の値を上書きする可能性があります。 って書いてあるけど。
922 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:42:58 ] msdn2.microsoft.com/en-us/library/ms645469 (VS.85).aspx MSDNにはINT_PTRと書いてある
923 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:46:12 ] しかし、MSDN はたまに嘘書いてるからなあ。
924 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:50:11 ] 例えば?
925 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:07:04 ] GetModulePathName の MAX_PATH 以上のパスを取得する方法が 実は使えないとか?
926 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 14:14:50 ] >>438 セットアップファイル群の中にそれらしいcabファイルがあるから、 VS2008が入ってない環境だと入るのかもしれない。
927 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:02:29 ] すげー亀レスだな
928 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:05:52 ] 最近のSDK typedef INT_PTR (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM); 古いSDK (VC6付属) typedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM);
929 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:25:55 ] 仕様変わったのか・・・。 何で INT_PTR にしたんだろう?
930 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:31:10 ] TRUEかFALSEを返すをかえす仕様なんだから、BOOLだったんだろ。 INT_PTRにかえた理由は、64bitコードでは64bitにしたかったんじゃない?
931 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:33:23 ] せめて 32/64 を切り替えるような BOOL 型を導入するべきだと思うんだけどな。
932 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:33:35 ] TRUEFALSEっていうよりはなから0かそれ以外か負の数っていってほしい
933 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:34:29 ] 負の数はここでは関係ないと思うが。 GetMessage は別だが。
934 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:09:07 ] GetMessageは未だに使い方間違ってる例を見かけるなぁ
935 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:16:56 ] VS 2008 EE の 「Windows アプリケーション」のテンプレートでも >while (GetMessage(&msg, NULL, 0, 0)) 吐き出すんだけど
936 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:30:22 ] GetMessageって-1とかちゃんと見てないとアチョーなんだっけ?
937 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:31:30 ] 実はエラーなんて返さないのかもしれない・・・。
938 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:09:39 ] いまだにIEとかメモリ無くなるギリギリまで 複数インスタンス立ち上げると リソースがボロボロ欠けたウィンドウが開いて そのうち黙り込んで応答もしなくなって システム全体再起動しないといけなくなるのは IEの中のひとがメモリ確保時にエラーチェック してないからだと思うんだけどどう?
939 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:21:27 ] 100個近くWin95時代のブラクラ状態でIE立ち上げてもヌルヌルにはなるけどシステム落とすまでは逝かないぜ? 環境になんかヘンなもん突っ込んでるんじゃねーの?
940 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:36:41 ] デスクトップヒープの枯渇じゃないの。
941 名前:デフォルトの名無しさん [2008/03/02(日) 18:42:50 ] ここで質問させてください。 とりあえずC言語の基本を学んだので、ゲーム作りをしてみたいと思った のですが、Win32APIで1からゲーム作りをするのは効率が悪いのでしょうか? DirectXから学んだ方がいいのでしょうか?
942 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:45:42 ] どっちでもいいんじゃない
943 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:47:52 ] DirectX自体は、DXライブラリっての使えば簡単に扱えるよ。 ゲーム作りの本質と関係ないところは、既存のライブラリを利用するので充分。 俺に言わせて貰えば、ゲームみたいなシビアというか、ちょっと変わった処理が多いような場合は、 WinAPI直接叩く方が、やりたいことが直にやれるし、ベンキョにもなっていいと思う。
944 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:49:31 ] ある程度頑張ったら、 自分で全部やってみるのも勉強になると思う。
945 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:51:55 ] C++をやりながら、DirectX9か10をやるといい。 C++は使えないと困ることになる。
946 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:52:29 ] C で DirectX 使うのは面倒いからな。
947 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:00:37 ] C#のほうがいいと思う
948 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:01:20 ] 折角高速さを追求してるのに C++ 使わないのはもったいなさ過ぎる。
949 名前:デフォルトの名無しさん [2008/03/02(日) 19:06:08 ] レスありがとうございます。 C++は現在勉強中です。APIでもいろいろ出来そうなのでこれも並行して 勉強しようと思います。 それと最後に、Win32APIでは、PS2レベルの滑らかな3D描写は出来ないのでしょうか?
950 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:10:15 ] そもそも Win32API には 3D 描画機能が用意されてないから 全部ソフト的に対処する必要があるぜ。 要するに 3D 描画エンジンを自作するという。 しかもハードウェアの助けが得られないから遅い。 まあ、DirectX を通さずにグラフィックボードを直接操作するんなら話は別だが、 あまり意味がないよね。
951 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:12:47 ] これを見て勉強しる! www.geocities.jp/higuchuu4/index.htm
952 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:16:00 ] >>950 OpenGLがあるじゃないか 微妙な所だがChoosePixelFormatなんかはgdi32にあるからWin32APIということにする
953 名前:デフォルトの名無しさん [2008/03/02(日) 19:29:29 ] DIRECTXはマニアがやってたハードを解析して最大限の性能を引き出す というのをMSが肩代わりしてくれる仕組みだ winAPIでは3Dは無理
954 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:45:52 ] こんなのもあるよ DarkGDK www.microsoft.com/express/samples/GameCreators/
955 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 19:59:43 ] >>953 全角厨キモイ
956 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:02:36 ] 全角だけでなく、大文字小文字も無茶苦茶。 3 は半角で D が全角だったりも。
957 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 20:59:59 ] 少し話題に上ったので GetMessage() の戻り値の話をさせてください。 どうやら GetMessage() で -1 が返るのは、引数が無効な値の場合に 限られるようです。つまり msg を MSG 構造体とすると、 (A) GetMessage(&msg, hWnd, 0, 0); (B) GetMessage(&msg, NULL, 0, 0); (A) では -1 かどうかのチェックをした方がいいですが、(B) のような より一般的なケースではチェックは不要ということになります。 なお、MSDN に載っているのも (A) に対する警告と思われます。
958 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 21:01:04 ] なるほど。
959 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 00:30:44 ] でもそれはFor exampleとして載っているだけであって それ以外ないとは書かれていないわけで
960 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:15:16 ] >>957 参考になったが >>959 という意見もあるし結局どっちなんだろう
961 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:24:28 ] 俺は心配性だから常に-1が返ってくる可能性があると思っている。
962 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:27:35 ] そもそも"handle the error and possibly exit"って具体的にどうすればいいのやら・・・ 問答無用でbreakするようなコードだとWM_DESTROYを通さないから色々リークするだろうし、 WTLはcontinueしてるけど、毎回-1が返ってくるような状況だとループから抜け出せないし 正直-1の場合は無視でいいとオモタ
963 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:31:29 ] リークとか気にしないでreturnしています。
964 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:35:23 ] とりあえずGetLastError()だけどっかに吐いてから即死します。
965 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 12:59:40 ] なんで誰も>>915 〜>>932 の件の正解を書かない? 一例として、WM_CTLCOLOR*** は「HBRUSHを直接返さなければならない」(DWL_MSGRESULTは禁止) だから64bitはINT_PTRじゃなきゃまずいんだよ。 HBRUSHの中身が64bitになる実装は存在しないとかいうのは無しね。 If the dialog box procedure processes a message that requires a specific return value, the dialog box procedure should set the desired return value by calling SetWindowLong(hwndDlg, DWL_MSGRESULT, lResult) immediately before returning TRUE. Note that you must call SetWindowLong immediately before returning TRUE; doing so earlier may result in the DWL_MSGRESULT value being overwritten by a nested dialog box message. The following messages are exceptions to the general rules stated above. Consult the documentation for the specific message for details on the semantics of the return value. WM_CHARTOITEM WM_COMPAREITEM WM_CTLCOLORBTN WM_CTLCOLORDLG WM_CTLCOLOREDIT WM_CTLCOLORLISTBOX WM_CTLCOLORSCROLLBAR WM_CTLCOLORSTATIC WM_INITDIALOG WM_QUERYDRAGICON WM_VKEYTOITEM
966 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:28:18 ] だったら BOOL を INT_PTR にするという選択肢もあったはずでは わざわざ 64-bit 対応の為に関数宣言を書き換える必要があるなんて馬鹿げている
967 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:36:16 ] 大量に使われているBOOL(ほとんどは1ビットで足りる用途)を根こそぎ64bitにしたらそれこそ無駄だろうに
968 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 13:49:14 ] ダイアログプロシージャと違って、こっちが実装する関数ではないけれど、 VirtualAllocとかにも、大きさを指定する引数(今はSIZE_T)が 以前はDWORDだったとか似たような事例は他にもあるな。
969 名前:デフォルトの名無しさん [2008/03/03(月) 14:00:34 ] 猫でものページの第123章 メモリマップト・ファイルのソースをコピペして 実行したんですが「ファイルマッピングのオープン失敗」のメッセージが出て 最後まで実行できませんでした。どこが悪いのでしょうか教えてください。 ソースのページは www.kumei.ne.jp/c_lang/sdk2/sdk_123.htm でコピペして実行したcppファイルもあげときます kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6115.txt すいませんが教えてください
970 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:04:35 ] IDM_READ呼ぶ前にIDM_WRITE呼んでるのか?
971 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 14:53:13 ] >>967 つ bool / BOOLEAN
972 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:05:23 ] >>971 APIが使ってるBOOL書き換えてどうするんだよw
973 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:16:02 ] >>972 何が言いたいのかよく分からん そもそも引数や返値を int 型からポインタ型 (INT_PTR) に置き換えても何ら無駄にはならない
974 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 15:47:44 ] しいて言えばスタック使用量倍増?
975 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:00:23 ] 戻り値はレジスタだろうからスタックは使わないんじゃない?
976 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:10:57 ] 引数もWin x64 ABIではスタックアクセスは64bit単位じゃなかったっけ? 何れにしろREXプレフィックスでコードサイズは変わるかも
977 名前:デフォルトの名無しさん [2008/03/03(月) 16:48:39 ] Win32 API のヘルプとか網羅的なマニュアルなど、入手先はどこですか …
978 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 16:51:15 ] >>977 >>1-2 にもリンクがあるMSDNライブラリがそれ。
979 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 17:27:32 ] >>975 それを変数に格納するってことじゃない?
980 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 18:39:39 ] リソースのアイコンのバイナリを読み込んでchar[]型の配列に代入するにはどうすれば良いですか?
981 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 19:42:46 ] LockResourceとかかな
982 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:33:40 ] MENUITEMINFO mii; ZeroMemory(&mii,sizeof(mii)); mii.cbSize=sizeof(MENUITEMINFO); mii.fMask=MIIM_FTYPE; mii.dwTypeData=L"ファイル"; HMENU menu=::CreateMenu(); ::InsertMenuItem(menu,0,0,&mii); ::DrawMenuBar(hwnd); ちゃんとウィンドウ表示してからこれしたらメニュー表示されない・・・なんで?
983 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 22:35:02 ] SetMenuは?
984 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:36:08 ] ベジエ曲線で囲んだ内部を塗りつぶしたいのですが無理ですか? 教えてくだちい><
985 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:42:30 ] 囲まれた図形の内部の座標に対してExtFloodFill