[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 09/26 11:03 / Filesize : 178 KB / Number-of Response : 859
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build85



1 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 20:07:21 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

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

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

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build84
pc12.2ch.net/test/read.cgi/tech/1259478896/

409 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:07:44 ]
>>345だろ

410 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:11:07 ]
素朴な疑問










defファイル書いてる?

411 名前:407 [2010/01/11(月) 02:28:51 ]
>>409
>>346で否定されてるけどその点はどうなの?

412 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:02:06 ]
>>127の答え

Spy++で見ろ

413 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:13:29 ]
>>405
> ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
>>1に書いてあることが禁句って・・・

414 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:31:17 ]
原則準拠の掛け声だけでスレが埋め尽くされないように
>>1に原則をまとめておいて、>>1以外では
原則論を敢えて述べることは控える。

これって異常な発想か?

415 名前:407 [2010/01/11(月) 03:32:21 ]
>>412
spy++使ってキーボードのメッセージ(WM_KEYUPは除く)みたんだけどこんな感じだったよ
他にもパラメータあったけど、どの場合も変わらないから消しちゃった

//wキー
WM_KEYDOWN nVirtKey:'W' ScanCode:11
WM_CHAR chCharCode:'119' ScanCode:11

//ctrlキー
WM_KEYDOWN nVirtKey:VK_CONTROL ScanCode:1D

//ctrl+w
WM_KEYDOWN nVirtKey:VK_CONTROL ScanCode:1D
WM_KEYDOWN nVirtKey:'W' ScanCode:11
WM_CHAR chCharCode:'23' ScanCode:11

これを見るとWM_CHARが来た時chCharCode(wParam)の値が23ならctrl+wが押されたことになる??
けど文字コード見ると23はETBとか言う文字コードになってるからこれは関係ないのかな?
となると結局GetKeyState()なんて知らなかったらこれだけ見てもどうすれば良いのか分からないんじゃないの?

416 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:47:37 ]
> これって異常な発想か?
よくわかってるじゃん

417 名前:416の指示により以下はこの繰り返しに統一 mailto:sage [2010/01/11(月) 03:51:44 ]
>>1
過去ログ/MSDN/その他サイト ググレ
つまらん質問するな



418 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:51:49 ]
ググれが禁句なんて聞いたことない。w

419 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:53:28 ]
>>416のどこが指示だ?相変わらず妄想がひどいな

420 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:53:46 ]
今時ググっても、2ch関連の良くわからん質疑応答スレが
先頭に出るんですがね(蛇足だが質問も回答も間違ってることが
よくある)

421 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:57:00 ]
>>415
ctrl+wを押したときだけ特定のメッセージが来るかどうか
をspy++で見れば答えが得られるってこと
WM_KEYDOWNやWM_CHARしか飛んでないってことは
何もメッセージが割り当てられていないのが理解できる

422 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:59:20 ]
-2ch -chiebukuro
ぐらい付けるだろjk

423 名前:407 [2010/01/11(月) 04:04:54 ]
>>421
なるほど、そういうことだったのね

424 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 04:05:14 ]
前にもググれ調べろと言われてキレた基地外がいたが同じ奴かね

425 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 05:50:24 ]
1スレ無駄にしそうだなぁ

426 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 06:31:18 ]
「調べろ」「ググれ」を禁句とか言ってる気違いが住み着いたからなぁ

427 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 06:58:00 ]
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものではありません。

アイと研究員とのやり取りに利用するスレッドではないので、
関係者以外も書きこんで下さい。

                  京都大学霊長類研究所



428 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:00:55 ]
チンパンジーならまだしもメンヘラーだからタチが悪い。

429 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:05:20 ]
>>427
むかしのアイちゃんは、聞いても無いのに色々と話をして
くれたもんだが、最近は3語しか言わなくなったなw
年をとったのか、知能が高くなったのか、オブジェクト
指向にかぶれたのか知る由もないが
とにかくSmallTalkになっちゃったね。

430 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:13:34 ]
言っても無いのに色々と妄想してくれるようになった。

431 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:20:11 ]
Win32APIのこのスレ的な定義をそろそろよろ

432 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:24:44 ]
ググレカス
ttp://ja.wikipedia.org/wiki/Windows_API

433 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:47:43 ]
ここもWikiレベル以下か...鬱

434 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:49:52 ]
wikipediaをwikiっていうな

435 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 08:00:14 ]
天才とか言っていろいろなことさせられて、初期レベルの霊長類の
わずかな記憶領域を使い尽くされて、やがて本能を侵食されて
衰弱する
動物実験はいやだな・・・

436 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:18:18 ]
風紀委員会からのお知らせです。

一般的な商用ソフトはリバースエンジニアリングを禁止しています。
spy++で調べる事は使用許諾に反するので行わないでください。

437 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:44:15 ]
spy++で調べる事はリバースエンジニアリングではないのだが、
いったい何を言ってるんだ?



438 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:45:49 ]
妄想です

439 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:47:07 ]
リバースエンジニアリングとは、ソフトウェアやハードウェアなどを分解、あるいは
解析し、その仕組みや仕様、目的、構成部品、要素技術などを明らかにすること。
プログラムの分野では、モジュール間の関係の解明やシステムの基本仕様の分析と
いった行為を含む。

440 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:50:53 ]
Spy++程度でリバースエンジニアリングだったら
タスクマネージャだってリバースエンジニアリングだろ。
どれだけ頭が悪ければ気が済むんだ?

441 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:53:33 ]
ソフトウェアのインストールフォルダをエクスプローラで開くのもリバースエンジニアリングだなw

442 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:56:26 ]
そのソフトに色々な入力を与えて出力を見るのもリバースエンジニアリングだな
システムの基本仕様の分析になるもんな

443 名前:436 mailto:sage [2010/01/11(月) 09:57:13 ]
リバースエンジニアリングって言ってみたかっただけです。ごめんなさい。

444 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:09:58 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀


445 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:57:56 ]
下手糞な文字だなあ

446 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:27:27 ]
今までの長い歴史の中で最低最悪のスレだな

447 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:31:10 ]
この流れだと次スレで最低最悪の歴史を更新するでしょう。



448 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:32:31 ]
質問が無いのがいけないんだ!!

449 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:41:46 ]
今時Win32で開発してる人は、自力で解決できる上級者か、周りが見えてない馬鹿のどちらかだから、質問が無いのが自然。

450 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:46:02 ]
質問するぐらいなら自分で探した方が早いからな

451 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:14:15 ]
MSDN4階層までは全部記憶していて当然だからな。

452 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:18:16 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

453 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:27:03 ]
msdn4階層ばっか言ってるキチガイまだいるのかw

454 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:32:37 ]
まあ実際のところMSDN4階層以内だとOverviewにも届いてない程だし
Win32プログラマにとっては知ってて当然な情報しか無いけどな

455 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:34:03 ]
          ____
         / ̄ ̄ ̄ \
      /   :::::\:::/\  
     /    。<一>:::::<ー>。 
     |    .:::。゚~(__人__)~゚j   もう許してください
     \、   ゜ ` ⌒´,;/゜
    /  ⌒ヽ゚  '"'"´(;゚ 。  
   / ,_ \ \/\ \
    と___)_ヽ_つ_;_ヾ_つ.;._


456 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:44:15 ]
コピペしなくても書けるレベルになるとMSDN4階層以内の情報は見る価値ないし、
分からないときは最初からReferenceあたりで探すようになるからね
そしてReferenceまでの階層が深すぎてイライラするw

457 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:47:11 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀



458 名前:デフォルトの名無しさん [2010/01/11(月) 16:57:14 ]
MSDN4階層ってアクセラレータとかダイアログボックスとか用語の説明ばっかりじゃんw

459 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:58:28 ]
用語すらわからんやつは質問するなってことだ

460 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:01:09 ]
「ダイアログボックスって何?」

確かに、こんな質問は禁止でいいよw

461 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:02:42 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

462 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:01:59 ]
> MSDN4階層以内は質問禁止というキチガイルール
全然キチガイルールじゃなかったね

463 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:07:36 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

464 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 18:20:16 ]
ワロタwww
禁止に一票入れとくよw

465 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 07:39:48 ]
test

466 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 09:24:26 ]
aho

467 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:32:57 ]
FinderSystem Dev.がどうやってテキストを取得しているかご存知の方はいらっしゃいますか?

某アプリが表示している文字列を取得したいのですが、
実際には8文字表示されているのに
WM_GETTEXTLENGTHは4が返ってくるし、
WM_GETTEXTも100文字分指定しても先頭4文字しか取得できません。
VS2010β2付属のSpy++も4文字しか認識しません。

FinderSystem Dev.のメインウインドウのキャプションには何も表示されないのですが、
ウインドウビューアで階層をたどっていくと、ウインドウ名?の欄には正確に8文字表示されます。
どなたかヒントをください

ちなみに今のC#コードです
public static string GetWindowTextEx2(IntPtr hWnd) {
int len = SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0) + 1;
StringBuilder sb = new StringBuilder(len);
SendMessage(hWnd, WM_GETTEXT, len, sb);
return sb.ToString();
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder lParam);
public const int WM_GETTEXT = 0x000D;
public const int WM_GETTEXTLENGTH = 0x000E;



468 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:43:07 ]
MSDNのWM_GETTEXTの部分読んで下さい
WM_GETTEXTは万能じゃありません

コントロールによっては別のメッセージ使わないと駄目ですし
相手プロセス内で行動することも必要になってきます

469 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 13:44:21 ]
某アプリとか書かずにちゃんと名前書いたら?

470 名前:467 mailto:sage [2010/01/12(火) 14:10:07 ]
>>468
ありがとうございます
漁ってみます
>>469
どうせ誰も知らないだろうと思って具体的な名前は出しませんでした
カノープスのアナログキャプチャカードMTVX2005のソフト
Feather2005 Ver8.17.002の操作パネル(リモコンウインドウ)の再生位置の時刻表示です
ちなみに再生ファイル名は取れていました

471 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:21:18 ]
メッセージボックス(OKボタンのみのやつ)のOKボタンのコントロール識別子の値を教えてください
0x0400だと思ってGetDlgItemしたらNULLが返ってきました

472 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:30:42 ]
それぐらいSpy++で調べろよ・・・

473 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 17:20:30 ]
>>470
UIAかMSAAで取得してるんじゃね?

474 名前:467 mailto:sage [2010/01/12(火) 18:22:35 ]
ふと思い立ち、
SendMessageAとSendMessageWとで、それぞれ余計な文字コード変換をしないようにbyte配列を渡して受け取ってみたところ
SendMessageAでそれらしき値が返ってくるのを確認しました。
SendMessageWだと4文字で切られている雰囲気です。

[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern int SendMessageA(IntPtr hWnd, int Msg, int wParam, StringBuilder lParam);

StringBuilder sb = new StringBuilder(256);
int r = SendMessageA(hnd, WM_GETTEXT, 100, sb);

のようにしてみたところ、sbにきちんと8文字取れるようになりました。
ただrに入る値は4です。
これは対象アプリかOS(XP SP3です)のバグと思って良いのでしょうか?
お騒がせしました。ありがとうございました。

475 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:27:13 ]
ふと思い立ちって、、、>>467読んだ瞬間にそう思ったよ。
まあ問題なのは、不具合は全部自分以外のバグと思っちゃうところじゃないのかな。

476 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:33:50 ]
WM_GETTEXTはA/W関係ないと思うが・・・?

477 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:43:01 ]
8文字が全て全角文字で、ANSIで8バイト、Unicodeで4文字って事だろ。
マルチバイト文字とワイド文字の違いを分かってないだけなのに
OSのせいにするその脳細胞がバグってる。



478 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:49:51 ]
XP以降のEM_SETSEL等はSendMessageAでもUnicode扱いするバグがあるんだが・・・

479 名前:467 mailto:sage [2010/01/12(火) 19:04:42 ]
対象アプリの表示「 0:37:15」

確認コード
byte[] buff = new byte[256];
int r = SendMessageA(hnd, WM_GETTEXT, 100, buff);
int r = SendMessageW(hnd, WM_GETTEXT, 100, buff);
[DllImport("user32.dll")]
public static extern int SendMessageA(IntPtr hWnd, int Msg, int wParam, byte[] lParam);
[DllImport("user32.dll")]
public static extern int SendMessageW(IntPtr hWnd, int Msg, int wParam, byte[] lParam);

SendMessageAの結果
r=4 buff= 0x20,0x30,0x3a,0x33,0x37,0x3a,0x31,0x35,0x00以降全て0
SendMessageWの結果
r=4 buff= 0x20,0x00,0x30,0x00,0x3a,0x00,0x33,0x00,0x00以降全て0

どちらの結果もwParamの値と、戻り値の整合性がとれていないと思うのですが。
試しにWM_GETTEXTLENGTHを送ってもAもWもどちらも4が返ってきました。

480 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:20:45 ]
そもそもSendMessageの宣言は合ってるのか?

481 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:28:29 ]
OSのバグじゃなくて.NETかお前の書いたソースの問題。
とりあえずC#スレで聞いて来い。

482 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:16:09 ]
>VS2010β2付属のSpy++も4文字しか認識しません。

483 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:55:22 ]
>>479
正しく機能しないと思うなら、正しく機能するようにむりやり書いておけばいいと思うよ
APIにバグなんて意外とあるし、バグでなければどうせそのうち矛盾して直す羽目になるから

484 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:59:14 ]
宣言が間違ってる。ref が足らない。

485 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:59:48 ]
IntPtr で受けて、Masharl.PtrToStringAnsi() とかで文字列に変換しろ。

486 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:09:45 ]
バッファ確保しとかないとダメだろ。

487 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:32:19 ]
相手側の実装の問題かも



488 名前:467 mailto:sage [2010/01/12(火) 22:50:04 ]
自己解決しました

489 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:57:01 ]
マーシャリングの問題なのでAPIスレの範疇ではない

490 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:11:51 ]
XP VC6 SDK
_MBCSビルドで正常に表示されている仮想リストビューが _UNICODEビルドに変更すると
LVN_GETDISPINFO(W)が来ず、なぜか LVN_GETDISPINFO(A)が来るのでそれに対し
WCHAR文字列のポインタを与えると それを charと解釈し正常に文字が表示されません。

試しに LVS_OWNERDATAを外して InsertItemで WCHARの文字列を挿入すると 3カラム中
1カラム目は正常に表示され、2,3カラム目はデータが無いので LVN_GETDISPINFO(A) が
発生し、前述と同じ表示になります。
LVN_GETDISPINFO(A)に対し、WCHAR文字列ではなくchar文字列のポインタを与えると
2,3カラム目も正常に表示され、1カラム目は WCHAR、2,3カラム目は charという
おかしな状態になります。

何か LVN_GETDISPINFO(W)が来ない原因が思い当たりますでしょうか。

491 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:52:31 ]
>>490
ウィンドウクラスは WC_LISTVIEWW になっているかい?

492 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:57:50 ]
はい。念のため、CreateWindowExW、WC_LISTVIEWW としても実行してみましたが
同じでした

493 名前:490 mailto:sage [2010/01/13(水) 00:56:40 ]
原因が分かりました。

他の言語の GUIに リストビューを貼り付ける形で 何の言語からも手軽に 仮想リストビュー
や表示するデータを利用できるように作った DLLなのですが、その親となる相手方のコントロ
ールやウィンドウをサブクラスしていて、親(相手方)が ANSIだった為 リストビューが親に
ANSI のメッセージ(WM_NOTIFY)を送っていたようです。
間に1枚 UNICODEのコントロールを作成することで解決しました。

>>491 ありがとうございました

494 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:31:03 ]
BitBltでソースの画像より大きいサイズを指定すると
余った部分が真っ黒になるようだけど、
その部分の色を指定することは出来ないの?

495 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 02:51:59 ]
>>494
背景とソースを合成したビットマップを動的に作成してBitBltするか
ソースの画像サイズでBitBltしてから描画した画像の範囲をExcludeClipRectして最後にソースよりも大きいサイズの矩形を塗りつぶす。

496 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 02:57:51 ]
入力先はソースより大きくする理由はない
出力先が大きいなら塗り潰す

497 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:05:55 ]
>>496
StretchBltと間違えていませんか?
BitBltは入力元のサイズは指定できませんよ。



498 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:14:59 ]
指定できなくても元サイズはあるだろう
destをそれと同じサイズにすればいいだけ

499 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:23:43 ]
真っ黒になる(=ゼロクリアする)かどうかって不定じゃなかったか?
ちゃんと正しいサイズを指定しろ。

500 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:32:19 ]
>>498
じゃあこれはどういう意味ですか?
> 入力先はソースより大きくする理由はない

501 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:40:52 ]
絵を絵より大きなサイズ指定して出力しても仕方がないだろう

502 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 03:56:24 ]
>>500
そんなん俺に聞かれたって知るかよ

503 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 05:42:34 ]
知らないならレスしないで下さい。ウザイだけです。

504 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 10:28:10 ]
そもそもBitBltにソースのサイズを超える指定をした場合の言及がないので、
動作は未定義と考えるべき。
ドライバの実装など環境に依存する可能性があるので、そもそも使うべきではない。

505 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 10:59:23 ]
Vista以降はドライバに依存しないでしょ

506 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 13:02:16 ]
だれがVista以降専用だと書いているんだ?
なんで脳内妄想で書いてもいない前提条件を付けるの?

507 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 13:56:45 ]
質問する際に対象OSを書かない場合は質問時点での最新OSとみなします。



508 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 14:12:45 ]
SDK的解釈かよw

509 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:03:45 ]
>>496
ダブルバッファとやらだと
画面全体のサイズに描画するものじゃないの?

510 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:22:08 ]
画面全体のサイズのバッファを用意してるからな

511 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 12:37:57 ]
[Mainウィンドウ]→→→※[TreeViewウィンドウ(Mainのowned)]
     ↓
     [Mainダイアログ(Mainの子)]

※印のTreeViewウィンドウは、CreateWindow()でなければ実現できない
機能を持たせているので、独自にメッセージループをもっています。

ここで、その※印のTreeViewウィンドウを開いたまま Mainウィンドウを
閉じてアプリを終了すると、”ゾンビ状態?”になり、タスクマネージャーに
プロセスが残ります…

どうも PostQuitMessage() が実行されてないようなんですが、
なにが悪いのか、ヒントだけでもお願いいたします。 m(。。)m

512 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 12:51:47 ]
PostQuitMessageで独自のメッセージループは抜けるけど、
元のメッセージループはそのまま走っているからじゃないかな
もう一回PostQuitMessageしてみたらどうだろう

513 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 14:27:28 ]
> CreateWindow()でなければ実現できない機能
意味不明
たぶんTreeViewをサブクラスすれば済む話のような気がする

514 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 17:25:29 ]
設計思想が悪い

515 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 17:42:35 ]
頭が悪い

516 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 17:50:04 ]
>CreateWindow()でなければ実現できない
>機能を持たせているので、独自にメッセージループをもっています。

CreateWindowの利用と、独自にメッセージループを持つという内容が繋がらない。
この独自というのがTreeViewを完全に再実装しているのか、
メッセージループの中でさらにメッセージループを使っているということなのか、
別スレッドで回しているということなのか全く伝わらない。


517 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:09:18 ]
全く伝わらない奴がなぜレスするの?



518 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:14:47 ]
独自のモーダルループを用意してるんだろ。
そんな事も分からない連中は黙っとけ。

519 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:26:01 ]
俺も全く意味が分からなくてレスしなかったけど、意味が分からないということも
伝えないとダメだなw
同じスレッドで作成したウインドウなら、普通は全て1つのメッセージループで
処理するものだしね。

別のものを「メッセージループ」と間違って呼んでいるのか、それとも別スレッドなのか、
あるいはPeekMessageでhWndを限定しながら回してるのか。

CreateWindowでなければ実現できない機能というのもよく分からない。
Dialogだとできないって意味なのかな?

>>518
TreeViewウインドウを開いたままMainウインドウを操作できるようだから、
モーダルではないと思う。

520 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:35:30 ]
IEのプロキシ設定を行った場合、
そのアドレス、ポートの情報を
win32api で取得することは可能でしょうか?

521 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:48:57 ]
>>519
モーダルダイアログとモーダルループの違いも分からないの?馬鹿なの?

522 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:54:07 ]
モーダルダイアログとモーダルループが分からない人ってまだ居たのか。
まあ、回答者のレベルが低すぎるのがこのスレ最大の欠点だが。

523 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 18:59:59 ]
どこのスレにも一人ぐらいいるでしょw
ろくに知識無いくせにやたらと回答したがる奴

524 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:39:42 ]
オレオレ

525 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:40:25 ]
エンドレスループですね

526 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:44:29 ]
知識ある人はレスしないで下さい。ウザイだけです。

527 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:17:37 ]
もし、※ループのGetMessageでWM_QUITを拾うと、WM_QUITがMSGキューから消えてる
Mainループでは、WM_QUITが拾えないので無限ループ



528 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:19:26 ]
正しくは、WM_QUITは、内部フラグをONにしているだけとか書くなよ>知識あるやつ

529 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:02:55 ]
>>512で答え出てるのにここまで引っ張るあたりさすがだな
しかも知識無い馬鹿まで混じってるしw

530 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:07:57 ]
Win32 の基礎知識を理解してない馬鹿の回答は禁止します。

531 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:26:29 ]
>>520
InternetQueryOption

532 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:31:15 ]
>>529
>>512の現象分析は正しいが、解決法は間違っとる。

533 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:58:45 ]
間違ってないよ
そんな事さえ分からんのか

534 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:00:41 ]
知識無い馬鹿はスルーしろ。

535 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:03:11 ]
>>532
間違っているというのなら、何が間違っていて正解は何なのかを提示しろ。
煽るだけのどこかの馬鹿と一緒になるぞ。

536 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:17:45 ]
どこかの馬鹿(笑)

お前だよwww

537 名前:デフォルトの名無しさん [2010/01/14(木) 23:21:34 ]
msdnに検索機能が無いとかほざいた馬鹿?



538 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:23:44 ]
正解

539 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:31:48 ]
どうでもいい

540 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:35:19 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

541 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:48:14 ]
許しを請うなら二度と来るな。

542 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:53:34 ]
許しを請いに来い

543 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:57:32 ]
ねえ、Win32の知識に乏しいのになぜスレに居るの?
正直に答えてよ。

544 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:59:58 ]
質問スレだからだよ

545 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:04:53 ]
理由になってない。
少なくとも回答する立場では無いだろう。

546 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:05:44 ]
元の質問者ほったらかしで雑談するのもうやめようぜ。

547 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:07:44 ]
質問は>>512で解決してるだろ



548 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:09:31 ]
現時点で未解決の質問は>>543だけです
当事者は早く答えなさい

549 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:15:07 ]
>>535
> 質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。

550 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:24:42 ]
>>549
MSDNに検索機能なんてないだろ
いったいどれだけホラ吹けば気が済むんだ?

551 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:42:05 ]
ホント、学生レベルの回答者が多いな。

552 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:15:44 ]
どこかの馬鹿という言葉にすぐさま反応しているのは、
自分にその認識があるのを認めてしまったことを示すわけだけどね。

553 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:14:08 ]
ちょっとAPIの質問と違うのですが、CreateWindowでコマンドボタンを作成した場合
戻り値のHWNDはどこに置くのがスタンダードなんでしょうか?

メッセージで呼び出されるウィンドウプロシージャ内にstatic宣言かグローバル宣言かに
ナルト思うのですが。

554 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:02:43 ]
GWL_USERDATAにオク。

555 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:12:14 ]
ウインドウ自体をclassで管理して、親ウインドウのメンバ内に置く。

556 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:52:58 ]
ボタンくらいならID振って、戻り値は関数の成否判定のみ

557 名前:デフォルトの名無しさん [2010/01/15(金) 13:55:41 ]
レジストリファイル(.reg)を
プログラム上から読込み、レジストリ登録を行いたいのですが、
間単に行えるAPIはないでしょうか?

また、逆に指定したレジストリのキー配下を.reg形式で出力するAPIも
あれば教えていただきたいです。




558 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 14:01:08 ]
regedit使え

559 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 14:02:35 ]
むしろreg.exe使え

560 名前:557 [2010/01/15(金) 14:08:25 ]
>>558,559

外部のモジュールが使えないので、悩んでいます。
APIがなければ、自作で.regファイルを読み込み、 1個ずつ登録して行きます。

561 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 14:09:58 ]
外部て、OSに標準で備わってるファイルだろ

562 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 14:16:47 ]
APIだってある意味外部のモジュールでしょうが

563 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 14:50:11 ]
557は頭が悪いからその辺理解できないのね

564 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:18:47 ]
>>557
そういう用途は恐らくVB-Scriptを使うのが最善ではないかと

565 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 15:38:38 ]
"VB-Script"?

566 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:02:46 ]
VBScriptなりJavaScriptなり場合によってはPerlScriptを
使ってWSHでも使えば?Windows Scripting Host.
メモ帳でコード作ってファイルのアイコン、マウスク
リック一発で一発起動。
Windowx9xの頃からあるんでそこそこ安定しているし
最近のマシンだったら十分早い。
Windows power shellのほうが良いという人はそっち
使えばいいし...
C++でレジストリ環境のAPIを使うやり方は恐らく
とりあえずは知らなくてもよいことまで
いちいち勉強しなければならなくなる可能性大

567 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:24:51 ]
そんな事しなくてもバッチファイルでregコマンドを呼べばいいじゃん



568 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:29:58 ]
>>566はreg.exeで.regファイルが読み書き出来るのを知らないんでしょ

569 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:40:22 ]
プロシージャ呼び出しじゃなきゃいや。という理由であったとしても、
もRPCの仕組み知っていれば意味無い事がわかるし。

570 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:47:40 ]
もRPCって何?

571 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:32:15 ]
>>566
MSDNとか調べると一番嫌なのは、結果的にも取り敢えず知らなくて
も良かったことまで調べなければならなくなること。
これは辛いよね。確かに。フラストレーションが滅茶苦茶溜まる。
>>568
Wsh知ってるんだったらReg.exeも当然知ってるだろうし
当然バッチも使った上でのWsh推奨だろ
VBScriptは型が無いようであるVariantが標準型だからC++プログラマ
にとってはJavaScriptよりか使いやすいんじゃないかと

572 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:57:54 ]
レジストリキーとファイル名を引数にコマンドを実行するだけのスクリプトに型なんて関係無いでしょうが
知らないのに無理にレスしなくていいよ

573 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:59:55 ]
とりあえず>>566=>>571が頭悪いのは分かった

574 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:12:22 ]
>>571
君はプログラマに向いてない
転職をおすすめする

575 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:31:40 ]
そもそもJavaScriptとJScriptを混同している時点で終わってる。

576 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:39:56 ]
MSDNとか調べると一番嫌なのは、
Dr.GUIとかいうアホなキャラが
うだうだ御託並べた駄文読まされた挙句
それが探してるものと全然関係ない話題だと気付いたとき

577 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:51:49 ]
いや、それはもっと早い段階で気付くべき



578 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:00:54 ]
検索が下手な気がする
Win32内に絞り込んでおけばその手のゴミは拾わないはず

579 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:29:48 ]
切削されたgoogle経由の検索が好まれる所以

580 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:43:49 ]
MSDN検索でWin32&COMを指定した方がいい
google経由はノイズが多すぎてうざい

581 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:45:36 ]
っつーか Dr.GUY ってなんであんなにおしゃべりなんだ?
そもそもあんなもの MSDN に要らんだろ?

582 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:52:05 ]
Dr.GUYってのはわざとじゃなくて素で間違えたな

583 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:56:34 ]
検索できない馬鹿の言い訳は見苦しいので終了

584 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:02:16 ]
大して知識も無いド素人がうだうだ御託並べた駄レスの方が迷惑です

585 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:23:50 ]
馬鹿は使うな!

以上!

586 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:35:33 ]
馬鹿は使うな!

以上!

587 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:44:09 ]
馬鹿は使うな!

以上!



588 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:06:34 ]
馬鹿は使うな!

以上!

589 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:10:56 ]
いくら大事なことだからって4回も言わなくていい

590 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:16:21 ]
いくら言ったところで当の本人が自覚してないから無駄

591 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:42:19 ]
>馬鹿は使うな!
>以上!

うわっ誰も使えねえ!!!

592 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:50:06 ]
馬鹿以外は使えますが、何か?

593 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:57:17 ]
そうだね。
使えないのはお前らだけだね。

594 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:04:59 ]
ホント、役に立たんスレだな w

学生さんは回答やめたら?

595 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:29:21 ]
と、このスレ一番の馬鹿が申しております

596 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:36:25 ]
今時JScriptってもしかしてJavaをJ++だと未だに言う人?

597 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:37:16 ]
さあ、必ず反論しないと気が済まない馬鹿が来ましたよ〜



598 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:38:53 ]
>>566=>>571=>>596
こいつが消えればスレは平和になる

599 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:42:23 ]
ん?鋭い指摘でもしたつもり?


600 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:42:53 ]
今時っていうかWindows7でも.jsの説明にJScriptと書いてあるんですが(笑)
Windowsが存在しない時代から来た未来人ですか?

601 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:45:44 ]
・モーダルループを知らない
・reg.exeを知らない
・JScriptを知らない
・MSDNの検索機能を知らない

602 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:48:44 ]
ここまで恥を晒しながらも平然と書き込みできるのが信じられない

603 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:49:48 ]
人工知能だろ

604 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:51:19 ]
人工”知能”を名乗るな

605 名前:596 mailto:sage [2010/01/16(土) 00:52:45 ]
自己解決しました

606 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 01:53:59 ]
>>605
どうやって解決したか教えて。

607 名前:596 mailto:sage [2010/01/16(土) 02:04:16 ]
歴史の教科書を読み返しました
ちなみに私は2077年から来ました



608 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 02:23:59 ]
>>607
歴史の教科書にJScriptが載ってるのですか?

609 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 02:46:18 ]
Webの歴史書に決まってるだろ

610 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 02:50:43 ]
古墳から出土しました

611 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 06:10:38 ]
APIでレジストリ扱うんだったら、仮想PCにWin2000とか
インストールしてそこで慣れてから。開発マシンとは言え
リアルPCではやらんほうがいい。
reg.exe+バッチだと文字列のきめ細かい操作が絡むとたちまち
面倒になってくる。第一.regファイルもMS内部仕様のファイル
なんで扱わないで済ませられるんだったらそうしたほうがいい。
WSHを使う場合、J(ava)Script/VBScriptの選択があるがどち
らでもお好きなほうで

612 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 07:52:02 ]
構って貰いたくてわざとやってるとしか思えない。
以後の発言はコテを強制します。

613 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 07:58:26 ]
リア小じゃねぇの?w

614 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:10:18 ]
変なのが住み着いちゃったね

615 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:15:04 ]
>J(ava)Script/VBScript
間違いを間違いとして認められない気性がよく表れている。
さらに全然関係ない話を挟んでごまかそうとするところとか。

616 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:32:19 ]
WScript.ShellオブジェクトとかをC++で操作すればいいんじゃね?
あ、APIの話じゃないから関係ねぇかw

617 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:46:57 ]
そもそも必要性が皆無



618 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:06:29 ]
プログラムから.regファイルに関わろうとする必要性がね

619 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:09:36 ]
regedit.exe/reg.exe/regedit2.exe等専用の形式が.regなんで
その仕様に依存したプログラムを作ろうとしているのにそもそも
問題がある。APIに依存したプログラムすら問題視されているこの
ご時勢に。

620 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:33:11 ]
解決方法は以下の三つ

.regを使用せず独自の形式を使う
外部プログラムから.regを利用する
.regの構文を独自のプログラムで読み出す

で、質問の条件を満たすのは3つめのみ
以上が結論

で、wshとかテストを仮想環境でやるとか、脱線も甚だしい。

621 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:36:41 ]
619はMVPだろ
質問者の狭い世界ではそんな要求されてねぇのに

622 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:05:58 ]
3つめの結論を取る限りWsh.Shell オブジェクトを
使わぬ手はないね。これをする際にScriptでシミュレート
することが出来るのが嬉しいね。
レジストリをReg系APIで弄るPGのテストをリアルマシン
でするのはレジストリ飛ばして再インストールしました。
一部業務データが消えました、ごめんなさいで許される趣味で
やってる奴らだろ。Windowsプログラマなら常識以前じゃん

623 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:09:39 ]
外部プログラムですら駄目だと言っている質問者にwshを利用させようとする馬鹿さ加減は、
さすがにJScriptとJavaScriptを混同するだけのことはある。

624 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:15:38 ]
RegSaveKey()、RegLoadAppKey() って違うの?

625 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:21:18 ]
.htaに書かれているのはJScript JavaScriptどっち?

626 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:27:08 ]
Wsh.Shellと[wc]script.exeを混同しているおバカさんですか?

627 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:35:14 ]
WScript.ShellとWsh.exeを混同している人よりかマシだろ



628 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 12:21:38 ]
いい加減コテつけろよキチガイ

629 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 12:54:04 ]
APIの枠組みだけで閉じてしまったら
(Win32) APIプログラミングはできないだろ
COMとかRDBとかを同時並行に勉強しないとな

630 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 13:13:34 ]
Win32 APIは枠組みじゃないだろ、そもそもからしてよキチガイ

631 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 13:26:53 ]
だからコテつけろ

632 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 13:33:49 ]
コテつけるのはキチガイ

633 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 13:49:27 ]
既に基地外だからコテつけろ

634 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 13:51:48 ]
さっさとコテつけろよキチガイ

635 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 14:02:42 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀

636 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:55:10 ]
メッセージループと他の処理をスレッド
それぞれ別のスレッドで動かしているんだけど
他の処理スレッドからアプリを終了させるには
単純にWM_DESTROYを送るだけでいいの?

637 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 18:25:46 ]
WM_DESTROYを送るというのが大間違い



638 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 18:31:08 ]
>>636
スレッドを全て終了させる必要があるよ

ちなみにメッセージループを抜けるには
メッセージループを実行しているスレッド内でPostQuitMessage関数を呼べばいい
大抵はウィンドウ破棄のタイミングでアプリケーションを終了させるので
ウィンドウ破棄時に送られるWM_DESTROY内でPostQuitMessage関数を呼ぶ
だからWM_DESTROYを送ると終了できるように見える

639 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 19:46:39 ]
練習でエディタ作ってるんですが
IMEの変換中の文字列って小さく補正?されるんでしょうか?
同じサイズの同じフォントにしたいんですが
こんな感じで2パターン試したところ変換中の文字のほうが小さくなります

LOGFONT logfont;
#if 0
HFONT default_guifont = (HFONT)::GetStockObject(DEFAULT_GUI_FONT);
::GetObjectA(default_guifont,sizeof(logfont),&logfont);
#else
::SystemParametersInfo( SPI_GETICONTITLELOGFONT,sizeof(LOGFONT),&logfont,0);
#endif
::ImmSetCompositionFont(ime,&logfont);

640 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:44:30 ]
>>638
他のスレッドを終わらせるのってどうやるの?
TerminateThreadだとメモリリーク起きるんでしょ?

641 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:49:03 ]
フラグでも何でも使ってリターンさせりゃいいだろ

642 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:51:07 ]
ここはAPIスレなのでAPI使って回答しなさい

643 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:51:36 ]
あ”?

644 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 22:54:56 ]
あぴ♥

645 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:05:34 ]
>>637
じゃあWM_CLOSEは?

646 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:55:08 ]
WM_CREATEやWM_DESTROYはOSが送ってくるメッセージであって
プログラマが送るメッセージではない

647 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 01:02:34 ]
頭が固いと640みたいな発想になるのかな



648 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 04:27:25 ]
JScriptとJavaScript
昔はWSH専用コードがJScript
HTMLに埋め込まれているのがJavaScriptで
ほぼ通った。
しかし.NETが出て10年以上経つた現在
JScriptとはほぼJScript.NETのことを指す
でいいんじゃね?(つまりWSH専用コード
もJavaScriptと統一。同じ文法なんで)

649 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 04:58:58 ]
コテつけろや キチガイ

650 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:42:55 ]
>>647
頭が固いのではなくプリエンプティブマルチタスクOSに関する基礎知識がないものと思われる

651 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:49:12 ]
>TerminateThreadを不用意に使うとメモリリークが起こったりする
原因になる

「夕焼けが出ると明日は快晴」
と同じ信頼レベルで概ね正しいが、100%正しいわけではない。

脳軟化症気味だから、ちょっとコ難しい横文字が出ると
100%正しいことなんだと、右辺と左辺を等式で
結んでしまうんじゃ?

652 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 08:04:50 ]
このツンデレめ。下3行が「べ、べつにあなたの〜」に対応するわけだな。

653 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:30:41 ]
HTMLに埋め込まれてるのもIEの場合JScript

654 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:34:37 ]
msdn.microsoft.com/en-us/library/d1et7k7c(VS.85).aspx

を見れば、MSのECMAScript実装が「JScript」である、ってことぐらいわかると思うんだけどな・・・。
当然、ブラウザだからどう、なんてのは関係ない。

655 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:51:14 ]
関係はあるだろ
MSの実装がJScriptならMSのブラウザならJScriptということになる

656 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:00:07 ]
なんでIEでは<script lang='JavaScript'>なんてHTML
読むと一見正常動作するように見えて実は...
というデマが流れたりしかねないんでさ
そういう些細な話はもうやめたら?

657 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:02:53 ]
文脈の読めない馬鹿乙。



658 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:10:34 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀


659 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:24:09 ]
JScriptとJScript.NETは違うんだから、後者を指したいなら
JScript.NETと明示的に言うか、そうでなければ、誤解の起こらない
それなりの文脈のもとでJScriptといわなければだめだろう

660 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:25:33 ]
一緒だと考えてるのはMVPくらいだろ?

661 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:28:05 ]
>>640
終了用のEventを用意したり
PostThreadMessageで終了用メッセージを投げたり

662 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:40:56 ]
何?JavaScriptとJScript.NETが違うって?
常識じゃん。それって

663 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:43:10 ]
JavaScriptとJScriptも違うのは常識だけどな

664 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:10:53 ]
SpiderMonkeyもV8もJavaScriptとは違うと言えるな。

665 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:12:58 ]
SpiderMonkeyはJavaScriptだけどな。

666 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:24:06 ]
JavaScriptは言語仕様であり、かつその実装のこと
ECMAScriptとはJavaScriptやJScript等の言語を共通化するために作られた言語仕様
SpiderMonkeyはJavaScriptの実装のコード名
JScriptはECMAScript互換の言語仕様及び実装のこと

まとめると

SpiderMonkeyはJavaScript
JScriptはJavaScriptではない
ECMAScriptはJScriptではないが、JScriptはECMAScriptの一種
ECMAScriptはJavaScriptではないが、JavaScriptはECMAScriptの一種

667 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:29:41 ]
  ▄▄      ▄▄▄     █  ▄█
▄██▄▄   ▄▄▄▄▄  ▀▀▀▀▀▀█▄▄▄▄▄  █
▄█▄▄▄▄  ▀   █   ▀▀▀▀▀▀  █    █
 █▄         █   ▀▀▀▀ ▀▀▀█▀▀▀ █
  █▄  █    ▄█   █▀▀█    █    █▄
   ▀▀▀   ▀▀▀    ▀▀▀▀    ▀     ▀▀
    ▄▄▄▄▄▄      ▄▄▄
 ▀▀▀▀ █▀▀ ▀▀▀▀▀█▀    █
     █▀        █    ▀▀█▀      ▀▄
     █         █▀▀▀   █   █▄   ▀
     █▄▄▄      █  ▄▄▄      ▀▀
               ▀    ▀▀▀




668 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:30:19 ]
APIと何の関係があるまとめなんだ?>>MVP

669 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:54:24 ]
バージョンが違うだけ

670 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:03:36 ]
OpenProcessで開いたプロセスの処理速度を2倍、3倍などの任意の速度へ変えたいのですが
何かそれっぽいAPIがありましたら教えてください。

671 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:14:26 ]
処理速度?優先度の間違いだよな…?
優先度ならSetPriorityClassとか
CreateToolhelp32Snapshotでスレッド列挙してからSetThreadPriorityとか…

CreateToolhelp32Snapshotは今は別な方法あったような気がする
あったはず
覚えてないけど

672 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:27:03 ]
いや優先度じゃなくて、よく処理速度です。
フリーのソフトを例に出すと「Ragud Mezegis」でやっているような処理です

673 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:41:55 ]
dependency walkerでRagud MezegisとDLLを見た感じでは
タイマーAPIのフックしてるだけみたいだ

SetWindowsHookEx辺りで対象プロセスに侵入して
ImageDirectoryEntryToData辺りでインポートアドレステーブルを探して
VirtualProtectで書き換え可能にして
参照アドレス書き換えればいい

674 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 02:43:41 ]
なんか難しそうですがありがとうございました

675 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/18(月) 03:50:54 ]
ファイル→プロパティ→セキュリティで表示される、 user のアクセス許可を許可、あるいは拒否
をプログラムから変更するにはどうすればよいのでしょうか?

環境は Visual C++ 2005, Windows XP です

676 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:03:15 ]
aclSetEntriesInAcl 既存のACL(アクセス制御リスト)に新しいアクセス制御情報、
または新しい監査制御情報を結合することで新しいACLを作成


677 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:05:59 ]
>>675
つ ttp://www.geocities.jp/rasuxo/win32.html




678 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:18:31 ]
昼間は糞みたいなレスしかしないくせに
夜間は頑張るじゃないか君達

679 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 04:34:37 ]
朝ですが

680 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/01/18(月) 05:13:39 ]
>>676-677
ありがとう!
挑戦してみます

681 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:11:45 ]
>>641
>>661
そのスレッドでメッセージループみたいな
ブロッキング関数をwhileで回してた場合はどうするの?

682 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:29:03 ]
ブロックしない方法にしたらいいじゃないか

683 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 01:31:41 ]
何がブロックしてるかによって解決方法は違うんじゃね。

GetMessageだったらPostすればいいし、
イベントオブジェクトなら持ってる奴が所有権放せばいい。
ブロッキング関数なら非ブロッキング関数使うなり。

万能解を求めるから強引になるんじゃないの?
頭やわらかく行こうぜ。

684 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 02:07:31 ]
standby listに無理やり読み込ませるAPIみたいなものってないの?

685 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 02:44:41 ]
無いね。

686 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:21:42 ]
エディットやリストボックスを画面上から消すにはどうすればいいんだ?
DestroyWindowてのを試したが何も起きなかった

687 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:55:04 ]
>>686
エディットやリストボックスのウィンドウハンドルが合っているか確認する。
エディットやリストボックスがDestroyWindowを呼び出すスレッドに属しているか確認する。



688 名前:デフォルトの名無しさん [2010/01/19(火) 21:30:27 ]
>エディットやリストボックスがDestroyWindowを呼び出すスレッドに属しているか確認する。

どういうこと?コントロールを生成したスレッドじゃないと消せないってことなの?

689 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:54:05 ]
別のスレッドで作成したウィンドウを DestroyWindow 関数で破棄することはできません。

690 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 09:09:42 ]
ウィンドウのサイズ変更で、
縮小できるサイズを制限する方法教えてください

691 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 09:45:30 ]
GETMINMAXINFO

692 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 20:01:14 ]
CreateWindow関数をでテキストボックスを作成し
SetWindowTextでボックスに文字を入れたいのですが
ボックス内をクリックしないとSetWindowTextで入れた文字が画面に描画されません
InvalidateRect関数で再描画をしてみたのですがやはり反映されないようです・・・
どのようにすれば、テキストボックス内に文字をすぐ描画することができますか?

693 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 21:14:49 ]
>>692
SetWindowTextだけで反映するよ

static HWND hEdit;//or グローバルでHWND hEdit;
・・・
hEdit = CreateWindow... 
・・・
SetWindowText(hEdit,".....");
確認してみて。

694 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 21:38:30 ]
>>693
ちょっとやってみます。
ありがとうございます。

695 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 22:49:21 ]
キーボードで左右上下に何かを移動させるようなゲームを作りたいんだけど
キー入力がある度に背景のマップも再描画しないとならないの?

696 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 22:50:01 ]
無効じゃない領域は再描画しなくていいよ

697 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:05:35 ]
スクロールするなら移動して背景について新たに表示が必要になった部分だけ描画する



698 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:27:13 ]
IMEパッドみたいにマウスで文字を書くプログラムを作りたいんだけど
MouseMoveと何を使えばいいですか?
マウスで直線を描くプログラムならできるのですが・・・

699 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:31:45 ]
>>698
直線で曲線を近似すればいいと思うよ。

700 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 23:54:23 ]
>>699
マウスポインタの始点と終点をLineTo関数で繋ぐことしかできないんで・・・
どうすれば曲線の近似をかけますか?

701 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:04:42 ]
>>700
俺とて素人だから大きなことは言えないが
たとえば0.1秒ごとに点を取ってつなぐとか。

702 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:06:54 ]
試しにさぁ
MouseMoveが来るたびにx,yにSetPixelしてごらんよ

点が集まれば線になることは分かるだろ
点をでかくするのもいいだろう

703 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:11:29 ]
本に書いてあった方法だが、>>702のようにすると飛び飛びの点々になるだけだから、
MouseMoveでLineToを呼べばちゃんと繋がるとのこと

704 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 00:12:00 ]
GDI+のGraphics::DrawCurveならスプラインが描画できるな。

705 名前:698 mailto:sage [2010/01/22(金) 00:45:09 ]
timer使ったりしてるんですけどなかなかうまくいきません・・・
けど、いろいろ試そうと思います。
みなさん、ありがとうございます。

706 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 01:43:50 ]
case WM_TIMER
pt.x=LOWORD(lParam);
pt.y=HIWORD(lParam);

ってできないんだっけ?

707 名前:698 mailto:sage [2010/01/22(金) 02:42:09 ]
あ、linetoを2回使ったらできました!
皆さんのおかげです。
ありがとうございました。



708 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 03:19:24 ]
マウスで曲線描く場合
一般的には始点制御点終点の3点からベジエ曲線を描くと比較的簡単
ja.wikipedia.org/wiki/%E3%83%99%E3%82%B8%E3%82%A7%E6%9B%B2%E7%B7%9A

709 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 03:45:56 ]
>>706
LPARAMは常にマウス座標が入ってんのか
面白いw



710 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:04:37 ]
GetMessagePosとかなんとか

711 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 21:52:11 ]
TRUEって打とうと思ったのにTERUってなっててワロタんですがどうしたらいいですか?

712 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 21:58:34 ]
#define TERU TRUE

713 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:02:57 ]
座標xが0〜10yが0〜10
の範囲に線が引かれているかどうか確認するプログラムを作りたいのですが
どうすればいいか思いつきません、誰か知恵を貸してください

714 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:17:54 ]
お前センス無いからもう諦めた方がいい

715 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:37:44 ]
そこをなんとか、頼みます

716 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:06:32 ]
>>715
一度その線を描き
GetPixelの類で(0,0)〜(10,10)までの座標の点色を1個1個確かめるという
バカでもわかる方法があるけど
まともなレスを求めるなら
線にも色々あるのでどんな線なのか
0〜10までの刻み幅はどの程度なのか
端数の処理方法はどうなってるのか
このあたりは最低限欲しいところ。

717 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:25:02 ]
すみません
線はLineTo関数で書く普通の線です。
例えば、100*100ピクセルの正方形内にどんな形でもいいので線が引かれていたら1を出力
線が引かれていなかったら0を出力するみたにしたいです。
説明が下手ですみません。




718 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:37:12 ]
>>717
線数を数える変数でも作って、LineToで線を描くときにカウントするのは駄目なの?
正方形の範囲外にも線が引かれる可能性があるなら、線を描く時にマウスの座標で範囲チェックも実施するとか。

719 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:51:04 ]
>>717
線分&矩形のあたり判定なので
レーザーアリシューティングゲームのソースでも見なさい
速さや精度が必要ないなら
いったん描画してGetPixelで調べるのがいちばん簡単

720 名前:717 mailto:sage [2010/01/23(土) 04:49:14 ]
レスありがとうございます
GetPixcelでやって見ようと思うんですが
RGBの値をうまく取得できません。すべて255,255,255になってしまいます。
下のようにやったのですが、何がいけないのでしょうか?

COLORREF color;

hdc=BeginPaint(hWnd,&ps);
color=RGB(0,0,255);
SetPixel(hdc,10,10,color);
int r=GetRValue(GetPixel(hdc,10,0));
int g=GetGValue(GetPixel(hdc,10,0));
int b=GetBValue(GetPixel(hdc,10,0));
wsprintf(buff,TEXT("%d %d %d"),r,g,b);
MessageBox(NULL,LPWSTR(buff),NULL,MB_OK);


721 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 05:14:33 ]
>>720
10,10 に 0,0,255をセットしつつも
10,0の座標を見てる

722 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 07:02:03 ]
GetPixelが遅いのは.NET通したときだけで、API叩く分には速いの?

723 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 07:13:37 ]
遅い。
一端DIBに転送してからシステムメモリ上で確認した方がいい。

724 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:01:16 ]
出る質問全てが中学生クラスの質問レベルだったり単純な数字のミスだったりで萎える
小学生か?

725 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:14:37 ]
>>7211
すみません、ありがとうございます

>>724
すみません。。

726 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:15:29 ]
最近の小学生は中学生クラスの質問をするのか。
ゆとり教育を止めて正解だったようだな。

727 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:18:01 ]
すまないと思うなら1日は自分で悩めよ低脳



728 名前:デフォルトの名無しさん [2010/01/23(土) 10:38:26 ]
SHAutoCompleteを使わずにコンボボックスで入力補完を行う方法を教えてください。

729 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 10:52:11 ]
>>728
CLSID_AutoCompleteで作ったAutoCompleteオブジェクトをどうこうする。
詳細は以下を参照。
User Interface - Windows Shell - Shell Developer's Guide
- Application Support - Using Autocomplete

730 名前:デフォルトの名無しさん [2010/01/23(土) 11:08:47 ]
>>729
蟻がd

731 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 12:31:17 ]
テーマとかビジュアルスタイルを設定した、ボタン等のコントロールのイメージは、どのようにすれば取得できますか。

732 名前:デフォルトの名無しさん [2010/01/23(土) 12:32:35 ]
レジストリの中で、Explorerのコンテキストメニューを作り出すための
ファイルの「新規作成」メニュー用のキーとその扱い方について教えて
ください、これの言語対応について。

WindowsXpまでは、この「新規作成」されるファイルのファイル名は日本語
バージョンのOSでは確かに日本語の名称になっていました。
たとえば、'.rtf' の場合、rtffile の「新規リッチテキストドキュメント」
でした。

ところが、Vistaですとこれが「Rich Text Document」といった英語名になっていて、
それでもExplorerではメニューは日本語の名称で現れ、かつ新規作成もされていました。
これはWin32APIで日本語に変換できるものか、それともどこかに言語別の対応データが
レジストリにあるのでしょうか?

733 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 13:50:48 ]
>>732
実データは実行ファイルやDLLの文字列リソースに入っていることが多いな。
レジストリにはそのリソースへの参照文字列が入っている。
FriendlyTypeNameとか、ShellNewのItemNameとか。
拡張子に関連付けられた名前なら、AssocQueryStringで取れた気がする。

これ以上は、世界のどこかにいる関連付けマイスターにでも訊いてくれ。
歴史的経緯もあってか複雑怪奇過ぎて、俺も詳しくは知らん。

734 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:19:36 ]
>>732
成功した暁には、是非その操作を一つの関数にまとめ、貴方の謹作Win32APIとしてフリーに公開して下さると一同感激します。

735 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:23:35 ]
名前は
GetNewDocumentDefaultNameWhenNewDocumentOfRightClickContextMenuOfExplorer辺りでしょうか?

736 名前:732 [2010/01/23(土) 14:47:39 ]
>>733
>FriendlyTypeName, ShellNewのItemName, AssocQueryString など

なるほど!そういえばVistaにはこれらのキーがありますね、これらを
取得して調べてみます。ありがとうございました!!


737 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:50:39 ]
どこを見てるのかわからないけど、「@filename,resource」の形式なら、
SHLoadIndirectString() とかで取れるよね。



738 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:57:41 ]
>>734-735
過去ログ見れとか検索しろとかいうよりか
2ch仕様のWin32APIとしてまとめてDLLをどっかの
サイトにソースごと置いておいてくれると有り難いよ
な。確かに。

739 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:00:56 ]
GetPixelより早いの無いの?

740 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:10:10 ]
LONG WINAPI GetPixel2ch( HBITMAP hmembitmap,int x,int y)
C++用にはインポートされておらずマクロで定義されているので
早い。

741 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:43:37 ]
>>739
GetDIBits

742 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:15:26 ]
lineToの幅は何ピクセルか分かりますか?

743 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:17:00 ]
殺すぞ

744 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:19:38 ]
>>742
デバイスコンテキストのペンを取得してGetObjectしてペンのスタイルと幅を見る。
ヒントは出したから後は自分で考えろ。

745 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:25:02 ]
ヒントっていうかまんまだな

746 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 02:42:52 ]
おかげさまでキラーアプリが出来上がりました。
明日、特許申請に行こうと思います

747 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 05:52:45 ]
ノートPCに、USBキーボード指して使ってるんですが
USBキーボードのキーを押しっぱなしにしていても
ノートPCのキーボードが押されてないと判断するのか
WM_KEYDOWNの直後に同じキーのWM_KEYUPが発生してしまうのですが。

アプリで標準の入力とみなすキーボードの選択って
どうやるのか教えて頂ける方いましたら宜しくお願いします。




748 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 05:55:12 ]
WM_KEYDOWN
WM_KEYUP
WM_KEYUP
WM_KEYUP
WM_KEYUP

っていう意味ならオートリピートしてるだけじゃないの?

749 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:15:02 ]
ノートPCに直接ついてるキーボードでAキー押しっぱなしにしても
KEYUPは来ないんですが、USBキーボードでAキー押しっぱなしにすると
押しっぱなしにしてるのにKEYUPが来てしまうんです。

↓のような感じです。
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)){

 if(!GetMessage(&msg,NULL,0,0)){
  break;
 }

 if(msg.message == WM_KEYUP)
 {
  break; ←USBキーボードだとキー押下だけで、引っかかる。
 }


750 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:20:35 ]
>>748
すいません見落としました。
調べてみます。有難うございました。

751 名前:747 mailto:sage [2010/01/24(日) 13:32:40 ]
たびたびすみません。
PCのキーボード長押しの後、離すと
WM_KEYDOWN  このとき"lParam30ビット直前のキー状態" は0
WM_KEYDOWN  このとき"lParam30ビット直前のキー状態" は1
WM_KEYDOWN  このとき"lParam30ビット直前のキー状態" は1
...
WM_KEYUP

となり、自分が想像してるオートリピートの処理となるのですが
USBキーボードだと長押しだけで
WM_KEYDOWN  このとき"lParam30ビット直前のキー状態" は0
WM_KEYUP
WM_KEYDOWN  このとき"lParam30ビット直前のキー状態" は0
WM_KEYUP
WM_KEYDOWN  このとき"lParam30ビット直前のキー状態" は0
WM_KEYUP
...繰り返す

となるようなのですが、
直前のキー状態が0になるので
OSのキーリピートでなく、自動連打?のようなものが働いているのですが
これはキーボードについてるオートリピート機能と
OSのキーリピートは異なるのでしょうか。
これだけをアプリから無効化する手段は何か無いでしょうか。


752 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 13:47:05 ]
自動連打って何よ。
ゲームの連射機能みたいなもん?

753 名前:747 mailto:sage [2010/01/24(日) 14:00:51 ]
キーボードの説明書とやらを見てもリピートみは触れてないし
キーボードのプロパティで、速度を、一番長く遅くしても短く速くしても
似たタイミングで↑のようなことになるんだもの。
きっと下らない原因なんでしょうが。
押下中にKEYUPが起こってもらうわけには絶対いかないので
脳内でこれを自動連打と名付けて対処方法考え中なだけです。

754 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 14:16:50 ]
Bingってみると、チャタリングによる不良とかPS/2->USB変換機絡みで
そういう事が起きることもあるみたいだな。
USBキーボード側が腐ってるって事で良いんじゃね?

755 名前:747 mailto:sage [2010/01/24(日) 15:05:15 ]
>>754
有難うございます。

手動ではありえないくらい短い時間で連続してKEYUP来たら
それは無視する、とかでもう少し粘ってみます。

756 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 15:44:06 ]
Viewを管理するクラスを作っているのですが
フォントってウィンドウごとに設定されるのでしょうか?



757 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:03:26 ]
USBキーボードを違うのに変えても結果はおなじ?



758 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:20:30 ]
キーボードのドライバがなんかやってるんじゃないの?


759 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:27:54 ]
ドライバじゃいと予想してみた。初心者がつくった怪しげな常駐ソフトとか。

760 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 17:26:29 ]
USBキーボードだとそんなことあるのか。
うちでも実験してみるかな?

761 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 19:20:01 ]
>>756
CS_OWNDCでウィンドウ毎にDCを持たせればそういう事も出来るが、
そうでない場合は設定とかは無い。
WM_GET/SETFONTも実装側で対応しないと何の効果も無かったはずだし。

762 名前:747 mailto:sage [2010/01/24(日) 20:12:57 ]
>>757
見直したところ、 ノートPCに付けてたのは、PS2 キーボードを
USB PS2変換ケーブル「Arvel AUO1PS」につないで、 USBに指して使ってました。

別にUSBキーボードと、別のPS2キーボード、
WindowsXPマシン、WindowsVistaマシン
が丁度あったのでテストしてみました。

開発環境(Windows Vista)
+USBキーボード = 未発生。
+PS2キーボードA + 変換ケーブル = 発生。
+PS2キーボードB + 変換ケーブル = 発生。

WindowsXP マシン
+USBキーボード = 未発生。
+PS2キーボードA + 変換ケーブル = 発生。
+PS2キーボードB + 変換ケーブル = 発生。

Windows Vista マシン
+USBキーボード = 未発生。
+PS2キーボードA + 変換ケーブル = 発生。
+PS2キーボードB + 変換ケーブル = 発生。

763 名前:747 mailto:sage [2010/01/24(日) 20:15:10 ]
>>754

>>PS/2->USB変換機絡みで そういう事が起きることもあるみたい

自分はソースを見つけられなかったので
確証無く、単に自分の変換ケーブルが壊れているだけかもですが、
自分で勝手に作ってるソフトなので、これを信じ、
対処の処理を追加したいと思います。
的確な、ご指摘有難うございました。

764 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 04:01:24 ]
二次元配列の中身をメッセージボックスで並べて表示したいのですがどうすればいいですか?

765 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 04:06:02 ]
どうすればって…空白と\n(改行)で繋いで表示するとかしたらいいんじゃないでしょうか

766 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 10:39:16 ]
可変幅フォントでカラムがずれるという事じゃないかな。
MessageBoxで揃える方法があるなら俺も知りたい。

767 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 12:07:13 ]
>>766
::MessageBox()のAPIフックして固定幅フォントをセットし直せばよいのではなかろうか



768 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 12:38:07 ]
MessageBoxをCreateWindowしたいってことじゃないの?

769 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 13:52:47 ]
そこまでやるならダイアログ作るんじゃないかw

770 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 14:17:11 ]
メッセージボックスを一度に複数表示したいということかもしれない

771 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:03:15 ]
結局よく分からないな…

772 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:32:29 ]
CreateStatusWindowで作るステータスバーに右から左に流れるメッセージを
表示するにはどうすればいい?


773 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:41:35 ]
オーナードロー。

774 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:41:53 ]
タイマーか何かで一文字ずつずらして表示すればいいんでは
1回目ABCDE
2回目BCDE
3回目CDE
.
.
6回目
7回目    A

775 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 16:48:50 ]
>>774
そういう方向で実装するしかないんですか・・・めんどくさいな

776 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:00:20 ]
ダイアログのクライアント領域にエディット・ボックスを縦に並べ、
最上部のウィンドウを開け閉めしてダイアログの高さを変更しようと
してますが、うまくいきません。

┌[ダイアログ]──────────┐
│┌─────────────┐│
││       Edit Box1       ││
││                   ││
│└─────────────┘│
│┌─────────────┐│
││       Edit Box2       ││
││                   ││
│└─────────────┘│
│┌─────────────┐│
││       Edit Box3       ││
││                   ││
│└─────────────┘│
└───────────────┘

  ShowWindow(1,SW_HIDE);
  MoveWindow(2);
  MoveWindow(3);
  MoveWindow(ダイアログ);

では、ダイアログ・ウィンドウ内が真っ白になり、マウスでサイズ変更すると
1が消えているだけです。

こういう動作は、どんな手順ならよいのでしょ〜か?

777 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:19:03 ]
ちゃんとRepaintフラグ送ってんですか?



778 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:21:35 ]
BeginDeferWindowPos

779 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:38:25 ]
>>775
せいぜい1時間くらいだよ
一回書けば使いまわし出来るだろ

780 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:40:19 ]
では一時間後に >>779 がうpしてくれるのを楽しみに待つとしよう

781 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:13:06 ]
……。

782 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:36:00 ]
wktk

783 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:47:02 ]
779ではないが。なんか書けたぞ。通るかも解らんが(笑)

static int nNowPos = 0; static DWORD dwLastTime = 0;
DWORD dwWork; char bufWork[256]; char bufHyouziString[256];

strcpy(bufWork,"ABCDEが流れると嬉しいな。 ");

//前回より1秒経過してたら。更新
dwWork = timeGetTime();
if((dwLastTime + 1000) < dwWork){
//最後に更新した時間を更新
dwLastTime = dwWork;
//今の文字が全角なら、次に進めるカウントは+2
if(bufWork[nNowPos] & 0x80 == 1){
nNowPos +=2;
}
else{
nNowPos ++;
}

//最後まできてたらまた最初
nNowPos = nNowPos % strlen(bufWork);
}
//進んだアドレスを先頭にして、文字列コピー
strcpy(bufHyouziString,bufWork[nNowPos]);

//ここまでで、bufHyouziString に来るんではないかね多分・・・


784 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:49:17 ]
いろいろ間違えてるな。0x80 との比較結果は != 0だった。
まぁどうでもよいか。

785 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 01:25:17 ]
とりあえず出来た
もうすぐうp

786 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 02:02:44 ]
おれなら
char orig[]="ABCDEが流れると嬉しいな。 ";
なら
char tmpbase[]="\t\tABCDEが流れると嬉しいな。 ______________________";//_は半角スペースでステータスバーが埋まるだけの数
を用意して
定期的にtmpworkからtmpbaseをコピーして適切な位置に\0挿入する

787 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 11:42:26 ]
ステータスバーが埋まる文字数。が常に固定であるかの
考慮忘れて発現してた。
GUIで食ってる人はこういう時の定石とかあるのかな。



788 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 12:28:58 ]
そういうUIは嫌われるから作らないのが定石。

789 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 12:58:19 ]
ステータスバーに文字が流れるのって昔見たなー、と思ったが
あれはブラウザにjavascriptで書いてたんだったか

790 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 13:07:01 ]
ずーーーっと見てないと何が書いてあるのかわからないのは時間の無駄


791 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 14:44:10 ]
SB_SETPARTS にも対応してくだされ

792 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:00:16 ]
>>787
こんなクソUI作らないのが定石です

793 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:15:08 ]
文字流す用のウィンドウ作ってそれをステータスバーの上に乗せればよくね

794 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 19:59:26 ]
作りたいもの作ればいいのよ
やる気だけが自分を向上させてくれる

795 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:33:34 ]
同意

796 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:34:44 ]


797 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:45:42 ]
文字列が与えられたときにフォント(等幅・プロポーショナルとも)考慮して
その文字列の画面上での表示幅を教えてくれるような関数ってWin32APIになかったっけ?



798 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 21:53:14 ]
GetTextExtentPoint32

799 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:11:25 ]
おおきに

800 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 22:16:25 ]
>>791
SB_GETPARTS でパート数と座標が判るので書きたい場所に DrawText 汁
この方法だと GetTextExtentPoint32 使わなくても良くなると思う

801 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 07:03:47 ]
ブラウザと同じように
ツールバーの右に何かの進行状況を
表すゲージを表示させるにはどうしたらいいの?

802 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 07:05:38 ]
ブラウザと同じようにやれば良い

803 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 08:06:24 ]
ブラウザはどうやってるの?

804 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 08:23:41 ]
そのブラウザ使ってググレカス

805 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 15:19:58 ]
ブラウザのツールバーの右に進行状況を表すゲージってでたっけ?
ステータスバーの右のこと?

806 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 16:56:00 ]
脳内変換しとけよ

807 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 16:57:57 ]
はいや



808 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:07:40 ]
どのブラウザだろう

809 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 18:08:19 ]
うちのブラウザです

810 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 19:33:04 ]
うちのブラウジャーですごめんなさい

811 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 20:52:20 ]
うちの妹のです

812 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 00:35:58 ]
そのブラウザい

813 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:13:12 ]
ぶらぶら

814 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 12:23:14 ]
Rich じゃない Edit control で、文字列の特定個所をハイライト表示させる
ことはできるのでしょうか??

815 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 13:42:53 ]


816 名前:814 mailto:sage [2010/01/28(木) 14:12:16 ]
EM_POSFROMCHAR で取得(すればよいのか?)した領域の

・バックカラーを変更するのは、どうすればよいでしょうか? (・д・)


817 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:23:28 ]
当該領域を選択すればよいと思われますが



818 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:36:29 ]
ということは、領域を選択する前に

(1)SetBkColor(黄色)
(2)領域を選択
(3)SetBkColor(オリジナル色)

とすれば良いのですかね?

819 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:43:26 ]
黄色って何? どこから出てきた?

820 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:46:26 ]
つまり、選択した領域のバックグランドカラーを任意に変えたいのです。

821 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:46:32 ]
ハイライト表示 が いつのまにか指定色背景のブロック塗り にカワットル

822 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 14:59:19 ]
素直に Rich Edit おすすめ

823 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 03:51:35 ]
WM_PAINTでBitBltしてビットマップ表示してるとき
そのビットマップの上でボタンとか置いてると
再描画したときにボタン消えるのはどうすればいいの?

多分上書きされて見えなくなってるんだと思うんだけど

824 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 03:57:01 ]
クリッピング

825 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 08:28:47 ]
ボタンを再描画させる。

826 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 10:52:30 ]
WS_CLIPCHILDREN

827 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:08:34 ]
32 bit プロセス内で DuplicateHandle(..., process_handle_of_64bit_process, &target_handle, ...) して
64 bit プロセスに target_handle をプロセス間通信で渡したんだけど、そのまま使って問題無い?

16bit → 32bit: WOWHandle32 で変換しなさい。
32bit → 64bit: WOWHandle64 …らしきものは見つけられなかった。

実は HANDLE は下位 32 bit に収まっていて、上位 bit を 0 で埋めればおkとか?




828 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:06:04 ]
32bitのハンドルを64bitのプロセスでDuplicateHandleすれば、
64bitプロセスで使えるハンドルが得られる、ような気がする。
あまり具体的に書かれていないので、実際に試さないと分からないが。

829 名前:827 mailto:sage [2010/01/29(金) 21:22:49 ]
> 32bitのハンドルを64bitのプロセスでDuplicateHandleすれば、
> 64bitプロセスで使えるハンドルが得られる、ような気がする。
つまりこうですか?

--code_for_x64.cpp--
DWORD handle_32; // sizeof(DWORD) == 4
HANDLE handle_64; // sizeof(HANDLE) == 8
ReadFile(pipe等, &handle_32, sizeof(DWORD), ...);
DuplicateHandle(static_cast<HANDLE>(handle_32), process_handle_of_32bit_process, &handle_64, GetCurrentProcess(), ...);

> あまり具体的に書かれていないので、実際に試さないと分からないが。
実際のところ、HANDLE は 32bit で表現できない値にはならなそうだけど…。

やはり具体的な記述が欲しいですね。
MSDN に x86 x64 共存 FAQ とかないかな。


830 名前:デフォルトの名無しさん [2010/01/29(金) 21:52:09 ]
ファイルの更新時間を変更したくてSetFileTime関数を使おうと考えています。
ただ、この関数を使うためにはCreateFileでGENERIC_WRITEを使ってHANDLEを
取得する必要があります。

問題は、ReadOnlyのファイルの更新時間を変える場合に、GENERIC_WRITEを使ってハンドルが取得できない点です。
ReadOnlyなファイルの更新時間はcygwinのtouchで変更できるのでなにか方法はあると思うのですがWin32APIを使う方法が分かりません。

どーしたらいいの?

831 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:00:21 ]
attribe -r

832 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:07:18 ]
readonlyを一旦外せばいいのでは?

833 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:19:54 ]
>>829
msdn.microsoft.com/en-us/library/ms724251(VS.85).aspx
> DuplicateHandle can be used to duplicate a handle between
> a 32-bit process and a 64-bit process. The resulting handle
> is appropriately sized to work in the target process.

834 名前:827 mailto:sage [2010/01/29(金) 23:31:42 ]
>>833
おお、ありがとう!
普通に書いてありましたね。

835 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 03:44:16 ]
>>823
BitBltの前にボタンの位置とサイズでExcludeClipRectすると少しだけよくなることなら知ってる

836 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 06:56:21 ]
>>823
ビットマップの上にボタンを置かなければよい。
仕様が間違っている。

837 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 07:02:22 ]
>>836
お前のアホさがとても残念だ



838 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 09:32:30 ]
WS_CLIPCHILDRENがあるじゃない

839 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 10:58:56 ]
GetPrivateProfileString
でバッファサイズが足りないと戻り値がnSize-1になるみたいなんですが
切り捨てられたか、文字数がピッタリ一致してただけなのかを区別することはできますか?

840 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 11:25:45 ]
バッファサイズを1文字余分に取る

841 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:04:29 ]
HWND h;
SHELLEXECUTEINFO sei = { 0 };
sei.cbSize = 60;
sei.nShow = SW_SHOW;
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpFile = "notepad.exe";
ShellExecuteEx(&sei);
Sleep(3000);
h = FindWindowEx(sei.hProcess, NULL, TEXT("Edit"), NULL);
SendMessage(h, WM_SETTEXT, 0, (LPARAM)("test"));

ShellExecuteExでメモ帳を起動させて3秒後に"test"を
エディットに表示させたいんだけど
FindWindowExがNULLを返す模様。どうしたらいいの?

842 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:29:07 ]
>>840
あなたは天才ですね!
ありがとうございました!

843 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 14:18:08 ]
>>841
FindWindowExにメモ帳の「ウィンドウ」ハンドルを渡す。
プロセスハンドル渡しても無意味でんがな。

844 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:14:29 ]
FindWindowExってウィンドウ見つけるんじゃないの?
初めからあるものをどうやって見つけるんだ

845 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:16:37 ]
>>844
お前バカじゃないの?MSDN読んでるか?



HWND FindWindowEx(
HWND hwndParent, // 親ウィンドウのハンドル
HWND hwndChildAfter, // 子ウィンドウのハンドル
LPCTSTR lpszClass, // クラス名
LPCTSTR lpszWindow // ウィンドウ名
);

パラメータ

hwndParent
検索する子ウィンドウの親ウィンドウのハンドルを指定します。
NULL を指定すると、デスクトップウィンドウが親ウインドウとして使われ、デスクトップの子ウィンドウが探されます。

846 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:20:09 ]
プロセスハンドルが分かるのだから

プロセスを作成する

ウィンドウを列挙する

ウィンドウを作成したプロセスIDを取得する

プロセスハンドルとプロセスIDの紐付け

( ^ν^ )

847 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 19:25:52 ]
顔文字キモイ。



848 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 20:02:46 ]
νは口なのか鼻なのかはっきりしろ

849 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 20:14:52 ]
EnumChildWindows の戻り値の説明って間違ってないですか?

850 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 21:47:30 ]
Win7だと、EnumWindowsと同じような返し方をして来るな。
OSのバージョンによっては妙な値が返してくるやつもあるのか?

851 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:20:52 ]
Vistaでした

852 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:42:02 ]
メインウィンドウのダイアログから CreateDialogParam() で、検索 popup ダイアログを
開いたのですが、キー・バインドなどが働きません。MSDNを見ると、

”To support keyboard navigation and other dialog box functionality,
the message loop for THE DIALOG BOX MUST CALL THE IsDialogMessage() FUNCTION.”

と、あります。キー・バインドが利かないのも、これが原因と思われますが、
メインウィンドウのメッセージ・ループ以外で IsDialogMessage() を実装しろ
という意味なのでしょうか??? ここがよく分かりません。

IsDialogMessage() をどこで、どうやって実装すればよいのか教えてください。

853 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:56:02 ]
FindWindowEx()で、検索対象のウィンドウに、複数のEDITが有り、
検索クラス名がEDITだった場合、一番最初のEDITのハンドルしか取れないけど、
2つめ3つめのEDITのハンドルを取得するにはどうしたらいいのでしょう?

854 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:57:46 ]
hwndChildAfter
子ウィンドウのハンドルを指定します。Z オーダーでこのウィンドウの次にくる子ウィンドウから検索が開始されます。

855 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 00:05:09 ]
LineTo君に続いて
FindWindowEx君も死ねよ
二度と来るな

856 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 00:11:18 ]
落ちつけよ。

857 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 00:13:41 ]
おっかないインターネッツですね



858 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 05:13:07 ]
>>852
そこは、書いてあるとおりダイアログを処理するメッセージループで。
普通メッセージループなんて1つしかないだろうから、そこでいい。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<178KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef