Win32API質問箱 Build67at TECH
Win32API質問箱 Build67 - 暇つぶし2ch356:355
08/06/17 21:47:41
すみません。ググったらすぐわかりました。MOUSEHOOKSTRUCTEXを使うべきなんですね。

357:デフォルトの名無しさん
08/06/17 21:54:32
Editコントロールを改良してくれるというなら、TSFに対応してほしかった。
ただ、MS-IMEナチュラルインプットがフェードアウト気味で、どうでもいいと思うようになってきたけど。

358:デフォルトの名無しさん
08/06/17 21:59:44
時代はATOKです

359:デフォルトの名無しさん
08/06/17 22:27:14
SS_BITMAPを指定したスタティックコントロールにStretchBlt()した画像を貼り付ける方法が判りません。

(WM_PAINT以外)
hBmp = (HBITMAP)LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE);
HDC hDC = GetDC(hwnd);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
hBackDC = CreateCompatibleDC(hMemDC);
hBackBmp = CreateCompatibleBitmap(hMemDC, 256, 192);
SelectObject(hBackDC, hBackBmp);
SetStretchBltMode(hBackDC, STRETCH_HALFTONE))
StretchBlt(hBackDC, 0, 0, 256, 192, hMemDC, 0, 0, 640, 480, SRCCOPY);
ReleaseDC(hwnd, hDC);

(WM_PAINT内)
BeginPaint(hwnd, &ps);
SendDlgItemMessage(hwnd, IDC_BITMAP1, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBackBmp);
EndPaint(hwnd, &ps);

このようにしてみましたが、スタティックコントロール上には何も表示されません。
何が原因でしょうか。
※便宜上WM_~と書いていますが、実際はメッセージクラッカーを使用しています。

360:デフォルトの名無しさん
08/06/17 22:42:44
WM_PAINT内

361:デフォルトの名無しさん
08/06/17 23:38:47
マインスイーパの(ニコニコマークの)ボタンのようなものを押そうとしているんですが、

HWND hwnd = FindWindow(NULL,TEXT("マインスイーパ"));
POINT pos = {87,27};
int lparam = (pos.y<<16) + pos.x;
PostMessage(hwnd,WM_LBUTTONDOWN,0,lparam);
PostMessage(hwnd,WM_LBUTTONUP,0,lparam);

で押したことにできません。
pos={100,100}とかで下の領域部分は押したことにできます。
調べた感じ、ボタンっぽい部分はハンドルも持ってなさそうなのですが、
どうすれば押せるのでしょうか?

362:デフォルトの名無しさん
08/06/17 23:40:11
>>361
F2を押したことにするんじゃだめなの?

363:デフォルトの名無しさん
08/06/17 23:43:35
>>362
マインスイーパをプログラムで操作したいというよりは、
ハンドルを持っていないボタンを押したいということなんです。

364:362
08/06/17 23:43:36
よく考えたらF2よりメニューのID調べてWM_COMMAND送ったほうが楽かも

365:デフォルトの名無しさん
08/06/17 23:46:23
>>363
SendInput

366:デフォルトの名無しさん
08/06/17 23:54:28
>>365
やっぱりそれしかないんですかね?
PostMessageでなんとかしたかったけど、SendInputでいってみます。
ありがとうございました。

367:デフォルトの名無しさん
08/06/18 00:31:14
「チートのためのSendInput」
という本を書いたら売れますか?

368:デフォルトの名無しさん
08/06/18 02:50:24
チート専門ならWin32APIなんかよりAHKでも薦めるかな

369:デフォルトの名無しさん
08/06/18 13:13:44
すみません、ちょっとお聞きしたいんですが、
CreateFileMappingAの戻り値のHANDLEから
_open_osfhandle()と_fdopen()とで
FILE*を取得することは出来るんでしょうか?
どうもやってみても_open_osfhandle()が-1を返すんですが、
失敗する理由が自分のコーディングミスなのか仕様なのか分からないです。


370:デフォルトの名無しさん
08/06/18 14:27:41
そのハンドルは別のものだから使えないよ

371:デフォルトの名無しさん
08/06/18 17:25:33
>>360
遅レスすみません、漸く解りました。
ありがとうございます。

(WM_PAINT以外)
hBmp = (HBITMAP)LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE);
HDC hDC = GetDC(hwnd);
hMemDC = CreateCompatibleDC(hDC);
SelectObject(hMemDC, hBmp);
hBackDC = CreateCompatibleDC(hMemDC);
hBackBmp = CreateCompatibleBitmap(hMemDC, 256, 192);
hPrevBmp = SelectObject(hBackDC, hBackBmp);
SetStretchBltMode(hBackDC, STRETCH_HALFTONE))
StretchBlt(hBackDC, 0, 0, 256, 192, hMemDC, 0, 0, 640, 480, SRCCOPY);
ReleaseDC(hwnd, hDC);

(WM_PAINT内)
BeginPaint(hwnd, &ps);
HBITMAP hTempBmp = (HBITMAP)SelectObject(hBackDC, hPrevBmp);
SendDlgItemMessage(hwnd, IDC_BITMAP1, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBackBmp);
SelectObject(hBackDC, hTempBmp);
EndPaint(hwnd, &ps);

372:デフォルトの名無しさん
08/06/18 17:27:16
>>371
そのソースじゃ何も解っていないようだな

373:デフォルトの名無しさん
08/06/18 17:28:40
WM_PAINTの度にSTM_SETIMAGEを送る必要はない気がするんだけど、自分の勘違いか?

374:デフォルトの名無しさん
08/06/18 17:40:35
てかStretchBlt自体が不要。SS_REALSIZECONTROLでいいじゃん。
それとも、XP未満にも対応する必要でもあるの?

375:デフォルトの名無しさん
08/06/18 20:02:36
戦略からコードの細部にいたるまで間違いだらけだな、感動した。
またクライアント領域の人か?基礎からちゃんと勉強しないと話にならんぞ。

376:デフォルトの名無しさん
08/06/18 20:40:19
今更Win32の基礎を勉強するなんて馬(ry


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch