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

Win32API質問箱 Build35

レス数が1000を超えています。これ以上書き込みはできません。
0001Omoti@世界一の大金持ち ◆rzOmotimAo 2005/09/05(月) 01:08:16
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。

  ∧_∧
 ( ´∀`) < 0x22

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

-前スレ
Build34:http://pc8.2ch.net/test/read.cgi/tech/1122723009/
0002Omoti@世界一の大金持ち ◆rzOmotimAo 2005/09/05(月) 01:08:56
-過去スレ
Build33:http://pc8.2ch.net/test/read.cgi/tech/1120153520/
Build32:http://pc8.2ch.net/test/read.cgi/tech/1117271829/
Build31:http://pc8.2ch.net/test/read.cgi/tech/1114762194/
Build30:ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
Build29:ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
Build28:ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
Build27:ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
Build15:ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
0003Omoti@世界一の大金持ち ◆rzOmotimAo 2005/09/05(月) 01:09:50
Build14:ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:ttp://pc.2ch.net/tech/kako/991/991576947.html
0004Omoti@世界一の大金持ち ◆rzOmotimAo 2005/09/05(月) 01:10:39
- MSDN Online
http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

- WindowsR Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/

■書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
0005デフォルトの名無しさん2005/09/05(月) 01:10:54
スレ立て乙・・・と思ったらウザスOmotiかよ。
0006デフォルトの名無しさん2005/09/05(月) 01:12:20
0x22ってどういう意味なの?
0007デフォルトの名無しさん2005/09/05(月) 01:14:21
>>6
34...
0008デフォルトの名無しさん2005/09/05(月) 01:14:53
-おまけ
dat落ちしている過去スレが見れるかも。Part19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0009デフォルトの名無しさん2005/09/05(月) 01:24:25
Omotiの名前の由来は何ですか?
0010デフォルトの名無しさん2005/09/05(月) 01:31:35
>>9
当時、W3CとかGNUとかの翻訳をやったり
ウルティマオンラインの外国サーバーで遊んだりとか
IRCでアメリカ人としゃべったりDiabloで外人と遊んだりとか
インターネット時間の95%を外人と過ごしていたので、彼らにも
覚えやすく、タイプしやすく、短めの名前で日本風のもの、ということで
つけました 昔はあんまりネットに日本人はいなかった 外人向けの名前ということです
0011デフォルトの名無しさん2005/09/05(月) 01:46:52
MessageBox(NULL, TEXT("乙"), TEXT(">>1"), MB_OK);
0012デフォルトの名無しさん2005/09/05(月) 02:04:29
なんでマイクロソフトはMSDNの日本語化を進めないんだ?
0013デフォルトの名無しさん2005/09/05(月) 02:05:35
金かかるし誤訳多いし
0014デフォルトの名無しさん2005/09/05(月) 02:42:54
せめて検索機能をONにしてください
誰かMSDN専用検索サイト立ち上げてよ
0015デフォルトの名無しさん2005/09/05(月) 02:50:42
日本語版があるに越したことは無いが、MSDNの資料ぐらい英語のままでも問題ないだろ
下手に誤訳が有る上に更新の遅い資料読むぐらいなら、大元の資料読んだ方がいい
0016デフォルトの名無しさん2005/09/05(月) 02:57:07
誤訳以前にサイト内検索にひっかからないのをどうにかしてほしい。
たどりつくのが大抵googleからとか、喪前らほんとにそれでいいのかと小一時間(ry
0017デフォルトの名無しさん2005/09/05(月) 03:12:30
>>16
今みてみたら見当たらないが、この間は日本語版は検索できなくなってて
直してるから待てと告知されてたが
英語版は正常に機能してるし、問題ないだろ
0018デフォルトの名無しさん2005/09/05(月) 03:26:59
なんで10年も前から存在するAPIすらまともに検索できないんだよ
英語版だと日本の単語で検索できないのが問題
英語が得意でも和英は答えが一つじゃない
対訳表もなしにやってられるか
0019デフォルトの名無しさん2005/09/05(月) 03:39:49
>>17
2、3年前からひっかかってない気がするんだが、まだ直らないのか・・・・。
まあ本気で読みたければローカル版読めばいいから俺個人は別にいいんだが。
0020デフォルトの名無しさん2005/09/05(月) 03:52:43
Omotiはそんな昔からPC触ってんのにいまだにそんなアホなんか
0021デフォルトの名無しさん2005/09/05(月) 04:12:19
最新の日本語版の情報が無いのは良いとして、
Win95で実装されたAPIのドキュメントで英語版しか
無い物があるなんて…
「VisualStudio ver x.xx "日本語版"」って
もう何年前のドキュメントだよ?
Microsoft Japanは仕事する気あるのかなぁ??
0022デフォルトの名無しさん2005/09/05(月) 05:38:41
前スレ1000が爆弾発言wwww

>1000 :デフォルトの名無しさん [sage] :2005/09/05(月) 02:21:24
>0x3E8だったら秀丸超えるテキストエディタ作る
0023デフォルトの名無しさん2005/09/05(月) 06:29:11
日本語ヘルプが更新されないことに加えて、MSDN ONLINEから
Win32APIのカテゴリがごっそり抜け落ちてたり、メジャーなAPI関数
ですらサイトの検索でヒットしないところを見ると、これは日本法人の
意図が働いていると見るのが妥当だろう。

で、その意図が何かと読み解くと、日本の場合、Win32APIの日本語
ヘルプが充実してしまうと、Borland製品の売れ行きが良くなってしまう
のでは?という仮説に行き着く。

かつて、その圧倒的な生産性の高さから、口コミなどもあって日本では
Delphiの旋風が吹き荒れていた。その名残は数多くのフリーソフトが
Delphi製という形で残ってはいるのだが、そのDelphiも2.0までだったかは
Win32APIの日本語ヘルプが付いていた。
0024デフォルトの名無しさん2005/09/05(月) 07:08:49
MSDN見てるとアンケートが出てくることあるでしょ?
あれが出たら書いとこうな。
適当な英語でもきっと通じるから。
I want more documents translated into Japanese.
とか。
0025デフォルトの名無しさん2005/09/05(月) 08:50:27
MSDNのWM_CREATEの記述って間違っていませんか?

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_create.asp

 >Return Value
 >If an application processes this message, it should return zero to continue creation of the window. If the application returns A?A?1, the window is destroyed and the CreateWindowEx or CreateWindow function returns a NULL handle.

WM_CREATEが飛んできたときにゼロを返すと、ウインドウが生成されないのですが。
で、0以外(-1も含む)を返すと生成されます。
0026デフォルトの名無しさん2005/09/05(月) 08:56:09
>>25
コード出せや。エスパーに答えてもらいたいんか?
0027デフォルトの名無しさん2005/09/05(月) 09:21:37
>>25
間違ってません。
return 0;でちゃんと作成されます
return -1;でちゃんと破棄されます

おかしいのはアンタのコード
0028デフォルトの名無しさん2005/09/05(月) 09:22:28
>25
あなたのプログラムがおかしい可能性が非常に高いです。
CreateWindowに渡す引数等を見直してみてください。
コールバック関数はちゃんと__stdcallになってますか?
0029252005/09/05(月) 09:49:02
あれ、普通に書いたらうまくいった。
なぜかメッセージクラッカーを使った場合だけ失敗する。

やはりどこかおかしかったみたいです。
0030デフォルトの名無しさん2005/09/05(月) 09:49:09
前スレ990ですが、
メモリ上でビットマップを重ね合わせるような
ことが可能なのですか?
0031デフォルトの名無しさん2005/09/05(月) 09:51:49
>>29
おかしいのは藻前

メッセージクラッカーの定義を読め
0032デフォルトの名無しさん2005/09/05(月) 09:59:19
>>23
BCB6でも付いてるぞ > Win32API日本語ヘルプ
0033252005/09/05(月) 10:02:19
>>31
なるほどOrz
0034デフォルトの名無しさん2005/09/05(月) 10:05:52
>>30
はい
0035デフォルトの名無しさん2005/09/05(月) 10:19:44
>>30
ていうか、メモリ上で処理できんかったら画像処理がなんもできん
0036デフォルトの名無しさん2005/09/05(月) 10:31:26
ビットマップなんて所詮はただのRGB値の入ったメモリ配列じゃないか
0037デフォルトの名無しさん2005/09/05(月) 10:36:41
そうとも限らないけど
0038302005/09/05(月) 11:29:05
すみません。質問の仕方が遠まわしすぎました。
読み込んだビットマップをメモリDC上に
座標を指定して貼り付けることはできますか?
0039302005/09/05(月) 11:30:33
スマソ追記
あるなら、その方法を教えてください。
0040デフォルトの名無しさん2005/09/05(月) 11:31:33
BitBlt
0041302005/09/05(月) 12:16:01
>>40
ありがとうございます。そうなんですが…。
BitBltの前にSelectObjectでビットマップを当てはめるDCを指定しなくちゃならないので
hBuf2 = CreateCompatibleDC(hdc);
SelectObject(hBuf2 , hBitmap);
BitBlt(hBuf , 0 , 0 , 400 , 200 , hBuf2 , 0 , 0 , SRCCOPY);
の様にhdcに互換するメモリDCを二種類用意しなくてはいけないと思うのですが、
これっていいんですか?
0042デフォルトの名無しさん2005/09/05(月) 12:17:18
それでよし。
0043302005/09/05(月) 12:33:17
>>42
ありがとうございます。助かりました。
0044デフォルトの名無しさん2005/09/05(月) 15:50:07
フォルダの内容が変更されたことを検出するにはどうしたらよいのでしょうか?
0045デフォルトの名無しさん2005/09/05(月) 15:55:55
FindFirstChangeNotification
0046デフォルトの名無しさん2005/09/05(月) 17:28:38
WH_CBTタイプのローカルフックで質問です。

HCBT_CREATEWNDを調べてCreateWindow関数や
DialogBoxParam関数で設定したアプリケーションデータを
取得したいのですが、ダイアログボックスの時だけ取得出来ません。

アプリケーションデータは
CBT_CREATEWND→CREATESTRUCT→lpCreateParams
に入ってる筈なのですが。

ちなみにウィンドウの時は取得できましたが、ダイアログボックスの時はNULLが入ってました。
0047デフォルトの名無しさん2005/09/05(月) 17:31:30
>>46
DialogBoxParamのパラメータはWM_INITDIALOGで受け取るからそれでは無理なのでは?
0048462005/09/05(月) 17:49:03
>>47
DialogBoxParam関数のヘルプを見るとCreateWindowEx関数を使って
ダイアログボックスを作ってると書いてあるんですよね。

つまり、ウィンドウで出来るなら、ダイアログボックスでも出来るんじゃないかと
思ってるんですが…。
0049デフォルトの名無しさん2005/09/05(月) 18:05:02
SetWindowsHookExでは駄目なのか?
0050デフォルトの名無しさん2005/09/05(月) 18:05:47
…間違ったorz
WH_MSGFILTERでは駄目なのか?
0051デフォルトの名無しさん2005/09/05(月) 18:07:29
>>48
> HCBT_CREATEWND
> 1 個のウィンドウが作成されようとしています。
> システムは、このウィンドウへ WM_CREATE または
> WM_NCCREATE メッセージを送信する前に、
> このフックプロシージャを呼び出します。

「DialogBoxParamはCreateWindowExを使ってるし、それならウィンドウでできるんだからダイアログでもできるハズ」
なんて身勝手な妄想する前にヘルプをちゃんと読め

HCBT_CREATEWNDでフックできるのはWM_CREATE or WM_NCCREATE
これらは普通のウィンドウへ送られるメッセージ

DialogBoxParamに限らず、ダイアログが作られるときに送られるのはWM_INITDIALOG
そもそもメッセージが違うのにフックできるわけが無い
0052462005/09/05(月) 19:07:01
>>51
でも、HCBT_CREATEWNDでダイアログボックスが作成されたのを知る事ができ、
そのダイアログボックスのハンドルも取得できるんですよ。

それに、CREATESTRUCT構造体のlpCreateParams以外の値はちゃんと
入っていました。lpCreateParamsだけNULLなのが何故なのかなぁと思いまして。
0053デフォルトの名無しさん2005/09/05(月) 19:36:12
OCXを作ってます。
ブラウザに貼り付けた時にMOUSEWHEELを感知できません。
どうやら、ブラウザ本体の方にメッセージが取られて
OCXのプロシージャに到達していないようです。
ちなみに、ACCESSのフォームに貼ったら感知しました。
で、フックを使おうと思い、WH_MOUSEで待ってみると
0x20Aを探知できて、ホイールイベント自体は行えるようになったのですが
ホイールの移動方向の情報が来ません。
しょうがないので、WH_GETMESSAGEで待ってみると0x20A自体が来ませんでした。
WH_MOUSE_LLを使うとDLLを作らないといけないらしいので躊躇しています。
ご存知の方いましたら、解決方法を教えてください。
0054デフォルトの名無しさん2005/09/05(月) 19:38:29
>>51
ダイアログボックスはウィンドウクラス(WNDCLASS)がシステム定義のものってだけで
通常のウィンドウと何ら変わりない。

>>52
lpCreateParamsを使わずにパラメータ渡してるんだろ。
0055デフォルトの名無しさん2005/09/05(月) 19:47:29
1000 デフォルトの名無しさん sage 2005/09/05(月) 02:21:24
0x3E8だったら秀丸超えるテキストエディタ作る


よろ
0056Mathiz@前スレ1000 ◆Ho9erQuSOQ 2005/09/05(月) 19:56:52
半年待ってね :-)
必ず作ってこのハンドルで公開宣言します。
0057デフォルトの名無しさん2005/09/05(月) 19:58:33
そう言って何人もが消えていったよ…。
ガンガレw
0058462005/09/05(月) 20:01:41
>>54
> >>52
> lpCreateParamsを使わずにパラメータ渡してるんだろ。

やっぱりそういう結論になりますよね。何でlpCreateParams使ってくれないんですかねぇ。
まぁそれはそれとして、どうも回答有難うございました。
0059992005/09/05(月) 20:14:11
http://pc8.2ch.net/test/read.cgi/tech/1122001458/99-100
どうですか・・・。
0060デフォルトの名無しさん2005/09/05(月) 20:15:15
>>54,58
おまいらはWM_INITDIALOGをMSDNで調べたりしてないのか?
0061デフォルトの名無しさん2005/09/05(月) 20:17:58
>>52
取得できてんのは内部的に呼び出されたCreateWindowExがダイアログを作成した時の
WM_INITDIALOGとDialogBoxParamに伴うlParamのデータはその後でDialogBoxParamから送られる
CREATESTRUCTの中に入ってるわけが無い

>>54
おいおい・・・
0062デフォルトの名無しさん2005/09/05(月) 20:44:13
>>60
だから何?
0063デフォルトの名無しさん2005/09/05(月) 20:58:29
>>62
ちゃんと調べてたら、DialogBoxParamを使ってるのにCREATESTRUCTだの、
その中のlpCreateParamsだの見ても必要なデータが取得できないと分かるはずだからだろ
0064462005/09/05(月) 20:58:35
>>61
つまり、DialogBoxParam関数に伴うlParamのデータは
WM_INITDIALOGメッセージの時に取得できるもの。
      ↓
HCBT_CREATEWNDではWM_CREATEやWM_NCCREATEをフックする。
      ↓
DialogBoxParamに伴うlParamのデータはWM_INITDIALOG時に取得
出来るものだから、WM_CREATEやWM_NCCREATEフック時には取得できない。

と、いうことですか?
0065デフォルトの名無しさん2005/09/05(月) 21:00:15
>>64
そういうこと、あと渡される構造体データもまったく違う
0066462005/09/05(月) 21:28:17
>>65
どうも有難うございました。理解できました。
0067デフォルトの名無しさん2005/09/05(月) 21:52:35
>>56

どんな点で秀丸を超えるつもりなんだ?

値段か? アイコンのセンスか?
アイコンのセンスなら結構簡単そうだぞ。

ユーザー数とかなら不可能だ。
0068デフォルトの名無しさん2005/09/05(月) 22:06:05
名前の駄目さとかでも至難の業だな。
0069デフォルトの名無しさん2005/09/05(月) 22:21:51
値段も簡単じゃね?
いっそフリーにしてしまえばいいし
0070デフォルトの名無しさん2005/09/05(月) 22:22:46
値段で秀丸を超えるなら1本1万とかにしないと
0071デフォルトの名無しさん2005/09/05(月) 22:26:07
有料の場合、最低1人は本当に払った価格でないと。
言うだけならタダだからナ
0072Mathiz ◆Ho9erQuSOQ 2005/09/05(月) 22:26:54
儲けるつもりは無いのでフリーで、ソースも公開しようと思います。
0073デフォルトの名無しさん2005/09/05(月) 22:29:53
スレ違いだから新しくスレを立てれ。応援してやるよ
0074デフォルトの名無しさん2005/09/05(月) 22:33:05
秀○

伏せれてねぇー
0075デフォルトの名無しさん2005/09/05(月) 22:34:03
いや、ダイレクトな字じゃないから一応伏字だw
0076デフォルトの名無しさん2005/09/05(月) 23:11:43
AT○K
0077デフォルトの名無しさん2005/09/05(月) 23:21:07
○157
0078デフォルトの名無しさん2005/09/05(月) 23:35:09
WIND○WS
0079デフォルトの名無しさん2005/09/05(月) 23:43:12
何で伏字スレになってるんだw
しかもわかりやすーw
0080デフォルトの名無しさん2005/09/06(火) 00:06:32
9xでも使えるText○utW。
0081デフォルトの名無しさん2005/09/06(火) 01:07:07
http://pc8.2ch.net/test/read.cgi/tech/1052919371/
一応此処。
0082デフォルトの名無しさん2005/09/06(火) 02:07:11
DirectInputを使わずにゲームPADの入力を得たいのですが、
検索のためのキーワードとなる単語や関数名など教えて頂けませんか。
0083デフォルトの名無しさん2005/09/06(火) 02:19:39
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_multimedia_joystick_functions.asp
0084デフォルトの名無しさん2005/09/06(火) 02:29:56
うお、素晴らしい!ありがとうございます。
0085デフォルトの名無しさん2005/09/06(火) 11:08:41
3つのウィンドウから成るアプリケーションを作っています。
最小化ボタンなどを持つメインウィンドウが1つ、
残り2つはボタンを一切持たないタイトルバーだけのサブウィンドウという位置付けです。
メインとなるウィンドウ以外から終了させたくないので、
メインとなるウィンドウだけをタスクマネージャの
アプリケーションタブに表示させるにはどうしたら良いのでしょうか?
よろしければ、教えて下さい。
0086デフォルトの名無しさん2005/09/06(火) 11:26:42
>>85
サブウィンドウをメインウィンドウの被所有ウィンドウにすればいいんでね?
0087デフォルトの名無しさん2005/09/06(火) 11:27:56
>>85
http://www.asahi-net.or.jp/~HA3T-NKMR/vcl3-2.htm
0088デフォルトの名無しさん2005/09/06(火) 11:35:04
>>86
被所有ウィンドウとは、サブウィンドウをメインウィンドウの
子ウィンドウとするという事でしょうか?
0089デフォルトの名無しさん2005/09/06(火) 11:52:54
>>88
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp?frame=true#owned_windows

Owned Windowsのとこ嫁
0090デフォルトの名無しさん2005/09/06(火) 13:19:51
親子関係と所有被所有関係を混同してる人大杉
0091デフォルトの名無しさん2005/09/06(火) 13:48:09
だって日本語訳みたらわかんないよ
「オーナーウィンドウ」と「親ウィンドウ」って同じような感じだし
親からみたら子は所有してるわけだし
0092デフォルトの名無しさん2005/09/06(火) 13:51:04
オーナーと親の区別もつかんとは・・・
0093デフォルトの名無しさん2005/09/06(火) 13:55:17
親は所有者を兼ねるというか、
所有者が親である可能性(複雑な家庭事情)もあるとか
0094デフォルトの名無しさん2005/09/06(火) 14:02:17
そこで義母さん登場ですよ
0095デフォルトの名無しさん2005/09/06(火) 14:10:49
■結論■
>>85はDelphiかC++Builder使いなさい。
0096デフォルトの名無しさん2005/09/06(火) 14:46:00
>>89
解決しました。
メインウィンドウを親にしてみたら、
サブウィンドウのZオーダーが上に来てしまったので、
ダミーの透明親ウィンドウを作って回避しました。
助言、どうもありがとうございました。
0097デフォルトの名無しさん2005/09/06(火) 14:47:27
メモリの無駄だな
0098デフォルトの名無しさん2005/09/06(火) 15:15:48
メモリはこれから1Gがデフォになるからモウマンタイ。
0099デフォルトの名無しさん2005/09/06(火) 15:20:24
何もしない状況で指定した時間(たとえば30秒)が経過したら
自動バックアップを取るアプリを考えています。
が、MSDNによるとOnIdleはの第一引数lCountは
アイドル状態になって呼ばれるごとに増えるカウンタですよね?

このOnIdleが呼ばれる時間間隔はどのように取得できるのでしょうか?
それとも他の方法を考える必要があるのでしょうか?

ご助言頂けると幸いです。
0100デフォルトの名無しさん2005/09/06(火) 15:21:12
タイマー使えよ
0101デフォルトの名無しさん2005/09/06(火) 15:22:20
MFCスレ逝け
0102992005/09/06(火) 15:28:46
スレ違い失礼しました。
逝ってきます。
0103デフォルトの名無しさん2005/09/06(火) 23:01:29
今課題でチャットプログラム作っていて困っているんで教えてください。
メインとなるウインドウ(文字などが表示されるウインドウ)と
チャットを打つためのウインドウで構成されているんですが
チャットのほうがアクティブになるとメインウインドウのほうがアクティブではなくなってしまい
こまっています。チャットウインドウがアクティブの時でもメインウインドウがアクティブになっていてほしいのです。

なんかわかりづらい文章ですいませんが、よろしければ教えてください。
0104デフォルトの名無しさん2005/09/06(火) 23:43:56
両方アクティブってできんの?
常に前面に出すのじゃだめ?

あと質問
AddIPAddressってのあるけどSetしたいときはどうすんの?
0105デフォルトの名無しさん2005/09/06(火) 23:51:05
Releaseで実行ファイルを作って動作を確かめると
プログラムが落ちてしまいます。

落ちるのは、リッチエディットを使った時なのですが、
Releaseするときは、使用しているライブラリriched32.dllなどは
用意しないといけないのでしょうか。
0106デフォルトの名無しさん2005/09/06(火) 23:59:04
>>105
そんなことないから安心してデバッグしろ。
0107デフォルトの名無しさん2005/09/07(水) 00:36:06
>>103
そのメインウィンドウが非アクティブで困る事って何?
0108デフォルトの名無しさん2005/09/07(水) 06:02:52
自前のウインドウからコンソール画面を出さずにコンソールアプリを起動させて
その出力結果などを自前のウインドウ内で表示(Visual Studioの下の方に出るみたいな形)
させるには、どういうアプローチで取り組めば良いのでしょうか?
検索をするにも何がキーワードとなるのかが分かりません。
0109デフォルトの名無しさん2005/09/07(水) 06:20:38
>>108
子プロセスの標準出力を横取りしたい場合
 パイプ:CreatePipe()

子プロセスのコンソールアプリを、コンソールなしで実行したい。
 CreateProcess()について調べる。
 STARTUP構造体のwShowWindowあたりかな。
 9x系サポートしないならdwCreationFlagsもありかと思うけど。
0110デフォルトの名無しさん2005/09/07(水) 06:29:07
wShowWindowで消すと見えないコンソールウィンドウが残って
どんどんリソースが減ってく危険がある
01111092005/09/07(水) 06:34:55
それってコンソールアプリが終了しなかった場合?

あと訂正

×STARTUP構造体
○STARTUPINFO構造体
0112デフォルトの名無しさん2005/09/07(水) 07:24:25
コンソールを表示させないといえば、DETACHED_PROCESSだろ。
2k以上ならCREATE_NO_WINDOWもあるけどな。
01131052005/09/07(水) 08:23:23
>>106
ありがとうございます。

解決しました。
Debugではエラーチェックを通過しているところがありました。
0114デフォルトの名無しさん2005/09/07(水) 12:00:54
マウスカーソルの下にあるウィンドウの水平垂直スクロールバーのハンドルを取得したいですが、どのようなAPIを使えばよいでしょうか?
0115デフォルトの名無しさん2005/09/07(水) 12:03:18
垂直スクロールバーにハンドルがあるとは限りません
ハンドルがあったとしたら、逆に「どのウィンドウの」という結びつきはありません。
01161142005/09/07(水) 12:10:38
>>115
なるほどそうなのですか。
やりたいことは、マウスカーソルの下にあるウィンドウのスクロールバーを動かしたいということだったのですが、
こういうケースではどのようにするものなのでしょうか?
0117デフォルトの名無しさん2005/09/07(水) 12:17:48
>>116
ttp://forums.belution.com/ja/vc/000/324/98.shtml
01181142005/09/07(水) 12:31:11
>>117
ウィンドウハンドルさえ取れればメッセージを送ってなんとかなるだろうと思っていたのですが、甘いようですね。
とても参考になります。ありがとうございます。
ただ大変恐縮なのですが、それ以前に「マウスカーソルの下にあるウィンドウを取得」する方法がわからないのです・・・
0119デフォルトの名無しさん2005/09/07(水) 12:38:33
>>114
ChildWindowFromPoint
WindowFromPoint
01201142005/09/07(水) 13:06:59
>>119
ソレダ!
ありがとうございます!
0121デフォルトの名無しさん2005/09/07(水) 16:19:58
質問です。
自分のコンピューターが参加している
ワークグループ名またはドメイン名を
取得したいのですが、そのような情報を
取得するAPIはありますか?
0122デフォルトの名無しさん2005/09/07(水) 16:42:14
>>121
ttp://www.google.com/search?num=50&hl=ja&q=%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E5%90%8D+%E5%8F%96%E5%BE%97+API&lr=lang_ja
0123デフォルトの名無しさん2005/09/07(水) 20:16:22
こんばんは、よろしくお願いいたします。
ListView を2つwindow に引っ付けているのですが、
どちらのListViewが、選択されているかを知りたいのですが、
どうすれば分かるのでしょうか・
ListView_GetItemState(HWND,item,LVIS_FOCUSED)
でしらべても、両方のリストから、選択されてしまうのです。
0124デフォルトの名無しさん2005/09/07(水) 20:22:24
GetFocus();
0125デフォルトの名無しさん2005/09/07(水) 20:23:59
>>123
Form1.ActiveControl
0126デフォルトの名無しさん2005/09/07(水) 20:25:13
スマン 激しくスレ勘違い。
>>123 どっちも選択されてない場合もあるかもよ
0127デフォルトの名無しさん2005/09/07(水) 20:51:01
>>123です
>>124-126さんありがとうございます。
GetFocus()でできました。
他は、試してないのですが。
0128デフォルトの名無しさん2005/09/07(水) 20:53:20
他は試す必要なし
GetFocusで十分
>>125なんぞVB.NETじゃし
0129デフォルトの名無しさん2005/09/07(水) 21:20:15
>>128
Form1って名前から察するにVCLのTCustomForm.ActiveControlじゃね?
0130デフォルトの名無しさん2005/09/07(水) 21:36:45
じゃDelphiかよ。
Delphiスレに引きこもってろ。こっちにまで出てくんな
0131デフォルトの名無しさん2005/09/07(水) 21:38:14
MS謹製の開発環境を使ってきた俺にしたら
Form1って言われたら真っ先にVBが出てくら

あの糞VB、新規プロジェクト作ったら問答無用でForm1とかダサい名前付けやがんの
0132デフォルトの名無しさん2005/09/07(水) 21:41:53
DelphiなんてVBのパクリ
http://www.g.dendai.ac.jp/lecture/vbasic/img/vb02/fig07.gif
0133デフォルトの名無しさん2005/09/07(水) 21:43:11
よそでやれや
0134デフォルトの名無しさん2005/09/07(水) 22:04:14
質問です。
LineToで線をメモリDCに書き込んで表示しようと思ったんですが、
表示できないみたいなんです。仕様ですか?
0135デフォルトの名無しさん2005/09/07(水) 22:15:29
表示されないのなら、貴方のやり方が悪いだけです
0136デフォルトの名無しさん2005/09/07(水) 22:29:06
>>134
メモリDCに書くだけじゃ表示しない
01371342005/09/07(水) 22:43:15
スマソ。説明不足でした。
hBitmap = CreateCompatibleBitmap(hdc , 400 , 500);
hBuf = CreateCompatibleDC(hdc);
SelectObject(hBuf , hBitmap);
こんな感じでビットマップに描画してます。
なぜ描画されないんでしょうか?
0138デフォルトの名無しさん2005/09/07(水) 22:46:53
    /\___/ヽ
   /        :::\
  . | (○),  、(○)、 .:|
  |     |_,     .:::|
.   |    r―-、   .:::::::|   ・・・
   \  `ニニ´  .:::::/
   /`ー‐--‐‐―´\
01391342005/09/07(水) 22:52:19
ああ。もういいわ。
自分でもよく分からん様なってきた。
逝ってきます。
0140デフォルトの名無しさん2005/09/07(水) 22:59:22
(‥;)レスも読めんのか
0141デフォルトの名無しさん2005/09/07(水) 23:00:58
LineToはどこへ消えた
0142デフォルトの名無しさん2005/09/07(水) 23:02:23
>>111
9xでDOSプロセスを走らせたコンソール窓は
中のDOSプロセスが終了しててもキーを押すまで閉じなかったような。
もちろん隠してたら閉じられない
0143デフォルトの名無しさん2005/09/07(水) 23:05:34
>>142
DOS窓上でEXEを指定して実行したならそうだが、
EXEをダブルクリックで開いたDOS窓なら勝手に消える
0144デフォルトの名無しさん2005/09/07(水) 23:32:23
質問です。Windows XP で、IsWindowUnicode() で FALSE が返るような
コモンコントロール(リストビュー等)を作成する方法がありましたら教えてください。
一般的には RegisterClassExA() と RegisterClassExW() のどちらで
ウィンドウクラスを登録したかで決定されるということですが、システムが
用意しているウィンドウクラスについてはどのような扱いになっているのでしょう。
UNICODE が #define されていたら、自動的に CreateWindowExA() が呼ばれて、その結果
ANSI 版のコントロールが作成されると思っていたのですが、どうやらそうではないようで…。
0145デフォルトの名無しさん2005/09/07(水) 23:45:41
>>143
いや、コマンドプロンプトに戻るのを言ってるんじゃなくて
「この窓を閉じるには何かキーを押してください…」とか何とか出て
止まった記憶があるんだが。
.pifファイルの設定によるんだっけ
0146デフォルトの名無しさん2005/09/08(木) 00:04:24
>>144
無理なんじゃない?
NT系では全てUNICODEとして作られてると思うよ。
01471462005/09/08(木) 00:07:54
やっぱ無理だわ。
comctl32.dllのインポートテーブル見てみたけどRegisterClassExA自体無かった。
01481442005/09/08(木) 00:28:06
>>146 >>147
な、なるほど。そういうことですか…。
どうもありがとうございました。
0149デフォルトの名無しさん2005/09/08(木) 03:11:08
>>139
WM_PAINT で呼ばれたウインドウに対して、BeginPaint() を始めたとき
その HDC に、作っておいたビットマップの絵を移せばイイのでは。

BeginPaint() の度に LineTo() とかするのは鬱陶しいので、動画でない
なら予め絵を作っておいて、ウインドウの GWL_USERDATA に持たせておいて
WM_PAINT のときはその絵を取り出して移すと、作った絵であろうと読み込んだ
絵であろうと WM_PAINT の処理が簡単になる。
0150デフォルトの名無しさん2005/09/08(木) 10:59:42
>>147
バカ?
RegisterClassExはuser32だ・・・
そんでもってWもAも両方とも有るわ・・・

>>148
UNICODEのCreateWindowやら使ってやればIsWindowUnicodeはTRUEを返す
ANSIの関数使って作ればIsWindowUnicodeはFalseを返す
0151デフォルトの名無しさん2005/09/08(木) 11:16:14
>>150
すごく勘違いしてるぞ。
0152デフォルトの名無しさん2005/09/08(木) 11:17:45
Win32APIの日本語訳が充実すると一番うれしいのが
ボーランドとすれば、ボーランドがカネをだして
日本語訳をすすめればいいんだ
それくらいのカネはあるだろう
0153デフォルトの名無しさん2005/09/08(木) 11:50:19
DrawTextやTextOutで表示する文の途中で色を変えたいのですが
GetTextExtentPoint32を使って座標を調整しながら色ごとに分けた文を
順番に表示していくしかないですかね…?
例えば、"あいうえお"の"あい"を青、"う"を赤、"えお"を黒で表示したい時です。
0154デフォルトの名無しさん2005/09/08(木) 11:53:54
それしかないです
0155デフォルトの名無しさん2005/09/08(木) 11:57:06
そうですか。どうもありがとうございます。
0156デフォルトの名無しさん2005/09/08(木) 13:00:52
>>150 インポ
0157デフォルトの名無しさん2005/09/08(木) 16:20:17
APIからはちょっと外れるかと思うんですが、次の「URLDownloadToFileW」のコールバック処理について教えてください。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/apippc/html/ppc_urlmon3_cnxd.asp
コードは、次のような感じで実装しています。
URLDownloadToFileW( NULL , L"data.dat" , L"http://SAVE_URL" , 0 , NULL ) ;
一応これで機能は果たすんですが、エラーや回線の状況などを考慮してコールバックして状況を取得したいんですが、
その方法がわかりません。
サンプルなど、参考になりそうな情報がありましたら、教えてください。
よろしくお願いします。
0158デフォルトの名無しさん2005/09/08(木) 16:22:25
あぁ〜。もういいわ。
自分でもよく分からん様なってきた。
逝ってきます。
0159デフォルトの名無しさん2005/09/08(木) 16:41:47
>>157
COMインタフェイスの実装の仕方はわかる?
0160デフォルトの名無しさん2005/09/08(木) 16:46:00
>>157
・IBindStatusCallbackを実装する
・そいつのインスタンスをURLDownloadToFileの最後に引数に渡す
・ダウンロード経過に応じてIBindStatusCallback::OnProgressが呼ばれるので、そこで好きにする
01611572005/09/08(木) 17:14:13
159さん
160さん
レスありがとうございます。

>160
>・IBindStatusCallbackを実装する
>・そいつのインスタンスをURLDownloadToFileの最後に引数に渡す
>・ダウンロード経過に応じてIBindStatusCallback::OnProgressが呼ばれるので、そこで好きにする

「IBindStatusCallback」インスタンス化する方法がわかっていません。
とりあえず次のような感じで書いてみましたが・・・

#include <atlfile.h>
class CURLDownloadCB : public CBindStatusCallback<CURLDownloadCB>
{
}

compileしますと、次のようなエラー出てしまい先に進めずにいます。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlctl.h(3403) : error C2039: '_ThreadModel' : 'CURLDownloadCB' のメンバではありません。
c:\prj\test.h(121) : 'CURLDownloadCB' の宣言を確認してください。
c:\prj\test.h(122) : コンパイルされたクラスのテンプレートのインスタンス化 'ATL::CBindStatusCallback<T>' の参照を確認してください
with
[
T=CURLDownloadCB
]
(このあとエラーが続きます)

恥ずかしながら、C++のテンプレートの理解が乏しく解決できずにいます。
参考になりそうなサンプルコードなどがどこかにありましたら紹介いただけないでしょうか。
よろしくお願いします。
0162デフォルトの名無しさん2005/09/08(木) 23:47:04
SHGetFileInfoで取得したシステムイメージリストの中から、マイコンピュータやデスクトップなどのアイコンのインデックスを取得したいです。
マジックナンバー的な定数とかありますか?
もし無い場合、取得する方法はありますか?
よろしくお願いしますえろいお兄さん。
01631602005/09/09(金) 19:07:28
>>161
私はATLを使わずに自前でIBindStatusCallbackを実装したクラスを作りました。
class CBindStatusCallbackImpl : public IBindStatusCallback {.…}
使うときはnewしたオブジェクトをAPIに渡すだけです。

ATLのCBindStatusCallbackを使ったサンプルであればMSDNにあるようです。
私は使ったことがありませんが、一度見てみてはどうでしょうか。

ASYNC サンプル : データの非同期ダウンロード
ttp://www.microsoft.com/japan/msdn/library/ja/vcsample/html/_sample_atl_ASYNC.asp?frame=true
0164デフォルトの名無しさん2005/09/09(金) 21:29:41
>>157
http://home.inreach.com/mdunn/code/URLDownload/URLDownload.html
0165デフォルトの名無しさん2005/09/10(土) 13:23:34
SetWindowsHookExでコンソールアプリがフックできないんですけど????
注意点とかあれば教えてください。
0166デフォルトの名無しさん2005/09/10(土) 13:28:08
フックの仕方が悪いだけじゃろ
0167名無しさん@そうだ選挙に行こう2005/09/10(土) 17:35:28
>>165
たしかスレッド単位でフックしたと思ったから理論上はコンソールアプリにでもフックできる…はずだが
キーボードとかマウスメッセージなんてのをフックしようとしてないだろうな
そもそも単なるコンソールアプリだけであればメッセージそのものが無関係というか…

あと、SetWindowsHookExするのはDLLですよってのは大丈夫だな、きっと。
0168名無しさん@そうだ選挙に行こう2005/09/10(土) 18:48:11
>>167
もちろんDLLを作ってる。
コンソールアプリでなければフックできてる。
0169名無しさん@そうだ選挙に行こう2005/09/10(土) 19:28:09
ウィンドウの外にマウスカーソルが出たとき、
ドラッグ中だったらそれを解除することがやりたいのですが
なにかいい方法はありませんか。
01701652005/09/10(土) 19:57:26
そーすうp
http://with2ch.net/up/data/1126349655.zip

GetProcAddressをAPIフックします。
GetProcAddressが呼ばれたときにOutputDebugStringで出力するだけのものです。
実行すると、タスクトレイに入り、左クリックでメニューを出して終了するまで常駐し続けます。
しかし、コンソールアプリには効果がありません。
どうにかできませんかね。
0171名無しさん@そうだ選挙に行こう2005/09/10(土) 23:27:29
>>168
user32.dllを使わないプロセスはSetWindowsHookExやAppInit_DLLsでは
フックできません。CreateRemoteThreadでどうぞ
0172名無しさん@そうだ選挙に行こう2005/09/10(土) 23:29:24
>>169
ドラッグ開始時にSetCaptureすればその後のマウスメッセージはすべて
キャプチャしたウィンドウに来るのでWM_MOUSEMOVEでウィンドウ外に出たかどうか
判定できます。
01731652005/09/11(日) 00:29:37
>>171
WindowsMEで使う予定です。
CreateRemoteThreadが使えません。

WriteProcessMemoryでターゲットを書き換えて、
LoadLibraryでuser32.dllをロードさせた後ならSetWindowsHookEx
でフックできるでしょうか。
0174名無しさん@そうだ選挙に行こう2005/09/11(日) 00:46:23
>>173
> WindowsMEで使う予定です。
じゃああとはDebugActiveProcessくらいしかないなあ。
デバッガを切り離せないからDebugActiveProcessはダメなら
コンソールプログラムをフックできる移植性のある公開された方法はないと思う。
> LoadLibraryでuser32.dllをロードさせた後なら
どうやるつもりなのか知らんけどuser32.dllをロードさせられるんだったら
そこで直接ターゲットのDLLをロードしたほうが早いんじゃない?
0175デフォルトの名無しさん2005/09/11(日) 06:24:46
質問です。
wavを鳴らそうと思ったのですが、再生した瞬間だけがくっと処理落ち(?)します。
mciSendCommand, WaveOut〜, PlaySoundをそれぞれ試してみたのですが、同じように処理落ちしました。
またマルチスレッドも使ってみましたが、やはり処理落ちしました。
試しにHSPで似たようなことをすると、ちゃんと処理落ちせずに再生できるようなので環境の問題ではないかと思うのですが、
具体的にどうしたら処理落ち回避できるのか見当もつかず途方にくれているしだいです。
処理落ちを回避するにはどうしたらいいでしょうか? よろしくお願いします。
0176名無しさん@そうだ選挙に行こう2005/09/11(日) 06:56:45
>>172

>WM_MOUSEMOVEでウィンドウ外に出たかどうか 判定
SetCapture()の後、WM_MOUSEMOVE中にPtInRect()を使ったらできました。
ありがとうございます。

WM_MOUSEMOVEに色々処理を書くと動作が重くなったり
CPUの使用率が上がってしまうと思うんですが
これはしょうがないんでしょうか。
0177名無しさん@そうだ選挙に行こう2005/09/11(日) 07:59:05
WM_MOUSEMOVEに書いたらとか関係無いから
0178名無しさん@そうだ選挙に行こう2005/09/11(日) 09:29:51
>>175
SND_MEMORYフラグ立ててやれば処理落ちせんと思うが‥‥
01791782005/09/11(日) 09:32:59
VCL混じりのコードでいえばこんな感じな

void __fastcall TForm1::PlayResourceSound(const AnsiString& name)
{
//TODO: この下にコードを追加してください
TResourceStream* resource = new TResourceStream(reinterpret_cast<int>(HInstance), name.c_str(), "WAVE");
sndPlaySound(reinterpret_cast<char*>(resource->Memory), SND_MEMORY | SND_SYNC);
delete resource;
}
0180名無しさん@そうだ選挙に行こう2005/09/11(日) 09:48:08
>>179
あらかじめTMemoryStreamに読み込んでおいたらどうなるの?
0181名無しさん@そうだ選挙に行こう2005/09/11(日) 10:00:45
GetWindowText()であるウィンドウの文字列を受け取ることができますが、
文字列を受け取らずに、文字の長さだけ受け取りたい場合のapiはありますか?
0182名無しさん@そうだ選挙に行こう2005/09/11(日) 10:08:44
全然探してないだろ
MSDNでその1つ2つ下にあるAPIが見えませんか?
0183名無しさん@そうだ選挙に行こう2005/09/11(日) 11:35:06
>>180
TResourceStreamもTMemoryStreamもTCustomMemoryStreamの派生クラスだろうが。
MemoryプロパティはTCustomMemoryStreamのメンバだし。
01841752005/09/11(日) 12:55:32
sndPlaySound(lpSound, SND_MEMORY | SND_ASYNC);
SND_MEMORY | SND_SYNC
SND_MEMORY | SND_ASYNC | SND_NOSTOP
SND_MEMORY | SND_SYNC | SND_NOSTOP
とか多少いじくってみましたが変化なしでした。
ただSND_MEMORY | SND_ASYNC | SND_LOOPで最初に一回だけ再生してやると
でれれれれれれれって感じでスムーズに連続再生されます。

もしかしてPlaySoundの連続使用は拙かったでしょうか?
01851752005/09/11(日) 13:30:26
VC6.0なのですがreleaseでF5キーでデバッグ実行をしていたのがまずかったようで、
ctrl+F5で普通に実行するとがくがくすることもなく綺麗に再生されました。
うーん。

大変お手数をかけて申し訳ありませんでしたorz
ちなみにdebugモードで実行すると処理落ちどころか目も当てられな
0186名無しさん@そうだ選挙に行こう2005/09/11(日) 13:32:17
    _, ._
  ( ゚ Д゚)   ガシャ
  ( つ O. __
  と_)_) (__()、;.o:。
          ゚*・:.。
0187名無しさん@そうだ選挙に行こう2005/09/11(日) 15:34:34
        /つ_∧
  /つ_,∧ 〈( ゚д゚)
  |( ゚д゚) ヽ ⊂ニ) こりゃひどい
  ヽ__と/ ̄ ̄ ̄/ |
   ̄\/___/ ̄ ̄
0188名無しさん@そうだ選挙に行こう2005/09/11(日) 16:59:51
システムで設定されている警告音を鳴らすAPIってあるんでしょうか?
コントロールパネルのサウンドで設定している「メッセージ(警告)」とかのアレです。
0189名無しさん@そうだ選挙に行こう2005/09/11(日) 17:02:21
MessageBeep
01901882005/09/11(日) 17:05:37
>>189
どうもありがとう
0191名無しさん@そうだ選挙に行こう2005/09/11(日) 19:15:00
VS.NET2003、リソース関係の質問なのですが、
IDR_IMAGE1 IMAGE "p1.pic"
で組み込んだリソースにアクセスしようと思い
FindResource(hInstance, TEXT("IDR_IMAGE1"), TEXT("IMAGE"));
と書いたのですが NULL が返って来てしまいました

その後、試行錯誤で
第1引数を hInstance -> NULL に
第2引数を TEXT("IDR_IMAGE1") -> MAKEINTRESOURCE(IDR_IMAGE1)
第3引数を TEXT("IMAGE") -> RT_RCDATA
としたのですが、未だ有効なリソースハンドルを取得できないでいます
実行ファイルのサイズからは、p1.pic は組み込まれているとは思うのですが、何か他に必要な事柄があるのでしょうか?

あと VS.NET2003 は jpg をリソースの中に入れようとすると強制的に 256 色 BMP に変換するのがウザイです
0192名無しさん@そうだ選挙に行こう2005/09/11(日) 19:43:57
.picってなんだ?
01931912005/09/11(日) 19:55:08
jpg で入れると 256 色 BMP に変換されてしまうんで、適当な拡張子に変えて回避したんです
0194名無しさん@そうだ選挙に行こう2005/09/11(日) 20:01:07
TEXT()じゃなくて _TEXT() じゃなかったか?
01951912005/09/11(日) 20:05:50
TEXT の筈。TEXTA(quote) が L##quote で TEXTW(quote) が quote に置換されるマクロ。
文字列直接入れてる解説サイトもあったんで、これが直接の原因ではないとは思うんですが……

……ソース UP した方が良いですか?
0196名無しさん@そうだ選挙に行こう2005/09/11(日) 20:17:29
IDR_IMAGE1がresource.hで#defineされてるんだろ
0197名無しさん@そうだ選挙に行こう2005/09/11(日) 20:21:11
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_generic.2d.text_mappings_in_tchar..h.asp

        どちらも定義無し _MBCS      _UNICODE
_TCHAR      char      char        wchar_t
_TINT        int       int         wint_t
_TSCHAR     signed char  signed char   wchar_t
_TUCHAR     unsigned char unsigned char  wchar_t
_TXCHAR     char       unsigned char wchar_t
_T または _TEXT 影響なし    影響なし     L(次の文字または文字列を対応する Unicode に変換する)


OK?
0198名無しさん@そうだ選挙に行こう2005/09/11(日) 20:25:13
>>193
これじゃね?
拡張子変えてもファイルの内容が変わるわけじゃないのはわかってるよね?
01991912005/09/11(日) 20:28:44
>>197
ttp://66.102.7.104/search?q=cache:j-h9rzifXsUJ:www2.ocn.ne.jp/~cbmaho/homepage/vc/Help/WINDOWSH.htm+%22%23define+TEXT(quote)%22&hl=ja&inlang=ja
大丈夫。だとおもう。

>>198
だから .jpg でリソースのインポートをすると bmp に変換されちゃうんだって
任意のファイル形式を入れられるんだから、ファイル名を変えても動作しなくちゃおかしい筈
02001912005/09/11(日) 20:35:14
>>195
ごめん。TEXTA と TEXW が逆だった……ってかもしかしたら直接 _TEXT を定義してたかも知んないけど
0201名無しさん@そうだ選挙に行こう2005/09/11(日) 20:43:34
とりあえず、自身のリソース内にあるのなら、第一引数は自分のHINSTANCE

FindResource(hInstance, TEXT("IDR_IMAGE1"), TEXT("IMAGE"));
これを
FindResource(hInstance, TEXT("IDR_IMAGE1"), RT_RCDATA);
でやって見てくれる?
0202名無しさん@そうだ選挙に行こう2005/09/11(日) 21:17:16
RT_BITMAPでもだめ?
0203名無しさん@そうだ選挙に行こう2005/09/11(日) 21:18:37
複数のディレクトリを監視して、どちらかに指定のファイルが生成されたら・・・ってのをやりたいんですが、どうすればいいでしょうか。
ReadDirectoryChangesW, FindFirstChangeNotification + WaitForMultipleObjects など見てみましたが、どうも複数ディレクトリに指定したファイルを・・・には向かないような感じです。

FindFirstFile, FindNextFile をぐるんぐるんまわすのが楽そうなんですが、これだと処理的に無駄が増えてしまうんでしょうか?
この場合、検索にワイルドカードは使用しません。
02041912005/09/11(日) 21:18:50
だめですた orz

ソース上げてみます
ttp://www2.ranobe.com/test/src/up2724.zip.html
0205名無しさん@そうだ選挙に行こう2005/09/11(日) 21:25:01
>>203
>どうも複数ディレクトリに指定したファイルを・・・には向かないような感じです。

そう感じた理由は?
0206名無しさん@そうだ選挙に行こう2005/09/11(日) 21:33:24
あ・・・すみません、シングルスレッドでやってるので、
ReadDirectoryChangesW の場合片方のディレクトリしか監視できず、
FindFirstChangeNotification の場合ファイルが見つかった後また別のファイルを監視したい時に間が生じるのではないかと。
できればスレッド一つで済ましたいんですが、スレッド増やしたほうが現実的でしょうか。
0207名無しさん@そうだ選挙に行こう2005/09/11(日) 21:40:25
ttp://nienie.com/~masapico/api_ReadDirectoryChangesW.html
見る限りでは、スレッド1つでも平気なような気がするけど
0208名無しさん@そうだ選挙に行こう2005/09/11(日) 22:55:00
>>204
HRSRC hImgRc = FindResource(NULL, MAKEINTRESOURCE(IDR_IMAGE1), "IMAGE");
でやってみな?
0209名無しさん@そうだ選挙に行こう2005/09/11(日) 23:03:01
>>208
thx。やっと有効なハンドルが取得できました m(_ _)m

"IDR_IMAGE1" じゃ駄目だったのか……
ちなみに "IMAGE" を RT_RCDATA や RT_BITMAP に変えたらアウトでした
相変わらず挙動が不明ですな orz
0210デフォルトの名無しさん2005/09/12(月) 02:10:59
質問です。
VB6でメモリ上にテキストを描画してそれをフォーム上にコピーしてるんですが
ビットマップ作成時のサイズを設定するためにGetTextExtentPoint32を行うと
フォーム上に表示されたテキストにアンチエイリアスがかかりません。
GetTextExtentPoint32を行わないとアンチエイリアスがかかります。
なぜなんでしょうか?

hMemDC = CreateCompatibleDC(Form1.hdc)
SetBkMode hMemDC, OPAQUE
SetBkColor hMemDC, RGB(255, 0, 0)
SetTextColor hMemDC, RGB(255, 255, 0)
hFont = CreateFont(48, 0, 0, 0, _
             FW_NORMAL, 0, 0, 0, _
             DEFAULT_CHARSET, _
             OUT_DEFAULT_PRECIS, _
             CLIP_DEFAULT_PRECIS, _
             ANTIALIASED_QUALITY, _
             DEFAULT_PITCH Or FF_DONTCARE, _
             "MS Pゴシック")
SelectObject hMemDC, hFont
GetTextExtentPoint32 hMemDC, txt, LenB(txt), udtSIZE
hBitmap = CreateCompatibleBitmap(Form1.hdc, udtSIZE.cz, udtSIZE.cy)
SelectObject hMemDC, hBitmap
TextOut hMemDC, 0, 0, txt, LenB(StrConv(txt, vbFromUnicode))
BitBlt Form1.hdc, 0, 0, udtSIZE.cx, udtSIZE.cy, hMemDC, 0, 0, SRCCOPY
0211デフォルトの名無しさん2005/09/12(月) 02:56:05
textやRichEditに表示されている任意サイズのフォントの高さを得るにはどうすれば良いでしょうか?
0212デフォルトの名無しさん2005/09/12(月) 03:45:12
GetTextMetrics
0213デフォルトの名無しさん2005/09/12(月) 06:51:43
>>209
不明じゃないだろ
TYPE IMAGEのリソースとして取り込んでるんだから、
RCDATAやらBITMAPやら他のタイプ指定してもダメなんは当たり前だよ

ちゃんとIDR_IMAGE1で登録してるのに、名前指定で取れないのが不思議だが
まぁ、文字列での指定より整数識別子での指定を推奨してるし、いいんじゃね?
0214デフォルトの名無しさん2005/09/12(月) 20:41:38
GetTextMetricsはフォントを変更するとデータが成城じゃなくなるからダメですた。

RichTextで行間変えるにはどーすればいいんですかね
0215デフォルトの名無しさん2005/09/12(月) 20:58:57
PARAFORMAT2
0216デフォルトの名無しさん2005/09/12(月) 21:17:59
>210
よくわからないが、GetTextExtentPoint32を無効にしたときの
コードを出せ、といいたい。
0217デフォルトの名無しさん2005/09/12(月) 22:06:10
>>216
無効にしたときのコードは、
GetTextExtentPoint32をコメントにして
CreateCompatibleBitmapの第2、3引数に
数値を直接入れてやりました。
0218デフォルトの名無しさん2005/09/13(火) 02:18:08
拡張子に関連付けられたアイコンのファイル名とインデックスを取得するにはどうすればいいでしょうか?
0219デフォルトの名無しさん2005/09/13(火) 04:44:06
・メモリ使用量
・メモリ使用量デルタ
・最大メモリ使用量
・ページフォルト
・ページフォルトデルタ
・仮想メモリサイズ
・ページプール
・非ページプール

タスクマネージャにて見られる、これらの項目について解説してる文書などはありますか?
0220デフォルトの名無しさん2005/09/13(火) 08:15:36
http://www.microsoft.com/Japan/Terminology/query.asp?ui=L
0221デフォルトの名無しさん2005/09/13(火) 08:54:59
>>218
SHGetFileInfo
0222デフォルトの名無しさん2005/09/13(火) 15:46:41
USB仮想COMポートをハブ経由でPCに接続して、CreateFileでOpenすると
8割方エラーになり、最悪ハング(フリーズ)します。
ハブ接続故にCOMポートからのレスポンスに遅れがある為?ではないかと
思うのですが、何か好い解決策はありませんか?

ちなみに、ハブ無しでPCに直接接続した場合はエラーしません。
(あたりまえですが。。。)
0223デフォルトの名無しさん2005/09/13(火) 16:16:21
ハブ入れても動くと思うけどなー
ハブかそのデバイスがなんかおかしいのかね・・・

ハブを変えてみるとか、
バスパワーハブなら、セルフパワーにしてみるとかで、様子は変わらない?
02242182005/09/13(火) 16:22:15
>>221
SHGetFileInfo('C:\Hoge.txt', 0, sfi, SizeOf(sfi), SHGFI_ICONLOCATION);
としても、sfi.szDisplayName は空(szDisplayName[0] が NULL) でした。
与えるパスがフォルダの場合は成功するのですが・・・
0225デフォルトの名無しさん2005/09/13(火) 16:27:45
>>222
そのハブが悪い。別ので試してみ?
0226デフォルトの名無しさん2005/09/13(火) 16:49:18
>>223さん
>>225さん

レス、ありがとうございますm(__)m

使っているハブはELECOM社のU2H-G4SSVと、LOAS社のUH-284Wで、
ELECOMの方が若干エラーする確率が低いような気がしますが、
どちらも基本的には同じ状況です。
また、どちらともセルフパワーで使用しており電流容量的には
問題無しです。

何か他に試してみることありますか?
0227デフォルトの名無しさん2005/09/13(火) 17:15:51
OSが98/ME使ってるなら、2k/XPにしてみるとか
メーカーのサイトに、新しいドライバないかとか

テキトーなことしか言えないなー、スマソ
0228デフォルトの名無しさん2005/09/13(火) 18:47:07
ListViewの拡張スタイルで表示した罫線の色は変えれませんか?

ListView_SetExtendedListViewStyleで
拡張スタイルにLVS_EX_GRIDLINESです
0229デフォルトの名無しさん2005/09/13(火) 18:48:22
BITMAPリソースを読み込むにはLoadBitmapがありますが
JPGを読み込むにはどうすればよいでしょうか?
0230デフォルトの名無しさん2005/09/13(火) 18:50:31
ペゾルド本について質問させてください。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/922.txt
上の本に載っていたソースを忠実に打ったのですが、WM_PAINTメッセージの処理を無限に行ってしまいます。
何度も見ながらチェックしていますがどこを打ち間違えたのかさっぱりわかりません....。
どなたかどこが異なっているか指摘をお願いします。
0231デフォルトの名無しさん2005/09/13(火) 18:54:47
打つから間違うんだ。
コピーしろ。
0232デフォルトの名無しさん2005/09/13(火) 18:59:20
caseのdefaultが抜けてる
0233デフォルトの名無しさん2005/09/13(火) 19:09:52
>>229
OleLoadPictureとかGDI+とか
0234デフォルトの名無しさん2005/09/13(火) 19:13:02
>>230
オリジナルとかなり違ってるな
メッセージループの間違いが致命的
0235デフォルトの名無しさん2005/09/13(火) 19:31:54
>>229
TResourceStream* res = new TResourceStream(HInstance, "JpegImg1", "RT_RCDATA");
TJpegImage::LoadFromStream(res);
02362302005/09/13(火) 19:36:09
かなり根本的なミスをしていました....。
DispatchMessageが抜けていました。
ありがとうございました。
0237デフォルトの名無しさん2005/09/13(火) 22:43:07
日本語入力するときとかって、
最初にひらがながわらわら出てきて、
スペースを押して、変換を確定しますよね。
私が知りたいのは、その変換を確定したこ
とを知らせるWM_XXXです。

MSDNで調べているのですが、なかなか知
りたい情報にたどり着けません。

なにか検索のヒントとなる単語を教えていただけませんか?
0238デフォルトの名無しさん2005/09/13(火) 22:46:12
WM_IME_XXX
0239デフォルトの名無しさん2005/09/13(火) 22:47:39
確定するとWM_CHARがわらわらとやってきます。
0240デフォルトの名無しさん2005/09/13(火) 23:07:46
WM_IME_COMPOSITION
WM_IME_NOTIFY
WM_IME_ENDCOMPOSITION
WM_IME_SETCONTEXT

とりあえず、こんだけ見つけてきました。
これから調べてきます。
ヒントありがとうございました。
0241デフォルトの名無しさん2005/09/13(火) 23:22:34
SetFilePointer( hFile, 0, NULL, FILE_END ) とやると、ファイルポインタはファイルの最後に
移動する、という理解でいいんだよね?(実際、やってみると、そうなっているようだし)

いや、MSDNには
>Note You can use SetFilePointer to determine the length of a file. To do this,
>use FILE_END for dwMoveMethod and seek to location zero.
とあって、「seek to location zero」(←先頭に移動???)ってのが気になって...
0242デフォルトの名無しさん2005/09/13(火) 23:35:35
ちゃんと訳して理解しろ。
0243デフォルトの名無しさん2005/09/13(火) 23:40:41
ちゃんと訳すと、どうなるん?
0244デフォルトの名無しさん2005/09/13(火) 23:44:26
ちゃんと訳さないとこうなる。

MSDNの日本語訳
>SetFilePointer 関数を使って、ファイルの長さを判断することもできます。
>この場合、dwMoveMethod パラメータで FILE_END を指定し、
>位置 0(ファイルの先頭)への移動を行います。

FILE_ENDの0位置だから、ファイルの最後が正しいと思われ。
0245デフォルトの名無しさん2005/09/13(火) 23:45:02
お前が見当違いな注釈に悩んでいるのがわかる。
0246デフォルトの名無しさん2005/09/13(火) 23:56:39
脳みそに焼き付けろですぅ おまえはそのファイルの長さを測定するするため、SetFilePointerを使うことが可能なのですーぅ
dwMoveMethodにFILE_ENDを指定、そしたら位置0へシークするですぅ

キモイ訳を考えてるうちに先を越されるは、MSDN日本語版に掲載されてるわで散々ですわ
http://www.microsoft.com/japan/msdn/library/ja/jpfileio/html/_win32_setfilepointer.asp
0247デフォルトの名無しさん2005/09/13(火) 23:59:23
修行が足りないな
0248デフォルトの名無しさん2005/09/14(水) 00:00:24
うーむ、【ファイルの先頭】 の注釈は、どこから湧いてきたんだろ('A`)
0249デフォルトの名無しさん2005/09/14(水) 00:03:08
>>248
訳した人が>>241と同レベルだったんじゃね?
0250デフォルトの名無しさん2005/09/14(水) 00:04:58
日本語版でおかしな訳が乗るのは、もう変わることのない仕様です。

何を訳しているのか知らない人に外注出してんだろーねー
0251デフォルトの名無しさん2005/09/14(水) 00:29:10
訳す人もある程度Win32知ってないとだめだね
0252デフォルトの名無しさん2005/09/14(水) 01:22:54
昔はMSの新入社員に訳させていた。余りにも誤訳が多いので、外注するようになった。
根本的な解決になっていないらしい。
0253デフォルトの名無しさん2005/09/14(水) 02:21:53
>>252
新入社員にやらせることじゃないだろ…
本国はMSDNを新人に書かせてたり社外に丸投げしてるのか? そんなわけないだろうに
0254デフォルトの名無しさん2005/09/14(水) 04:19:06
スクロールバー、なんかもう、なんかもう、ああぁぁぁ......っ。
ごちゃごちゃごちゃっ............................................。
0255デフォルトの名無しさん2005/09/14(水) 05:09:10
windowsにwinsockはありますか?
0256デフォルトの名無しさん2005/09/14(水) 05:20:56
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0257デフォルトの名無しさん2005/09/14(水) 05:28:53
可哀相に、winsockが何かもわかって無いんだな
0258デフォルトの名無しさん2005/09/14(水) 05:31:07
Windows Socket
0259デフォルトの名無しさん2005/09/14(水) 07:40:44
windowsにマインスイーパはありますか?
0260デフォルトの名無しさん2005/09/14(水) 08:30:03
windowsにWINAPIはありますか?
0261デフォルトの名無しさん2005/09/14(水) 09:01:07
WindowsにC言語はありますか?
0262デフォルトの名無しさん2005/09/14(水) 09:21:12
Windowsに真心はありますか?
0263デフォルトの名無しさん2005/09/14(水) 09:50:38
>>255 >>259-262
すべてあります。
0264デフォルトの名無しさん2005/09/14(水) 10:04:28
>>261
標準では付いていません。
>>262
相性問題が多発しているのでサポート外です。
0265デフォルトの名無しさん2005/09/14(水) 11:10:12
Windowsにバグはありますか?
0266デフォルトの名無しさん2005/09/14(水) 11:11:26
Windowsにバグはありません。すべて、仕様です
0267デフォルトの名無しさん2005/09/14(水) 12:14:21
Windowsにマニフェストはありますか?
0268デフォルトの名無しさん2005/09/14(水) 12:21:58
あるよ

今日からあなたもLUNAスタイル!! 月に代わっ(ry
0269237 == 2402005/09/14(水) 14:13:29
ttp://www.ne.jp/asahi/oh/landd/prog_html/prog64.html
ここから見つけてきました。

>IME関連のメッセージで
>開始と終了を示すのは以下のふたつです。

>WM_IME_STARTCOMPOSITION
>変換を開始した時のみこのメッセージが送られます。

>WM_IME_ENDCOMPOSITION
>変換を終了した時のみこのメッセージが送られます。

変換終了メッセージは
WM_IME_ENDCOMPOSITION
なんですね。
ためになりました。
0270デフォルトの名無しさん2005/09/14(水) 14:19:54
ダイアログボックスから浮動小数を取得するにはどうすればよいのですか?
整数を取得するには GetDlgItemInt を使用すればいいのですが
浮動小数がわからなくて
0271デフォルトの名無しさん2005/09/14(水) 14:24:29
>>270
APIは用意されてない

GetDlgItemTextで文字列として取得して変換
02722702005/09/14(水) 15:25:58
>>271
答えてくれてありがとうございました。

>GetDlgItemTextで文字列として取得して変換
とあるのですが、C言語の atof のようなAPIはあるのでしょうか?
答えてもらって今までずっとググっていたんですが 見つけられなくて
0273デフォルトの名無しさん2005/09/14(水) 15:27:20
>>218
ExtractAssociatedIcon()ってのがある。
バグ持ちなのか、期待通りの動作をしてくれないんで使えないけどな。
結局、同等の関数を自作して実装してるよ。
0274デフォルトの名無しさん2005/09/14(水) 15:44:24
>>272
atof使えば良いかと・・・
0275デフォルトの名無しさん2005/09/14(水) 16:05:04
Cを使ってるとは限らないぞ
02762742005/09/14(水) 16:20:02
>>275
それもそうだな

>>272
ともあれ、atofのようなAPIはないはずなんで、
何とか自分でがんがれ
0277デフォルトの名無しさん 2005/09/14(水) 16:27:41
Outlook Express のメールを総て.DBXから.emlに変換をするアプリを作りたいです。
アドレス帳も.wabファイルを読み込んで、アドレスだけテキストに変換したいのです。
こういうプログラムを作りたいのですが、どうやって良いのかさっぱり分かりません。
手動で出来るのは分かるのですが、プログラムだとどうやるのでしょう?
0278デフォルトの名無しさん2005/09/14(水) 16:28:32
Cを使ってるとは限らないが、
相当するAPIなぞ無いのだから、
どのみちatofのような各言語に用意された型変換関数を使うしかあるまい
0279デフォルトの名無しさん2005/09/14(水) 16:29:22
DBXやWABの構造をグーグルやら駆使して暴き出せ
02802702005/09/14(水) 17:18:33
全部 masm で作ろうかなと思ってプログラミングしてたんですけど
API には atof のようなものはないんですね・・・

0281デフォルトの名無しさん2005/09/14(水) 17:29:36
masm使ってるとは思えないヘタレ発言
0282デフォルトの名無しさん2005/09/14(水) 18:31:55
ReadProcessMemoryで数千byteの中身を4byteずつみていきたいんですが、
for(i=0;i<1000;i++){
ReadProcessMemory(hProcess, (LPVOID)dwPtr, &dwMl, 0x4, NULL);
printf("%x\",dwMl);
dwPtr = dwPtr + 0x4;
}
こんな感じにするとめちゃめちゃメモリにアクセスする回数増えるので
ReadProcessMemory(hProcess, (LPVOID)dwPtr, &dwMl, 0xFA0, NULL);
って感じに一気に読み込んでから4byteずつ見た方がいいかなーって思ってるんですが、
どうやって4byteずつ読み込んでいくかわかりません。
なんかうまいやり方ありませんか?
0283デフォルトの名無しさん2005/09/14(水) 18:35:28
ポインタ知らない人かと思ったら
ポインタ使ってるじゃないか
0284デフォルトの名無しさん2005/09/14(水) 18:58:10
考えてみればDWORDじゃ0xFA0分の中身読み込めないから戻り値0になってましたorz
char[4000]とかにして4文字ずつとってatoiすればいいのかな・・・
0285デフォルトの名無しさん2005/09/14(水) 19:02:02
そーゆーのはもうWin32APIの質問じゃありませんから。
0286デフォルトの名無しさん2005/09/14(水) 19:05:29
すんません。自分で何とかします。
0287デフォルトの名無しさん2005/09/14(水) 20:07:30
cpuの温度を返す関数ってありますか?
0288デフォルトの名無しさん2005/09/14(水) 20:14:54
GetTemp
0289デフォルトの名無しさん2005/09/14(水) 20:16:49
ごめん低脳スレとまちがえた
0290デフォルトの名無しさん2005/09/14(水) 22:15:03
WMIで出来ないかな?
02912182005/09/15(木) 02:01:41
>>273
取得したいのはアイコンハンドルではなくて、アイコンのファイル名とインデックスです。
02922732005/09/15(木) 03:25:15
>>291
おまいさんはMSDNに目を通したのかと小一時間(ry

If the icon is extracted from an associated executable file,
the function stores the full path and file name of the executable file in the string pointed to by lpIconPath,
and stores the icon's identifier in the WORD pointed to by lpiIcon.

って書いてあるだろ。

・・・まぁ、>>273の通りなんで、結局は役に立たないけどな。
02932872005/09/15(木) 07:02:21
WMI・・面白いと思ったけど温度の関数ないなぁ・・もう少し調べてみます
0294デフォルトの名無しさん2005/09/15(木) 09:34:28
>>277
たとえばMAPI?

見てないけど。
FILE: Windows Address Book (WAB) Documentation
http://support.microsoft.com/default.aspx?scid=kb;en-us;266347
0295デフォルトの名無しさん2005/09/15(木) 12:35:09
>>287
それで何をしたいのか?
もし、CPUの温度を表示する様なツールを作りたい、と言う事なら、
電子温度計のセンサ部分を直接CPUに付けた方が便利だと(以下略
0296デフォルトの名無しさん2005/09/15(木) 14:17:52
マウスホイールのチルトに対応するにはどのメッセージを捕まえればよいのでしょうか?
0297デフォルトの名無しさん2005/09/15(木) 14:46:29
win98 での話で気が引けるが、StretchDIBits() で 2240x1488 から 73x49 に
縮めようとすると失敗する。(winXP ではOK)
拡大ではバグの資料が MSDN に見つかったが、縮小では見つからない。
どれくらいの比率の縮小で失敗するか、ご存知の方どうか教えて下さい。
(失敗したら自分で SetPixel() で間引いて HDC に移しているが遅い。
尚、縮小はサムネイルを作るため。写真の枚数でサイズを決めて縮小して
いるが、たまたま写真の枚数が多くて、不具合がばれた。)
0298デフォルトの名無しさん2005/09/15(木) 15:06:55
>>295
そんなことしなくても、たいていのCPUには
温度センサーついてるだろw
0299デフォルトの名無しさん2005/09/15(木) 15:11:58
マザーボードによって取得方法が違うからねぇ
0300デフォルトの名無しさん2005/09/15(木) 16:09:41
>>297
知らんがドライバ次第だったりするんじゃないか?

つか、せめて自分で画像いじるときはDIBSectionぐらい使おうぜ。
03012872005/09/15(木) 17:53:53
>>295
いや、熱暴走が気になるから表示できて警告できるソフトみたいなのつくろうかなーとか思っただけなんですが・・

>298
そなの?
0302デフォルトの名無しさん2005/09/15(木) 18:03:10
普通にMBMとか使えばいいだけじゃないのか?
0303デフォルトの名無しさん2005/09/15(木) 18:07:03
あのDLLってソース公開されてたはず

あれだよあれ、名前が出てこない・・・もう歳か・・・・
0304デフォルトの名無しさん2005/09/15(木) 18:42:51
>>301
MotherBoardMonitorでぐぐれ。その方が早い。
0305デフォルトの名無しさん2005/09/15(木) 18:51:23
スレ汚しすみません。

親ウィンドウと子ウィンドウを作って、それぞれのWM_CREATEに入った回数を数えてみたのですが、
親のWM_CREATEにはなぜか二回も入るのに、子のやつには一回も入りません orz
両方とも一回ずつ入るようにしたいのですが、
これは子ウィンドウの作り方が決定的に間違っているのでしょうか?

すみませんが、どなたかお願いします m(__)m

http://aploda.com/dl.php?mode=pass&file_id=0000028955
0306デフォルトの名無しさん2005/09/15(木) 19:07:08
同じウィンドウプロシージャを使っていたりしませんか?
03073062005/09/15(木) 19:09:14
あ、ソースアップされていましたね...。
0308デフォルトの名無しさん2005/09/15(木) 19:09:55
>>305
同じWinProcを参照してるから。
子のWinProcを使いたいなら、フックするのではなく、
子のWinProcを登録したウィンドウクラスを作成し、それでCreateしてみれ。
03093052005/09/15(木) 19:12:51
もしかして子のWNDCLASS構造体を作って
色々ぶち込むんですかね?

さっそくやってみまっす!!
03103062005/09/15(木) 19:12:59
同じウィンドウクラスを使っていますよ。
0311デフォルトの名無しさん2005/09/15(木) 19:13:13
memcpyと置き換えができるAPIはありますか?
0312デフォルトの名無しさん2005/09/15(木) 19:14:00
初心者な質問でごめんなさい。
最近APIの勉強を始めて練習がてらにウィンドウをスクリーンの端などに持っていった時に
自動に端に引っ付かせる(例:WINAMPなど)方法を考えているのですがうまくいきません。
WM_WINDOWPOSCHANGEDやWM_MOVEで特定座標に来たらSetWindowPos()で端に
移動させてみたのですが、それではそれらのメッセージ前に一度マウスで指定した座標のところに
一瞬ウィンドウを描写してから端に描写するので困っています。
ウィンドウを移動不可にする関数もしくはスタイル(?)など探しているのですが小生の力では探せず・・・
どなたかヒントだけでも教えていただけないでしょうか?
お願いします。
0313デフォルトの名無しさん2005/09/15(木) 19:14:21
説明が足りなかったかもしれんので、追記

ソースでは親のWinProcを登録したWNDCLASSを作成し、
そのWNDCLASSでもって両方のウィンドウをCreateしてる。

その後子のWinProcをSetWindowLongで設定しているが、
CreateWindowが完了して時点で、対象のウィンドウには
WM_CREATEは既に送信されている。
このため、親のWinProc上でWM_CREATEが2回呼ばれている。

なので、>>308のようにしなさいということ。
0314デフォルトの名無しさん2005/09/15(木) 19:20:31
すいません、
キー入力について教えていただきたいんですが、
ハードウェア的に直接キーボードを入力したのとまったく変わらない状態を作り出せる
そんなAPIはありませんでしょうか?
03152872005/09/15(木) 19:26:17
>>304
結構いいかも、ありがと♪
0316デフォルトの名無しさん2005/09/15(木) 19:26:50
>>314
SendInput
0317デフォルトの名無しさん2005/09/15(木) 19:29:24
>>312
MFCのCControlBarのソースを参考に
0318デフォルトの名無しさん2005/09/15(木) 19:31:38
>>312
WM_WINDOWPOSCHANGING
0319デフォルトの名無しさん2005/09/15(木) 19:44:09
>>311
静的なら CopyMemory
動的なら RtlMoveMemory
03203052005/09/15(木) 19:49:47
できた?かも。
http://aploda.com/dl.php?mode=pass&file_id=0000028985

>>310 >>313
大変大変参考になりました。
どうもありがとー m(__)m

InitWndClass()という関数でWNDCLASS構造体を作るようにしました。
子は親と違うクラスネームですが、これはいいんですかね?
あと、子のプロシージャの戻り値は親と同じようにDefWindowProc()関数にしてるんですが、
これで親と同じようにWM_TIMERとか使えば
子が消滅するまで無限ループ?すると考えていいんでしょか?
03213122005/09/15(木) 20:13:50
レスありがとうです。
>>318
なるほど、このメッセージで送られるWINDOWPOSポインタの座標を変更すればできました。
すっかり見落としてました。
スレ汚しすみません。

>>317
MPCですか・・・今度時間があれば参考程度に見てみます。
03223212005/09/15(木) 20:16:35
ごめんなさい、訂正

>WINDOWPOSポインタの座標
WINDOWPOSポインタ先に格納されてるXY座標
03233112005/09/15(木) 20:16:55
>>319
静的だったのでCopyMemoryを使いうまくいきました
ありがとうございます
0324デフォルトの名無しさん2005/09/15(木) 21:44:29
>>323
CopyMemoryは最終的にはmemcpyが呼び出される。
MoveMemoryも結局はmemmoveの呼び出しになる。(が、一応kernel32.dllにエントリもある)

少なくともVCでは/Oiを指定するとmemcpyはインライン展開されCランタイムライブラリは不要になるはず。
0325デフォルトの名無しさん2005/09/15(木) 21:53:38
なんでそんな物をAPIに求めるのかねえ。
0326デフォルトの名無しさん2005/09/15(木) 22:30:46
現在ダイアログを作成して、ダイアログ上にエディットボタンを置いています。
ダイアログ上のエディットが操作された事を
WM_COMMANDを取得することで知っているのですが、
エディットボタンに送られてくるWM_メッセージを全て盗みたいと思っています。
何かいい方法はないでしょうか?
0327デフォルトの名無しさん2005/09/15(木) 22:31:59
>>326
サブクラス化
0328デフォルトの名無しさん2005/09/15(木) 22:37:17
>>311
一応貼っとく。
[SDK32] C ランタイム関数の Win32 で対応する関数一覧
ttp://support.microsoft.com/default.aspx?scid=kb;ja;99456
0329デフォルトの名無しさん2005/09/15(木) 22:38:47
>>328
ありがとうございます!!!
0330デフォルトの名無しさん2005/09/15(木) 22:42:10
>>325
たとえばCPUに応じて最速のコピー命令を使えるとか。
関数呼び出しのオーバーヘッドが誤差の範囲になる程度のまとまった量の
コピーじゃないと意味ないけど
0331デフォルトの名無しさん2005/09/15(木) 22:43:20
>>328
おぉ、テンプレに入れてもいい気がする。
0332デフォルトの名無しさん2005/09/15(木) 23:16:15
>>328
ちょっと感動した
0333デフォルトの名無しさん2005/09/16(金) 00:42:42
さっそくブックマーク
0334デフォルトの名無しさん2005/09/16(金) 01:55:55
ちなみに言うとVC++で最適化するとDWORD単位でのブロック転送に置き換えられる。

てか、APIコールのオーバーヘッドのほうがでかいから。
本当に高速なコピーができることが重要な場面では、とりあえずスタートアップ時に
cpuidで判定して、movdqaなりmovqなりを使うルーチンに関数ポインタをセットする。

Intel C++だとわざわざ自作しなくとも専用のmemcpyが自動的にリンクされたような。
0335デフォルトの名無しさん2005/09/16(金) 09:27:04
>>328
久しぶりに感動した
0336デフォルトの名無しさん2005/09/16(金) 13:44:56
マウスを使うゲーム今作ってるんだけど頻繁にウインドウの外にでてちょっとうざったいのです。
マウスカーソルをウインドウの中に閉じ込めることってできますか?
0337デフォルトの名無しさん2005/09/16(金) 14:06:44
質問しないとわからんことか?
0338デフォルトの名無しさん2005/09/16(金) 14:08:05
ヒント
デスクトップもウインドウ
0339デフォルトの名無しさん2005/09/16(金) 14:17:29
>>336
出来ないことは無いが、そのプログラムを終わらせないとタスク切り替えもままならなくなる。
そんな糞プログラムにするくらいなら設計し直せ。
0340デフォルトの名無しさん2005/09/16(金) 14:19:21
VirtualPCが確かそんなことをやってた気がする。
マウスの移動をチェックしてウインドウの外に出たらウインドウの中に強制的に移動じゃちょっと違うのかな。
0341デフォルトの名無しさん2005/09/16(金) 14:36:19
ClipCursor
0342デフォルトの名無しさん2005/09/16(金) 16:10:51
環境は VC.net sdk で作成しています。
質問なのですが、現在ヘッダーコントロールを勉強しているのですが、
指定した位置にヘッダーコントロール表示はできたのですが、ヘッダーを指定した位置から
動かさないで中身のみスクロールさせたいのですが、有効なAPI御存じないでしょうか?
MoveWindowでスクロールさせると指定位置から動いてしまうので困っています。
0343デフォルトの名無しさん2005/09/16(金) 16:17:55
まずは日本語をやり直せ。逆接が4つもある
03443422005/09/16(金) 16:30:24
質問です。現在ヘッダーコントロールを勉強してます。
指定した位置にヘッダーコントロールの表示はできました。
しかし、ヘッダーを指定した位置から動かさないで中身のみ
スクロールさせたいのですが、よくわかりません。
MoveWindowでスクロールさせると指定位置から動いてしまうので
困っています。上記の目的に有効なAPIありますか?
環境は VC.net sdk です。

…で、答えは↓の辺りかな?
ttp://www.kumei.ne.jp/c_lang/sdk3/sdk_294.htm
0345デフォルトの名無しさん2005/09/16(金) 16:54:00
Windowsが管理している全てのウィンドウの内、
キーボードフォーカスを持つウィンドウのハンドルを取得したいのですが、
WindowFromPoint
ChildWindowFromPoint
を使うのが普通で簡単なのでしょうか?
0346デフォルトの名無しさん2005/09/16(金) 16:59:38
>>344
返事ありがとうございます。
kumeiさんのHPは、よく勉強させていただいてます。
でも、指定位置からのヘッダースクロールの解決方法はありませんでした。。
0347デフォルトの名無しさん2005/09/16(金) 17:09:05
http://jbbs.livedoor.jp/bbs/read.cgi/game/14836/1125989416/

「RGSS+Win32API」のスッドレをしたらばに立てました。
RGSSとWin32APIの両方に興味のある方は
どうぞごりようください
0348デフォルトの名無しさん2005/09/16(金) 18:20:01
どうしてここでは名無しなんだOmoti
0349デフォルトの名無しさん2005/09/16(金) 18:22:25
名前出さないほうが人が呼べると踏んだんだろう。馬鹿なりに考えて。
0350デフォルトの名無しさん2005/09/16(金) 18:41:13
RGSSなんてわけのわからん略語使うな
ブラクラ踏んじまったじゃないか
0351デフォルトの名無しさん2005/09/16(金) 18:52:24
そして被害者がまた一人…
0352デフォルトの名無しさん2005/09/16(金) 20:29:30
ダイアログボックスの様なタスクに表示されない
普通のウィンドウ(MDIではない子ウィンドウ)を作りたいのですが、可能でしょうか?
もし、そうならばその方法を教えてください。
0353デフォルトの名無しさん2005/09/16(金) 20:49:15
>>399
Alt+Tab、知ってますか?
03542872005/09/16(金) 21:05:46
>>399
ふぁいと
0355デフォルトの名無しさん2005/09/16(金) 21:06:30
ぉ、名前ミス
0356デフォルトの名無しさん2005/09/16(金) 21:14:38
名前だけか?
0357デフォルトの名無しさん2005/09/16(金) 21:15:17
>>353
知りませんでした…この機能
が、意図するものが見えません。スマソ。教えてください。
>>354
誰だか知らないけどありがとう?
0358デフォルトの名無しさん2005/09/16(金) 21:24:40
>>357
>>399を読めばなにを意図しているか分かるよ
03593572005/09/16(金) 21:28:35
>>358
気長に待つしかないのでつか・・・。
03603532005/09/16(金) 21:44:41
どうやったら>>349と399を間違えるんだ俺!!
0361デフォルトの名無しさん2005/09/16(金) 21:45:50
>>349じゃなくて>>339だし・・・
03623572005/09/16(金) 22:25:40
スマソ。猫でもに載ってたorz。
0363デフォルトの名無しさん2005/09/16(金) 22:34:12
>>353
Alt+TabやAlt+Escで出来ても、見えてるのにマウスカーソルが動かないClipCursorとか
マウスのボタンを押してもないのに続くSetCaptureとかは、使う側はストレス溜まるだろう。
03643542005/09/16(金) 22:34:32
いや、399のレスが楽しみだなってw
0365デフォルトの名無しさん2005/09/16(金) 22:36:49
>>345
座標とフォーカスに何の関係があるんだ?
0366デフォルトの名無しさん2005/09/16(金) 22:39:30
ゲームなんだからいんじゃね >ClipCursor
オプションにしてもいいし。
0367デフォルトの名無しさん2005/09/16(金) 22:44:26
>>366
ClipCursorとか使う位ならフルスクリーンで動いた方がいい
0368デフォルトの名無しさん2005/09/16(金) 22:50:32
そのを操作中は一切マウスがウィンドウの外に出ず、
Alt+Tabやらでアプリを切り替えれば普通に全体にマウスを持っていけるゲームなぞ掃いて捨てるほどありますがね
0369デフォルトの名無しさん2005/09/16(金) 22:52:32
そんなゲームプレイする側からすれば鬱陶しいだけだ。
0370デフォルトの名無しさん2005/09/16(金) 22:53:17
掃いて捨ててください。
0371デフォルトの名無しさん2005/09/16(金) 22:56:16
>>367
個人的な好みじゃねぇかw
俺も個人的な好み言うなら、別にゲーム中にクリップされても全然構わんし、ゲーム内容によってはそのほうがいいだろうし。
フルスクリーンもそれはそれで希望してる人がいれば取り込めばいいわけだ。
0372デフォルトの名無しさん2005/09/16(金) 23:11:59
あるダイアログ1上からダイアログ2を呼び出します。
ダイアログ2上でユーザーに文字列を入力してもらい、
その文字列のエラーチェックをし、エラーでなければ
ダイアログ1に入力された文字列を渡したいと思っています。

今はexternを使い、char *ポインタを共用することで
問題を解決していますが、ダイアログ上でバイナリ
データのやり取り、または引数としてポインタを渡す
ことは可能でしょうか?
もし可能でしたらその方法を教えてください。
0373デフォルトの名無しさん2005/09/16(金) 23:21:31
DialogBoxParam()
0374デフォルトの名無しさん2005/09/16(金) 23:21:38
>>369
個人の趣味で「側」を語らないでくださいね^^
0375デフォルトの名無しさん2005/09/17(土) 00:01:01
>>374
お断りしますね^^
0376デフォルトの名無しさん2005/09/17(土) 01:52:53
ゲームだなんだの話は他所でやれ。
0377デフォルトの名無しさん2005/09/17(土) 02:03:45
ゲ製作技術
http://pc8.2ch.net/gamedev/
0378デフォルトの名無しさん2005/09/17(土) 08:14:46
>>375
断るとか関係ありませんよ^^
0379デフォルトの名無しさん2005/09/17(土) 18:54:06
>>378
そんなことありませんよ^^
0380デフォルトの名無しさん2005/09/17(土) 22:25:05
どなたかAdobansd Windows 下さいよ
0381デフォルトの名無しさん2005/09/17(土) 22:27:11
VisualStudio2005が出たら、.net academicpack漏れはどうなるの?w
0382デフォルトの名無しさん2005/09/17(土) 22:28:01
.net academicpackの漏れは
0383デフォルトの名無しさん2005/09/17(土) 22:28:17
どなたか〜
0384デフォルトの名無しさん2005/09/17(土) 22:28:36
academicpackな漏れは
0385デフォルトの名無しさん2005/09/17(土) 22:30:05
意味深
0386デフォルトの名無しさん2005/09/17(土) 22:31:20
一万円もするコンピュータの本買ったって言ったら、彼女びっくりするよ
0387デフォルトの名無しさん2005/09/17(土) 22:31:40
>>380
advanced じゃなくて?
0388デフォルトの名無しさん2005/09/17(土) 22:32:54
>>387
それですよ〜ww
0389デフォルトの名無しさん2005/09/17(土) 22:35:51
2005からVC++/CLI っていうのが強化されたらしいんだけど。
どうなんかな?
0390デフォルトの名無しさん2005/09/17(土) 22:40:58
Win32APIとは何の関係もないな
0391デフォルトの名無しさん2005/09/17(土) 22:45:39
頑張ってterapadでコーディングしてください
0392デフォルトの名無しさん2005/09/18(日) 00:51:21
これからWin64になるの?
0393デフォルトの名無しさん2005/09/18(日) 06:10:13
WinFXになるってエロイ人がいってたお(^^)
0394デフォルトの名無しさん2005/09/18(日) 16:33:58
Winsock LSPの詳しい資料ってどっかにありませんか??
散々探したけど、全然見つかりません・・・
0395デフォルトの名無しさん2005/09/18(日) 16:59:54
C++でWin32APIを使ってるのってもう古い?
C#に移行したほうがいいのかな
0396デフォルトの名無しさん2005/09/18(日) 17:01:23
ttp://www.microsoft.com/msj/0599/LayeredService/LayeredService.aspx
0397デフォルトの名無しさん2005/09/18(日) 17:02:09
>>396は>>394宛ね。
>>395御好きにどうぞ。
0398デフォルトの名無しさん2005/09/18(日) 17:08:38
>>395
VS2005だとdllimportだらけになるなあ。
ま作るものによるんだけど
03993942005/09/18(日) 17:46:41
>>396
�dクス。
0400デフォルトの名無しさん2005/09/18(日) 18:38:18
ところで400ゲット
0401デフォルトの名無しさん2005/09/18(日) 20:54:20
MAX_PATH廻りで

char path[MAX_PATH + 1];
Win32Api(path, MAX_PATH)
とやっている人と
char path[MAX_PATH];
Win32Api(path, MAX_PATH)
とやっている人がいますが、
どちらが正しいのですか?

Win32ApiはGetModuleFileNameやらGetFullPathNameやらその他もろもろです。
0402デフォルトの名無しさん2005/09/18(日) 20:55:28
+1 しとけば安心
0403デフォルトの名無しさん2005/09/18(日) 21:05:07
またそのネタか
0404デフォルトの名無しさん2005/09/18(日) 21:53:01
TCHAR path[MAX_PATH + 2];
0405デフォルトの名無しさん2005/09/18(日) 21:57:58
なんで2を足してるの?
0406デフォルトの名無しさん2005/09/18(日) 21:59:13
TCHARを理解していないから
0407デフォルトの名無しさん2005/09/18(日) 22:33:49
TCHARくらい理解してますよ^^
0408デフォルトの名無しさん2005/09/18(日) 22:35:04
>>407
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?は?
0409デフォルトの名無しさん2005/09/18(日) 23:01:30
TCHARというよりC言語の配列を理解してないんじゃ
0410デフォルトの名無しさん2005/09/18(日) 23:02:54
malloc()とゴッチャになっている、に一票
0411デフォルトの名無しさん2005/09/18(日) 23:34:41
ひょっとして、Buiild33 の >>323 の再来ですか?
0412デフォルトの名無しさん2005/09/18(日) 23:35:47
Buiild33 ⇒ Build33 だ、スマソ
0413デフォルトの名無しさん2005/09/18(日) 23:43:36
質問です。Windows XP の互換モード(exeファイルのプロパティの「互換性」で
設定できるやつ)によって起動されたことを検出する方法があれば教えてください。
もしくは、互換モードの設定情報が保存されている場所を教えてください。
0414デフォルトの名無しさん2005/09/19(月) 01:14:30
ダイアログボックスを作成し、
その作成されたダイアログボックスのハンドルを取得したいのですが
何かいい方法はありませんでしょうか?

現在はWPARAMに子のハンドルを格納して子から親へメッセージを送り
親側ではWPARAMを基に子にメッセージを送信するということにしています。

WM_DIALOGINIT時に親に自分のハンドルを教えているのですが、
上のような方法はあまり賢くないような気がします。
0415デフォルトの名無しさん2005/09/19(月) 07:09:13
>>414
CreateDialogの戻り値がそうだろ。
まさか、モーダルでハンドル取ろうなんて考えてる訳じゃないだろ?
0416デフォルトの名無しさん2005/09/19(月) 09:55:35
>>395
GDI+用のラッパーどっかにいいの落ちてないか?
面倒臭くて面倒臭くて・・・
0417デフォルトの名無しさん2005/09/19(月) 11:45:23
自分で作れば?
0418デフォルトの名無しさん2005/09/19(月) 13:06:39
gdiplusクラスはすでにラッパーなわけだが、それをさらにラップしてどうするんだろ。
0419デフォルトの名無しさん2005/09/19(月) 13:16:46
C#と手間も変わらんよな
0420デフォルトの名無しさん2005/09/19(月) 16:12:24
どのあたりが面倒?
0421デフォルトの名無しさん2005/09/19(月) 16:32:10
CreatePopupMenu()をして
InsertMenu()で状況に応じたメニューを表示したいのですが、
選択したメニューの処理は、あらかじめID等を決めておいて
前もって作っておくしかないのでしょうか。
0422not 4162005/09/19(月) 16:44:12
>>420
多分DC->Gdiplus::Graphics変換とかRECT→Gdiplus::Rect変換とかが
しょっちゅう必要で一段余計に手間が増えてウザイ、とかじゃまいか
0423デフォルトの名無しさん2005/09/19(月) 17:25:40
>>421
当然だろ
実行中にプログラムを作って動かすことなどできんのだから
それに、状況に応じたっていっても、無限じゃないだろ?
もし無限ならそんなのできません
0424デフォルトの名無しさん2005/09/19(月) 17:42:48
普通はメニューと処理は1対1だけど
「IEのお気に入り」や「最近使ったファイル」なんかは
複数のメニューをまとめて1つの処理でやってる
0425デフォルトの名無しさん2005/09/19(月) 18:52:03
Delphiのメニューと処理はあらかじめIDで結び付けられてるわけじゃないぞ
あれをWin32APIだけ使って真似するのは大変だと思うが
0426デフォルトの名無しさん2005/09/19(月) 19:22:02
>>424
ありゃあどんなリンクだろうとやる処理が同一だからだろ
04274212005/09/19(月) 20:11:34
>>423
ありがとうございます。

右クリックしたとき関数呼んででCreatePopupMenu()、
しているのですが関数終了時にDestroyMunu()は、したほうが
いいんでしょうか。
0428デフォルトの名無しさん2005/09/19(月) 21:05:48
関数無いで無条件にCreatePopupMenuしてるんなら関数終了時にDestroyした方がええじゃろう
0429デフォルトの名無しさん2005/09/19(月) 21:07:17
関数無い→関数内
ね
0430デフォルトの名無しさん2005/09/19(月) 23:11:25
>>395
あたりまえだろ
0431デフォルトの名無しさん2005/09/19(月) 23:15:47
winsockは64ビットですか?
04324212005/09/20(火) 08:19:29
>>428
レスどうもです。

DestroyMenu()をしないとわずかづつ
メモリ使用量が増えていました。
0433デフォルトの名無しさん2005/09/20(火) 08:36:09
>>421
どういう状況かわからんが、
スクリプト処理系でも作ればいいんじゃないか?
処理内容を機械に作らせたい、となればまた別の話だけど。

予めIDを決めなければいけない、ってことはない。
WM_MENUSELECTとGetMenuStringとかでなんとかなるんじゃないか?
同じメニューストリングのメニューが無限にあるとかなら知らんが。

といっても普通はIDで事足りるかと。
さすがに「お気に入り」なんかでも6万もないだろ。
0434デフォルトの名無しさん2005/09/20(火) 11:15:48
>>416
Managed C++ または C++/CLI
他にも色々まとめてラップしてくれるぜ
0435デフォルトの名無しさん2005/09/20(火) 11:26:30
イェアイェアチェケラッチョ
0436デフォルトの名無しさん2005/09/20(火) 17:06:38
WS_EX_LAYEREDを立てて、ウインドウを作るとWM_KEYDOWN、WM_KEYUPなどのキーイベントが取得出来なくなってしまいます。
(キーを押すとシステムの警告音が鳴ってしまう「カン、カン・・・」って感じの)
何とか回避する方法ご存じな方いらっしゃいませんでしょうか。
よろしくお願いします。
0437デフォルトの名無しさん2005/09/20(火) 17:09:19
>>436
バグを直す。
04384212005/09/20(火) 20:06:36
>>433
メニュー項目で選択した文字列を関数の引数にしたかったんです。

TrackPopupMenu()のnFlagにTPM_RETURNCMDオプションを設定して
返り値の番号からどの文字列が選択されたか判断することで解決しました。
0439デフォルトの名無しさん2005/09/21(水) 00:25:22
メタファイルに関して質問があります。
プリンタへ印字するためのメタファイル作成で詰まっています。

現在CreateEnhMetaFileでメタファイルを作成しているのですが、
第一引数がNULLの状態からDPIを変更することは出来るのでしょうか?
SetWindowExやらSetViewportExやらでいじっても何も変わらなかったり、
真っ白になったりします。

第一引数がNULLでは出来ない場合、プリンタのDCを
取得せずにする方法はあるんでしょうか?

04404362005/09/21(水) 12:02:41
>>437
レスありがとうございます。

>バグを直す。
これは、WS_EX_LAYEREDを立ててウインドウを作る事とキーイベントが取得出来なくなる事に関係は無いという事でしょうか?
0441デフォルトの名無しさん2005/09/21(水) 16:50:41
他にどういう意味があると?
04424392005/09/21(水) 18:22:18
一部解決しました。MapMode換えると座標系も変わるのか…
プロパティのDPIは変わりませんが…
0443デフォルトの名無しさん2005/09/21(水) 21:21:17
こんばんは、よろしくお願いいたします。

ダイアログボックスに、ウィンドウを引っ付けて、
文字を書き込んでいますが、そのフォントサイズを変えたいのです。
そんなことできるのでしょうか。
0444デフォルトの名無しさん2005/09/21(水) 21:25:47
できます。
0445デフォルトの名無しさん2005/09/21(水) 21:47:26
やったねっ
0446初心者2005/09/22(木) 13:56:45
質問があります。
現在、ボーランドでプログラムを作っているのですが、
TransparentBlt()関数が読み込めないらしく、
 Error: 外部シンボル 'TransparentBlt' が未解決
と出てしまいます。

何かをインクルードし忘れているからでしょうか?
windows.hだけをインクルードしているのですが。
0447デフォルトの名無しさん2005/09/22(木) 13:57:08
>>446
Msimg32.libをリンク
0448初心者2005/09/22(木) 14:02:25
>>447
ありがとうございます。
すいませんが、リンクはどのようにするのでしょうか?
0449デフォルトの名無しさん2005/09/22(木) 14:12:17
返れ
0450デフォルトの名無しさん2005/09/22(木) 14:12:30
>>448
コマンドプロンプトからコンパイルしているのなら、
たぶんbcc32の引数にソースファイルと共にmsimg32.libを並べればいいはず。
0451デフォルトの名無しさん2005/09/22(木) 14:12:38
     /\___/ヽ
   / -‐'  'ー-  \
  . | (●),(、_,)、(●) ::|
  |    /,.ー-‐、i  :::::|
  |    //⌒ヽヽ  .::|
  |    ヽー-‐ノ  :::::|
   \    ̄   ...::/
   /`ー‐--‐‐―´\
0452デフォルトの名無しさん2005/09/22(木) 14:15:48
>>448
BCC5.5.1の事を言っているんなら、コマンドラインに単に msimg32.lib を
付け加えるだけでは?
0453デフォルトの名無しさん2005/09/22(木) 14:23:43
>448 >450 >452
返れ
0454初心者2005/09/22(木) 14:25:39
ダメでした。いろいろなところに入れてみたのですが。
0455デフォルトの名無しさん2005/09/22(木) 14:25:44
返れって何?帰れならわかるけどwwww
日本語わかりまちぇんか??
0456デフォルトの名無しさん2005/09/22(木) 14:26:39
>>454
荒れてるようだからこっち言って聞いた方がいいかも。

タダで使えるBorland C++ Part4
http://pc8.2ch.net/test/read.cgi/tech/1091066805/
0457初心者2005/09/22(木) 14:29:10
>>456
どうもです。行ってきます。
0458デフォルトの名無しさん2005/09/22(木) 14:30:48
多分PlatformSDKをインストールしてないってオチだろうな。
0459デフォルトの名無しさん2005/09/22(木) 14:32:40
>>458
bccは必要ない。ヘッダとインポートライブラリすべて同梱
0460初心者2005/09/22(木) 14:39:35
それは何でしょうか。
ぜひインストールしたいものです。
0461デフォルトの名無しさん2005/09/22(木) 14:51:05
>>460
PlatformSDKは最新のWindows.hなどが入っている。
プログラムの実行が早くなったりするわけじゃないから、
インストールするのは必要に迫られてからでいい。
0462デフォルトの名無しさん2005/09/22(木) 14:52:31
下手に最新のPSDK入れたりすると、古いコンパイラでコンパイル出来なく
なったりするんだな、これが。
0463デフォルトの名無しさん2005/09/22(木) 14:56:12
PlatformSDKも知らんとWindowsプログラムやっとんのか・・・
恐ろしい世の中じゃのう
0464デフォルトの名無しさん2005/09/22(木) 15:19:53
>>455
返れ
0465デフォルトの名無しさん2005/09/22(木) 15:42:28
ファイルの上書き確認をするメッセージボックスを出したいのですが、
普通のメッセージボックスではなく、
「はい」「いいえ」だけでなく、「すべて」「中止」のボタンを付けなければなりません。
それで、Win32APIのメッセージボックスじゃ出来ないと思い、メッセージボックスを自作したのですが、
メッセージボックスのように、処理を中断させるのをどうすればいいかわかりません。
そういうことできる関数ありませんか?
0466デフォルトの名無しさん2005/09/22(木) 15:54:28
DialogBox
0467デフォルトの名無しさん2005/09/22(木) 15:54:55
モーダルダイアログ、モードレスダイアログ
で検索してみれ
0468デフォルトの名無しさん2005/09/22(木) 15:57:30
MessageBoxじゃダメなのか?
0469デフォルトの名無しさん2005/09/22(木) 16:09:32
MessageBoxに「すべて」ボタン作る引数なんてないだろ
0470デフォルトの名無しさん2005/09/22(木) 16:10:05
>>465
関数でなきゃ「厭ねっ」なのかっ!
あぁん!
0471デフォルトの名無しさん2005/09/22(木) 16:11:48
デスクトップアイコンを非表示にするAPIを知りませんか?
0472デフォルトの名無しさん2005/09/22(木) 18:49:26
>>465
CodeProjectにこんなのがあった。
ttp://www.codeproject.com/dialog/xmessagebox.asp
0473デフォルトの名無しさん2005/09/22(木) 19:26:27
>>443です
>>444さんありがとうございます。
CreateFontを使ってできました。
0474デフォルトの名無しさん2005/09/22(木) 22:58:58
すみません、ペゾルド本について質問させてください。
本書において DrawBezier (hdc, apt) ;というコードがありますが、ビルドするとエラーが発生してしまいます。
PSDKのドキュメントを探してもこんな引数を取る GDIファンクション は見当たりませんでした。
しかしながら、付属CDのプロジェクトをビルドした場合、エラーなくビルドすることが出来ました。これは何かをリンクする必要があるのでしょうか?
0475デフォルトの名無しさん2005/09/22(木) 23:40:01
>>474
へえーそういうのがあるんかとぐぐって見たら、こういうのがあったが、
この引数の関数型はユーザ定義じゃないの? 引数の数が多いのも同名の関数で
出てくる。はずしていたらごめん。
ttp://www.cmlab.csie.ntu.edu.tw/~yichin/WindowsProgramming/aslin/222324.htm
0476デフォルトの名無しさん2005/09/22(木) 23:57:30
>>474
おまいさんが持ってるのが第五版ならP.191に載ってるコードをちゃんと上から下まで見ろ。
0477Mathiz ◆Ho9erQuSOQ 2005/09/22(木) 23:57:57
>>475
わざわざ調べていただいてありがとうございます。
よくソースを見直したら定義していた関数をまるっきり見落としていました....。
これもGDIファンクションかと勝手な思い込みをしてコーディングしていました。ご迷惑をかけてごめんなさいです..。
04784772005/09/22(木) 23:59:25
474は477です....orz
0479デフォルトの名無しさん2005/09/23(金) 07:33:16
>>471
こういうことか?

Win32API質問箱 Build28
http://pc8.2ch.net/test/read.cgi/tech/1108199304/

271 名前: デフォルトの名無しさん Mail: sage 投稿日: 05/02/20(日) 15:43:18

>>267
こんなもんでどう?検証で書いたからそのまま載せる。

HWND hWnd = NULL;
hWnd = ::FindWindow( "Progman", "Program Manager" );
hWnd = ::GetTopWindow( hWnd );
hWnd = ::GetTopWindow( hWnd );
::ShowWindow( hWnd, SW_HIDE ); // to hide
// ::ShowWindow( hWnd, SW_SHOW ); // to show

あとは、SPYで該当ウィンドウの意味を調べて自分なりにアレンジしてくらさい。


276 名前: デフォルトの名無しさん Mail: sage 投稿日: 05/02/20(日) 16:06:10

とりあえず場所はここのようです
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
Advanced
HideIcons
0480デフォルトの名無しさん2005/09/23(金) 17:00:14
すいません、質問です。
VC7でプロジェクトを新規に作成する際に使われている
ディレクトリを選択するためのダイアログと同じものを出したいのですが
よくわかりません。
ttp://with2ch.net/cgi-bin/pict/image-box/img20050923165516.png

OPENFILENAMEとGetOpenFileNameあたりを使うのではないかとあたりをつけて
いろいろ試してみましたが通常のファイルを保存するダイアログにしかなりません。
(ファイル名、ファイルの種類を指定するものあがあるやつです)

何か情報がありましたら、よろしくお願いします。
0481デフォルトの名無しさん2005/09/23(金) 17:35:58
あれはMSオリジナル
0482デフォルトの名無しさん2005/09/23(金) 18:24:33
質問なのですが、デスクトップ上に複数のウィンドウ(インターネットエクスプローラーやら、ペイントとか色々)
を出した状態で、それらのウィンドウの内、特定のウィンドウだけをスクリーンショットとして取りたいの
ですが、どうすればよいのですか?
0483デフォルトの名無しさん2005/09/23(金) 18:34:00
「Alt + PrintScreen」後にペイントに貼り付けじゃダメなの?
0484デフォルトの名無しさん2005/09/23(金) 18:35:57
>>483
それだといかんのです。
バックグラウンドにあるウィンドウとかをフォアグラウンドにもってきて
撮影するとかそういう感じでやりたいのですが、どうすりゃいいのかさっぱり・・・・
0485デフォルトの名無しさん2005/09/23(金) 18:45:02
特定のウィンドウはどうやって指定するんだよ
クリックしたら最前面にくるんだから最前面にあるウィンドウを撮影するのが
楽に決まってると思うんだが何をやりたいのかさっぱり
0486デフォルトの名無しさん2005/09/23(金) 18:47:32
>バックグラウンドにあるウィンドウとかをフォアグラウンドにもってきて撮影
1:バックグラウンドにある特定のウィンドウを見つける
2:フォアグラウンドに持ってくる
3:撮影

撮影はデスクトップの DC 持ってきて BitBlt で平気だったような気がする
ちなみにタイマー撮影を使うと1〜2が省略できて良いよ
0487デフォルトの名無しさん2005/09/23(金) 18:50:30
>>486
タイマー撮影というのを詳しく教えてください。

とりあえずBitblt関数を使ってキャプチャ作ってみます
0488デフォルトの名無しさん2005/09/23(金) 18:55:40
>>487
ちょうどカメラのセルフタイマーみたいな機能
これがあると、撮影ボタンを押した後に撮影したいウィンドウを最前面にもってこさせる操作ができる
0489デフォルトの名無しさん2005/09/23(金) 19:08:42
だからさ、自分で最前面に持ってくるんだったらそのときAlt+PrintScreenも
押すのではあかんの? プログラムを作ること自体が目的化してない?
04904712005/09/23(金) 19:49:16
>>479
レスありがとうございます。
いろいろテストしてみたら、以下のコードで出来ました。

Public Declare Function ShowWindow Lib "user32" (ByVal hwindow As Long, ByVal cmdshow As Long) As Long
Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long

hWndProgman = FindWindow("Progman", "Program Manager")
hWndProgman = FindWindowEx(hWndProgman, 0, "SHELLDLL_DefView", vbNullString)
hWndProgman = FindWindowEx(hWndProgman, 0, "SysListView32", vbNullString)
ShowWindow hWndProgman, SW_HIDE

ありがとうございました。
0491デフォルトの名無しさん2005/09/24(土) 01:52:34
ドラッグ アンド ドロップの質問です。
IEから、<a>タグで指定されてるリンクをドラッグして、
自分のプログラムにドロップしたいのですが受け付けてくれません。
どうやったらいいんでしょうか?
0492デフォルトの名無しさん2005/09/24(土) 03:06:42
>>491
OLE D&D
0493デフォルトの名無しさん2005/09/24(土) 06:20:33
>>491
IDropTarget
04944612005/09/24(土) 07:09:50
Win32コンソールアプリへのキー入力をインターセプトし、加工するにはどうしたらいいですか?
0495デフォルトの名無しさん2005/09/24(土) 12:44:38
  |
  |
  J
0496デフォルトの名無しさん2005/09/24(土) 15:00:39
バックバッファにDrawText等で描画した複数の文字列をBitBltで一気に画面に出力する手法を
以下のように記述したのですが何も表示されません。
何がまずいのでしょうか…。

HDC hdc, cdc;
PAINTSTRUCT ps;
RECT rect;

GetClientRect(hwnd, &rect);
hdc = BeginPaint(hwnd, &ps);
cdc = CreateCompatibleDC(hdc);

DrawText(cdc, "Hello,", -1, &rect, DT_LEFT);
DrawText(cdc, "2ch.", -1, &rect, DT_CENTER);

BitBlt(hdc, 0, 0, rect.right, rect.bottom, cdc, 0, 0, SRCCOPY);
DeleteDC(cdc);
EndPaint(hwnd, &ps);
0497デフォルトの名無しさん2005/09/24(土) 15:03:21
あるウィンドウをフォアグラウンドに持ってくるのに、
ttp://techtips.belution.com/ja/vc/0012/
この方法をやってみたのですが、
元のフォアグラウンドがタスクマネージャーで見ると「応答なし」のウインドウだと、上手くいきません。

ALT+TABなら目的のウィンドウに切り替えることはできるので、
この状態でもフォアグラウンドを変更する方法はあると思うのですが、
どのあたりのAPIを使えば良いでしょうか?
0498デフォルトの名無しさん2005/09/24(土) 15:22:16
>>496
RECTは使った事が無いから違うかもしれないけど、
HBITMAPと同じように関連付けを行わないとダメかも。

RECT rectOld;

***

cdc = CreateCompatibleDC(hdc);
rectOld = SelectObject(cdc, rect); //関連付け

BitBlt(hdc, 0, 0, rect.right, rect.bottom, cdc, 0, 0, SRCCOPY);

SelectObject(cdc, rectOld); //元に戻す
DeleteDC(cdc);

***
0499デフォルトの名無しさん2005/09/24(土) 15:28:44
>>498
RECT を関連付けしてどうする
0500デフォルトの名無しさん2005/09/24(土) 15:29:11
>>498
SelectObjectの第二引数にRECTは指定できないとエラーが出てしまいます。
&rectにすると一応実行は出来ますがやはり何も表示されないようです。
この場合何を関連付けたらいいのかを調べてみます。
レスありがとうございました。
0501デフォルトの名無しさん2005/09/24(土) 15:31:45
>>500
CreateCompatibleBitmapつかってビットマップ作って
SelectObjectで関連づけないと色データ持ってないから
BitBltできんだろ

BitBlt
ビットブロック転送を行います。
コピー元からコピー先のデバイスコンテキストに、
指定された長方形内の各ピクセルの色データをコピーします


0502デフォルトの名無しさん2005/09/24(土) 15:32:11
SelectObjectでRECT関連付けてる奴初めて見た。
0503デフォルトの名無しさん2005/09/24(土) 15:33:50
>>501
あー、なるほど。そういうことなんですか。
勉強不足でした。ありがとうございます。
0504デフォルトの名無しさん2005/09/24(土) 15:58:19
CreateCompatibleDCしただけで描画できるほど甘くは無いのだよ
キミはシャーペンを渡されただけで、紙も無く絵が書けるかな?
0505デフォルトの名無しさん2005/09/24(土) 15:59:16
かけるさ
0506デフォルトの名無しさん2005/09/24(土) 16:01:44
505 スゴスw
0507デフォルトの名無しさん2005/09/24(土) 16:02:09
シッ
相手にしちゃいけません!
0508デフォルトの名無しさん2005/09/24(土) 16:09:21
シャーペンと紙があっても描けない・・・
0509デフォルトの名無しさん2005/09/24(土) 17:01:07
大概のシャーペンにゃ最初から芯入っとるじゃろがー
0510デフォルトの名無しさん2005/09/24(土) 17:03:37
俺の買ったシャーペンは芯がなかったことがあるな
0511デフォルトの名無しさん2005/09/24(土) 17:14:01
適当なシャーペンには入っているがマジな奴には入ってないね。
0512デフォルトの名無しさん2005/09/24(土) 17:14:50
一本千円のシャーペン使ってる。
0513デフォルトの名無しさん2005/09/24(土) 17:15:41
芯の太さって何使ってるよ?俺0.4mm
0514デフォルトの名無しさん2005/09/24(土) 17:16:42
文具板池
まあ向こうは文具の使い方間違ってる香具師も多いがw
0515デフォルトの名無しさん2005/09/24(土) 17:24:36
>>514
詳しく
0516デフォルトの名無しさん2005/09/24(土) 17:27:11
先端で栗を突付いたり、柄の方で穿ったり。
0517デフォルトの名無しさん2005/09/24(土) 17:27:24
>>514
kwsk
0518デフォルトの名無しさん2005/09/24(土) 17:28:50
シャーペンは回すためのもの
0519デフォルトの名無しさん2005/09/24(土) 17:56:23
穿つには細いな
もっと太いもので穿たなくては
0520デフォルトの名無しさん2005/09/24(土) 18:01:51
IShellFolder::EnumObjects、IEnumIDList::Nextを使って、フォルダのアイテムIDリストを列挙しています。
ところが再び同じIShellFolderオブジェクトからアイテムIDリストを列挙しようとすると、
そのフォルダの内容に変化はない筈なのに、前回と異なるアイテムIDリストが返ってくる場合があります。
これらのメソッドで取得したアイテムIDリストは一時的なもので保存しておくべきではないのでしょうか?
0521デフォルトの名無しさん2005/09/24(土) 18:09:39
Win32APIじゃない質問する人はお引き取りください
0522デフォルトの名無しさん2005/09/24(土) 18:24:48
>>520
前回と異なるアイテムIDリスト、とは?
IEnumIDListインターフェースのポインタ値が違うということ?
0523デフォルトの名無しさん2005/09/24(土) 18:44:24
>>520
IEnumIDList::Next から返って来たアイテムIDリストのアドレスが違う、と解釈。

IEnumIDList::Next は動的にメモリを確保して、アイテムIDリストをコピーし、そのポインタを第2引数に返す、と言う動作。
取得するたびにポインタの値が変わるのは当然。
保存しておいても構わないが、ちゃんと開放を忘れずに。
05245202005/09/24(土) 19:05:23
>>522-523
違うのはIEnumIDList::Nextメソッドから取得したITEMIDLIST構造体の中身です。

具体的には↓のような感じです。

�@IShellFolder::EnumObjects、IEnumIDList::NextからITEMIDLIST構造体を列挙。
�A取得したITEMIDLISTを新たなIShellFolderオブジェクトにバインドさせてIShellFolder::EnumObjects。
�B再び�@でITEMIDLISTを列挙すると�Aの操作を行ったITEMIDLISTは異なる内容になっている場合がある。(必ずではない)

ITEMIDLISTの比較は以下のように行っています。

BOOL IsEqualItemID(LPCITEMIDLIST pID1, LPCITEMIDLIST pID2)
{
if(pID1->mkid.cb != pID2->mkid.cb)
return FALSE;

return !memcmp(pID1, pID2, pID1->mkid.cb) ? TRUE : FALSE;
}
0525デフォルトの名無しさん2005/09/24(土) 20:28:13
Win32APIで戻り型が構造体のAPIってありますよね?(たぶん)

それってどうやって受け取ればよいでしょうか?
普通のBOOLとかのレジスタに収まる戻り値はEAXで受け取ると思いますが、
構造体を返す(__stdcallみたいな)規約ってあるんでしょうか?

それとも戻り型が構造体のWin32APIはない?
0526デフォルトの名無しさん2005/09/24(土) 20:30:40
あ、
DWORDLONG Int64ShrlMod32(Value, ShiftCount);

というのがありますね。
これは64bit値で、構造体とはまた違いますが、
これはどうやって返してるんでしょうか?
EDXとEAXでしょうか。

では64bit以上の値はどうなるんでしょう?
0527デフォルトの名無しさん2005/09/24(土) 20:31:26
あったかどうか知らんが、
あるとしたら、構造体へのポインタじゃね?
0528デフォルトの名無しさん2005/09/24(土) 20:34:53
>>525
戻り値が構造体の関数はWin32APIにはおそらくない。
ほとんどは操作が成功したかどうかを表すためにBOOLを返す。
構造体は戻り値にする代わりに引数にポインタを受け取るようになっている。

ただ、__cdeclや__stdcallでは戻り値が構造体型の関数を作ってアセンブリを出力させてみると、
同じように戻り値を格納するポインタを指定する引数が密かに追加されるようになっていた。
0529デフォルトの名無しさん2005/09/24(土) 20:38:39
>>526
そいつはDLLにはなくヘッダに直接マクロとインラインアセンブラを使ったインライン関数が両方書いてある。
インライン関数版を見るとやはりeax/edxを使っているようだ。
0530デフォルトの名無しさん2005/09/24(土) 21:02:45
検証してみました。(VC6)

>>529さんがおっしゃる通り、
64bitまでの構造体戻り型の受け渡しはEDX, EAXを使っている様です。

ただし、それ以上のサイズの構造体について、不可解なことをしていました。
呼び出し側で、戻り値用の一時的な変数へのアドレスを
最後にpushしているようなのです。
したがって、関数は実際の引数よりも1つ多く受け取っているようです。

呼ばれ側は、そのアドレスに対して値を格納していました。
そしてそのアドレスをEAXにセットしてret。

そして呼び出し側に戻ったとき、EAXのアドレス(一時変数)から
呼び出し側で受け取る変数へコピーするということみたいです。

EDX使ったり、一時変数使ったりなんか統一してほしいですね。
自作言語作ってる側としては困ります。
0531デフォルトの名無しさん2005/09/24(土) 21:06:05
ちなみに呼ばれ側を__stdcall、__cdeclを指定しても動作は変わりませんでした。
構造体を返す関数をDLL公開すると、どういうことになるんだろう・・
05325282005/09/24(土) 21:07:50
>>530
俺が書いたとおりじゃないか。

あと、場合にもよるけど一時変数を使わずとも、戻り値の変数のアドレスを直接隠し引数に渡せると思う。
0533デフォルトの名無しさん2005/09/24(土) 21:11:50
DLL化を試しました。

DLL公開しても呼び出しシーケンスは変わりませんでした。
構造体を返す関数は互換性がないか、
この(EDXもしくは一時変数渡し)プロトコル?を使うみたいです。
0534デフォルトの名無しさん2005/09/24(土) 21:13:38
>>532
そのようですね。
最適化をすると、そういうコードになるみたいです。
0535デフォルトの名無しさん2005/09/24(土) 21:15:47
まあ自作言語を作っているのならDLL関数の戻り値に構造体・クラスなんかは指定できないという仕様にしてしまえば済む。
0536デフォルトの名無しさん2005/09/24(土) 21:18:17
構造体の受け渡しについて自分なりに納得ができました。
お付き合いくださった皆さんありがとうございました。
0537デフォルトの名無しさん2005/09/24(土) 21:28:46
自作言語ってのがネイティブコンパイラならどっかからVC++のABI仕様書を探してきて調べるしかないと思うが。
0538デフォルトの名無しさん2005/09/25(日) 14:38:27
ログオン前に確実にプログラムを起動する方法ってありますか?
1分くらいかかる初期化処理も終わらせることが前提です。
サービスで作ってみたんですが、ログオンできてしまって、
ステータスは「開始中」になってしまいました。
0539デフォルトの名無しさん2005/09/25(日) 14:46:38
>>538
フェイクのログオン画面を表示しt(ry
0540デフォルトの名無しさん2005/09/25(日) 14:56:49
>>538
NT系にはログオンスクリプトってのが無かったか?
あれなら、認証が終わった時点で処理されるはず
0541デフォルトの名無しさん2005/09/25(日) 14:59:48
スタートアップにショートカットを作成汁
0542デフォルトの名無しさん2005/09/25(日) 15:21:44
ログオン前ですよ。ログオン前。
ログオン直後じゃないです。
0543デフォルトの名無しさん2005/09/25(日) 15:33:50
OSよりも先に処理をしようってんだから
APIじゃなくてアセンブラを使うしかないんじゃあるまいか?
APIって暗黙の了解でログオン後の処理となってないかい?
0544デフォルトの名無しさん2005/09/25(日) 15:39:36
サービスプログラムはログオンより前に動きます。
ただ>>538で言ったように、長い初期化処理を入れると
ログオン画面が先に出てきてしまうのです。
0545デフォルトの名無しさん2005/09/25(日) 15:50:53
GINA使えば。
0546デフォルトの名無しさん2005/09/25(日) 16:02:48
タスクの優先順位
0547デフォルトの名無しさん2005/09/25(日) 16:16:43
autoexec.batに書いておけばいいじゃない
0548デフォルトの名無しさん2005/09/25(日) 16:34:00
ttp://desktop.google.com/support/bin/answer.py?answer=12374&topic=198
に
"保存、閲覧、移動などを行うと、デスクトップ検索のインデックスはすぐに更新されます"
とかいてあるのですが、CreateFileとかWriteFileとかにフック?のようなものを
仕掛けて監視しているのでしょうか.どうすればそのようなことができるのか教えてください
0549デフォルトの名無しさん2005/09/25(日) 16:42:16
[autoexec.bat]
538.exe
win.com
[EOF]
0550デフォルトの名無しさん2005/09/25(日) 17:41:32
//この前にMessageBox()などを呼び出しておくと、期待通りの結果が返ってくる。
HMODULE hModule = GetModuleHandle(_T("user32.dll")) ;

なぜかNULLが返ってきます。
これをする前に、MessageBoxなどを呼び出しておくと、うまくいくのですが。
実際に使うまで、モジュールは読み込まれないのでしょうか?
0551デフォルトの名無しさん2005/09/25(日) 17:48:11
DLLがDLLたるゆえんの一つじゃないか
0552デフォルトの名無しさん2005/09/25(日) 17:48:25
その「後」でMessageBoxなどを呼び出してもうまくいくはず
(わざわざdelayloadを使っていなければ)
0553デフォルトの名無しさん2005/09/25(日) 17:53:02
>>552
本当だ。
ありがとうございます。
0554デフォルトの名無しさん2005/09/25(日) 17:58:33
だめだこりゃ・・・
0555デフォルトの名無しさん2005/09/25(日) 18:00:26
うちの Win2000 にて
WinMain 直後に GetModuleHandle してもハンドル取れたけど。
05565552005/09/25(日) 18:01:05
リロードしてなかった
すまん。
0557デフォルトの名無しさん2005/09/25(日) 18:27:30
>>538
厳密にログオン前ということならGINAが妥当だろう。
ログオン〜シェル起動の微妙な間なら、USERINITかシェルを
すげかえるとか。
0558デフォルトの名無しさん2005/09/25(日) 18:33:16
サービスのままじゃダメなのか
ショック
0559デフォルトの名無しさん2005/09/25(日) 18:35:04
フォーカスを一度リストボックスやスタティックに移すとWM_CHARがきません
リストボックス上やスタティック上のキーの入力を捕まえるのにはどうしたらいいでしょうか?
0560デフォルトの名無しさん2005/09/25(日) 18:38:58
WM_KEYDOWN
05615592005/09/25(日) 18:53:07
自己解決しました

リストボックスのスタイルにLBS_WANKEYBOARDINPUTを指定してWM_KEYTOITEMでキーの入力ができました

>>560
書き忘れましたが WM_KEYDOWNもきませんでした、すみません
0562デフォルトの名無しさん2005/09/25(日) 19:26:48
キーの入力ができました?
キー入力をトラップするんだろ?
プログラム上から入力するのか?
05635572005/09/25(日) 20:03:46
>>558
ちょっと調べてみたがグループポリシーに
(コンピュータ)スタートアップスクリプトとかいうのがあるな。
同期実行らしいから使えるかもな?
まあ他にも何かしら方法はあるかもよ。ネットワークのサービスは
先に起動してるんじゃないかとか。
0564デフォルトの名無しさん2005/09/26(月) 09:24:30
DirextXを使わずに半透明で描画する方法はありませんか?
0565デフォルトの名無しさん2005/09/26(月) 09:26:37
あります。
0566デフォルトの名無しさん2005/09/26(月) 09:34:38
ヒント:猫でもわかる
0567デフォルトの名無しさん2005/09/26(月) 12:41:38
思い出せなくて安直な質問になりますが、dos の system() に相当する win32 の
API は何でしょうか。system() で可能なのですが、途中で dos 窓が出てちょっと
いやらしいもので。
0568CreateProcess2005/09/26(月) 12:48:35
>>567
思い出せないってのは嘘だろ。素直にげろしろよ。
それから、system()はdos固有の関数ではないぞ。
0569デフォルトの名無しさん2005/09/26(月) 12:48:40
>>567
CreateProcess()
プロンプト表示させたくなかったら引数指定な。
0570デフォルトの名無しさん2005/09/26(月) 13:18:45
すいませんソケットAPI関連なんですが、、
使用言語はC++言語で、コンパイラにはBCC5.5を使用しています。

1.ソケットを作成する(socket関数)
2.サーバに接続を確立する(connect関数)
3.コマンドを送信する(send関数)
4.送ったコマンドに対しての応答を読み込む(recv関数)
この手順で

3に
"GET パス名 HTTP/1.0"
""
を送れば任意のページが応答として返されるとか何とかあるのですが、recvで読み込むときに
そのままプログラムがビジー状態になってしまいます。

文字のコードはASCIIなはずですし、無論send関数で指定する文字列バッファはchar型です。
もしかして送信する文字列もリトルエンディアンからビッグエンディアンに変換する必要があるのでしょうか・・
なんでビジー状態になるのか、その原因そのものも分からないので何卒お願いします。。

ソースコードはこちらとなっております。
ttp://nijibox.ohflip.com/futabafiles/001/src/sa31147.zip

0571デフォルトの名無しさん2005/09/26(月) 13:24:43
>>567
ShellExecuteだと関連付け起動もできる。
0572デフォルトの名無しさん2005/09/26(月) 13:31:05
>>570
改行(\r\n)が無いようだが?
0573デフォルトの名無しさん2005/09/26(月) 13:37:36
>>572様
おお、送信するべき文字列に\r\nを加えたらHTMLを読んでくれました!!
いやはや一応RFCやら各種書籍を読んだツモリだったのでしたがお騒がせしました(´・ω・`;)
0574デフォルトの名無しさん2005/09/26(月) 13:39:20
ごめぽ、
本当の事を言うと英語読めないからRFCは途中で投げ出して、書籍もまだ読み途中です(っд`:)
0575デフォルトの名無しさん2005/09/26(月) 14:09:49
forkって内の?
0576デフォルトの名無しさん2005/09/26(月) 14:24:45
>>575
ファイバーでがまんしろ。
0577デフォルトの名無しさん2005/09/26(月) 14:28:53
>>575
cygwinでも使え
05785672005/09/26(月) 14:39:12
>>569, >>571
ありがとうございます。
571 さんへ、ShellExecute() も使っていますが、関連付けでなく、アプリケーションを
指定したかったもので。(関連付けると元に戻すとか出てくるし)
0579デフォルトの名無しさん2005/09/26(月) 14:48:06
>>567
>>568
0580デフォルトの名無しさん2005/09/26(月) 14:49:33
Windowsプログラムでよく
関数プロトタイプがなかったり、ウィンドウプロシージャの引数部分を WndProc (HWND, UINT, WPARAM, LPARAM) ;
といった書き方をするソースを見ることがあるのですが、

WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) ;

上記のように明示的に関数プロトタイプを示してはならないのでしょうか?
0581デフォルトの名無しさん2005/09/26(月) 15:04:01
>>580
(それに戻り値の型をつければ)全然問題ない。

C/C++では名前を使うより前にその名前の宣言がなければならない。
で、WndProcの定義をファイルの先頭に書けば、それが宣言にもなってプロトタイプを書かなくてすむ。
WndProcの定義をファイルの後ろのほうで書くのなら、
WinMainなんかで使うより前に宣言を書いてWndProcの存在を知らせておく必要がある。
05825802005/09/26(月) 15:07:48
>>581
回答ありがとうございます。
安心できました。:-)
0583デフォルトの名無しさん2005/09/26(月) 16:59:41
ttp://www.vector.co.jp/soft/win95/personal/se037902.html
↑こんな感じのツールを作っているんですが、
タスクバーには表示されないけど Alt + Tab のリストには表示される、
というウィンドウを作る方法はありますか?

CreateWindowEx で WS_EX_TOOLWINDOW を指定すると、
タスクバー表示は無くなりますが Alt + Tab でフォーカスを移せなくなってしまいます。
他のオプションもいろいろ試してみたんですが、どうもうまくいきません。
0584デフォルトの名無しさん2005/09/26(月) 18:07:33
めっちゃ初歩的な質問ですみません。
ウィンドウサイズを変える関数ってありませんか?
0585デフォルトの名無しさん2005/09/26(月) 18:17:53
あります。
0586デフォルトの名無しさん2005/09/26(月) 18:18:34
>>584
SetWindowPos
0587デフォルトの名無しさん2005/09/26(月) 18:26:56
>>584
MoveWindow or SetWindowPos

>>583
ファイルやフォルダのプロパティウィンドウがそれっぽいから
Spyとかでウィンドウスタイルを調べてみてはどうだろうか
0588デフォルトの名無しさん2005/09/26(月) 18:28:30
>>585-586
スマソ。事故解決しますた・・・orz
MoveWindow
05895842005/09/26(月) 18:36:02
>>587
お手数かけさせてスマソ。逝ってきます
0590デフォルトの名無しさん2005/09/26(月) 18:36:50
>>583
WS_EX_APPWINDOWはダメだった?

1. GetWindowLongで拡張スタイル取得
2. (SWP_NOACTIVATE | SWP_HIDEWINDOW) でSetWindowPos
3. 拡張スタイルから WS_EX_APPWINDOW を外してSetWindowLong
4. (SWP_NOACTIVATE | SWP_SHOWWINDOW) でSetWindowPos

ってな感じで。
Alt+Tabの方も出なくなるかもしれないけど・・・
0591デフォルトの名無しさん2005/09/26(月) 21:12:00
後はITaskbarList::DeleteTabなんてのもあるな。
0592デフォルトの名無しさん2005/09/26(月) 23:22:33
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win66.html
ココの一番最後のプログラムなんですけど
実行してアプリケーションを動かしてみると、メモリ使用量がどんどん増えていきます。
原因はなんでしょうか・・
0593デフォルトの名無しさん2005/09/27(火) 00:49:31
WndProc (EN_UPDATE)
malloc()
SetWindowText
↓
WndProc (EN_UPDATE)
malloc()
SetWindowText
↓
(略)
0594デフォルトの名無しさん2005/09/27(火) 01:02:22
いやでもfreeでしっかりメモリは解放されてますよ?
0595デフォルトの名無しさん2005/09/27(火) 06:16:07
>>590
やってみましたが、やっぱりタスクバーと Alt + Tab 表示が連動してしまっているようです。

>>587
ウィンドウエクスプローラで調べて CreateWindowEx してみましたが駄目でした。
どうもウィンドウスタイルの問題じゃ無いみたいです。

で、
「〜のプロパティ」ダイアログは StubWindow32 という不可視ウィンドウが親らしいので、
まさかと思っていろいろ試してみたら、
どうやら DialogBox() や PropertySheet() を呼び出すときに、
不可視ウィンドウを親に指定すれば Alt + Tab のリストに表示されることがわかりました。
何なんだこの仕様…。

ということで無事解決できました。
助言してくださった方々、ありがとうございました。
0596デフォルトの名無しさん2005/09/27(火) 06:49:18
>>595
前々から、タスクバーに表示されないウィンドウを出す方法として言われてますけどね
0597デフォルトの名無しさん2005/09/27(火) 06:55:27
>>594
だがそのあたりしかありえん
もう一度自分の書いたプログラム確認してみれ
0598デフォルトの名無しさん2005/09/27(火) 07:42:39
>>594
増えていくのはあたりまえ

メモ帳で1Gのテキスト開いたのと
空っぽの状態のメモ帳のメモリ使用量を考えるといい
0599デフォルトの名無しさん2005/09/27(火) 08:23:29
>>592
malloc()だけがメモリ使用量を増やすわけではない。つまり、>598。
>>597
自信満満に乙。
0600デフォルトの名無しさん2005/09/27(火) 08:30:34
ソース見ても問題なさそうだし、
全部コピペしてビルドして確認してみても
メモリがどんどん増えていく現象は起きないな

もし問題あるようならウイルス、トロイ、キーロガーとか他のソフトが原因かも
0601デフォルトの名無しさん2005/09/27(火) 09:13:44
>>600
文字を書いていくと増えていく
0602デフォルトの名無しさん2005/09/27(火) 09:36:09
editコントロールのデフォルトの上限は約32kバイトでそれが2つだから
増えるっていってもせいぜい64kぐらいじゃないですか?
その他にコピーしたりでいろいろ浪費したとしても知れてると思うけど

Allocating a Text Buffer
When the system creates an edit control,
it automatically creates a text buffer,
sets its initial size, and increases the size as necessary.
The size can be up to a predefined limit of approximately 32 kilobytes
for single-line edit controls.
0603デフォルトの名無しさん2005/09/27(火) 11:40:21
Windowsが消費してんだろ。
0604デフォルトの名無しさん2005/09/27(火) 12:01:23
はぁ、やはりコントロールが消費してましたか・・
最初はコントロールが消費するだろうとは踏んでたのですが、文字を全て消してもメモリの使用量が減らないままで・・
0605デフォルトの名無しさん2005/09/27(火) 12:03:11
でも、増え続ける訳ではないだろ?うちでは16MB程度で頭打ちになったが。
つか、最小化して戻したりすると、減ってない?
0606デフォルトの名無しさん2005/09/27(火) 12:34:25
起動直後 2352KB
入力終り 2616KB(キーボード押しっぱなしで15分ぐらいで打ち止め)
最小化 132KB
元に戻す 980KB

秀丸へコピペしてテキストファイルへ保存、サイズ確認
29.2 KB (30,000 バイト)
0607デフォルトの名無しさん2005/09/27(火) 12:37:57
>>604
そもそも、freeしたからと言って、
すぐにメモリ使用量が減るわけではない事くらい、
プログラマなら覚えておけよ。
0608デフォルトの名無しさん2005/09/27(火) 14:27:22
Get ProcessWorkingSet Size
なのか、ちょっと悩んでしまった。
0609セェンロン ◆89nOjCFiLI 2005/09/27(火) 15:38:43
誘導されて来ました。質問です。
http://kuroneko-upload.no-ip.info/uploader/upbd/updir/aaa.jpg
この真中のリストビューみたいなのを作りたいんですが、どうやったらいいんでしょうか?

リストビューのフラグいじったら出来ると思ってたんだけど、出来ずに困ってます。
教えてクダサイ。お願いしますです。
0610デフォルトの名無しさん2005/09/27(火) 15:40:37
つSpy++
0611デフォルトの名無しさん2005/09/27(火) 15:53:24
>>609
ここ置いときますね
http://www.g.dendai.ac.jp/lecture/vbasic/vb10.html
0612デフォルトの名無しさん2005/09/27(火) 15:55:18
質問です。
w2kでSetProcessWorkingSetSizeをPowerUserで実行しようと
以下のように書いてみたんですが
ProsHandle = OpenProcess(PROCESS_SET_QUOTA, TRUE, GetCurrentProcessId());//�@
if(ProsHandle == NULL) return -1;
if(FALSE == OpenProcessToken(ProsHandle,TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES, &TknHandle)) return -2;//�A
if(FALSE == LookupPrivilegeValue(NULL, SE_INCREASE_QUOTA_NAME, &Luid)) return -3;//�B
NewState.PrivilegeCount = ANYSIZE_ARRAY;
NewState.Privileges[0].Luid = Luid;
NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(TRUE != AdjustTokenPrivileges(TknHandle, FALSE,&NewState, sizeof(OrgState), &OrgState, &Length)) return -4;
Result= SetProcessWorkingSetSize( hProcess, processMinSize, processMaxSize );
if( !Result ){ asdf=GetLastError();}

�@行 PROCESS_SET_QUOTAをPROCESS_ALL_ACCESSにしないと
�AのOpenProcessTokenでerrorになります。
�BのSE_INCREASE_QUOTA_NAMEもあっているのかどうかわかりません。
助けてください。
0613セェンロン ◆89nOjCFiLI 2005/09/27(火) 16:05:19
>>611
このツールはVBで作られていたのかw
もっさり感といい、うっすらとそんな予感はしてましたが、本当にそうだったとは。。
ありがとうです。
違う方法で同じようなのを作ってみます。
0614デフォルトの名無しさん2005/09/27(火) 16:12:35
>>613
コントロールはActiveXコントロールだろ?
>>611のページがVBでの使い方を書いてるだけじゃん

そのツールとやらは知らんので、
それがVBで作ってあるかどうかは何ともいえんが
0615デフォルトの名無しさん2005/09/27(火) 16:22:48
見た感じが同じ
0616デフォルトの名無しさん2005/09/27(火) 18:04:46
VBのコントロールってC+から使えないの?
0617デフォルトの名無しさん2005/09/27(火) 18:21:38
>>564じゃないけど、半透明の描画方法が分かりません。
猫でもに見当たらないんですが、誰か教えてください。
0618デフォルトの名無しさん2005/09/27(火) 18:29:21
BitBltでSRC_PAINTとかで描画すればいいのでは。
0619デフォルトの名無しさん2005/09/27(火) 18:52:03
>>616
ActiveXコントロール貼り付けでいけそう
その後でクラスウィザード起動したらCMSFlexGridというクラスが追加された
0620デフォルトの名無しさん2005/09/27(火) 18:53:56
>>618
�dクス!
0621デフォルトの名無しさん2005/09/27(火) 20:20:510
初歩的ですみませんが質問です。
Win32API を利用してフォントの情報を取得するにはどうすればよいでしょうか。
ウインドウや HDC が存在すれば LOGFONT を利用して取得できますが、
それらを使わずに取得したいと思います。

具体的にはフォントファミリーを指定することで、フォントが等幅かどうか知りたいのですが。

0622デフォルトの名無しさん2005/09/27(火) 20:29:310
素直にメモリDC使え。
06236212005/09/27(火) 21:14:470
>>622
CreateCompatibleDC がこのように使えるとは知らなかったです。
どうもありがとうございました。
0624セェンロン ◆89nOjCFiLI 2005/09/27(火) 21:31:37ID:0
>>614
おおおお。ホントだ。試しにやってみます。
検索したら、少ないけど登録の仕方が出て来ました。
サンクッス。
0625デフォルトの名無しさん2005/09/27(火) 21:37:25ID:0
>>612
まずは落ち着いてMSDNちゃんと読め。
06265482005/09/27(火) 22:00:58ID:0
よろしくおねがいします
0627デフォルトの名無しさん2005/09/27(火) 22:30:48ID:0
>>624
FlexGridはVisualStudio6には標準でサブセット版がつくけど、VC7.1にはつかないので要注意。
その場合、FlexGridProを買うか、MSOfficeをインストールしていればExcel由来のGridControlを使うことになると思う。
0628デフォルトの名無しさん2005/09/27(火) 23:12:44
>>548
FindFirstChangeNotification
とかじゃないか?
06295482005/09/27(火) 23:25:31
おお, こんなAPIがあったとは
628さん ありがとうございます
0630デフォルトの名無しさん2005/09/28(水) 01:36:56
>>617
最後まできちんと探せよw
0631デフォルトの名無しさん2005/09/28(水) 01:49:28
タイトルバーやメニュー部分まで
オリジナルのデザインのウインドウというのはどうやって作っているのでしょうか?
ポップアップウインドウにして
ポインタの座標を取って地道に処理の追加をやっていくのでしょうか?
0632デフォルトの名無しさん2005/09/28(水) 01:51:14
だね
06336312005/09/28(水) 02:03:58
>>632
やっぱりそうですか
どうもでした
0634デフォルトの名無しさん2005/09/28(水) 03:58:51
>>631
タイトルバーは WM_NC* をごにょごにょするんだと思うお。
メニューは知らん。
0635デフォルトの名無しさん2005/09/28(水) 13:22:31
>>631
メニューもある程度ならオーナードローできる。
メニューウィンドウを非矩形にしたいとかなら、自分で
メニューエミュレートだと思う。
0636デフォルトの名無しさん2005/09/28(水) 14:59:00
APISPY32系のツールでお勧めはありますか?
0637デフォルトの名無しさん2005/09/28(水) 15:07:13
APISPY32
0638デフォルトの名無しさん2005/09/28(水) 16:43:33
自分のウィンドウのが表示されているときのクライアントエリアに相当する部分の
非表示時のビットマップデータを取得する簡単な方法はありますか?

目的はリアルタイムにビットマップを取得してその都度加工して表示することです
現在考えている方法はSetWindowPos-SWP_HIDEWINDOWとして
デスクトップのDCを取得し、BitBltでメモリDCに保存してウィンドウ復元>加工>描画と言うものですが
ウィンドウをSetWindowPosの度に再描画されてあまりスムーズに見えなそうな気がしています
0639デフォルトの名無しさん2005/09/28(水) 17:34:36
ダイアログの上にリストビューを作ったんですが、クリックしても全く反応しません。
どうやったらいいのでしょうか?教えて下さい。
0640デフォルトの名無しさん2005/09/28(水) 18:20:49
どうやったらいいんでしょうねえ。
0641デフォルトの名無しさん2005/09/28(水) 18:45:07
>>639
デバッグする
0642デフォルトの名無しさん2005/09/28(水) 18:56:55
よく再起動のメッセージなどで、「30秒後にwindowsを終了します」みたいなメッセージボックスが出て
カウントダウンされていくのがありますが、普通のメッセージボックスでもできるのですか?

0643デフォルトの名無しさん2005/09/28(水) 19:08:17
>>639
諦めろカス!
0644デフォルトの名無しさん2005/09/28(水) 19:13:27
>>638
クライアントエリアのビットマップを取るのになぜデスクトップのDCと思うのがすっげー不思議

>>639
リストビューを作ったけどなにもデータ入れてないとかじゃねーの?
0645デフォルトの名無しさん2005/09/28(水) 19:42:32
>>644
> 自分のウィンドウのが表示されているときのクライアントエリアに相当する部分の
> 非表示時のビットマップデータを取得する簡単な方法はありますか?
0646デフォルトの名無しさん2005/09/28(水) 19:47:47
>>644
取得したいのは背景にあたる部分です

↓はめ込み合成によるイメージ
ttp://vista.x0.com/img/vi04827.png
0647デフォルトの名無しさん2005/09/28(水) 19:47:53
>>645
(゚д゚)?
0648デフォルトの名無しさん2005/09/28(水) 19:49:27
>>646
それはあれ?
ただ背景をクライアント領域に表示するのが目的?
それとも、DCとか使ってクライアント領域が隠してる背景を取得するのが目的?
0649デフォルトの名無しさん2005/09/28(水) 19:52:18
>>648
後者ですね、フィルタをかけて表示するつもりです
06506392005/09/28(水) 19:53:14
>>644
データは入っています。

それと、操作を受け付けない原因が分かりました。
タブコントロールの上に乗っていたのが問題だったようです。
どうやったら解決するかはまだですが、やっと前に進んだ・・・・・
0651デフォルトの名無しさん2005/09/28(水) 20:44:03
タスクバーに表示されないウィンドウとそのオーナーウィンドウを表示する
プログラムですが、子供のウィンドウ(タスクバーに表示されない方)を削除すると
なぜかオーナーウィンドウが最小化されてしまいます。
ttp://chise.s25.xrea.com/cgi-bin/up/source3/No_1385.txt
コードが長いのでうpしました(ほとんど猫でものコピペです。スマソ)
なぜでしょうか。教えてください。
0652デフォルトの名無しさん2005/09/28(水) 20:48:18
>649
それはレイヤードウインドウでは解決できない?
0653デフォルトの名無しさん2005/09/28(水) 21:30:41
かけたいフィルタにも寄るかと
0654デフォルトの名無しさん2005/09/29(木) 04:48:35
>>651
よくわからんのだが、削除ってのはどのタイミング?
WM_CLOSEの処理?それともDestroyWindow(hChdWnd)呼んだとき?

ウチのWin2kSP4だと再現しないなあ。
バックグラウンドにはなるけど、これは自力で処理しない限りどうしようもないはず。

ChildProcのWM_CLOSEの処理の表示メッセージと処理内容が
一致してないけどいいのかな?
少なくとも最小化はしない。
現象をもう一度確認して、デバッガで追っかけてみては?
0655デフォルトの名無しさん2005/09/29(木) 16:10:27
リストビューでLVS_EDITLABELSを指定し編集をする時、iSubItemの0番目しか編集出来ないのでしょうか?
06566552005/09/29(木) 16:24:44
ロクに調べずごめんなさい。自己解決しました。
ググったら、出来ないって出てきました。
リストビューを編集したい分だけ並べて、見た目は1つに見えるようにします。
0657デフォルトの名無しさん2005/09/29(木) 17:31:42
>>656
メッセージをうまくトラップして任意のカラムを編集できるように見せかける応用はCodeGuruを探すと出てきますよ。
私も作ったし。
#但しMFC。
0658デフォルトの名無しさん2005/09/29(木) 17:34:58
>>656
頭いいなお前
06596512005/09/29(木) 18:16:37
>654
スマソ。早とちりでした。
最小化ではなく非アクティブになって他のウィンドウに
隠れてしまうという現象でしたが、
SetActiveWindowでなんとかなりました。
原因はよく分かりませんが、ありがとうございました。
0660デフォルトの名無しさん2005/09/30(金) 04:44:19
スレ違いのような気もしますが妥当なスレがないのでここで質問させてください。
*.def ファイルを書いて *.dll から *.lib ファイルを作りたいのですが、
複数の *.dll ファイルを指定する方法はありますでしょうか?

LIBRARY の行を複数書いたり、複数の dll を指定したりするとエラーを吐いてしまいます。
0661デフォルトの名無しさん2005/09/30(金) 05:01:26
複数DLL>単一LIBを作成するってこと?
それなら出来ないんじゃないの。

複数DLL>複数LIBならやりようはいくらでもあるだろうけど。
0662デフォルトの名無しさん2005/09/30(金) 05:18:17
うーん・・・
某所で入手した lib ファイルを覗いてみると複数の dll の関数名が書いてあるようなので
できるとは思うんですが。
0663デフォルトの名無しさん2005/09/30(金) 06:08:33
なんでその某所を書かないんだ
0664デフォルトの名無しさん2005/09/30(金) 07:22:46
timeGetTimeが常に同じ異常な値($B??????? 詳しくは忘れました)を返すのは、
どういった原因が考えられますか?



06656602005/09/30(金) 07:46:43

http://hp.vector.co.jp/authors/VA028375/d/windows.h.html
の windows.h for D のアーカイブの中にある win32.lib です。
0666デフォルトの名無しさん2005/09/30(金) 10:44:02
>>664
timeGetTimeの戻り値を確認するのに文字列っておかしくないか?
どんな確認方法よ。
0667デフォルトの名無しさん2005/09/30(金) 12:43:55
>>664
それって、正しいDWORD値のダンプを見ているだけジャマイカ。
戻り値はmsec単位だから下のほうはすぐ変わっても上のほうはそうそう変わらんわけだし。
0668デフォルトの名無しさん2005/09/30(金) 14:54:13
ACPIからCPU温度を取ってくる方法って誰か知らない?
0669デフォルトの名無しさん2005/09/30(金) 19:16:50
誰か教えてください。
今、デュアルディスプレイで、スクリーンショットを取るプログラムを
作ろうと思っているのですが、どうもプライマリディスプレイだけしか
スクリーンショットがとれないのです。
セカンダリディスプレイとプライマリディスプレイ両方の画面情報を
一つの画像としてとる方法ないですか?
0670デフォルトの名無しさん2005/09/30(金) 21:27:42
プライマリとセカンダリは別の解像度に設定できるが
その場合どうするつもりだね?
0671デフォルトの名無しさん2005/09/30(金) 22:08:57
>>665
それはD言語のライブラリアンが作る独自形式。
拡張子は同じでも互換性はまったくない。
0672デフォルトの名無しさん2005/09/30(金) 22:14:11
>>670
基本的には同じ解像度でやりたいと思ってます。
できれば違った解像度に設定された場合についても教えてもらえたらうれしいのですが
0673デフォルトの名無しさん2005/09/30(金) 23:53:37
IME の変換中の背景色を変える方法をご存知の方、教えていただけませんか?
RichEdit では出来るようなのですが、自前の View でやりたいのです
0674デフォルトの名無しさん2005/09/30(金) 23:57:12
>>672
GetDC(NULL)で全仮想スクリーンのDCが取れる
06756642005/10/01(土) 00:07:12
>>666
えっと、戻り値を16進数の文字列でデバッグしたのです。

>>667
$B??????? msほど長時間使ってませんし、 いつ呼び出しても常に同じ値が返ってきたのです。
再コンパイルしても同じでした。
ゲームでこれでフレームレートの管理をしていて、無限ループに陥りました。
でも、次にPCを起動したら直っていて、再現できません。
あと、色々やってた中で、 GetTickCount の方は正しい値を返してたと記憶してます。
06766602005/10/01(土) 01:53:05
>>671
そうですか・・・
どちらも def ファイルに書くので互換性があるかもと思ったのですが。
面倒にはなりますが複数 lib をつくれば済む話なのでそうしようと思います。
どうもありがとうございました。
0677デフォルトの名無しさん2005/10/01(土) 04:33:25
>>673
IME周りのメッセージをDefWindowProcに渡さずに自前描画。

>>675
ってことは再現してないのか…
timeBeginPeriod/timeEndPeriodは?
0678デフォルトの名無しさん2005/10/01(土) 06:05:20
メニューみたいなものを作りたいと思っています。
ところがポップアップウインドウを表示すると、フォーカスを奪ってしまうため親ウインドウが非アクティブ状態になってしまいます。
このような挙動をしないウインドウを作成するためにはどうすればよいでしょうか。
WS_POPUP、 WS_EX_TOOLWINDOW、 WS_EX_TOPMOST あたりを試してみましたがうまくいきません。

0679デフォルトの名無しさん2005/10/01(土) 08:22:29
コントロールにすれば?
0680デフォルトの名無しさん2005/10/01(土) 10:28:51
>>678
普通にメニュー使えよ
0681デフォルトの名無しさん2005/10/01(土) 10:38:29
WM_WINDOWPOSCHANGINGハンドラでSWP_NOACTIVATEフラグを立てる
0682デフォルトの名無しさん2005/10/01(土) 12:26:45
ツールバーにする。
0683デフォルトの名無しさん2005/10/01(土) 15:54:20
ある画像ファイルがあります。この画像ファイルは
64×64ピクセルの正方形の画像です。

この画像ファイルを90度時計回りに回転させて
表示するにはどうしたらよいのでしょうか?

「┳」を90度時計回りに回転させて「┫」のように表示したいのです。

あらかじめ回転させておいた画像を別に用意することも考えましたが、
90度、180度、270度と別に用意する画像があり、画像の容量が4倍に
なってしまうため、画像を別に用意するのは止めにしました。
0684デフォルトの名無しさん2005/10/01(土) 16:13:40
>>683
自前でビットデータを配置しなおしてください
0685デフォルトの名無しさん2005/10/01(土) 16:15:38
>>683
素直にgdiplusのgraphicsクラスなどを使う。
0686デフォルトの名無しさん2005/10/01(土) 17:07:19
>>683
PlgBltを使う
0687デフォルトの名無しさん2005/10/01(土) 17:16:12
>>683
D3DXMatrixRotationZとかglRotateとか
0688デフォルトの名無しさん2005/10/01(土) 18:11:01
BitBltでぐるっと回す
0689デフォルトの名無しさん2005/10/01(土) 18:16:54
BitBltだけで回転などできませんよm9(^д^)プギャー
0690デフォルトの名無しさん2005/10/01(土) 18:44:42
ディスプレイを回す
0691デフォルトの名無しさん2005/10/01(土) 18:49:03
>>690
天才
0692デフォルトの名無しさん2005/10/01(土) 18:55:59
>>690
WinAPIにディスプレイを回す関数はないぞ。
0693デフォルトの名無しさん2005/10/01(土) 19:05:37
いきなり回ったらマジコワスw
0694デフォルトの名無しさん2005/10/01(土) 19:09:45
CDトレイ勝手に開くだけでも怖いのにディスプレイまで回ったら俺のちんちんおっきしちゃうよ
0695デフォルトの名無しさん2005/10/01(土) 19:44:43

開け方教えてくれ

0696デフォルトの名無しさん2005/10/01(土) 19:48:48
ACPI
0697デフォルトの名無しさん2005/10/01(土) 19:52:15
mciSendStringか。おもれーww
0698デフォルトの名無しさん2005/10/01(土) 20:01:17
マウスを自走させる為の規格でも策定してみるかい?
0699デフォルトの名無しさん2005/10/01(土) 20:04:20
お前らそんなに俺を勃起させたいのか
0700デフォルトの名無しさん2005/10/01(土) 20:13:03
>>699を勃たせるAPIをおしえてください!><
0701デフォルトの名無しさん2005/10/01(土) 20:18:52
とりあえずCD開閉ネタはジョークアプリで使おうっと。
0702デフォルトの名無しさん2005/10/01(土) 20:19:41
>>701
使い古されてて嘲笑されるぞ
0703デフォルトの名無しさん2005/10/01(土) 20:20:44
そうなの?
疑似シリーズあたりでは見たこと無い。
0704デフォルトの名無しさん2005/10/01(土) 20:25:59
>>698
自走型マウスはどっかで見た。
この際だから TCP/IP 上でマウス動かすプロトコル作って、RFC に投稿するとか。
0705デフォルトの名無しさん2005/10/01(土) 20:29:11
http://www.paken.org/aaf/running-mouse/

キタ━━━━━━(゚∀゚)━━━━━━ !!
0706デフォルトの名無しさん2005/10/01(土) 21:20:57
inpo DoBokki(inpo, inpo, ...);
0707デフォルトの名無しさん2005/10/01(土) 21:47:35
inpoだと多分コンパイルエラー。
0708デフォルトの名無しさん2005/10/01(土) 21:49:24
void Erect(chinpo);
だろ
07096782005/10/01(土) 21:55:23
>>681
情報サンクスです。
でもその通りにしてもやっぱりフォーカスを奪ってしまいます。
SWP_HIDEWINDOWやそのほかのフラグはちゃんと動作するのに・・・
0710デフォルトの名無しさん2005/10/01(土) 21:58:12
SendMessage(hWnd699, WM_VIAGRA, NULL, NULL);
0711デフォルトの名無しさん2005/10/01(土) 22:21:23
Netscapeみたいに起動直後にタイトル(タスクバーに表示されないウィンドウ(?))を
どーんと出す方法を教えてください。
0712デフォルトの名無しさん2005/10/01(土) 22:28:46
どーん!
0713デフォルトの名無しさん2005/10/01(土) 22:41:45
>>711
ヒント:スプラッシュ
0714デフォルトの名無しさん2005/10/01(土) 22:44:47
>>711
ヒント:過去ログ
07157112005/10/01(土) 22:58:50
>713-714
サンクスです!
0716デフォルトの名無しさん2005/10/01(土) 23:01:58
FlashPlayerCodeSDKは一般人には触らせてもらえないんですか?

http://www.macromedia.com/software/flashplayer_sdk/
↑orz
0717デフォルトの名無しさん2005/10/01(土) 23:32:12
一般人てことは会社員だろ、自分の会社名で申し込めばいいじゃん。
自称一般人なら、自分の会社でっちあげたら?どうせ海外だしそこまで調べねぇよ。
0718デフォルトの名無しさん2005/10/01(土) 23:40:19
parsonalとでもかいとけば?
0719デフォルトの名無しさん2005/10/01(土) 23:42:28
personal だろ
0720デフォルトの名無しさん2005/10/01(土) 23:53:47
>>678
WS_VISIBLEを指定しないでウィンドウをCreateし、
その後、SWP_SHOWWINDOW と SWP_NOACTIVATE を指定してSetWindowPosしたらどう?
07216642005/10/02(日) 00:02:15
>>677
プログラム起動時に
timeBeginPeriod(1);
とし、終了時に
timeEndPeriod(1);
とやってます。

あと、思い出した事は、
別のプロジェクト(ゲーム)でも無限ループに陥ってました。

念のため、起動時にtimeGetTimeが正常に動作するか確認するかどうかで迷ってます…。
07226782005/10/02(日) 05:02:19
>>720
できました!どうもありがとうございました。
07236832005/10/02(日) 09:09:23
>684-688
の皆さんありがとうございます。
BitBltと回転行列で実現できそうです。

690さんは・・・
0724デフォルトの名無しさん2005/10/02(日) 09:28:07
ATi CATARYSTの左90度回転機能実行させるAPIとDell UltraSharp2001FP HASを左90度回転させるAPIを教えてくだしあうぇrtふygbhにmじょk、l。「;
0725デフォルトの名無しさん2005/10/02(日) 10:53:06
>>723
Direct3Dを使わずDC経由でのみ画像にアクセスするアプリなのであれば、GDI+を使うべきだと思うよ。
アンチエイリアス効果が使えるので、縮小拡大画像も綺麗に見せることができる。
0726デフォルトの名無しさん2005/10/02(日) 11:13:08
GDI+はハードウエア支援が絶望的だけどね
0727デフォルトの名無しさん2005/10/02(日) 11:23:56
DC経由で操作する古典的なアプリで、ハードウェア支援とか言い出すのもどうかと思う。
0728デフォルトの名無しさん2005/10/02(日) 11:27:50
>>726
君は詳しそうだね。
まずは、ハードウェア支援があるDC用のWin32API関数を列挙してくれない?
0729デフォルトの名無しさん2005/10/02(日) 11:54:58
ハードウエア支援=ハードウエア依存
という現実を無視する>>726に幸あれ。
0730デフォルトの名無しさん2005/10/02(日) 12:00:51
俺は、ビデオドライバの入替や、最新DirectXのインストールをユーザに求める度胸はないな。
俺はプロフェッショナルな>>726と違って腰抜けなので、配布物にgdiplus.dllを添付する仕様にするね。
0731デフォルトの名無しさん2005/10/02(日) 12:23:00
スタティックリンク出来るならGDI+使ってあげてもいいのに
0732デフォルトの名無しさん2005/10/02(日) 12:23:44
>>728
特定条件下ではビットマップがビデオメモリ上に取られたり
BitBltがハードウェアで行われるとか聞いたことがある。

と探してたらあった。
ttp://www.sun-inet.or.jp/%7Eyaneurao/intensive/diw1.html
0733デフォルトの名無しさん2005/10/02(日) 12:40:16
vistaからはGDIは全てソフトウェア処理になるそーだ
GDI+もそうなんだろうか
0734デフォルトの名無しさん2005/10/02(日) 12:46:36
DirectX10でググってたらこんなの出てきたよ

If your graphics card is using the new Vista driver model then
GDI/GDI+ has *NO* hardware acceleration. In practise this shouldn't
be a big deal since the CPUs are so darn fast these days.

ハードウェアアクセラレートがあるっていうから勉強してたのに
もうGDI+使わねーよヽ(`Д´)ノウワァァン
デマ流してた奴でてこーい
07356902005/10/02(日) 12:52:05
>>723
褒め称えてくれてかまわんよw遠慮すんなってww
さてはツンデレか?
0736デフォルトの名無しさん2005/10/02(日) 13:09:25
BitBltの速度検証はエロゲ葱板で数年前に検証してたはず。
結論はビデオカードにによって速度が全然違ってたような‥‥
0737デフォルトの名無しさん2005/10/02(日) 13:11:47
ドライバ次第
0738デフォルトの名無しさん2005/10/02(日) 13:14:40
日進月歩のこの世界で数年前の検証の意義は微妙じゃね?
0739デフォルトの名無しさん2005/10/02(日) 14:08:56
>>734
その訳だと、「現状のvistaドライバは未対応だ。」って言ってるようにもみえるね。
ま、どっちにしろCPUが高速になっているから、2D環境でのハードウェア支援はあまり要らんだろ。
0740デフォルトの名無しさん2005/10/02(日) 14:40:08
>>739
「新しいvistaのドライバモデルでは」じゃないの?
0741デフォルトの名無しさん2005/10/02(日) 14:58:56
Vistaドライバモデルではハードウェア支援を受けられないけど
最近のCPUは高速になってるから大したこと無い。
ってことか。
0742デフォルトの名無しさん2005/10/02(日) 15:01:43
LDDMのことですね
ゲームの場合だと古いドライバモデルを使ったほうが速いなんてことも発生するのかな
0743デフォルトの名無しさん2005/10/02(日) 15:53:00
一番重要なのは、GDI+だけでなくGDI全体がソフトウェア処理されるって部分だろ。
つまり、DirectXを使わないアプリは、すべてソフトウェアレンダリングってこった。
07447432005/10/02(日) 15:55:38
あ・・WindowsMedia関連はどうなるのかねぇ。
WindowsMediaはDirectXやDirectShowとは別の独立した存在だし。
どっちにしろGDIじゃないからハードウェアサポートありだろうけど。
0745デフォルトの名無しさん2005/10/02(日) 15:56:13
低スペックPCにVISTA入れる奴が悪い
0746デフォルトの名無しさん2005/10/02(日) 15:57:29
そもそもVistaではGDI切り捨てるというか、2Dは切り捨てだと言ってなかったっけ?
全てを3Dに移行するというのを見た記憶があるが
0747デフォルトの名無しさん2005/10/02(日) 16:01:26
>>746
2D切り捨てたらビジネスアプリはどうなる?
2D描画も3Dハードウェアで描画するってだけだろ。
0748デフォルトの名無しさん2005/10/02(日) 16:06:48
>>747
ビジネスアプリに限らず、HDC型を用いるレガシーのAPI全般が影響を受けるでしょ。
0749デフォルトの名無しさん2005/10/02(日) 16:14:25
>>747
だからそう書いてるじゃまいか
誤解したなら俺の書き方が悪かった
0750デフォルトの名無しさん2005/10/02(日) 16:20:21
豊かなユーザー・エクスペリエンスをもたらすWindows Vista時代のAPIセット「WinFX」
ttp://www.atmarkit.co.jp/fdotnet/insiderseye/20050928pdc2005/pdc2005_01.html

WinFXは.NET Framework 2.0の延長線上にある基本クラス・ライブラリである。
前回のPDC 2003では、Windows VistaでWin32 APIはWinFXへと完全に移行するかのようにいわれていたが、
現在ではWindows Vistaの持つ新機能はWinFXとWin32 APIのどちらでも同じようにアクセスできることが
マイクロソフトから明言されている。
0751デフォルトの名無しさん2005/10/02(日) 16:27:58
>>749
つまりは、排他フルスクリーンでないアプリケーション全てってことになるな。
07526732005/10/02(日) 16:37:43
>>677

レスありがとうございます。
自前ですか・・・。頑張ってみます。
0753デフォルトの名無しさん2005/10/02(日) 17:17:53
>>728
何か勘違いしているようだが、GDIは元々ハードウェア支援がある。
S3全盛期の頃はビデオカードの機能といえば、GDIのアクセラレーションだった。
DDBなんて面倒な方式を使っているのは、そのためでもあるんだし。
0754デフォルトの名無しさん2005/10/02(日) 17:22:16
スレ違いと知りつつ言ってみるが、UNIXのX Window Systemで
ハードウェアアクセラレーションをオフにすると、2D描画も
非常に遅い。2D描画もVGAチップの恩恵を受けてる。
0755デフォルトの名無しさん2005/10/02(日) 18:12:08
そもそもOSが違う
帰れ
0756デフォルトの名無しさん2005/10/02(日) 18:43:49
んじゃディスプレイのプロパティ>設定タブ>詳細ボタン>トラブルシュートタブ>アクセラレートOFFにしてみれ
0757デフォルトの名無しさん2005/10/02(日) 18:46:14
こりゃ遅い
0758デフォルトの名無しさん2005/10/02(日) 19:34:05
>>756
m9(^д^)PGYAAAAAAAAAA
0759デフォルトの名無しさん2005/10/02(日) 20:52:04
>>753
S3とか懐かしい・・・初めて買ったマシンが864だったよ。
メモリなくてDOSでしか使ってなかったけど。

>>756試してみたが、あんまり遅くならんな。

セーフモードで起動したxpはウィンドウがうねるのが見えてたが、
標準VGAドライバはアクセラレーション全部OFFなのかな?
0760デフォルトの名無しさん2005/10/02(日) 21:11:42
XPのセーフモードで、高解像度になるなら、それはVESA BIOSを使ってるわけで、
解像度の変更と、フラットメモリアクセスくらいしか提供されない。
0761デフォルトの名無しさん2005/10/03(月) 00:31:35
あるWindowの子Windowをスクロールさせる処理を作っているんだけど、SetWindowEx()に
SW_SCROLLCHILDを指定すると表示がちらつく。
メッセージを追いかけてみると、WM_ERASEBKGNDが送られている。
Windowの表示位置が変わるとシステムがWM_ERASEBKGNDを送ってしまうらしいんだが、
これを抑止する方法知ってたら教えて。
0762デフォルトの名無しさん2005/10/03(月) 00:33:18
>761
> あるWindowの子Windowをスクロールさせる処理を作っているんだけど、SetWindowEx()に
> SW_SCROLLCHILDを指定すると表示がちらつく。
すまん。間違えた、
ScrollWindowEx()にSW_SCROLLCHILDRENを指定すると
だった。
0763デフォルトの名無しさん2005/10/03(月) 00:53:31
子WindowのクラスのCS_HREDRAWとCS_VREDRAWはもちろんオフだよね?
0764デフォルトの名無しさん2005/10/03(月) 00:57:25
>763
CS_HREADRAW,CS_VREDRAWは指定してないです。hbrBackgroundにもNULLを入れてます。
0765デフォルトの名無しさん2005/10/03(月) 04:36:44
質問です。あるアプリのラッパDLL内で
親アプリのウィンドウハンドルに関連付けてAVISaveOptionsを呼んだら
http://rerere.servebeer.com/src/up20317.jpg
こんな感じにデフォルトでウィンドウが画像ベース?になってしまい
特定のコーデックの設定画面が切れてしまいます。
そこで試しにDLL内でDLLのインスタンスを使ってCreateWindowExをして
空のウィンドウAを作り、そのウィンドウハンドルに関連付けて
AVISaveOptionsを呼んでみたのですが、変わらず↑のような画面が出てきてしまいます
(ShowWindowでウィンドウAを出して見たところ、画像ベースでない普通のウィンドウでした)
おそらく親アプリが事前に何か悪さしてるのであろうと考えているのですが、
MSDN内を探したりgoogle先生に聞いてみたりしましたが、解決法を見つけることができませんでした。
↑のように作ったウィンドウを自動で画像ベースにするようなAPIは存在するのでしょうか?
0766デフォルトの名無しさん2005/10/03(月) 06:43:01
>>761
WM_ERASEBKGNDでぐぐれ
0767デフォルトの名無しさん2005/10/03(月) 06:52:54
>>765
さっぱりわからないが勘で答えてさしあげよう
それはテーマってやつでテーマをOFFにすれば解決だね。
0768デフォルトの名無しさん2005/10/03(月) 15:41:49
test
0769デフォルトの名無しさん2005/10/03(月) 16:03:58
すいません、質問です。

http://aploda.com/dl.php?mode=pass&file_id=0000034649

↑のプログラムは左を押したら vk_left が増えて
その結果を表示するものです。
しかし、作成した「意味無し」ボタンをクリックした後ふたたび左を押すと
なぜか入力を受け付けなくなってしまいます。

わかりにくい文章で申し訳ありませんが、
どなかたお願いします。
0770デフォルトの名無しさん2005/10/03(月) 16:51:02
フォーカスがボタンにいってるから
試しに他のウィンドウクリックして戻ってから左押してみて。
07717692005/10/03(月) 17:18:50
>>770さん、どうもありがとうございます。
一度ほかのウィンドウに行ってから戻ってくるとキー入力復活しました!

でも毎回この操作をやるわけにもいかないし、
キーボードとボタンの併用は相性悪いんでしょうか・・

フォーカスでググったら
::SetForegroundWindow(hWnd);
って関数が見つかったので色んなところで呼んでみたのですが、
どうもうまくいきませんでした。

ボタンの処理が終わった後、フォーカス?をボタンから離す方法はありませんか?
連続質問ですみませんが、どうかお願いします m(__)m
0772デフォルトの名無しさん2005/10/03(月) 17:25:16
フォーカス移動させるのもいいけど
ボタンのサブクラス化したら?
0773デフォルトの名無しさん2005/10/03(月) 17:43:22
>>617ですが、マスク画像を半透明に描画したいのです。
どうすればいいでしょうか?
ラスタオペレーションで何とかなりませんか?
0774デフォルトの名無しさん2005/10/03(月) 17:43:37
なりません
0775デフォルトの名無しさん2005/10/03(月) 17:52:51
>>773
半透明用のマスク作って、ANDとかXORのROPをかければいいんじゃない?
07767692005/10/03(月) 17:56:04
>>772
サブクラス化でググってみましたけど、
私のレベルでは難しそう (T_T
フォーカス移動は
::SetActiveWindow(hWnd);
関数でも無理でした orz

>>773
私は使ったことありませんが、
::AlphaBlend()関数で半透明になるという噂が。。
嘘情報だったらすみません。
あ、あと、DIB作って貼り付け先画像と合成すれば半透明は可能ですよ。
07777752005/10/03(月) 17:56:57
ちと修正。
・半透明用のマスク→画像とは別の半透明用のビットパターン
0778デフォルトの名無しさん2005/10/03(月) 17:58:05
SetFocusくらい察知できるようになろーぜ
07797692005/10/03(月) 18:00:51
>>778
キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!!
うあ、できました! 激しく激しく感謝!!

ボタンの終わりに呼んでしまってもいいんですよね。
07807732005/10/03(月) 18:53:43
>>775
BitBlt(hMem , 100 , 10 , 32 , 32 ,
hBkMem , 96 , 0 , SRCAND);
BitBlt(hMem , 100 , 10 , 32 , 32 ,
hBkMem , 64 , 0 , SRCINVERT);
SRCANDの方にはグレーの半透明用のマスクが、
SRCINVERTの方にはその画像が指定してありますが
色が反転してしまってしまいます。
どうすればいいでしょうか?

>>776
AlphaBlend()調べて使ってみましたが、
ラスタオペレーションの設定が分かりません。
半透明になってちょっと感動しましたが、
マスク画像は表示できないのでしょうか?
0781デフォルトの名無しさん2005/10/03(月) 19:34:52
反転させたいからSRCINVERTにしてんじゃないの?
0782デフォルトの名無しさん2005/10/03(月) 19:36:41
全力で間違えた。馬鹿な>>781に触らないであげてくださいorz
07837732005/10/03(月) 19:40:49
DirectX(DirectDraw)ならマスク画像を半透明にする事もできますかね?
0784デフォルトの名無しさん2005/10/03(月) 19:44:11
>>773
だからBitBltでラスタオペレーションじゃ無理だって言ってるだろ
半透明=アルファブレンドしたいんなら、上で出てるAlphaBlend関数だ
んで、AlphaBlendにはラスタオペレーションは無い

DirectDrawはマスク画像など使わない
0785デフォルトの名無しさん2005/10/03(月) 19:50:14
>>773
>マスク画像は表示できないのでしょうか?

発想の転換というものをしてみましょう
透過処理をするのだから、マスクしたいところをアルファ0で描画すればいいだけだろ?
07867732005/10/03(月) 20:03:29
>>784
分かりました。
率直な回答ありがとうございます。

>>785
つまり1ピクセルずつピクセルビットから
読み込んで表示汁という事ですか?
0787デフォルトの名無しさん2005/10/03(月) 20:14:24
透過色(抜き色)ではいかんの?
07887732005/10/03(月) 20:21:02
>>787
具体的にどういう事ですか?
くやしく教えてください。お願いします。
0789デフォルトの名無しさん2005/10/03(月) 20:27:56
>>786
アナタ、32bitBITMAPデータというものを知りませんか
ていうか、アルファブレンドって何かわかってますか
07907732005/10/03(月) 20:36:41
>>789
すみません。AlphaBlendは軽く調べただけで
どういう事ができるのか、どういう機能が備わってるのか
具体的には分かりません。
正直ぐぐっても、丁寧な説明が少なくてよく分からず、最後の引数に
至ってはほとんど何も分かりませんでした。
0791デフォルトの名無しさん2005/10/03(月) 20:49:00
あれだろ、あたらしいブレンド米の名前だろ?
0792デフォルトの名無しさん2005/10/03(月) 20:52:36
違う。ネスカフェ・アルファブレンド。
0793デフォルトの名無しさん2005/10/03(月) 21:07:13
>>790
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%96%E3%83%AC%E3%83%B3%E3%83%89
07947732005/10/03(月) 21:08:36
空気読めなくて悪いけど
AlphaBlendなら可能って事ですね。
お世話になりました。
07957732005/10/03(月) 21:15:10
>>793
うはwwwwwすみませ。ありがとうございます
0796デフォルトの名無しさん2005/10/03(月) 22:06:12
>>762
WS_CLIPCHILDRENは?
0797デフォルトの名無しさん2005/10/04(火) 04:10:50
ああなるほど。背景ブラシがNULLなのにWM_ERASEBKGNDのせいでチラつくって
なんかおかしいと思ってた
07987622005/10/04(火) 19:32:14
>796
WS_CLIPCHILDRENを指定してます。
>797
いや、背景ブラシがNULLなのは親Windowなんですよ。
子WindowにWM_ERASEBKGNDが飛んでいて、子Windowが背景を消去している。
「スクロールして新たに現れた領域」だけを再描画すればよいのに、なぜか子Window全体の
再描画指示がOSから送られてくるので、どうしたもんかと。
0799デフォルトの名無しさん2005/10/05(水) 00:05:18
>>798
思い出したが昔、子ウィンドウを一緒にスクロールさせるのに、
クライアントの上にもう一枚スクロールサイズと同じ大きさのウィンドウを被せて
その上に子ウィンドウを配置して、
スクロールさせるときは、クライアントに被せたウィンドウをMoveWindowなんかで動かす
と言うことをした覚えがある。
これだと子ウィンドウがちらつくことは無かった筈…なんだがもううろ覚え
0800ハーピィ2005/10/05(水) 01:32:14
E・∇・ヨノシ <800ゲット♫
0801デフォルトの名無しさん2005/10/05(水) 08:48:58
>799
なるほど。試してみます。
0802デフォルトの名無しさん2005/10/05(水) 19:29:23
CreateThread関数(_beginthreadex)なんですけど、
_beginthreadex(NULL,0,thread,NULL,0,&thID);
で、関数に渡すスレッドの引数のパラメータを第4引数に指定するとあるのですが、
どうやって渡せばいいのでしょうか・・

unsigned __stdcall thread(FILE *in);

main(){
FILE *in
_beginthreadex(NULL,0,thread,in,0,&thID);と指定してもエラーを吐いてしまいます('A
0803デフォルトの名無しさん2005/10/05(水) 19:33:45
>>802
unsigned __stdcall thread(void *in);
にしてみれ
0804デフォルトの名無しさん2005/10/05(水) 20:07:40
InitializeCriticalSectionAndSpinCount の使い方を教えてください。
スピンカウント?
0805デフォルトの名無しさん2005/10/05(水) 20:12:50
そんなもん不要
ポーリング最強
0806デフォルトの名無しさん2005/10/05(水) 21:08:45
>>802
キャストしてしまえばいい。
_beginthreadex(NULL, 0, (unsigned (__stdcall *)(void *))thread, in, 0, &thID);
0807デフォルトの名無しさん2005/10/05(水) 21:17:48
>>806
キャストを薦めるのはどうかと。
特に>>802のような人には悪影響与えそうだ。
0808デフォルトの名無しさん2005/10/05(水) 21:22:08
>>802
まぁ、あれだ。
まだマルチスレッド使うのは時期そうしょう(なぜか変換できない)ってことだ。
ちゃんとC勉強してからにしろ、な。
0809デフォルトの名無しさん2005/10/05(水) 22:49:35
>>808
総称、創傷 他変換できるぞ
0810デフォルトの名無しさん2005/10/05(水) 22:58:13
>>809
それはネタで言ってるのか?
0811デフォルトの名無しさん2005/10/05(水) 23:04:45
尚早
0812デフォルトの名無しさん2005/10/05(水) 23:15:48
ATOKなら「じきそうしょう」でも変換できるけどな。
08136642005/10/05(水) 23:28:11
>>664-722
timeGetTimeが常に同じ値を返す問題ですが、 再現性がありましたので報告いたします。
timeGetTime が返す値は 0xBFE561FD で、 これは timeGetTime の開始アドレスでした。
timeGetDevCaps の TimeCaps.wPeriodMax は 0xBFE56225 で、 timeGetDevCaps の
開始アドレスでした。

再現方法ですが、 先ず、 DirectX と MMTimer を使うアプリと、
MMTimer のみ使うアプリがあるとします。

OS起動後、MMTimer のみを使うアプリを先に一度でも実行すると、
その後どちらのアプリでも timeGetTime は正常なのですが、

DirectX と MMTimer を使うアプリを先に実行すると、
どちらのアプリでも timeGetTime は自身の開始アドレスを返すようになります。
0814デフォルトの名無しさん2005/10/05(水) 23:42:56
正常な時のtimeGetTimeのアドレスと異常な時のtimeGetTimeのアドレスは同じ?
何かヘンなdll呼んでないかなぁ…
ちなみにdllのロードは静的?動的?
0815デフォルトの名無しさん2005/10/05(水) 23:47:34
>>810
そう言うのは改めて聞くものではないぞ
0816デフォルトの名無しさん2005/10/06(木) 01:03:18
>>813
printf("%X", timeGetTime);
じゃねーだろーな?
08176642005/10/06(木) 03:16:16
>>814
アドレスは同じで、DLLは静的ロードです。
読み込んでいるDLLも動いているプロセスも、正常時と異常時で同じでした。

また色々したところ、DirectXを使わなくても異常になりました。
再起動しても異常だったり、正常だったりします。
関数の開始アドレスを返すのは確実なので、これで色々探してみます。
0818デフォルトの名無しさん2005/10/06(木) 04:18:06
>>803
なるほど渡す型はLPVOIDですから、受け取る側もLPVOIDにしなければならないのですね。
void* inに修正した所、無事受け取れたのですが・・
inはFILE*ですけど、関数に渡す時にはvoid*と表現されてますんで、例えばin=fopen("test.txt","r");
とする場合(FILE*)inとキャストしなければならないのです。

これはもう宿命でしょうね・・
0819デフォルトの名無しさん2005/10/06(木) 04:51:06
>>818
それは仕方ない。スレッドで受け取る引数は絶対使う型にキャストしないといけない。
0820デフォルトの名無しさん2005/10/06(木) 07:34:48
>>804
マルチプロセッサじゃないと意味ないばかりかCPUの無駄
0821デフォルトの名無しさん2005/10/06(木) 08:15:59
>>818
最初にFILE *の変数に代入してしまえばいい。
unsigned __stdcall thread(void *Param)
{
    FILE *in = (FILE *)Param;
0822デフォルトの名無しさん2005/10/06(木) 08:26:01
>>817
そんな話初めて聞いたから、君のプログラムがしょうもない
間違いをしているのではないかと思うが。
0823デフォルトの名無しさん2005/10/06(木) 14:02:04
先生_beginthreadexなんですが、、('A`)
MSのヘルプでは・・・
unsigned long _beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall *start_address )( void * ),
void *arglist, unsigned initflag, unsigned *thrdaddr );
んでarglistに渡す引数のリスト(無い場合はNULL)とあるのですが、
void* arglistというのは抽象過ぎて意味がわかりません。
いろいろ調べて考えて弄ったんですが、やっぱり意味がわかりません('A`)..

これはスレッドに渡す引数は配列にしなさいよーっつーことですか?
0824デフォルトの名無しさん2005/10/06(木) 14:04:13
すみません、問題も抽象過ぎました
スレッドが扱う関数に複数の引数を渡したいのです
0825デフォルトの名無しさん2005/10/06(木) 14:06:23
cのmainのargvと同じだろ
0826デフォルトの名無しさん2005/10/06(木) 14:10:42
構造体にでもまとめて、そのアドレス渡す。
0827デフォルトの名無しさん2005/10/06(木) 14:15:39
はぁ、構造体で渡しますか..
イマイチスレッドは扱いにくいですね
0828デフォルトの名無しさん2005/10/06(木) 14:42:45
構造体で渡した方が融通利くと思うが…。
扱いにくいかねえ。
0829デフォルトの名無しさん2005/10/06(木) 14:56:46
構造体をスタックに置いたりして
0830デフォルトの名無しさん2005/10/06(木) 14:57:00
別に配列でもいいけどな
まぁ、まとめて渡せってこった
0831デフォルトの名無しさん2005/10/06(木) 14:57:36
だから引数の「リスト」なんだろ
0832デフォルトの名無しさん2005/10/06(木) 14:58:23
ホイールマウスのホイールの回転の取得法を教えてください。
0833デフォルトの名無しさん2005/10/06(木) 14:59:33
arg = 引数
list = リスト
0834デフォルトの名無しさん2005/10/06(木) 15:04:47
>>832
メッセージがくるからそれを見ろ
0835デフォルトの名無しさん2005/10/06(木) 15:09:57
>>834
ありがとう
0836デフォルトの名無しさん2005/10/07(金) 01:15:46
>>820
シングルプロセッサだと無視されるから無駄にはならん。
まあ、最適な回数は、実際に試してみるしか、確実な方法がないのだけれど。
0837デフォルトの名無しさん2005/10/07(金) 03:20:27
マルチスレッドでVfWを扱いたいのですが
どうもAVIFileInit()が内部的にCOMを使ってるみたいでうまくいきません。
流れ的には

親プログラム開始→AVIFileInit→特定のキーが押されるとスレッドAを作成 →フラグAがOnになるまでループ
 →フラグAがOnになったらスレッドAのハンドルを閉じてAVIStreamWriteでデータを書き込み→全部書き込んだらAVIFileExitして終了

スレッドA開始→AVIFileOpen&AVIFileCreateStreamで書き込む為のストリームを形成
 →AVISaveOptionsで圧縮設定を受け取る→AVIMakeCompressedStreamで圧縮ストリームを作成
 →フラグAをOn→終了

こんな感じなんですが(エラー処理とかは端折ってます)このままだとスレッドAのAVIFileOpenで
CoInitializeは呼び出されてませんと怒られて失敗し、次のAVIFileCreateStreamでエラー起こします。
そこで親プログラムの最初のAVIFileInitをスレッドAの最初に持っていったのですが、
今度は親プログラムのAVIStreamWriteでCoInitializeは(ryと怒られて割と八方塞がりです。
0838デフォルトの名無しさん2005/10/07(金) 03:37:24
>>837
あー最初俺もそれでハマッタなぁ。
複数のファイルストリームに同時に書き出すの作ってて。
結局VfW関係は専用のスレッドに全ての処理を集めて作ったよ。
全て外部からのシグナルで制御するようにしてた。

その後DirectShowでリライトしたけど、
最初からDirectShow使って置けばよかったと後悔した。
0839デフォルトの名無しさん2005/10/07(金) 06:26:22
for (iYPos = bmpInfo.bmiHeader.biHeight - 1 ; iYPos >= 0 ; iYPos--) {
 for (iXPos = 0 ; ; iXPos++) {
  if (iXPos > (bmpInfo.bmiHeader.biWidth - 1)) {
   iCount = iLine * WIDTH_BYTE;
   iLine++;
   break;
  }
  if(bPixelBits[iCount + 2] == 0 &&
     bPixelBits[iCount + 1] == 0 &&
     bPixelBits[iCount] == 0)
   iCount += 3;
  else {AlphaBlend( hMem,iXPos , iYPos,1,1,hBkMem,iXPos , iYPos,1,1,bf);
   iCount += 3; }
 }
}
AlphaBlendを使った半透明処理なんですが、
BITMAPを1ピクセルずつ確認して黒なら無視、それ以外ならAlphaBlendで描画
というコードです。
AlphaBlendを何十回と呼び出しているので、動作も遅いと思います。
これ以上早いマスク画像の半透明描画があるなら教えてください。お願いします。
0840デフォルトの名無しさん2005/10/07(金) 06:59:15
>>837
CoInitializeEx?
0841デフォルトの名無しさん2005/10/07(金) 07:02:20
>>839
おまえそれ、1ピクセルずつ処理するんならAlphaBlendなんか使う必要無いだろ
0842デフォルトの名無しさん2005/10/07(金) 08:04:50
すいません、
BitBltで画面をキャプチャーするソフトを作っているのですが、
どうしてもマウスカーソルがキャプチャーされないのです。

どなたかマウスカーソルもキャプチャーする方法をご存知の方いらっしゃいませんでしょうか?
0843デフォルトの名無しさん2005/10/07(金) 08:48:12
キャプチャ時に現在のカーソル位置と形状取得して自分で描け。
0844デフォルトの名無しさん2005/10/07(金) 08:51:09
BitBltでマウスもキャプチャーは無理
0845デフォルトの名無しさん2005/10/07(金) 09:04:08
>>843
それだと使っているアイコンの種類によってはちがうもの書いてしまうこともあるでしょうし、

>>844
BitBltつかっちゃうと無理ってことは、
たとえば操作説明用にマウスカーソル付きで画面キャプチャー撮るソフトって
どうやってやってるのか分かりませんか?
0846デフォルトの名無しさん2005/10/07(金) 09:14:55
>>845
GetCursor
0847デフォルトの名無しさん2005/10/07(金) 09:49:14
>>846
それだとCursor関数を使って独自のマウスカーソルを表示していた場合
GetCursorはあくまでもハンドルを返すのでそれと同じものを描画できなくないですか?
0848デフォルトの名無しさん2005/10/07(金) 10:11:50
>>836
EnterCriticalSection による STATUS_INVALID_HANDLE 例外の
防止にも使えるんじゃない?
0849デフォルトの名無しさん2005/10/07(金) 10:42:26
Win32 APIのGetPrivateProfileStringについて
質問があります。
GetPrivateProfileStringを続けて2回コールした場合に
GetPrivateProfileStringの最後の引数のファイル名が
勝手に拡張子を除去して引数のファイル名を返却してくるので
2回目のGetPrivateProfileStringのコールでエラーとなってしまいます。

(引数のファイル名は変数にファイル名を格納したものを渡しています。)

GetPrivateProfileStringは引数のファイル名を勝手に拡張子をはずして返す仕様になっているのでしょうか?
Win32 APIの宣言で引数のファイル名はByValになっているのですが。
ご存知のかた解決方法をご教授願います。
0850デフォルトの名無しさん2005/10/07(金) 10:54:47
>>847
GetCursor()+DrawIconEx()


しのごの言わずに、まずは試してみろ。
0851デフォルトの名無しさん2005/10/07(金) 10:58:53
> GetPrivateProfileStringは引数のファイル名を勝手に拡張子をはずして返す仕様になっているのでしょうか?

んなわきゃない。LPCTSTRだから、変更しないのが仕様。
変数のサイズが悪いんじゃないか?プログラムを疑え
0852デフォルトの名無しさん2005/10/07(金) 11:35:36
>>850
DrawIconEx frmAAA.Picture1.hdc, 0, 0, GetCursor, 0, 0, vbNull, 0, 3
これでためしましたがやはりデフォルトのマウスカーソルが表示されるだけでしたね

http://ad-soft.hp.infoseek.co.jp/
ここのHPのマウスもキャプチャーというツールはしっかりキャプチャーできているようですが
APIだけではやはりむずかしいもんなんでしょうかねぇ
0853デフォルトの名無しさん2005/10/07(金) 12:04:13
>>839
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpgdi/html/_win32_transparentblt.asp
ここらへんにある内容を見直したらいいんじゃないか。
0854デフォルトの名無しさん2005/10/07(金) 12:29:46
>>852 delphiだけど
ttp://www.woodybells.com/delphi_tips/index.cgi?mode=view&no=5
0855デフォルトの名無しさん2005/10/07(金) 13:17:56
>>849

>GetPrivateProfileStringの最後の引数のファイル名が
>勝手に拡張子を除去して引数のファイル名を返却してくるので
しません。

>(引数のファイル名は変数にファイル名を格納したものを渡しています。)
ソース晒して味噌。

>>851
VBらしいよ。
0856デフォルトの名無しさん2005/10/07(金) 13:52:29
>>854
VBに書き直して使ってみたらばっちりできました!!!
助言ありがとうございました^^
0857デフォルトの名無しさん2005/10/07(金) 15:09:19
ちょっと重い処理中は、WM_MOUSEMOVEの発行が途切れ途切れになりますよね。

そのためWM_MOUSEMOVE時の値を使って何かしていると、
その処理がマウス座標的に「コマ落ち」になってしまい困っています。

これを何て言うかシューティングゲームで言うところの「処理落ち」にしたいのですが、
何か良い方法があったら教えて頂けないでしょうか。

今のところ思いついたのは、途切れ途切れのマウス座標をスプラインにして補間、くらいです。
が、バカなので出来れば複雑な処理は避けたいところです。
0858デフォルトの名無しさん2005/10/07(金) 15:21:29
重い処理はなるべく別のできれば相対的に優先度の低いスレッドに処理させましょう。
0859デフォルトの名無しさん2005/10/07(金) 15:23:06
なるほど、別スレッドを使えば良いんですね。早速やってみます。
シンプルかつ有効な回答ありがとうございます。
0860デフォルトの名無しさん2005/10/07(金) 15:39:09
>>838
うーんやっぱりそれしかないですかね。
VfWはマルチスレッドに対応してないとこでも
もう古臭い技術なのかもしれませんね…
0861デフォルトの名無しさん2005/10/07(金) 15:57:23
case WM_CLOSE:
 id = MessageBox(hWnd,
  "終了してもよろしいですか",
  "確認",
  MB_YESNO | MB_ICONQUESTION);
 if (id == IDYES) {
  if(!KillTimer(hWnd , 1))
   MessageBox(hWnd , TEXT("Error") , TEXT("KillTimer Error") , MB_OK);
  DestroyWindow(hWnd);
  }
 break;
:
:
wsprintf(str , TEXT("gametime %d") , gameTime);
TextOut(hMem , 200 , i*5 , str , lstrlen(str));

終了時のメッセージに"終了してもよろしいですか"とあるのですが
結果はメッセージボックスの本文に"ime 0"と表示されてしまいます。
なぜでしょうか? 教えてください。お願いします。
08628612005/10/07(金) 16:37:34
スマソ。事故解決しますた。
mallocでメモリの確保してなかったぽいです。
0863デフォルトの名無しさん2005/10/07(金) 16:47:21
タイマー処理にてCreateTimerQueue()やCreateWaitableTimer()を使用したいのですがコンパイル時、リンクエラーとなってしまいます。
下記MSDNを見るとkernel32.libを使用とありますので特にリンクオプションは付けてません。
↓
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdllpro/html/_win32_CreateTimerQueue.asp

念のため「cl test.c /link kernel32.lib」としてもリンクエラーとなってしまいます。
(コンパイルはCLを直接使ってます)

因みにサーバーの開発ですが、MAX1000スレッド程度のタイマーを同時に
張っても問題ないでしょうか。

当方、Unix屋さんでWindowsは余り経験がありませんので苦労しています。
誰か詳しい方、他にいい方法などあればご教示願います。

環境はWin2000(SP4)、Visual Studio 6.0(SP6)です。

0864デフォルトの名無しさん2005/10/07(金) 16:50:27
>>863
kernel32.libやらの有るディレクトリにパスは通ってるのか?
0865デフォルトの名無しさん2005/10/07(金) 16:50:39
>>863
比較的新しいAPIだからPlatform SDKを入れないといけないんジャマイカ。
0866デフォルトの名無しさん2005/10/07(金) 17:05:46
Platform SDK February 2003までだよな、VC6.0対応は。
0867デフォルトの名無しさん2005/10/07(金) 18:18:14
少なくとも、CreateTimerQueueはWin2kからのサポートだろ。
#define WINVER 0x500 なり
#define _WIN32_WINNT 0x500 はやってあるんだろうね?
0868デフォルトの名無しさん2005/10/07(金) 18:20:56
追加
CreateWaitableTimerはNT4.0からのサポート(MSDNより)
こちらは最低限
#define _WIN32_WINNT 0x400 が必要なはず。
0869デフォルトの名無しさん2005/10/07(金) 18:34:42
キャプチャ野郎は正直な話スパイウェアを作ってんじゃないかとハラハラしている俺がいる。
0870デフォルトの名無しさん2005/10/07(金) 18:38:36
>867, >868
ありがとうございます。
CreateWaitableTimer()はリンクできましたが、CreateTimerQueue()は駄目でした。
winbase.hを見るとCreateWaitableTimer()はあるのですが、CreateTimerQueue()は
はないみたいです。
もう一度、SDK入れてやってみます。
ちなみに、CreateWaitableTimer()とCreateTimerQueue()の違いって何でしょう?
違いがないならCreateWaitableTimer()でもいいかと。
08718392005/10/07(金) 19:18:04
>>841
1ピクセルずつならアルファ値を指定できる描画処理があるんですか?
0872デフォルトの名無しさん2005/10/07(金) 19:25:46
>>871
1ピクセルずつ処理するんなら自前で透過処理書いた方が速いだろ、ってこと。
アルファ付きビットマップ使えばAlphaBlend一発だ。
0873デフォルトの名無しさん2005/10/07(金) 19:37:37
誰か>>863のMAX1000スレッドという部分にツッコミをいれるべきじゃないのか?
0874デフォルトの名無しさん2005/10/07(金) 19:41:03
スレッド1000個作ろうが個人のかってだろ
0875デフォルトの名無しさん2005/10/07(金) 19:52:41
それ以前に、ハンドル待機関数の同時待機数が、
MAXIMUM_WAIT_OBJECTS 個に制限されている悪寒。
WaitFor〜()、MsgWaitFor〜()が該当する。
MAXIMUM_WAIT_OBJECTS の定義値は64。
08768392005/10/07(金) 19:58:44
>>872
すみません。言ってることがわけわかめ。
アルファ付きビットマップなんて聞いたことないし、
自前で透過なんていったら1ピクセルずつ判別して描画するくらいしか思いつきません。
AlphaBlendにそんな機能ありました?
0877デフォルトの名無しさん2005/10/07(金) 19:59:30
>>876
MSDNを100回でいいから読んでくれ
0878デフォルトの名無しさん2005/10/07(金) 20:21:32
>873
1000スレッドと言うのは適当です。
要はサーバーですからある程度スレッドが上がることになりますが、
MAXどれくらいタイマーを同時に張れるのかが知りたいのです。
システム上制限があるのであれば、APIを使わずに自分でやるとか
他のやり方を検討する必要があるかなと。

自分で出来るのであればそれでも構わないのですが、
他にやり方あれば教えて下さい。


0879デフォルトの名無しさん2005/10/07(金) 20:31:00
>875
すみません。
WSAWaitForMultipleEvents()も同じく64個の制限なのでしょうか。
0880デフォルトの名無しさん2005/10/07(金) 20:31:22
>>878
もうMSDN百回読んだのか。早いな。
0881デフォルトの名無しさん2005/10/07(金) 20:33:06
>>878
>MAXどれくらいタイマーを同時に張れるのかが知りたいのです。

ドキュメントに制約は書かれていない。
したがって、君が人柱になって報告するべき。
0882デフォルトの名無しさん2005/10/07(金) 20:58:24
>>876
おまえさんそりゃあ、教えてもらおうという態度じゃないべ

わからんならわかるように勉強しなされ
聞いたこと無いって言っても、そりゃ「アナタが聞いたこと無い」だけ
32bitビットマップでグーグル検索してみれ
0883デフォルトの名無しさん2005/10/07(金) 21:00:38
>>879
今のヘッダは確か、こうなっている

#define WSA_MAXIMUM_WAIT_EVENTS MAXIMUM_WAIT_OBJECTS
08848392005/10/07(金) 21:48:35
>>882
ごめんなさい。リアルで知らんかったです。
今まで苦労してBITMAPINFO構造体とか学んできただけあってか
アルファのあるビットマップが存在するとは思いませんでした。
ありがとうございます。吊ってきます。
0885デフォルトの名無しさん2005/10/07(金) 22:44:19
>>884
そりゃあおまいさん、疑問を抱く姿勢というものが無いな
BITMAPINFO構造体知ってるんなら、多少疑問が出てきそうなもんだがな
RGBQUADのとこで
0886デフォルトの名無しさん2005/10/07(金) 22:53:33
とりあえず、879は、WinsockFAQを見た方がいいな。
08878392005/10/07(金) 23:30:01
>>885
え? 間違ってたらごめんなさい。
アルファ値ってRGBQUADのrgbReservedに指定するんですか?
0固定じゃ…くぁwセdrftgyふじこlp;@:「
0888デフォルトの名無しさん2005/10/07(金) 23:34:58
>>887
頼むからMSDN読んでくれ。
ttp://msdn.microsoft.com/library/en-us/gdi/bitmaps_00h3.asp
0889デフォルトの名無しさん2005/10/07(金) 23:35:41
>>887
RGBQUADの構成で考えると0固定だがな
実際のビットマップファイルのビットデータ構造見たことないのか?
BITMAPINFOではRGBQUADで書かれてるけど、
実際の構造はRGBTRIPLEで24bit構造
アルファ値加えて32bitにしたら、RGBQUADのReservedに相当する領域しか無いだろう?
0890デフォルトの名無しさん2005/10/08(土) 00:03:33
CreateWindowEx でつくったウインドウの×ボタンを無効にするにはどうすればよいですか?
dwExStyle や dwStyle で指定できるものなんでしょうか?
それともウインドウをつくった後に、×ボタンへDisableメッセージを送って実現したりするんでしょうか?
08918902005/10/08(土) 00:04:30
ちなみに dwStyle に WS_SYSMENU を指定しないと確かに×ボタンはなくなりますが、
一緒に最大化・最小化ボタンもなくなっちゃうので、これ以外の解決策でお願いします。
0892デフォルトの名無しさん2005/10/08(土) 00:15:07
>>890
EnableMenuItem( GetSystemMenu( hWnd, FALSE ), SC_CLOSE , MF_BYCOMMAND | MF_GRAYED );
みたいな
0893デフォルトの名無しさん2005/10/08(土) 00:17:26
>>890
http://www.google.com/search?q=閉じるボタン+無効化
みたいなあ
0894デフォルトの名無しさん2005/10/08(土) 00:18:37
> それともウインドウをつくった後に、×ボタンへDisableメッセージを送って実現したりするんでしょうか?

いや、システムメニューに EnableMenuItem で Disable する
08958902005/10/08(土) 00:19:54
>>892-894
うほー皆様ありがとうございます。
>>893様のおっしゃる通り、ぐぐればすぐに見つかりましたね。。。
おかげさまで実現できました。ありがとうございました!
0896デフォルトの名無しさん2005/10/08(土) 05:24:49
http://homepage2.nifty.com/spw/software/hideseek/
こういうツールってどういった仕組みで実現してるんでしょうか?

HideSeekでは、次のデータの表示及び削除が可能です
・OutlookExpressのアカウント情報(メール [POP3・HTTP・ IMAP]・ニュース・ディレクトリサービス)
・Outlookのアカウント情報(同上)
・ダイアルアップ接続(アカウント名・ユーザ名・パスワード・電話番号・デバイス・利用者)
・InternetExplorerの認証パスワード(アドレス・タイトル・ユーザ名・パスワード)
・InternetExplorerのフォーム入力データ(フィールド名・入力文字・アクセス日時)
・InternetExplorerのURL履歴(URL・タイトル)
・InternetExplorerの一時ファイル(ファイル名・サイズ・アクセス日時・アドレス)
・InternetExplorerのクッキー(ドメイン・アクセス日時・サイズ・ユーザ)
・最近使用したファイル及びプログラム

基本的にこういうのってあんまり簡単にゲットできてほしくないんだけど。
0897デフォルトの名無しさん2005/10/08(土) 05:27:48
APIフックやりたいんだが
AdvencedWindowsのサンプルプログラムXPじゃちゃんと動かねーよ。
0898デフォルトの名無しさん2005/10/08(土) 05:31:44
"API Hook" でためしにぐぐってみた。
スゲーいっぱい出てきた。
0899デフォルトの名無しさん2005/10/08(土) 05:36:23
>>こういうツールってどういった仕組みで実現してるんでしょうか?
実現方法をここに書く。そこで見た人間全てが取得方法を知る。

>>基本的にこういうのってあんまり簡単にゲットできてほしくないんだけど。
簡単にゲットされたくないんだろうから、仕組みは書かないほうがいい。

さぁどっち?
09008392005/10/08(土) 07:20:38
>>888-889
ありがとうございます。
しかし、D-Pixedで編集した画像をバイナリエディタで改変したのですが
いくらReservedの値を変えても変化はありませんでした。
なんででしょう? orz。
0901デフォルトの名無しさん2005/10/08(土) 08:18:50
ダメだこいつ・・・
ファイルの仕様はおろか、使ってるアプリの仕様すら理解してないな
0902デフォルトの名無しさん2005/10/08(土) 08:31:12
>>901
馬鹿ですみません。
ttp://49uper.com:8080/html/img-s/86709.jpg
ピンクの部分がアルファ値になるという事ですか?
0903デフォルトの名無しさん2005/10/08(土) 08:33:50
>>902
だからダメだこいつってんだ
ファイルの構造も、アプリの仕様も理解してねぇじゃん
出直してこい
0904デフォルトの名無しさん2005/10/08(土) 08:34:42
ついでだ、
ビットマップ使うんなら、いくらフリーだからってD-Pixedなんか使うな
0905デフォルトの名無しさん2005/10/08(土) 08:38:22
鼻血吹いた
0906デフォルトの名無しさん2005/10/08(土) 08:52:04
まずファイル構造を勉強したほうがいいかと・・・
09079022005/10/08(土) 09:04:13
すみません。お世話になりました。
自分で何とか調べてみます。
0908デフォルトの名無しさん2005/10/08(土) 09:04:56
>>907
そんなこと言うなよ寂しいじゃないか馬鹿。一回り大きくなって戻ってこいよ。
0909デフォルトの名無しさん2005/10/08(土) 09:08:37
>>896
IEやOEがやってるのと同じことをしてるだけ
0910デフォルトの名無しさん2005/10/08(土) 10:02:09
インターフェースを公開している時点でMSにも責任はあると思う
0911デフォルトの名無しさん2005/10/08(土) 10:07:26
ファイルの構造ってか、基礎だよな。
Windowsをブラックボックス扱いしすぎてるんじゃないか?
0912デフォルトの名無しさん2005/10/08(土) 10:41:09
>>910
しなけりゃしないで「秘密のAPI云々」と叩かれるし
0913デフォルトの名無しさん2005/10/08(土) 11:45:47
フォルダを開きたいんですけど、関数とかないのでしょうか?
ググっても出てきません。
WINAPIじゃないのかとも思ったのですが、あれは間違いなくWINAPIですよね。

あの、解凍ツールとかで、解凍したらフォルダのウィンドウが自動で開くじゃないですか。
あんなのをやりたいんです。
0914デフォルトの名無しさん2005/10/08(土) 11:47:26
>>913
2コンのマイクに向かって「フォルダ開け!!!」と大声で叫ぶとOK
0915デフォルトの名無しさん2005/10/08(土) 11:49:21
>>913
1.ShellExecute()を使う。
2."explorer.exe <フォルダ名>" でCreateProcess()かsystem()する。
好きな方をどうぞ
09169132005/10/08(土) 12:01:54
>>914
2コンがありません。

>>915
ありがとうございます。
それを調べてやってみます。
0917デフォルトの名無しさん2005/10/08(土) 15:58:01
>>897
欄外の注意事項もちゃんと読もう。
たしかWin2000の注意だったが、XPも一緒。
0918デフォルトの名無しさん2005/10/08(土) 18:16:32
>>896
WNetEnumCachedPasswordsとかで検索してみ。
あとは芋づるにでてくる。
0919デフォルトの名無しさん2005/10/08(土) 19:56:54
>>918
どうもありがとうございました。
・OutlookExpressのアカウント情報(メール [POP3・HTTP・ IMAP]・ニュース・ディレクトリサービス)
・Outlookのアカウント情報(同上)
・InternetExplorerの認証パスワード(アドレス・タイトル・ユーザ名・パスワード)
・InternetExplorerのフォーム入力データ(フィールド名・入力文字・アクセス日時)
の4つは分かりました。
最近使ったファイル、履歴、一時ファイル、クッキーなどは
普通にフォルダ内のファイルを列挙しているだけなのでしょうか?
IEの履歴とかはイマイチ取得方法が分からないのですが。
0920デフォルトの名無しさん2005/10/08(土) 22:06:53
COM
0921デフォルトの名無しさん2005/10/09(日) 01:51:51
リストコントロールにエクスプローラ等からD&Dで
アイテムを追加するのをIDropTargetを使って実装してますが
リストコントロールの端の方にドラッグした時リストコントロールを自動でスクロールさせたいです。
そこでDragOverでDROPEFFECT_SCROLL捕まえてやれば出来るかと思いましたが
DROPEFFECT_SCROLLが発生しません。
何が問題なのでしょうか。
0922デフォルトの名無しさん2005/10/09(日) 08:53:49
しつもん
shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'http://www.google.co.jp/', 0, 0, 1)
これはrubyからWEBブラウザーを起動して指定のURLを表示するコードですが、

「p p p p p」
とpが5つも連続している理由がわかりません
なぜでしょうか?おしえてください
0923デフォルトの名無しさん2005/10/09(日) 09:01:22
>>922
俺はrubyを知らないが、それはおそらく引数の型の指定じゃないかと思う。
09249222005/10/09(日) 09:10:36
>>923
Rubyだからpが5つも並んでるんですか?
Win32APIの側のお約束ですか?
0925デフォルトの名無しさん2005/10/09(日) 09:39:04
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Win32API
まあこれでも読んでrubyのWin32APIクラスの仕様でも勉強しる。
09269222005/10/09(日) 09:56:17
そもそもクラスというのがよくわかんない。
ネームスペースみたいなもんか?

(1)皇族
(2)華族
(3)武士
(4)職人
(5)証人
(6)農奴

とかあったら、これはクラス?ネームスペース?

それよりも
(a)魔術師
(b)戦士
(c)僧侶
とかあったら、これはクラス?
0927デフォルトの名無しさん2005/10/09(日) 10:04:21
オブジェクト指向についてはスレ違い
0928デフォルトの名無しさん2005/10/09(日) 10:15:04
関数付き構造体
09299222005/10/09(日) 10:28:08
>>925
いまみてきました
pはポインタのpみたいです。
ポインタを5つ使ってるということですね
0930デフォルトの名無しさん2005/10/09(日) 10:33:59
ちょっと聞いてくれ。
今VC、SDKで Win32_Find_dataを勉強してるんだけど、
構造体でnFileSizeLowがあるんだけど、型はDWORDなのに、2GBを超えるファイル作って
実験するとマイナスがつく。DWORDといえば、4Gまでは大丈夫と思ったんだけどどうしてかな。
解決方法、理由が分かる人いますか??教えてくれると助かる。
0931デフォルトの名無しさん2005/10/09(日) 10:39:24
符号付きintに変換して表示とか間抜けな事してるからじゃねーの?
0932デフォルトの名無しさん2005/10/09(日) 10:55:44
>>931
漏れもそれを考えたが、型指定(DWORD)にしても結果は同じ。
不思議なんだよ。
0933デフォルトの名無しさん2005/10/09(日) 10:56:06
>>930
志村〜、unsigned
0934デフォルトの名無しさん2005/10/09(日) 10:58:13
0x7FFFFFFF 2147483647
0935デフォルトの名無しさん2005/10/09(日) 11:07:01
>>932
変数の型がsignedだろうとunsignedだろうと、*printfで%d指定するような間抜けなことしたら一緒だぞ?
0936デフォルトの名無しさん2005/10/09(日) 11:09:01
>>935 さん。さすが。
もろやってました。。それが理由っぽい。。
一度文字列変換かな。。
0937デフォルトの名無しさん2005/10/09(日) 11:11:54
>>922
おまえにRubyは5年早い
0938デフォルトの名無しさん2005/10/09(日) 11:12:27
っていうかDWORDにマイナスないから
0939デフォルトの名無しさん2005/10/09(日) 11:28:27
>>938
うん。わかってたんですよ。。で、おかしい、おかしいって。
どこがまちがってるんだろう・・って。
ほんと、>>935 さんTHX。これで勉強進みます。
0940デフォルトの名無しさん2005/10/09(日) 11:32:11
つ[%u]
0941デフォルトの名無しさん2005/10/09(日) 11:46:28
問題は*printfの可変引数は変数の元々の型ではなく書式指定文字列の指定によって解釈されてしまう、という点なんだな。
もうAPIとは全く関係ない話だが。
0942デフォルトの名無しさん2005/10/09(日) 12:24:32
「printfの可変引数は」ではなく「可変引数は」だろ。
0943デフォルトの名無しさん2005/10/09(日) 12:38:10
>>942
えーまじー?
0944デフォルトの名無しさん2005/10/09(日) 12:54:21
書式使わなくて可変個数の引数の場合があるから
>942は大ウソ
0945デフォルトの名無しさん2005/10/09(日) 12:57:33
>>944
おもろいから本当のことは教えなくてよかったんじゃないかな
0946デフォルトの名無しさん2005/10/09(日) 13:00:10
自演乙
0947デフォルトの名無しさん2005/10/09(日) 13:11:21
自演(笑)
0948デフォルトの名無しさん2005/10/09(日) 14:29:54
>>919
> 履歴、一時ファイル、クッキーなどは
WinInet
0949デフォルトの名無しさん2005/10/09(日) 14:44:30
クッキー おいしいよクッキー
0950デフォルトの名無しさん2005/10/09(日) 20:41:31
質問です。
画像に合わせたウィンドウを作りたいと思います。(例:ドラえもんの顔の形をしたウィンドウなど
やり方としては透過色以外の部分をピクセル単位のリージョンで作り、CombineRgn->SetWindowRgnすればいいのでしょうが
他に何かスマートなやり方ありませんでしょうか?
よろしくお願いします。
0951デフォルトの名無しさん2005/10/09(日) 20:57:19
>>950
UpdateLayeredWindow。Windows2000以降でないと使えんが。
09529502005/10/09(日) 21:17:16
>>951
レスありがとうございます。
API初心者なので気づきませんでした。
さっそくMSDNとにらめっこしつつ試してみます。
0953デフォルトの名無しさん2005/10/09(日) 21:22:59
エディットボックスのカーソル(マウスカーソルではなく点滅しているカーソル)を変更する関数はありますか?
http://www.uploda.org/file/uporg211475.jpg
この画像の「4」のところにあるような文字と重なっているカーソルに変更したいのですが‥‥
0954デフォルトの名無しさん2005/10/09(日) 21:25:33
>>953
それはカーソルじゃなくてキャレットって言うんだ

質問に対してはすまん、シラネ
0955デフォルトの名無しさん2005/10/09(日) 21:29:20
>>954
レスありがとうございます
初めて知りましたorz
キャレットで調べてみます
09569532005/10/09(日) 22:15:38
解決しました。
エディットボックスにフォーカスが移動してきたときに
CreateCaretとShowCaretでキャレットを設定すればいいみたいです

case WM_COMMAND:
switch( HIWORD( wParam ) ) {
case EN_SETFOCUS:
w = 8; h = 15; // キャレットの幅と高さ(適当に指定するか別途GetWH( hwnd )のような関数を作成)
CreateCaret( hwnd, (HBITMAP)0, w, h ); // hwndはエディットボックスのハンドル
ShowCaret( hwnd );
break;
}
break;

>>954さんありがとうございました
0957デフォルトの名無しさん2005/10/09(日) 22:18:18
頑張れよー
0958デフォルトの名無しさん2005/10/09(日) 22:29:06
俺も初めて知った
0959デフォルトの名無しさん2005/10/09(日) 22:51:57
フロッピードライブみたいなリムーバブルディスクを
ローカルドライブに見せかける技って無いんですかね?
GetDriveType()の逆のSetする関数みたいなのがあれば最高なんだけぢ
0960デフォルトの名無しさん2005/10/09(日) 22:55:29
ない
ていうか、そんなことできるようにする意味がない
0961デフォルトの名無しさん2005/10/09(日) 23:18:28
ひどいもんだ
0962デフォルトの名無しさん2005/10/09(日) 23:22:11
意味が無いどころかむしろ非常に危険
0963デフォルトの名無しさん2005/10/09(日) 23:25:47
だが、それがいい
0964デフォルトの名無しさん2005/10/09(日) 23:28:55
いいわけないだろ
0965デフォルトの名無しさん2005/10/09(日) 23:30:42
ローカルではないが似たようなことは出来た。
0966デフォルトの名無しさん2005/10/09(日) 23:41:56
substでいけるかと思ったらそうでもないんだな
0967デフォルトの名無しさん2005/10/10(月) 00:58:49
ものすごく初歩的な質問なんですが、GUIプログラムでボタンを押すと処理をするとき、
処理中に固まらないようにCreateThreadでスレッドを生成して処理をするのって
あまり良くないのですか?
どんどんメモリの消費量が増えていくんですが・・・
0968デフォルトの名無しさん2005/10/10(月) 01:11:43
>>967
作成したスレッドをCloseHandleしてないとか。
09699672005/10/10(月) 01:39:14
>>968
CloseHandleは一応してるんですが、やり方が悪いのかも・・・。
一応タスクマネージャで見る限りではスレッドは終了しています。
09709672005/10/10(月) 01:52:54
case WM_COMMAND:
switch( LOWORD(wParam) ){
case IDOK1://ボタンが押されたときの処理
if((mainThread = CreateThread(NULL, 0,
test_Thread, hDlg, 0, NULL)) == NULL){
MessageBox(hDlg,"スレッドを生成できません","エラー", MB_OK);
break;
}
CloseHandle(mainThread);
}
break;

これじゃ駄目?
0971デフォルトの名無しさん2005/10/10(月) 02:36:16
>>970
一応言ってみる。
VCでは、_beginthreadexを使わないと、メモリリークが起きる。

Cのライブラリがスレッドごとに、一部のC標準ライブラリに必要なメモリを確保しているから。
CreateThread()を使うと、このメモリを開放するタイミングがわからず、リークする。

他のコンパイラを使っているなら、実装依存だから何ともいえない。
0972デフォルトの名無しさん2005/10/10(月) 02:47:39
メモリリークするのは使用頻度の低い関数ばかりだけどな
0973デフォルトの名無しさん2005/10/10(月) 03:50:18
ちなみにVCの場合とMFCの場合ではスレッドの生成方法を変えたほうが良い
0974デフォルトの名無しさん2005/10/10(月) 05:35:01
>>967
スレッドは使わないほうがいい
0975デフォルトの名無しさん2005/10/10(月) 05:41:08
PeekMessageでアイドル処理するとか書いといてやれよ
0976デフォルトの名無しさん2005/10/10(月) 07:53:00
つーかゲームじゃないんだし、
ボタンに対応した処理で固まるってどういう処理だよ
ボタン押して一瞬orしばらく応答無いのは普通だぞ・・・
0977デフォルトの名無しさん2005/10/10(月) 08:45:42
円周率を一億桁計算でもしてるんじゃないの?
>>967に聞かなきゃ分からないけど
0978デフォルトの名無しさん2005/10/10(月) 09:39:02
スレッド内でMFCを使う場合は、AfxBeginThread
スレッド内でCランタイムを使う場合は、_beginthread、_beginthreadex又はAfxBeginThread
スレッド内でAPIのみなら、CreateThread、_beginthread、_beginthreadex又はAfxBeginThread

>>967
固まるように感じる程の場合のみスレッドを考えればいい
0979デフォルトの名無しさん2005/10/10(月) 11:20:50
とりあえずAfxBeginThreadを使っとけば間違いないの?
0980デフォルトの名無しさん2005/10/10(月) 11:28:19
>>979
このスレ的にはそこまでは要らん。
AfxBeginThreadを使うならMFCスレに行け。
0981デフォルトの名無しさん2005/10/10(月) 11:36:37
Afx〜って関数はMFCのなのか
0982デフォルトの名無しさん2005/10/10(月) 11:45:50
タスクマネージャーについての質問です。
当方、Ctl + Alt + del が押されてタスクマネージャーを表示させる前に簡単なユーザ認証を行うダイアログを
表示させるようにしようとしています。
また、そのダイアログを普通のデスクトップにモーダレスで表示させたいのです。

現在、MSgina.dllを使用してdllをつくり、WlxLoggedOnSAS()内でダイアログを表示させています。
その結果、普通のデスクトップでダイアログが表示されず、logonデスクトップで表示されます。

WlxSasNotify()という関数がSASを受信して画面を切り替えているのかと思うのですが・・・。
画面の切り替わる前にダイアログを表示させたいのですが、どなたかこの辺の知識のある方はいますでしょうか。
ご教授ください。
よろしくお願いします。



0983デフォルトの名無しさん2005/10/10(月) 12:00:54
>>981
かつてのMFCの開発コードがApplicationFrameworkXだから
0984デフォルトの名無しさん2005/10/10(月) 13:41:34
ボタン1を持つ画面1とボタン2を持つ画面2があって、
それぞれのボタンを押すことで画面1と画面2を切り替える処理は
毎回ボタンを作成・破棄せずに全てのボタンを最初に作成し
必要に応じて表示・非表示とした方が良いのでしょうか?
ここでは画面2つの場合を例にしてますが、実際にはもっとたくさんの画面とボタンがあります。
0985デフォルトの名無しさん2005/10/10(月) 13:44:32
「たくさん」の程度にもよるけど、10画面くらいなら、表示・非表示でいいと思うけど。
0986デフォルトの名無しさん2005/10/10(月) 13:51:51
>>985
即レスありがとうございます。それでしたら表示・非表示で行こうと思います。
ありがとうございました。
09879672005/10/10(月) 14:34:31
>>976
>>977
ネットワーク関係のプログラムです。

皆さん助言ありがとうございました。とても参考になりました。
0988デフォルトの名無しさん2005/10/10(月) 16:09:19
>>982
デスクトップを切り替えてるのはWlxLoggedOnSASじゃないの?
「ようこそ」画面が有効だと画面切り替えなしでタスクマネージャが起動するから
少なくとも方法はあるはず
> モーダレス
モーダルかモードレスのどっちかにしなさい
0989デフォルトの名無しさん2005/10/10(月) 20:55:17
>>982
ttp://forums.belution.com/ja/vc/000/332/17s.shtml
0990デフォルトの名無しさん2005/10/10(月) 20:59:54
>>982
http://www.tt.rim.or.jp/~rudyard/torii009.html
0991デフォルトの名無しさん2005/10/10(月) 21:27:53
>>990
その意見はいちゃもんに近いな。
ニュアンス的にそぐわないとだけ指摘すればいいのに。
思慮が浅いだの背伸びしてるだの、いらんこと言う。
0992デフォルトの名無しさん2005/10/10(月) 21:29:57
今回の場合は思慮が浅いせいでマルチしたんだろうがな
0993デフォルトの名無しさん2005/10/10(月) 21:33:08
ご教授願いますって間違いだったのか。普通に使ってたorz
0994デフォルトの名無しさん2005/10/10(月) 22:15:17
つーか別に意味が通じるならいいだろうが
そもそも語彙なんて変化していく物なんだから

確信犯だって今じゃ誤用したのが普通に使われるだろうに
0995デフォルトの名無しさん2005/10/10(月) 22:20:36
>>990
ゲーム理論確立者にノーベル賞まで読んだ
0996デフォルトの名無しさん2005/10/10(月) 22:30:45
1000get-
0997デフォルトの名無しさん2005/10/10(月) 22:36:51
Win32API質問箱 Build36
http://pc8.2ch.net/test/read.cgi/tech/1128951330/l50
0998デフォルトの名無しさん2005/10/10(月) 22:37:52
また1がOmoti風味か

>>990
> 本来「教授」とは、学問や技芸などをきっちりと体系立てて教える場面に使われる言葉です

変化云々の前に、ここが恣意的なせいで、説得力がないな
0999デフォルトの名無しさん2005/10/10(月) 22:38:42
そろそろ1000か
1000デフォルトの名無しさん2005/10/10(月) 22:39:38
Win32API質問箱 Build36
http://pc8.2ch.net/test/read.cgi/tech/1128951330/l50

現在中国のウイグル自治区(本来は東トルキスタン)の人々は中国共産党の 
圧政下に苦しんでいます。トルキスタンの人々は中国からの圧政への抵抗 
と独立を主張していますが中国共産党からテロと一方的に断定され現在も 
なお苦しんでいます。 
具体的には 
・強制中絶によって850万人もの赤ちゃんの虐殺 
・核実験によって75万人が放射能で死亡 
・50万人を政治犯として処刑・虐殺 
・エネルギー資源を一方的に搾取 
といった信じられないことをしています。しかしあまり世界では知られていません。 
おなじアジアの一員としてそして人間として中国共産党の蛮行に抗議し、 
世界の人々に知ってもらい、中国共産党に対する非難世論を呼びかけましょう!! 

中国のこの様な政策は近隣諸国の日本や台湾にとっても他人事ではありません。 

詳しくはこちらで↓↓↓↓↓ 
【ウイグル弾圧】VIPPERvs中国 東トルキスタンを救え7
http://ex11.2ch.net/test/read.cgi/news4vip/1128777843/l50
http://www.geocities.jp/saveeastturk/

かつて勇敢な日本兵は戦後インドネシアの独立を助けました。 
いまは東トルキスタンの番です!!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。