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


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

Win32API質問箱 Build51



1 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 03:44:55 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

152 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 14:22:19 ]
隠れてるウィンドウは表に出てWM_PAINTメッセージがきて初めて描画される
だから裏にいるときにDC取得しても上に乗っかってるウィンドウの内容がとれる

153 名前:148 mailto:sage [2007/03/26(月) 14:26:23 ]
>>149
>>151
GetDC + BitBlt で試してみましたがやはり上のWindowが写りこんでしまいました。

>>152
ああ、やっぱり普通には無理なんですね。

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

154 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 14:37:49 ]
vistaだと、その辺の様子変わるのかねぇ・・・

155 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 15:32:21 ]
ビットマップのDC作成して、レンダリングさせればいいじゃまいか。
でも対象プロセスの中で動作させないと色々リソース管理が面倒そうだ。DllInjectionでちょっと実行が楽かな。

156 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 15:47:35 ]
>>154
どっかのブログで見た。
DWMまわりをごにょごにょするんだったかな。


157 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:15:04 ]
あえろが効いていればできるって聞いたけどな
vistaいじってみてえ

158 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:16:34 ]
DirectX使ってるならレンダリングイメージを保持してるのはサーフェスだからなぁ

159 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:29:33 ]
>>158
ゲームの動画取るソフトで、パフォーマンスのために
APIフックとかしてサーフェイス取得してるのもあるな

160 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:38:29 ]
ReadFileの第3パラメータ「読込バイト数」を、MessageBox()で出力したいのですが、
下だとエラーが出ます、どうすればいいですか?

MessageBox(NULL ,GetFileSize(hFile, NULL) , TEXT("読込バイト数") , MB_OK);

エラー↓
error C2664: 'MessageBoxW' : 2 番目の引数を 'DWORD' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。



161 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:48:51 ]
>>160
C言語からやり直してきて

162 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:52:55 ]
char buff[256];
wsprintf(buff, "%d", GetFileSize(hFile, NULL));
MessageBox(NULL ,buff , TEXT("読込バイト数") , MB_OK);



163 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:01:36 ]
VB出身かなぁ

164 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:07:53 ]
まぁ誰もが一度は通る道だ。
最近の.NETとか触ってからWindowsAPIをやろうとすると
文字列→数値や数値→文字列変換を自前でやらないといけないめんどくささにびっくりするもんだ。

165 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:10:31 ]
>>162
charじゃなくてTCHARにしとけ

166 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:22:40 ]
うーすみません>>162をchar→TCHARにして実行したところまたエラーが・・

error C2664: 'wsprintfW' : 2 番目の引数を 'const char [3]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

一応環境です
Windows2000SP4
VC++2005ExpressEdition
PlatformSDK

167 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:23:38 ]
>>166
wsprintf(buff, "%d", GetFileSize(hFile, NULL));

wsprintf(buff, TEXT("%d"), GetFileSize(hFile, NULL));

168 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:36:31 ]
何のためにTEXT()マクロを使っているかを自分で調べた方がいいな

169 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:40:00 ]
できました!ありがとうございました!

170 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 20:20:26 ]
>>148
ふらっとC♯, C#(初心者用) Part13
pc11.2ch.net/test/read.cgi/tech/1170761729/893-894

893 名前: デフォルトの名無しさん [sage] 投稿日: 2007/03/06(火) 11:22:59
ほかのアプリケーションのスクリーンショットを撮りたいとき
Alt+PrintScreenを送ってクリップボードから取得する以外に
いい方法はありませんか?

Vistaでのウィンドウ一覧の3D表示をXPでも
できるようにするソフトを作りたいのですが。

894 名前: デフォルトの名無しさん [sage] 投稿日: 2007/03/06(火) 11:38:00
>>893
PrintWindow API使えばある程度できるよ。
ttp://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.aspx

でもVistaみたいに最小化しているウィンドウについては無理。
あとリアルタイムアニメーションも多分きつい。

Vistaはわざわざライブサムネイルのためにウィンドウマネージャ書き換えてAPIまで追加したわけで、
それが何の苦労もなくXPで実現できるならXPでいいじゃんということになる。



171 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 20:29:34 ]
MDIがこうなってるのはわかったのですが、
フレームウィンドウ
 ↓
クライアントウィンドウ
 ↓
子ウィンドウ1
子ウィンドウ2
子ウィンドウ3

フレームウィンドウはWinMainで作るとして、
クライアントウィンドウはWinMainの中でフレームウィンドウ作成後に作るのと、
CALLBACK FrameProc関数がWM_CREATE:を受け取ったときに作るのと
どちらがいいのでしょうか??

172 名前:171 mailto:sage [2007/03/26(月) 20:51:10 ]
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win139.html

すみません補足です
このページではFrameProc関数がWM_CREATE:を受け取ったときに
クライアントウィンドウを作っているのですが、なぜWinMainで
作ってないのか疑問に思ったのです

173 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 20:53:22 ]
動けばいいんだから細かいところを
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
気にするな。

174 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 20:56:43 ]
>>173はVB出身

175 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:04:06 ]
>>172
WinMain が管理すべきものはフレームウインドウだけであって、
クライアントウインドウはフレームウインドウが管理すべきだから。

oo に従っておくと同時に考えなくてはいけないことが減ってうれしい。
というか不正なウインドウを操作しようとするようなバグが減る。

176 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:04:59 ]
>>148
XP以降限定でもいいならPrintWindow()でも使え。

www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.aspx
// メモリ デバイス コンテキスト hdcMem に格納されている、
// ウィンドウ hwnd のスナップショットを受け取ります。
HDC hdc = GetWindowDC(hwnd);
if (hdc)
{
    HDC hdcMem = CreateCompatibleDC(hdc);
    if (hdcMem)
    {
        RECT rc;
        GetWindowRect(hwnd, &rc);

        HBITMAP hbitmap = CreateCompatibleBitmap(hdc, RECTWIDTH(rc), RECTHEIGHT(rc));
        if (hbitmap)
        {
            SelectObject(hdcMem, hbitmap);

            PrintWindow(hwnd, hdcMem, 0);

            DeleteObject(hbitmap);
        }
        DeleteObject(hdcMem);
    }
    ReleaseDC(hwnd, hdc);
}

177 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:24:05 ]
>>175
> WinMain が管理すべきものはフレームウインドウだけであって、
> クライアントウインドウはフレームウインドウが管理すべきだから。

なるほど目から鱗ですWinMainから除きます
そういう考え方ってどうやったら身に付くのでしょうか
本屋行ってもWin32APIのいい本になかなか出会えないです

> oo に従っておくと同時に考えなくてはいけないことが減ってうれしい。

ooはメッセージキューという意味ですよね??

178 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:25:35 ]
oo = オブジェクト指向 だ

179 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:27:31 ]
>>177
>ooはメッセージキューという意味ですよね??

たぶんオブジェクト指向( object oriented )のことだと思うよ。

180 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:28:24 ]
oo == おっぱいおっぱい



181 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 21:31:55 ]
oo == ∞

182 名前:148 mailto:sage [2007/03/26(月) 21:58:56 ]
>>170
>>176
やった!できました。すげー!!

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

183 名前:176 mailto:sage [2007/03/26(月) 22:06:53 ]
あ、>>170 で既出だったのか。ポイントしてるURLまで一緒だし。orz

184 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:28:24 ]
XPでVistaのサムネイルみたいなの実現してるフリーソフトがあるけどあれは
どうやってるんだろう
やっぱりPrintWindow?

185 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:35:26 ]
>>178
>>179
ありがとうございます無知なのが恥ずかしいです><
てっきり無限→ループ→キューかと・・

186 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:35:36 ]
>>184
それって Vista みたいにリアルタイムで表示が更新されてるってこと?
だとしたら PrintWindow() じゃないと思う。
そうじゃないなら多分、PrintWindow() だと思う。

187 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:36:56 ]
>>185 の想像力に脱帽。

188 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 22:42:03 ]
                                 〜 ∞
                          [ノ゚д]ノ <キュー待ってー
                           [_] 
■■■■◇_◇_□□□□_□      / >

189 名前:高橋尚子 mailto:sage [2007/03/26(月) 23:42:10 ]
>>184
マジレスすると、
IExtractImageインターフェイス

190 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 23:52:30 ]
>>189
ウィンドウじゃなくてファイルの話だったのか?



191 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 01:19:17 ]
指定したフォルダに書き込み権限があるかどうかというのは、
どのAPIを使えばいいんでしょうか?
サンプルとか置いてあるサイトをご存知でしたら、教えてください。

192 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 02:18:35 ]
実際に書き込んでみる…という手がVistaまでは使えた

193 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 05:43:39 ]
>>192
サンクス! Vistaでもそれでいけるんだね!・・・という意味になるぞ。お前の日本語ちょっと変。

194 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 06:41:40 ]
じゃあXPまでは使えたに訂正

195 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 06:53:12 ]
に、2003は……?

196 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 10:46:09 ]
書き込めたと思ったら、仮想ナンチャラフォルダに書かれてた、ってことがあるから使えないんじゃね?

197 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 10:46:37 ]
ACLちゃんとたどる

198 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 11:52:29 ]
(Media Playerの様に、アプリケーション再利用を行いたい為)

多重起動を抑止のアプリケーションを作るのですが、
後起動のアプリケーション(多重起動を抑止破棄される予定)から
既に起動しているアプリケーションにデータを送るには、
WM_COPYDATAの他にどういう手法があるのでしょうか?

説明が不明瞭ですかね?



199 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 12:18:07 ]
>>198
ファイルを介してもいいしメッセージでもいいしイベントでもいいし、プロセス間通信の好きな手段が使える。

200 名前:198 mailto:sage [2007/03/27(火) 12:24:55 ]
>>199
ご回答ありがとうございます。
数点質問させてください。

@ファイルというのは、FindFirstChangeNotification関数を利用する事でおk?
AメッセージはWM_COPYDATAの他なにかいいのがありますか?
 あれば、メッセージ名を教えていただきたいです。
 (メッセージ動作は調査しますんで)
B先も書いたとおり、メディアプレイヤーの様な動作を想定する場合、
 プロセス間通信ではパイプ?メールスロット?どっちがお勧めでしょうか?

以上です。



201 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 12:28:53 ]
多重起動禁止なんてぐぐればいくらでも

202 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 12:46:49 ]
>>201
この場合、意図は多重起動禁止というより、
プロセス間通信なんでしょうかね?



203 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 12:56:19 ]
WM_COPYDATAじゃいやなのは何で?
他のアプリから送ることが可能になるから?

204 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 13:12:02 ]
>>200
(1)通知は別にやった方が安全だから、情報量が多くないならファイルにする必要はないかと。
(2)通知するだけなら、ユーザ定義メッセージでもできる。そのとき32bitのデータは一緒に送ることができる。
(3)どれだけデータを送りたい? それによって手段は変わるわけだけど。

205 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 13:24:06 ]
俺はファイルを経由するくらいなら、VirtualAllocExを選ぶな。
送りたいのが255文字以下の文字列ならアトムを使うという手もあるよ。

206 名前:198 mailto:sage [2007/03/27(火) 13:38:23 ]
>>201-205
WM_COPYDATAの場合、FindWindow→SendMessageの手順となります。
この時、FindWindowでキャプションをヒントにウィンドウを検索するのに抵抗があり、
もっとスマートでエレガントな方法があるんではないかと思って、
皆様に質問をだした次第です。
ちなみに、コマンドライン情報(ファイルパス)を渡そうと考えています。


207 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 13:45:32 ]
>>206
多重起動抑止はどうやってるの?

208 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 13:57:58 ]
FindWindowでタイトル検索するしか知らないならしょうがないな
名前付きパイプでもメールスロットでも好きなほう使えばいいじゃん

209 名前:デフォルトの名無しさん [2007/03/27(火) 14:01:24 ]
セカンダリのディスプレイにアプリケーションを起動するにはどうすればよいのでしょうか?

GDIでデバイスコンテキストとかモニタハンドルとか探ればセカンダリのディスプレイは特定出来そうですけど,
それとCreateProcessのデスクトップ/ウィンドウステーションとどう結びつけるのか良く判りません.


210 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 14:17:59 ]
>>198
FMOにウィンドウハンドルつっこんどけば?
多重起動抑止かつプロセス間通信だとFMOが定石じゃね?



211 名前:198 mailto:sage [2007/03/27(火) 14:26:23 ]
>>207
Mutexを利用して判定していますね。
んで、既にハンドルがあれば死にに行くみたいなことをしています。

>>208
パイプは考えていましたが、メールスロットは知りませんでした。
調査してみます。


一度ここで質問をクローズしますね。
レスを下さったみなさま、ありがとうございました。


212 名前:198 mailto:sage [2007/03/27(火) 14:27:48 ]
>>210
申し訳ありませんが、
FMOってなんですか?

213 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 14:28:01 ]
FRONT MISSION ONLINE

214 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 14:28:41 ]
ファイル マッピング オブジェクト のことだと思う

215 名前:198 mailto:sage [2007/03/27(火) 15:38:44 ]
>>214
ありがとうございます。
皆様、ご回答ありがとうございました。

216 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 18:58:20 ]
そういうのってDDEを使ったり
そうか、ROTに登録してGetObjectしたりとか

217 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 21:58:14 ]
DDE は Vista でほぼ廃止と聞いた(NetDDE が廃止なのは確実)

218 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 23:53:45 ]
VistaでDDEがごく一部しかまっとうに動かないって嘆いていた人がいたのはこのスレだっけ?

219 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 05:08:10 ]
>>197
それでもVistaでは仮想フォルダにファイルが作成済みだとうまくいかない場合がある。
それを何とか検出しようとすると泥沼になるから(つーか検出させないための互換性機能
なわけだし)素直にmanifest付けるのが良さそうだ

220 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 07:49:29 ]
こんにちは、質問させて下さい。
WindowsXPにて、MFCライブラリを使わずに、
バイナリデータを転送する方法ってありますか??

もしあるのでしたら、サンプルを下さい。御願いします。



221 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 07:58:06 ]
どこに転送するのさ

222 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 08:39:23 ]
int a = 1;

223 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 08:40:09 ]
これはエスパーの出番だな

224 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:13:59 ]
socket

225 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:24:19 ]
これだけ情報が抜けてるってことはhttpで転送とか?

226 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:40:23 ]
MDIのフレームウィンドウにステータスウィンドウを表示させたら
MDIの子ウィンドウが表示されなくなったんだけど、原因なんでしょう?
エスパーさん助けて

227 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:41:18 ]
ステータスウィンドウ→ステータスバーです

228 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:49:05 ]
呼んだ?

229 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 09:51:18 ]
>>228
ステータスバー表示させるだけで、他のウインドウが表示されなくなる
バグってあるんですか??

230 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:01:05 ]
LRESULT CALLBACK FrameProcの中の以下が追加されるとMID子ウィンドウが
表示されなくなるみたいです、、、助けて、、

// ウィンドウサイズが変更されたとき
case WM_SIZE:
 SendMessage(hStatusbar, WM_SIZE, wp, lp );
 return 0;



231 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:04:12 ]
returnの下に文が続いてるとか言わないよな?
とりあえず
return 0;

break;
にしてみ

232 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:07:47 ]
>>230
DefFrameProc呼んどけ

233 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:08:01 ]
>>231
すごい!!!!出てきました!!!ありがとうエスパー!
case WM_CREATE:とかだとreturn 0;でいいのに
なんでcase WM_SIZEはbreak;なんだろう!?

234 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:14:44 ]
ttp://www.geocities.jp/ky_webid/win32c/034.html
ttp://wisdom.sakura.ne.jp/system/winapi/common/common9.html
どっちもreturn 0;なのに・・・・・

235 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:20:57 ]
switchのdefaultにDefWindowProc入れて他はbreakしてreturn 0;にしてる。

236 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:22:10 ]
げ、俺が学習に使ったページまで・・
こういう場合ってreturn 0;が定石なのか?

デフォルトプロシージャに処理させたくないとき以外は
デフォルトプロシージャに処理がわかるようにするもんだと思ってた。

237 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:30:45 ]
DefWindowProcには自分が処理しないメッセージだけを渡せばよい。

しかしDefFrameProcはこんなメッセージを処理すると書いてあるのだから、それらのメッセージは渡してやるべき。
msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/multipledocumentinterface/multipledocumentinterfacereference/multipledocumentinterfacefunctions/defframeproc.asp

238 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:39:59 ]
>>237
その4個だけでDefWindowProcに渡す必要があるのならこれが正解?

{
case ↓の4個以外のWM_
break;
case WM_COMMAND:
case WM_MENUCHAR:
case WM_SETFOCUS:
case WM_SIZE:
default DefWindowProc
break
}

239 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:42:57 ]
とりあえずC言語の勉強からがんばれ…

240 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:46:39 ]
>>238
DefWindowProcじゃなくて、DefFrameProcの話しだろ



241 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:47:56 ]
>>239
その前に日本語の勉強から頑張れと言うべき

242 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 10:52:37 ]
ごめん寝起きでボケてたんで書き直したw
DefFrameProcはDefWindowProcと異なり、WM_COMMAND,WM_MEMUCAHR,
WM_SETFOCUS,WM_SIZEの4つのメッセージに関しては、ユーザーで行いさせ
たい処理を記述した後に、DefFrameProcを呼ぶ必要がある
ってことね

{
 case WM_CREATE等 //WM_COMMAND,WM_MEMUCAHR,WM_SETFOCUS,WM_SIZE以外のメッセージ
  break;// breakしてDefFrameProcに処理を渡す必要なし
 case WM_COMMAND:
 case WM_MENUCHAR:
 case WM_SETFOCUS:
 case WM_SIZE:
 default:
  DefFrameProc();
  break;
}

243 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:15:30 ]
自分が処理しないメッセージだけを渡せばよい。 というのは

例えばWM_SIZEなら
「自分でサイズ変更の処理を書く」や「新しいサイズを調べて制限値に引っかかるならサイズ変更しない」というのが「自分で処理した」にあたる。
だから「フォームのどこかに新しいウィンドウサイズを表示する」といった処理は
「自分で処理した」内に入らないのでデフォルトプロシージャを呼び出す必要がある。

こんな風に理解していたんだが間違ってる?

244 名前:220 mailto:sage [2007/03/28(水) 12:26:34 ]
どうもすみません、質問の仕方が悪かったです。

2台のPC間で、SOCKETを使い、
片方をサーバー、もう片方をクライアントにして通信しているのですが、
一方から一方にバイナリデータのファイル(拡張子が jpeg, exe 等)を送りたいのです。

テキストデータなら、send,recvで簡単に送受信できたのですが、
バイナリデータは同じ方法で転送できない事に気付きました。

ググってみたところ、MFCを使う方法しか探せなかったんです・・・。
もしかして、バイナリデータを送受信できるSocketAPIって、
提供されていないんでしょうか??

コンパイラはVC.NET 2003です。
エスパーの皆様、ヨロシクお願いいたします m(。−_−。)m

245 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:29:47 ]
バイナリデータをsend/recvで送受信できないわけが無い。
MFCのソケット関連だって所詮winsockのラッパに過ぎない。

246 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:45:07 ]
バイナリもsend/recvで送受信できるお

247 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:56:58 ]
ファイルをテキストモードでオープンして送ってんじゃないの?

248 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 14:01:46 ]
MDI子ウィンドウをステータスバーに重ねると、ステータスバーが消えてしまいます。
消えないようにするにはどうすればいいのですか?
WM_PAINTになにかすればいいのはわかるのですが、うまくいきません・・・。
(消えたステータスバーはMDIフレームウィンドウのサイズを変えるとまた表示されます)

(1)MDIフレームウィンドウ
(2)MDI子ウィンドウ
(3)ステータスバー

+---------------------+
|(1).  +---------+    |
|    |(2)..     |    |
|    +---------+    |
+---------------------+
|(3).              |
+---------------------+
  ↓ (2)を(3)に重ねてから、(2)を元の位置に移動するとこうなる

+---------------------+
|(1).  +---------+    |
|    |(2)..     |    |
|    +---------+    |
+-----+       +----+
|(3)..  |       |    |
+-----+---------+-----+
      ↑ステータスバー消える!!

249 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 14:55:58 ]
ステータスバーの親を MDIフレーム から MDIフレームの親にすれば?

250 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 15:24:41 ]
>>249
できました
だめだ親とか子とか全然理解してないみたい・・・Orz=3



251 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 16:53:59 ]
親の心子知らず

252 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 18:18:41 ]
子の心親知らず

アスペ親子乙






[ 続きを読む ] / [ 携帯版 ]

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

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