1 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 04:25:40 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build79 pc12.2ch.net/test/read.cgi/tech/1240411224/
74 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 19:58:21 ] >>70 つーか文字列リテラルが永続しない場合ってどんな時だ?
75 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 20:11:01 ] >>73 SelectClipRgnと等価。 ってMFCの方には書いてあるのだけどなあ。 www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.gdi/2005-08/msg00233.html というVC++MVPな人の発言もあるし、それで合ってると思う。
76 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 20:57:39 ] エディットコントロールに対して文字を追加する方法はありますか? SetWindowTextだと全て描画しなおしになってしまうので。
77 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:19:55 ] 自己解決しました。EM_REPLACESELでいけました。
78 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:21:07 ] >>76 うろ覚えですまんが、確かSendMessageとか使うんじゃなかったかな
79 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:51:15 ] >>74 永続する保証がない以上、永続しないケースがあると考えておかないと。
80 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:12:54 ] 言語によってはガーベジコレクトされるかもね。
81 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:28:26 ] DLL内の文字列とか、DLLをアンロードすれば読めなくなる。
82 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:03:21 ] >>76 EM_SETSEL (-1, -1) → EM_REPLACESEL
83 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 14:32:58 ] >>81 アンロードしてもすぐには消えないことがあるからタチ悪いよな。
84 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:37:31 ] マルチスレッドで、 スレッドAの処理Bと、スレッドCの処理Dを排他的に処理したい (同時進行で処理したくない)場合、一般的にはどうするの? これ! っていうAPIがあったりする?
85 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:41:58 ] >>84 同期オブジェクトを使って同期。
86 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:43:08 ] Mutex とか CriticalSection とか
87 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:16:35 ] InitializeCriticalSection(&cs); EnterCriticalSection(&cs); EnterCriticalSection(&cs); EnterCriticalSection(&cs); ... てやると、普通に最後まで実行できるんだけど、なぜ? この場合って、二回目のEnterCriticalSectionで永久ループになるんじゃないの??
88 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:31:37 ] csを獲得済みだから msdn.microsoft.com/en-us/library/ms682608.aspx After a thread has ownership of a critical section, it can make additional calls to EnterCriticalSection or TryEnterCriticalSection without blocking its execution. This prevents a thread from deadlocking itself while waiting for a critical section that it already owns. The thread enters the critical section each time EnterCriticalSection and TryEnterCriticalSection succeed. A thread must call LeaveCriticalSection once for each time that it entered the critical section.
89 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:54:29 ] unsigned charのSHIFT JIS文字列をcharのSHIFT JIS文字列に変換する、もしくはその逆は可能でしょうか?
90 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 01:59:50 ] >>89 (char*)とか(unsigned char*)とかキャストするだけ。Win32APIの出番ではない。 C++ならreinterpret_castな。
91 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 09:06:31 ] _com_ptr へのポインタなんだけど IHogePtr phoge; IHoきいせかす *pphoge = &phoge; とすると&のオーバーロードで入れられないんです。 どうしますか?
92 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 10:36:30 ] 使い方がおかしい というかスレ違い
93 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 14:09:13 ] >>91 IHogePtrへの参照で我慢するか、boost::addressof
94 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:21:15 ] DrawCaption(hWnd, hDC, &rcCaption, DC_ACTIVE | DC_GRADIENT | DC_TEXT | DC_ICON | DC_BUTTONS); このようにしてDrawCaptionをDC_BUTTONSフラグを付けて呼び出してもボタンが描画されないのですが なぜでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:33:36 ] 次にお前は「OSは2000」と言う!
96 名前:94 mailto:sage [2009/06/13(土) 22:42:02 ] すみません、OSはXP SP3です。。。
97 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:42:40 ] >>95 駄目じゃん
98 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:48:26 ] EnterCriticalSection て、例えば beginthread でスレッドAとBをつくったとして、そのAとBの間で 同期する場合にしか使えないの? beginthread でスレッドを1つだけつくった場合に、 プログラム本体側と、スレッドの間で同期はできないの?
99 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 22:54:48 ] >>98 何言ってんのか正直わからんが、おまえの言う「プログラム本体」も スレッドなので「スレッドAとB」の場合と何もかわらんよ。 Advanced Windows読んで出直してこい
100 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:14:05 ] つーか、beginthread なんて使わずに、ちゃんと CreateThread() 使え。
101 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:15:20 ] 俺はbeginthread派何だが、CreateThreadの方がやっぱりいい?
102 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:18:38 ] 俺はThread.Start()派
103 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:19:16 ] CreateThreadのメモリリーク問題ってなんでマイクロソフトは10年経っても治さないの?
104 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:23:50 ] いろいろ面倒だからじゃね? 俺は面倒だから_beginthreadex使うけど。
105 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:29:15 ] >>103 もう直っている。 Windows Server 2003でFlsAllocと言う関数が導入された。もちろんVistaでも使える。 これには、スレッド終了時に呼ばれるコールバックを登録する機能が付いており、 CRTもこれを使ってのリソース解放ができるようになった。 XP以下放置かよ、と思うならDLL版CRT使えばいい。
106 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:54:35 ] いつも_beginthreadexじゃなくて_beginthreadのほう使ってるけど いいの?
107 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 00:11:39 ] >>106 今話題になっている件については問題はない ただし、他にも違いがあるので _beginthreadex にしておくのが無難、MSDNを読んでおけ
108 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:24:17 ] ______ \| (___ ♪ |\ `ヽ、 | \ \ ∧ ∧ | \ 〉 (*`q´) | ♪ \ / ‖( つ| ̄ ̄ ̄ ̄ ̄ ̄! ̄ ̄ ̄ ̄ ̄ ̄ノ ‖( 匚______ζ--ー―ーrー´ 〓〓JJ .‖ || .|| ‖ ‖ ||
109 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:25:03 ] 質問です。 フィルタドライバを作らずにリアルタイムでオーディオデバイスから出力されるサウンドを加工することは可能でしょうか? もし可能ならやり方の概要を教えてください。
110 名前:109 mailto:sage [2009/06/14(日) 18:25:58 ] オーディオデバイスから出力される直前のサウンドを加工してから出力したいのです。
111 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:49:59 ] ASIOとVSTプラグインを使えば普通に可能だろ
112 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 08:33:19 ] 携帯電話は高いよ〜。 ピッチがオススメ! 俺はNTTパーソナルだけど、この前サービスが始まったASTELが気になる。
113 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:52:55 ] 非同期ソケット通信でWSAAsyncSelectでメッセージを受け取らずに 自分のスレッドで接続したかどうかを識別する方法を教えてください
114 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 18:02:03 ] もひとつ質問ですが WSAAsyncSelectのFD_CONNECTをしてからconnectしますが サーバーから応答が無い時はだいたい30秒くらいで メッセージが返ってくるのですがこれのタイムアウトはどうやって設定するのですか? ちなみに、>>113 もFD_CONNECTの話です。
115 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 02:57:29 ] しつもんです。 Windowsが起動してからの 任意のドライブ(物理 or 論理)の 総書き込みバイト数 総読み込みバイト数 をいちばんシンプルに取得する方法はどんな方法でしょうか? その手のデータを表示するソフトがあるのですが、 OSを起動させてかなり時間が経過してからアプリを起動しても、 OS起動からの正しい数値が表示されます。 常駐してカウントしてるわけではないんです。 これは、どこから取得しているんでしょうか?
116 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 03:49:43 ] >その手のデータを表示するソフト 具体的に頼むわ
117 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 04:01:59 ] >>116 HDDLed Indicator インジケーターにカーソルを合わせると OS起動時から起動しなくてもきちんと 任意の物理/論理ドライブのreadとwriteの累積バイト数が出ます これ、どうやって取得してるんでしょう?
118 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 06:01:47 ] パフォーマンスカウンタ
119 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 06:22:06 ] >>118 パフォーマンスカウンタでは>>115 の後半に書いたようなことは無理ですよね?
120 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 07:35:49 ] fsutil fsinfo statistics で見られるのだから、どこかに記録されているのは確か。 パフォーマンスカウンタかWMI辺りなんだろうけど。
121 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 09:29:39 ] NtQueryVolumeInformationFile辺りだな
122 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 09:40:23 ] 間違えた DeviceIoControlでFSCTL_FILESYSTEM_GET_STATISTICSだった
123 名前:デフォルトの名無しさん [2009/06/17(水) 14:00:04 ] クライアント領域が透明なウインドウをつくるとき、エディットコントロールみたいな子ウインドウではできない?
124 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 15:09:43 ] 何を言っているのかよくわからないが、リージョンを使う分には問題ないだろ LayeredWindowは無理かもしれんが
125 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 15:45:34 ] 背景ブラシの色を0x00000000に
126 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 16:22:34 ] >>118-122 Thanks!!!
127 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 18:29:15 ] ReadDirectoryChangesWで、変更されたファイル名の終端にゴミ文字がある場合があるんだが これは仕様? バッファは呼ぶ直前に0クリアしてる
128 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 19:07:33 ] 有効なサイズは返しているのだから、 後はどんなゴミで埋められようがガタガタ抜かすな、ってスタンス?
129 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 19:38:59 ] >>127 使用する領域はちゃんと確保した領域にしてる? ポインタだけ宣言してどこ指してるか不明なまま使ってるとかじゃない?
130 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 19:52:03 ] 最前面表示のウィンドウよりも手前に表示されるウィンドウってどうやったら作れますか? 最前面表示ウィンドウ同士だと、通常のウィンドウのようにアクティブな方が手前に表示されてしまいます
131 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:12:28 ] 最前面表示のウィンドウよりも手前に表示されるウィンドウ よりも手前に表示されるウィンドウってどうやったら作れますか? って話になってしまうので、そういう事はできなくなっている。
132 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:18:15 ] タイマーで監視して常にアクティブに・・・ っていう嫌らしいコードが頭に浮かんだぜ
133 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:58:12 ] >>129 TCHAR buffer[1024]; ZeroMemory( buffer, sizeof(buffer) ); を渡しても問題が発生しています
134 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:45:45 ] C++でCPU温度を取得したいんだけど、なんかいいAPIある?? XP borland c++ なんだが。。。誰か教えてくれ
135 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:45:59 ] >>133 FILE_NOTIFY_INFORMATIONの FileNameがFileNameLengthの分だけ正しい内容になっていればOKだぞ。 0終端はなされないと書かれてあるしな。
136 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:50:05 ] >>134 ググレカス 答えは出てないが↓ ttp://okwave.jp/qa3337870.html core2だとレジスタ内に温度が格納されている?↓ ttp://pc-match.spaces.live.com/blog/cns!54C129738D4C3785!201.entry
137 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:50:11 ] TOPMOSTのウインドウをオーナーウインドウにしたらできる気もする>最前面より手前
138 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:04:25 ] >>135 有難うっ >0終端はなされないと書かれてあるしな。 これは知らなかった。WideCharToMultiByteでANSI分の文字数取って変換ってやってた 何にせよ、おかげで解決しそうです。有難うございました。
139 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:52:27 ] VBのリストビュー使ってるんだが、SubItemが編集状態にできないので フォーカスが当たってる場所に擬似的にテキストボックスを表示させたい んだが、フォーカスが当たっている座標が分からん。何か良いAPIはないものか。
140 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:28:11 ] >>139 LVM_GETITEMRECT とかでいいんじゃねーの?
141 名前:デフォルトの名無しさん [2009/06/19(金) 00:37:16 ] 初歩的な質問かもしれませんがエディットボックスを作ってもキーボードで文字を打ち込むことができません。なぜでしょうか? マウスの右クリックから文字を貼り付けることはできます。
142 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:50:39 ] ここは大穴狙いで。 メッセージループでTranslateMessageしていない、とか?
143 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 01:30:01 ] >>142 すげー助かりましたw 分かってることなのになんでこんなの見落としてたんだろう・・・
144 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 07:32:39 ] 上でも挙がってるReaDirectoryChangesWを使って見たんだが ファイルを複数移動すると取りこぼす時がある 何か改善案ないかな?
145 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:10:38 ] 1個につき1回じゃないぞ
146 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:16:13 ] >>145 勿論承知してる 非同期のマルチスレッドで常に呼んでるけど ファイルを多数移動すると通知されれず 結果取得の為の待機をしてしまう このAPIは基本取りこぼしはしない?
147 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 15:06:27 ] >同期操作が正しく完了した場合、lpBuffer パラメータはフォーマット済みのバッファを表し、 >lpBytesReturned パラメータにはバッファに書き込まれたバイト数が返ります。 >転送バイト数が 0 の場合、バッファが小さ過ぎて、ディレクトリやサブツリーで発生した >すべての変更に関する詳細情報を格納できなかったことを表します。 >この場合、ディレクトリまたはサブツリーを列挙して、変更内容を計算する必要があります。
148 名前:デフォルトの名無しさん [2009/06/19(金) 15:23:12 ] とあるサイトで勉強していて、マウスクリックしたところにSetPixelVで点を打ってみましょう、という課題をやってみたのですが まず 300*300の多次元配列を用意して int pixel[1000][1000]; WM_LBUTTONDOWNのメッセージで int w = LOWORD(lParam); int h = HIWORD(lParam); pixel[w][h] = 1; UpdateWindow(hWnd); return 0; WM_PAINTのメッセージで HDC hDC; PAINTSTRUCT ps; hDC = BeginPaint( hWnd, &ps ); for(int w=0; w<300; w++) { for(int h=0; h<300; h++) { if(pixel[w][h] == 1) { SetPixelV( hDC, w, h, RGB(255,0,0) ); } } } EndPaint( hWnd, &ps ); return 0; してみたのですが、windowサイズを変えるまで塗られません。 RedrawWindowも試してみましたが、WM_PAINTが発生しないようです。この方法は駄目でしょうか? それともwindow生成を自分でクラス化してるのですが、そのクラスに問題があるのでしょうか?
149 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 15:31:40 ] ちゃんとInvalidateしてる?
150 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 15:39:25 ] >>147 デバッガで追ったけど、バッファが足りないっていうのは無かった 関数呼んでWaitで変更通知来るまで待機してるんだが まだ通知されてるだろうに、そこで待機状態に入る
151 名前:148 mailto:sage [2009/06/19(金) 15:47:47 ] >>149 ありがとうございます。出来ました。 InvalidateRgn(hWnd, NULL, true); UpdateWindow(hWnd);
152 名前:148 mailto:sage [2009/06/19(金) 16:50:15 ] というか WM_LBUTTONDOWNのメッセージで int w = LOWORD(lParam); int h = HIWORD(lParam); pixel[w][h] = 1; InvalidateRect(hWnd, NULL, false); ↑ これだけでOKなんですね
153 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:24:23 ] 下図のように自己交差しているリージョンを、 ┏━┓ ┃ ┃ ┗━╋━┓ ┃ ┃ ┗━┛ 交点で個別のリージョンに分けたいんですけど、 ┏━┓ ┃ ┃ ┗━┛┏━┓ ┃ ┃ ┗━┛ 簡便な方法ってないものでしょうか。 リージョンに関するWinAPIで対処可能でしょうか。 よろしくお願いします。
154 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:33:49 ] 早く教えて下さいよぉ
155 名前:153 ◆D9KRK95MhY mailto:sage [2009/06/19(金) 17:37:04 ] 153です。いちおうトリップつけときます。
156 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:40:56 ] この時間はやはりわかる人はいないんですね。。。
157 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:46:22 ] 1日平均10レスのスレにそんな速く回答が帰ってくると思うなっての…。
158 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:51:32 ] >>153 できるよ
159 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:52:26 ] >>153 できますね
160 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 18:15:27 ] GetRegionDataで地道に作り直すしかないんじゃないか
161 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 19:07:35 ] >>158-159 具体的にアドバイスした方が良いと思われる。
162 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 19:13:29 ] ┏━┓ ┃ ┃ ┗━┛┏━┓ ┃ ┃ ┗━┛ の上記二つのリージョンを作ったら CombineRgnで混ぜればいいよ
163 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 19:45:46 ] >>162 リージョンの合成じゃなくて、分離する方法を聞いていると思われる。
164 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:21:38 ] >>163 あ、すまん勘違いしてた リージョンから分離したいなら、GetRegionDataから作り直す ビットマップとかから作るなら、CreateRectRgnとCombineRgn組み合わせればいいよ
165 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:25:54 ] リージョンというより、自己交差しているパスを交点で切り離せれば、 そこからリージョンを作ればいいような気がするな。 ま、APIでそういうことが出来るのかどうかは分からないが。
166 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:28:16 ] 海外の身体改造は半端ねえからなあ 眼球くりぬいてLED埋め込んだ奴 vimeo.com/4500681
167 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:30:49 ] >>166 何処の誤爆だ? 怖くて見れない
168 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:33:02 ] ただ光らせるために片目捨てるとかアホだろw
169 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 21:33:47 ] 中盤グロかった・・・
170 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:11:57 ] 誤爆はほっとけ
171 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:15:42 ] スレチを承知で聞かせて貰う グロイ?
172 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:17:47 ] 義眼にLED仕込んだバカのビデオだよ
173 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:20:47 ] 術前→設計→術後だから血とかはないな
174 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:23:56 ] >>172-173 サンクス。最初の画面で嫌悪感出て見るの辞めた 零見たいにサーモグラフィー埋め込めば良いのに
175 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:31:53 ] 話がそれたが、回答としては出尽くしたのか? 他にアイデアがあれば書いといてあげて。
176 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:33:14 ] 自演してんなよ
177 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:36:28 ] おれは175=165だけど?
178 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:57:57 ] れぎおん
179 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 02:31:11 ] 無理。
180 名前:153 ◆D9KRK95MhY mailto:sage [2009/06/20(土) 10:55:44 ] 皆さん回答ありがとうございます。 164さんのビットマップから作る方法を検討してみます。
181 名前:デフォルトの名無しさん [2009/06/20(土) 13:46:04 ] IMEの制御について詳しい方いらっしゃいますか? 漢字仮名まじりの文をIMEを使って全部ひらがなに逆変換したいんですが、 漢字仮名まじりの文をIMEに設定する関数 ImmSetCompositionString(himc, SCS_SETSTR, str, length, NULL, 0)が MSIME2002では成功するのにATOK2006では失敗します。 一応MSIMEでは動くものが作れたんですが、ぶっちゃけクソ変換なので、できればATOKを活用したいのです。 何か別の方法がないでしょうか? ネットで調べても変換操作をしたあとの再変換の方法ならあるんですが、 漢字仮名まじりの文をIMEに設定して逆変換する方法で、ATOKで成功するものが見つけられないんです。
182 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:51:17 ] 大抵の企業でATOKなんてわざわざ入れてないのでおk
183 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:59:03 ] 世間一般の企業がどうとかは関係なくて、自分のところのデータ変換処理に必要なんです。 ATOKだと文脈を理解して適切な読み仮名に変換してくれるはずなので、それに期待してるのです。
184 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 14:04:21 ] 「詳細なテキストサービスのサポートをプログラムのすべてに拡張する」がONならOFFにしてみるとか? これでうまくいっても、PGでの対応方法は知らないけど。
185 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 15:39:29 ] >>184 それはOFFになってましたね。 試しにONにしてみると、MSIMEでも逆変換できなくなってしまいました。。。 「詳細なテキストサービスをオフにする」のチェックも変えましたが、こちらは変化なしでした。 Immで始まるIME制御APIは自分が試した大部分でATOKとMSIMEの間で互換性がありました。 しかしIMEとは無関係のところからもってきた文を逆変換することに関してだけは互換性が無いようなのです。 ATOK12ではできたという話がネット上にありましたが、ATOK2006はその方法ではダメでした。 難しいですね。
186 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 16:34:41 ] コントロールの座標をクライアントから見たい座標で取得する方法でいいのないな? 今はコントロールとクライアントの二つをGetWindoxRectでスクリーン座標から強引に求めてるが どうも違う
187 名前:デフォルトの名無しさん [2009/06/20(土) 16:43:25 ] >>186 MapWindowPoints関数を使え。
188 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 16:59:52 ] ウェブのMSDNって「戻り値」の説明だけごそーり消えてるんだけどなんなんだあれ? 直す気ないのかな?
189 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:00:31 ] 関数とprintfとかとAPIはどっちが遅いの?
190 名前:デフォルトの名無しさん [2009/06/20(土) 17:01:21 ] >>181 ImmGetConversionList でいけるはず
191 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:26:14 ] >>190 IME2003以降では使えないけどな
192 名前:デフォルトの名無しさん [2009/06/20(土) 17:47:12 ] >>189 自分で調べろ
193 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:48:37 ] FF11 のいずれかを含むページは 10752 ページ中、 164 ページ見つかりました。
194 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 17:48:59 ] 誤爆した
195 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 18:01:34 ] >>189 OSで応答する分APIが遅い
196 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 18:52:31 ] >>187 有難うございます!!
197 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 18:54:46 ] >>195 は?
198 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:11:46 ] システムフックするソースとか見ると、DLL側で良く #pragma data_seg(".ShareForHook") HHOOK MouseHook = NULL; #pragma data_seg() を眼にするんだが、何でこれをする意味が良く分からない。 単純にHHOOK MouseHook = NULL;じゃ駄目なの?
199 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:15:11 ] #pragma data_segってのはプロセス間での共用メモリスペースを作るオプションでな その中で宣言された変数はどこのプロセスで変更しても全てのプロセスに伝わるわけだ 何で必要なのかはCallNextHookExの第一引数見れば分かる 2000以降は要らないんだっけかな
200 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:15:12 ] 理由もちゃんと書いてあるだろ
201 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:26:23 ] >>197 ライブラリの関数は同じ実行ファイル内にリンクされるのでコストは自分と定義した関数と同じ APIの場合は、IPCを通じてOS内部にある関数本体のアドレスに引数を渡して結果を受け取るためコスト増
202 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:31:04 ] ああこいつ馬鹿か
203 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:34:53 ] 素直に頭が悪くて理解できないと言えよw
204 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:36:31 ] printfもOSのAPI内部で呼ぶっつーの馬鹿
205 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:37:02 ] 自分で定義した関数で、想定されうるあらゆるデバイスに対して出力できる処理かいてるのか
206 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 19:38:39 ] >>199 有難う! MSDNでのSetWindowsHookEx関数では >グローバルフックは共有リソースであり と書いてあった 正直まだ解せない部分もあるけど、システムフックの最低限必要のマナーなのね
207 名前:199 mailto:sage [2009/06/20(土) 19:43:48 ] ああ、理解力なさそうだね
208 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 20:15:17 ] >>189 =>>195 =>>201 =>>203
209 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:39:29 ] >>190 ImmGetConversionListを使う方法を教えていただき、どうもありがとうございました。 結論からすると、やはり逆変換はMSIME2002ではできて、ATOK2006ではできなかったです。 ソースコードは下記をそのまま使いました。 athomejp.com/goldfish/api/yomichange.asp ATOKの2006は鬼門バージョンなんですかねw
210 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:54:53 ] まぁ、そんなもんじゃね? あとは、実際の動作をエミュレートするかだな。
211 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:56:13 ] プログラム書いていていつも思うのは LeftとRightとかBeginとEndとか 長さが違うのが無性に腹立つんだが 欧米人には美的感覚ってものが無いのか?
212 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 22:02:25 ] >>211 まずプログラミング言語ありきってか
213 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 22:12:34 ] 外人さんのデモ見てると、プロポーショナルフォントだったりするしな・・・
214 名前:190 [2009/06/21(日) 00:06:52 ] >>209 2006ではだめですか。ATOK2005は確か出来たはずなんですが… 残念です。
215 名前:sage [2009/06/21(日) 01:02:46 ] 自分は漢字の読み仮名の取得には IFELanguageを使ってるが。