後ろで大きな爆発音がした。あるいは気のせいかもしれない。 とりあえず今は驚いて振り返る前に、まずパスタをゆでようと思った。 そんな思いで立てましたわ。
これはいちおつじゃなくて 知らないならレスしないでください。
CD取り出しするAPIってありますか?
DeviceIoControl
mciSendStringで開け閉めできたような
CDにかかった精子を綺麗に拭き取るAPIありますか?
::RefreshSamenByHand( HWND hWnd);
学校サボってる中学生の相手なんかしなくても
相手してるのも学校サボってる中学生だから
この時間にレスしてる奴って学校サボってる中学生だから
19 :
デフォルトの名無しさん :2009/02/03(火) 15:55:27
ウィンドウを作成しESCで閉じるだけのプログラムに CreateProcess関数でwinmain.exeを起動するプログラムを追加したんだけど 当たり前だけど、新しいウィンドウが開いてマインスイーパーが起動しますよね この際、最初に作ったウィンドウの子ウィンドウとしてマインスイーパーを起動することは出来ないのでしょうか
以下の判定文でMDIフレームウィンドウ(一番大本のウィンドウ)が 最前面かどうかを判定しようとしましたが、 よく分からないハンドルしか返って来ません。 MDI子ウィンドウ等かと思いましたが違うようです。 一体何のハンドルが返ってきているのでしょうか? g_hWndMain == GetWindow( g_hWndMain, GW_HWNDFIRST )
21 :
デフォルトの名無しさん :2009/02/03(火) 16:19:21
ホットキーコントロールに表示されてる文字列ってどうやって取得する?
HKM_GETHOTKEY
はい?
26 :
デフォルトの名無しさん :2009/02/03(火) 16:34:50
27 :
デフォルトの名無しさん :2009/02/03(火) 16:36:00
>>22 あきらめるって何を?
プログラム組むことあきらめて
>>22 みたいに、知識無いのに無駄口叩いて粘着する人間になれってこと?
28 :
デフォルトの名無しさん :2009/02/03(火) 16:37:13
>>26 できるならそれはよかったと安心できたけど
なんで質問スレにいるの?
アホなの?
718 名前:デフォルトの名無しさん[] 投稿日:2009/01/30(金) 08:29:41
やりたいこととしては、吉里吉里とDXライブラリを同ウィンドウで処理することなんですが
WinAPIでウィンドウ作って
その子ウィンドウとして、ある.exeファイルを起動(吉里吉里)
そして、通常は霧きりで進行、なんらかのフラグでDXライブラリに移行
みたいなのを創造しているのですが、これは可能なのでしょうか?
知識があまり無いので勘違いしまくりの発言だったらすいません
791 名前:デフォルトの名無しさん[sage] 投稿日:2009/01/31(土) 13:18:40
ああ、親ウィンドウのエディットボックス内の入力されている
ファイル名を子ウィンドウで取得させて処理させたいって事か・・・やっと意味がわかった
どのタイミングでさせたいの?場合によっては独自定義メッセージでさせちゃうとかすりゃいいのに
878 名前:デフォルトの名無しさん[] 投稿日:2009/02/01(日) 21:16:33
WinAPIでアプリAを作り、Aを起動すると
ウィンドウを作成し
次に予め作っておいたアプリBを起動し、それをアプリAの子ウィンドウにする
これってどうやればできますでしょうか
885 名前:デフォルトの名無しさん[] 投稿日:2009/02/01(日) 21:27:06
>>881 ハンドルから子ウィンドウは分かりましたがアプリAを起動するとアプリBの.exeを自動で起動する方法が分かりません
数日前からいるこいつだろ。
最初にできるって言った奴責任持って回答しろよw
30 :
22 :2009/02/03(火) 16:41:40
>>27 26みてーのしかいないから諦めろって事よ
ここで聞いても無駄な時間だと思うぜー
31 :
デフォルトの名無しさん :2009/02/03(火) 16:42:31
>>29 うんそうだけど、質問スレに粘着して質問に答えずに意味の分からない煽りをする必要性を教えて欲しいかな
暇なの?それとも、初心者が育つのが嫌なの?
32 :
デフォルトの名無しさん :2009/02/03(火) 16:43:35
>>30 知識無いのに知ったかぶって粘着してる奴ばっかってのは知ってるけど
たまにちゃんと知ってる人も居るから聞いてます
CreateProcess教えてくれた人とかね
別プロセスのウインドウを親ウインドウに指定する事を禁止する記述は最近のSDKからは消えているので 普通にSetParentでできるかもしれない ただし親ウインドウに指定できたからと言って期待通りに動くかどうかはまた別問題
やったことないけど、新規に独自の Window station を作って STARTUPINFO にそのステーション名渡す とかいう話になるのかね?
35 :
デフォルトの名無しさん :2009/02/03(火) 17:28:18
>>33 ありがとうございます
既存のウィンドウのハンドルを取得するのはFindWindow関数で出来るみたいなのでちょっとまた試行錯誤してみます
もう来るなよ
メッセージフックで他のソフトにWM_KILLFOCUSを通さないようにしたいと思い、 メッセージフック→フックプロシージャ( if(cwps->message==WM_KILLFOCUS)return true; ) とやり、しっかりif(cwps->message==WM_KILLFOCUS)return true;の所にも届いているのですが、 上手くカットできてないのか何故かそのフックを組み込んだソフトにもWM_KILLFOCUSが届いてしまいます。 一度、WM_KILLFOCUSをフックしたらメッセージボックスを出すようにして試してみてちゃんとWM_KILLFOCUS が送られてくるタイミングでメッセージボックスがだされるのでフックはちゃんとできていると思うんですが なぜでしょうか? SetWindowsHookExの第一引数はWH_CALLWNDPROCにしています。
>>37 It is highly recommended that you call CallNextHookEx and
return the value it returns; otherwise, other applications that
have installed WH_CALLWNDPROC hooks will not receive hook
notifications and may behave incorrectly as a result. If the hook
procedure does not call CallNextHookEx, the return value should be zero.
The CallWndProc hook procedure can examine the message, but it cannot modify it.
英語よく分がんねぇ CallNextHookEx呼ぶか、0返すかしろってことだよね?でもCallNextHookExまたは0 返すとメッセージカットできないし、要するにメッセージフックは来たメッセージ が分かって勝手に処理を追加することはできても本来されるとされていた処理はカット できないってこと?
40 :
デフォルトの名無しさん :2009/02/03(火) 18:07:28
煽ってる奴っていつもここに粘着してるクズだからスルーしなさい
文字列を仮想キーコードに変換できる? "A" → VK_A "Shift" → VK_SHIFT みたいなの
要するにメッセージフックではメッセージをカットすることはできないと? ではメッセージフックの他にメッセージをカットする方法ありますか?
>>32 前スレかどっかで答えたのじゃだめなん?
CreateProcessで立ち上げたアプリのHINSTANCEから
メインウィンドウのハンドルを取得して
そのウィンドウハンドルを自分のウィンドウの子ウィンドウにするように
ウィンドウスタイル変更したらいいんじゃね?
>>43 たしか、消し去りたいときはWM_NULLにしてしまうのではなかったかな?
×メッセージフックではメッセージをカットすることはできない △WH_CALLWNDPROCではではメッセージをカットすることはできない
変更可能なのWH_MESSAGEだけじゃね。 あとローレベルフック。
LoadImageでL"image\\hoge.png"を渡して PNGの画像を読み込もうとすると0が返ってくるです。 どうすればいいですか?
LoadImageっていつの間にかpngに対応したのか 今日はじめて知ったよ
>42 無理じゃないかなー。情報減ってるんで。
ヘッダ読んで置換
PNG扱いたいなら素直にGDI+使っとけ、で終了。
OleLoadPictureFileは対応しているように見えるな。 ファイル名をVARIANT型で渡す必要があるので多少面倒だが。 ……PGNという画像形式は流石に無いと信じたい。
PGNなんて画像形式聞いた事無いんだが
libpng
PGNも知らないとかいつの時代の人間だよ……
くやしい!…PGN…PGNッ
クリムゾンAPI
DIBをStretchDIBits関数で描画したときに YSrcを0,Xsrcを0以外に設定すると Yの座標がおかしくなるんだけど,そういうもの?
PGMじゃなくてPGNか。。
ピグモンカワユス
libpngは正直言ってお勧めしない
>文字列を仮想キーコードに変換できる? 変換テーブルを自前で用意すりゃいいじゃん。
日本語文字は?
俺ならSusie Plugin
pngのデコードくらい自分で書けばいい
イヤイヤマテマテ BMPならともかく、PNGとかTIFFは相当手間かかると思うんだぜ
特に、TIFFは色々対応し始めたらきりがないからな。 画像のデコード自体が目的なら止めはしないけど。
MapVirtualKeyしてGetKeyNameTextして一致するやつ探せばええやん PrtScrとかキーボードによって表記違うやつがどうなるか知らんけど
>>69 ガンマとか色空間を捨てればpngは比較的簡単だぞ
74 :
デフォルトの名無しさん :2009/02/04(水) 07:27:16
pngはlibpngあっただろ
>>64 に戻る
!!↓png以外の話題でお願いします!!
ヘッダからVK~を検索して引けばいい
77 :
デフォルトの名無しさん :2009/02/04(水) 11:30:51
CLRのPanelコンポーネントに相当するものは何でしょうか?
static
空のウィンドウ作って包含されるウィンドウの親をそいつにすればいい
ちょっと何言ってるかわかんないです
それは君の頭が悪いからです
どのアプリでもそうなんだが、AdobeReaderからのテキストのドロップが 変になるのはどっちが悪いんですか?
AbodeReaberが悪い
85 :
78 :2009/02/04(水) 14:29:45
>>80 モードレスダイアログ作ってダイアログプロシージャ作って(ry
ってやつですか?
StretchDIBitsで縮小したDIBビットデータにアクセスする方法を教えてください
GetDIBits
>>87 ありがとうございます。
とりあえずやってみたのですがうまくいきません。。
dwBufferに入ってるデータを縮小してまたdwBufferに戻したいのですが・・・
1440x1080のDIBデータ(dwBuffer)を1280x720に縮小
dwBuffer = new DWORD[1440*1080];
dwBufferにデータをぶち込み
BITMAPINFO bi;
::ZeroMemory( &bi, sizeof( BITMAPINFO ) );
bi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
bi.bmiHeader.biWidth = 1440;
bi.bmiHeader.biHeight = 1080;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
HDC hdc = ::CreateCompatibleDC( NULL );
HBITMAP hb = ::CreateCompatibleBitmap( NULL, 1280, 720 );
::SelectObject( hdc, hb );
::StretchDIBits( hdc, 0, 0, 1280, 720, 0, 0, 1440, 1080, dwBuffer, &bi, DIB_RGB_COLORS, SRCCOPY );
::GetDIBits( hdc, hb, 0, 720, dwBuffer, &bi, DIB_RGB_COLORS );
突っ込み所満載かもしれませんがどこが悪いのでしょうか・・・
GetLastErrorぐらいやってから聞いてるんだろうな?
>>89 知らないならレスしないで下さい。ウザイだけです。
>>90 知らないならレスしないで下さい。ウザイだけです。
CreateCompatibleBitmapにNULL渡したら失敗するだろそりゃ
何とCompatible(互換)なんだろうな
なにをするためにベタDIBデータ欲してるのか分からんが、多分そもそもCreateCompatibleBitmapじゃなくてCreateDIBSectionじゃないとダメな気がするなあ。
DC
皆さん色々ご指摘ありがとうございます。
>>94 DWORD *buf;
HDC hdc = ::CreateCompatibleDC( NULL );
HBITMAP hb = ::CreateDIBSection( hdc, &bi, DIB_RGB_COLORS, (void**)&buf, NULL, 0 );
::SelectObject( hdc, hb );
::StretchDIBits( hdc, 0, 0, 1280, 720, 0, 0, 1440, 1080, dwBuffer, &bi, DIB_RGB_COLORS, SRCCOPY );
::GetDIBits( hdc, hb, 0, 720, dwBuffer, &bi, DIB_RGB_COLORS );
で試してみると先ほどは真っ黒だったのが今度は画面半分下から縮小された画像が表示されました。
(CreateCompatibleBitmapでhdcを指定しても真っ黒でした)
ちなみに、StretchDIBitsはhdcにイメージのハンドルを与えてやると
イメージには正常に縮小された画像が表示されていましたので
怪しい部分はそれ以外だとおもいますが・・・
また何処が間違っているかご指摘お願いします
bi.bmiHeader.biWidth = 1280; bi.bmiHeader.biHeight = 720; ::GetDIBits( hdc, hb, 0, 720, dwBuffer, &bi, DIB_RGB_COLORS );
98 :
86 :2009/02/04(水) 18:24:11
>>97 早速のお答え有難うございます!!
確かにそれでちゃんと画面の上から書き出しましたが・・・
今度は画像が崩れてしまいました><
でもこれで更に近いところまでくることがでいました!
99 :
86 :2009/02/04(水) 18:32:43
すみません。 bi.bmiHeader.biWidth = 1280; bi.bmiHeader.biHeight = 720; をしたから画像がくずれたのではなくてその前から崩れた状態でした。。 くずれた状態というのは同じパターンを繰り返してるみたいな・・・ StretchDIBits自体はうまくいってるので他に怪しい所は CreateDIBSectionとGetDIBitsでしょうか?
AABB AB AABB -> CD CCDD CCDD AABB AB■■ AABB -> CD■■ CCDD ■■■■ CCDD ■■■■ ビットマップごと小さくしたいのか、ビットマップの大きさは同じで 画像だけ小さくしたいのか
101 :
86 :2009/02/04(水) 18:39:19
くぁwせdrftgyふじこl;p
>>97 神様ありがとう!
おもいっきり勘違いしてましたすみません><
GetDIBitsの直前でそれをやればよかったんですね。
ちゃんと表示できました。ありがとうございます。
>>100 いやすみません。
1440x1080のDIBデータだけある状態で
それを1280x720のサイズのDIBデータにしたかったんです><
DWORD の次は QWORD かと思ってたら DWORDLONG という訳の分からないものだった衝撃
日記はblogに書いてろクズ
ハ,,ハ ((⊂ ヽ ( ゚ω゚ ) / ⊃)) | L | '⌒V / ヽ,_,/ ヽ_./ お断りします __,,/,, i お断りします ( _ | \\_  ̄`'\ \ ヽ ) > ) (_/´ / / ( ヽ ヽ_)
basetsd.hに無いDWORDLONGなど邪道。 DWORDの次はDWORD64と決まっておるのだ。
タスクトレイにアイコン表示させて右クリックで操作したいんですが google検索したところ、case WM_TRAYICONMESSAGE: case WM_TRAYICONMESSAGE: を使うサンプルが出てきました。 Borland C++ Compiler 5.5 で書いてるんですが未定義のシンボルと出て使えませんでした。 Borland C++ Compiler 5.5 での書き方って別にあるんですか?
108 :
デフォルトの名無しさん :2009/02/04(水) 22:52:35
Vista SP1,VC++2008 Win32Projectです。 ウィンドウにツールチップを設定したいのですがうまくいきません。 GetLastErrorは0でした。 主なコードは以下の通りです。 case WM_CREATE: GetClientRect(hWnd, &ClientRect); InitCommonControls(); hTool = CreateWindowEx ( WS_EX_LEFT, TOOLTIPS_CLASS, NULL, TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, NULL, hInst, NULL ); ToolInfo.cbSize = sizeof(TOOLINFO); ToolInfo.hinst = NULL; ToolInfo.hwnd = hWnd; ToolInfo.lParam = NULL; ToolInfo.lpReserved = NULL; ToolInfo.lpszText = L"テスト"; ToolInfo.rect = ClientRect; ToolInfo.uFlags = TTF_SUBCLASS; ToolInfo.uId = 1; SendMessage(hTool, TTM_ADDTOOL, NULL, (LPARAM)&ToolInfo); SendMessageの戻り値がFALSEでうまくいきません。 どこが悪いのでしょうか? VC++を始めて2ヶ月ちょっとの超初心者なので、調べ方が悪いのか解決方法が分りません。 誰かわかる人がいたら教えてください。お願いします。
WM_USER+1
>未定義のシンボルと出て使えませんでした。 アプリケーション定義のメッセージだもの、自分で定義しなきゃ使えんよ。 #define WM_TRAYICONMESSAGE WM_APP + 1 とでもしておけ。
>>105 なんで QWORD にしないんだろうか・・・
5ワードと区別がつかないからか?
QUAD?
クアッドワード
自分でQWORDって定義して使ってたけど WORDLONGなんてあったんだね
もうUINT64でいいよ。
>>110 DIBは通常BottomToTopなので……まあ、色々あるんだわ、これが。
とりあえず、昔のDIB系のAPI使うより、
CreateDIBSectionから始めたほうが幸せになれる、とだけは言っとく。
ウィンドウを毎秒50フレームで再描画してるんですが、ダブルバッファリングしてもどうしてもちらつきが多いです。 GDIとかで描いてる以上チラつきをDirectX並に減らすことは無理です?
ちらついてる原因にもよるが。WM_ERASEBKGNDは潰しとけとかその辺は押さえてるか?
セカンダリモニタの開始座標位置(左上の座標)を得るにはどうすればいいですか? そのままプライマリの右に設定されてるときはプライマリの解像度を得たら分かるけど 左,上,下とか微妙にずらして斜め上とかにも設定できちゃうので困ってます。
GetMonitorInfo
指定した日が祝日かどうかを調べるAPIを教えてくださいよ
>>125 面白くない。
もっとがんばりましょう。
BOOL WINAPI GetHoliday( time_t /* time */) { return TRUE; }
せめてイスラム歴の正月かどうかを調べるAPIぐらいの事言えよ
ほら、滑ったw
掲示板に僅か50秒で滑ったなんてレスするお前が滑ってるよ
どうでもいいよ
134 :
129 :2009/02/05(木) 16:02:30
ありがとうございます。
135 :
129 :2009/02/05(木) 16:05:19
騙り乙
136 :
129 :2009/02/05(木) 16:05:24
やめて下さい。知らないならレスしないで下さい。消えてください。
137 :
129 :2009/02/05(木) 16:11:16
暇人だな
騙りが多いので酉つけました
139 :
129 :2009/02/05(木) 16:20:27
先に偽者にトリップ付けられたしw
141 :
129 :2009/02/05(木) 16:42:15
しつこいw
142 :
129 :2009/02/05(木) 16:43:08
僕がイスラム歴の正月かどうかを調べるAPIです。
基本的に俺が本物
146 :
129 :2009/02/05(木) 16:49:20
トリップ付けて荒らしてる奴は偽者
ここまで、全部オレの自演
148 :
129 :2009/02/05(木) 16:50:21
もうイスラム歴の正月かどうかを調べるAPIって言わないからこれくらいで勘弁してくれよ
ここまで俺の自演
2010年の春分の日が決まったばかりだというのに
151 :
129 :2009/02/05(木) 16:59:24
せめてイスラム歴の正月かどうかを調べるAPIぐらいの事言えよw
EM_GETLINE The copied line does not contain a terminating null character. これ作ったやつマジで氏ね!!
153 :
デフォルトの名無しさん :2009/02/05(木) 17:31:32
129大杉ワロタ
155 :
デフォルトの名無しさん :2009/02/05(木) 18:48:40
ここまでスベったネタを誤魔化すための自演
158 :
デフォルトの名無しさん :2009/02/05(木) 19:24:48
>>152 Win16時代のAPIに今更ケチ付けてもねえ
その辺にしてくれねーかな
あぁ
Win16時代は速度優先のため大多数のAPIは終端にNULLをつけなかった。 さすがにプログラマーからの苦情が多かったためWin32ではNULLをつけるよう仕様変更した。 しかしEM_GETLINEなど一部は後方互換性を重視して、敢えてNULLをつけていない。 少しはググレカス
最近始めましたが、サンプルを見ると以下のように先頭にスコープ解決演算子を 付けているのが多いのですが、付けると何か良いことがあるのでしょうか? ::MessageBox(~);
インテリセンスが効くとか。
MFCやATLのライブラリで同名を用いていることが多いので、それと区別したい場合に用いる。 または、インテリセンスを効かせようとした跡。
168 :
165 :2009/02/05(木) 23:07:03
>>166 , 167
どうもありがとうございました。
>>121 やったつもりが1文字間違っててうまく潰せてなかったみたいでした。
すっごい綺麗にいけました!ありがとうございます。
PostMessageにてboost::shared_ptrの値を渡すのは危険でしょうか? Post先で参照後に勝手に消えてくれるので便利な気がするのですが。
PostMessage は非同期だから Post先にメッセージが届く前に shared_ptr が破棄されているかもしれないので危険
わかりました。やめときます。素直にSendMessageTimeout使います。
119だが,DIBSectionに変更して幸せになれました.
幸せになるくらいなら猿でもなれる 問題は幸せにしてやれるかどうかだ
深イイ話くらい中身のない言葉っすね
おっぱいがあれば幸せ
177 :
デフォルトの名無しさん :2009/02/06(金) 10:18:26
ない
179 :
86 :2009/02/06(金) 10:57:15
またまたすみませんが・・・ 数日前色々教えてもらって縮小はうまくいったのですが今度は拡大がうまくいきません>< 1440x1080を1980x1080に拡大 dwBuffer = new DWORD[2048*2048]; dwBufferにデータをぶち込み BITMAPINFO bi; ::ZeroMemory( &bi, sizeof( BITMAPINFO ) ); bi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER ); bi.bmiHeader.biWidth = 1440; bi.bmiHeader.biHeight = 1080; bi.bmiHeader.biPlanes = 1; bi.bmiHeader.biBitCount = 32; bi.bmiHeader.biCompression = BI_RGB; DWORD *buf; HDC hdc = ::CreateCompatibleDC( NULL ); HBITMAP hb = ::CreateDIBSection( hdc, &bi, DIB_RGB_COLORS, (void**)&buf, NULL, 0 ); ::SelectObject( hdc, hb ); ::StretchDIBits( hdc, 0, 0, 1980, 1080, 0, 0, 1440, 1080, dwBuffer, &bi, DIB_RGB_COLORS, SRCCOPY ); bi.bmiHeader.biWidth = 1980; bi.bmiHeader.biHeight = 1080; ::GetDIBits( hdc, hb, 0, 1980, dwBuffer, &bi, DIB_RGB_COLORS ); 出力サイズの1280x720を1980x1080に変更しただけなんですが・・・ どうも出力先のサイズが1440で切られてるみたいです。。。 何処が間違ってますか?
ダメだこりゃ 次いってみよー
>>179 CreateDIBSectionを元画像と同じ大きさで呼んでるからだろ
てか、お前プログラムやめたら?
182 :
86 :2009/02/06(金) 11:17:21
あ、ちなみに
::GetDIBits( hdc, hb, 0, 1980, dwBuffer, &bi, DIB_RGB_COLORS );
1980じゃなくて1080ですね。
>>181 そう思って出力先と同じサイズにしたんですが画像がくずれてしまって・・・
183 :
86 :2009/02/06(金) 11:21:32
あ、ごめんなさい。激しくわかりました。
僕が馬鹿でした。
言葉は悪いけど
>>181 が参考になりました。
どうでもいい茶々を入れる 1980×1080は1920×1080では?
185 :
86 :2009/02/06(金) 12:03:21
>>184 いや1980なんですよねこれが。
おかげで拡大もばっちりいったのですが・・・
グラデーションがかかった画像を縮小すると汚さが目立ちます
オリジナルの1440x1080を1280x720にすると目立つとおもって
1440x1080→1980x1080→1280x720でやっても一緒だったのですが
同じ流れでC++BuilderのTBitmapで行うと綺麗に行くのですが
これなんかパラ指定があるんでしょうか?
ちなみにStretchDIBitsのHDCにTBitmapのハンドルを与えてから拡大縮小してます
大元が勘違いして変な数値になったのかなw
>>185 SetStretchBltModeじゃね?
188 :
86 :2009/02/06(金) 12:56:26
>>187 ありがとうございます。
ちょっと試してみます!
189 :
86 :2009/02/06(金) 13:37:18
くぁwせdrftgyふじこlp;
>>187 神様ありがとう!
すげえええええええええです!
一発で綺麗に縮小できました!!
ありがとうありがとう
NG推奨:86、129
bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0; bf.AlphaFormat = true; bf.SourceConstantAlpha = 255; AlphaBlend関数でBLENDFUNCTIONを上記のように設定すると、画像の完全な透明以外の部分はちゃんと 半透明に表示されますが、完全に透明な部分は何故か白で塗りつぶされてしまいます。これはどう設定しても無理ですか?
AlphaBlendは糞 計算式がおかしいのは有名な話
過去ログは見れない人も多いから、煽りじゃないなら参考としては不適切。
>>174 自分が幸せになれんのに
他人が幸せになれるわけないじゃないか・・・・
チクショー
DDCAPS_ALPHAの対応マダァ-? (・∀・ )っ/凵⌒☆チンチン
他の人が作成したdllを呼び出すプログラムを作成したんですが あるdllをLoadLibrary()したらエラーリターンしてエラーコードが998(ERROR_NOACCESS)でした。 なのでdll作成側にDllMainのDLL_PROCESS_ATTACHでメモリ破壊してると、このエラーコードになると報告したのですが こっちでも呼び出し元に不備がないか調査して日々報告するように言われております。 呼び出し元の不備でこのエラーになるケースはどのようなものが考えらるでしょうか? 動作環境はXPのSP2です エラーになるdllがなにしてるかは不明で、そのdllをもらうこともできません
WH_GETMESSAGEにてのメッセージフックでWM_MOVEを検知して移動先の座標を得ようと しているんですが、pt.x,pt.yにでたらめな座標が入ってしまいます。何故でしょうか? LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam){ CWPSTRUCT *cwps; cwps=(CWPSTRUCT *)lParam; if(nCode<0) return CallNextHookEx(hMyHook,nCode,wParam,lParam);; if( nCode == HC_ACTION ){ if(cwps->message==WM_MOVE){ POINT pt; pt.x=LOWORD(cwps->lParam); pt.y=HIWORD(cwps->lParam); } } return CallNextHookEx(hMyHook,nCode,wParam,lParam); } あと同じようなので if(cwps->message==WM_WINDOWPOSCHANGED)LPWINDOWPOS pos=(LPWINDOWPOS)cwps->lParam; もpos->xとかにもでたらめな数字入ってしまう。 MSDNも何度も調べたし、色々な組み合わせを何時間もトライ&エラー繰り返してたんですが やっぱり分かりません。教えてください
>>198 LoadLibraryするだけの単純なプログラムを書いて渡すっていうのじゃダメなの?
それともそれだけでは再現しないの?
>>199 マウス座標が cwps->hwnd が示す
ウィンドウ相対だからとか?
202 :
デフォルトの名無しさん :2009/02/06(金) 20:37:21
符号なしの値を符号付きの変数に代入してこけてるとか?
>>199 WH_GETMESSAGEでかけたフックのコールバックのlParamはMSG構造体なんだが
204 :
198 :2009/02/06(金) 20:47:13
>>200 >>198 です。
エラーが発生する条件が不明でエラーの発生頻度もあまり多くないんです
LoadLibrary()するだけのプログラムでも環境しだいでは再現するかもしれないんですが
再現するかもしれないから、ちょっと試してみてください、って言える関係じゃないんです
205 :
デフォルトの名無しさん :2009/02/06(金) 20:50:20
どっかに不定が紛れ込んでいるに1000ペリカ
>>202 ありがとうございます。まったくその通りでした。
MSDNに「1 個の 構造体へのポインタ」としか書いてなかったからCWPSTRUCTでいいと思ってた
今後のために教えてください。そういうのってどこに書いてます?
でも、これだとWM_MOVEが引っかからないから他のフックタイプ使うべきなのね
英語の方には書いてあったのね。楽だからついつい日本語の方ばっかり見ちゃうけど やっぱり英語の方も見たほうがいいですね
WH_CBTにしてHCBT_MOVESIZEを見るようにしたらいけました。 このまま教えてもらわなかったらまた何時間も悩み続けるところだったよ。ありがとう
210 :
デフォルトの名無しさん :2009/02/07(土) 01:18:37
なるほど ありがとうございました
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
212 :
211 :2009/02/07(土) 04:20:05
あ…スマン…Janeの裏技とか言うのみて試してたら書き込まれた(;´Д`)
ヾヽヽ (´▽`) おっさんチュンチュン ミ_ノ ″″
複雑だと思うならつかわなきゃいいんじゃねーの? なんでアホはあるもの全部使わなきゃ気がすまねーの?
216 :
デフォルトの名無しさん :2009/02/07(土) 09:27:24
質問です。 (A) ツリービューで↓を書くと TreeView_InsertItem(HWND hwndTV, LPTVINSERTSTRUCT lpis); BorlandC++ が ”警告 W8019 : コードは効果を持たない”と と吐くのですが、どういう意味なんでしょうか? (B) また、 SendMessage(hwndPB, PBM_SETRANGE, 0, MAKELPARAM(0,files_read)); と書くと ”警告 W8084 : 優先順位を明確にするためにカッコの使用を推奨” と吐きます。どう括弧をつければいいのでしょうか?
まさか TreeView_InsertItem(HWND hwndTV, LPTVINSERTSTRUCT lpis); ↓ TreeView_InsertItem(hwndTV, lpis); ってことじゃないよなw
GetDC BeginText で得たhdcの値は変わることってありますか? あるとするならどんな時に変わりますか?
確保しっぱなしにしようとしてるのかもしれんが その使い方が間違い
普通のウィンドウだと、DCはGetDC等が呼ばれた時にシステムから提供される。 毎回設定がリセットされるのはそのため。 Windows9x系だと、スレッド辺り5つまでしか貰えないから持ちっぱなしはあり得ない。 だがNT系なら多少メモリ喰う程度だけで済むので、今の時代なら構わないのかも。 まあ、CS_OWNDC付けとけばReleaseDCしても設定内容は維持されるから、 そっちを検討した方が良いとは思う。
MSDNの日本語版は構造体のページが作成されてないからリンクも貼れない 記述文の中の構造体名ごと一斉に消しちゃってるというやっつけ仕事 文中に「構造体」とあればその前に構造体名が省略されてると見るのが吉
ひでーぶー
224 :
216 :2009/02/07(土) 14:51:27
>>217 サンクスコ。
>>218 ? 返り値を受け取ってないってことですか? SORTの属性付けてるので返り血は捨ててます。
hwndTVとlpisが実引数なら型の記述は要らないってことだろ
関数の呼び出しと宣言がごっちゃになってるんじゃないかと言ってるんじゃ?
ありがとうございました
>>221 お!だからいちいち開放しなきゃいけなかったのか
今更だけど理解した
229 :
デフォルトの名無しさん :2009/02/07(土) 18:11:32
あるチェックボックスをチェックを入れたら 別のチェックボックスのチェックを外すにはどうしたらいいですか?
BN_CLICKEDでも見張っててうんちゃらかんちゃらする
すなおにラジオボタンを使う
全部のチェックが外れた状態も欲しいんです (常に1個または0個選択)
ラジオボタンをチェックする関数の引数に、 チェックするボタンの ID として -1 を指定すれば 全部チェックが外れるよ。
ラジオボタンにしてdisable的な項目を増やせば解決するような単純なものではないって事かな
押してチェックを外したいのであれば、 ラジオボタンに期待されてるような処理ではないので チェックボックスにした方がいいかもね。 チェックボックスにも CheckRadioButton 関数って使えるんだっけ?
リストボックスのアイテムをダブルクリックするには PostMessage を使うの?
いまさらだけどWindows7βで遊んだ。 Windows7のエクスプローラ、 とうとうSysListView32じゃなくなったな
238 :
デフォルトの名無しさん :2009/02/08(日) 00:34:39
アイコンセットは少し気を遣うな 匹数に幼虫異です
ありがとうございました
>>237 タスクバーがTabやToolbarじゃなくなってたのは確認した
そろそろカスタマイズ系の常駐ソフトもお終いか?
243 :
デフォルトの名無しさん :2009/02/08(日) 14:30:08
char tt[256]; byteOutPut=(BYTE)GetPrivateProfileInt(_T("test"),_T("valuets"),1,_T("test.ini")); wsprintf(tt,"%d",byteOutPut); MessageBox(NULL,tt,"チェック",MB_RTLREADING); test.ini [test] valuets = 7 としても、値が常に「1」がかえってしまいます。 test.iniに記載されている「7」を取得したいんですが・・。
文字コードは~?
>>243 説明は省くけどtest.iniをフルパス(C:\...\test.ini)で指定しても駄目かな?
>>243 こういう奴は大人しくレジストリ使っとけばいいのに……
248 :
デフォルトの名無しさん :2009/02/08(日) 19:50:43
文字コードは、マルチバイト文字セットを使用する にしています。 フルパスで指定してもダメです。 _Tをなくしてもダメです。。
もうだめだこのスレ
251 :
デフォルトの名無しさん :2009/02/08(日) 20:14:11
自己解決しますた。
どの辺りが自己解決なのか…? 事故解決の変換ミス?
253 :
デフォルトの名無しさん :2009/02/08(日) 21:37:27
あなた方では役に立たないので他のサイトで教えてもらいました。
どの辺りが自己解決なのか…?
×自己で解決 ○自己を解決
256 :
デフォルトの名無しさん :2009/02/08(日) 22:19:40
つーか性格悪い奴が多すぎだろ、ここ
>>256 例えばどのレス?
多すぎってからには10レスくらいすぐに安価出せるな?
このスレ限定でIDが欲しくなるな
ネットワークの回線の速度って どう検出するのでしょうか? ラン内・ネットのロード量など。 また、よく、ダウンロードのインジケータなど 不思議に感じます。 APIで解決できるのでしょうか?
>>259 パフォーマンスカウンタ
カテゴリ名:Network Interface
インスタンス名:有効なNIC
カウンタ名:Received Bytes/Sec
とか見れば
>>259 APIにこだわるなら
IP Helper Functions
あたり
>>260 予想の範疇のレスすんな。
そう突っ込まれるだろうから10レスくらい挙げてみろって加えたんだよ。
GetProcessHeap()で取得したヒープハンドルを利用していたら いきなりハンドルの値が変わってHeapAllocで落ちました。 この現象に心当たりある方はいませんか?
266 :
265 :2009/02/08(日) 23:41:06
値を初期化すべきところに初期化してませんでした。 にらんだとおりオーバーフローだったみたいです
268 :
デフォルトの名無しさん :2009/02/09(月) 10:20:41
Windowsで一番簡単なディザ処理を行うにはどうすればいいですか?
何に対して?
向かいのタバコ屋の婆さんに対して
タバコ屋の婆ちゃん逃げて! ><;
272 :
デフォルトの名無しさん :2009/02/09(月) 11:46:03
32ビットビットマップに対して1ビット、4ビット、8ビットカラーへのディザ処理。
悪いけどそんなもんない
settimer が killtimer されたのってどーやって検知すればいいですか?
もう一個タイマー作ってイベントが発生し続けてるかどうか見てれば
・・・KillTimer するのは自分じゃないのか?
そういう突っ込みは、野暮というものだよ
279 :
デフォルトの名無しさん :2009/02/09(月) 22:02:44
→ int i,j; の様に「→」が表示されるようになってしまったんですが これをなおすにはどうしたらいいですか?「→」は青っぽいやじるしです
>>279 そのコードを書いているソフトのスレで聞きなさい。
エスパーさん、出番ですよ
不定値のまま色使ってるとか。
>>279 →は改行文字が文字化けしてるんだろうね
だとしたら文字コードの問題
そのエディタではタブが矢印で表示されるんだろ
>>280 だな
釣れた釣れた
286 :
デフォルトの名無しさん :2009/02/09(月) 23:31:53
どんなネタでも必ず釣れるスレですね
そ・・・壮大な釣りだった。。。
簡単に釣れるので、釣りの練習に使うといいよ 特に初心者の釣り師にオススメ
289 :
デフォルトの名無しさん :2009/02/10(火) 01:13:17
ここで釣り釣り言ってるのは小学生かなんか? 釣りの意味分かってないんだろうね 「ぷろぐらみんぐ」は小学生にはまだむずかしいから、おとなしくおうちでかめんらいだーごっこやってな?
ここまで俺の自演
すっかりキチガイ坊やになつかれたな どんな糞にも丁寧に罵声を浴びせた結果がこれだ
292 :
デフォルトの名無しさん :2009/02/10(火) 03:42:52
宿題スレでもマルチしてた香具師だな
293 :
デフォルトの名無しさん :2009/02/10(火) 10:21:37
WM_CHAR他WM_IME_CHARから送られてきた文字をUTF-8に変換して保持し、ウィンドウ内に描画するには WM_CHAR.WM_IME_CHAR ↓ 文字コード変換 ↓ ☆配列等へ保持 ↓ ☆から文字コード変換 ↓ ウィンドウ内に描画 しか方法はありませんか?
WM_CHAR時にはバッファに保存とInvalidateだけして後でまとめて描画だな
>>293 9xを捨ててUNICODEにしても良ければ、
WM_IMECHAR無視してWM_CHAR 1つでも困らないと思う。
もっと言えば、中でUTF-8にして保持するなら、WM_CHARよりも
UTF-32でやってくるWM_UNICHAR 1つのほうがやりやすいはず。ただしXPからだけど。
それとIMM API関数などを使って変換文字列を取得するのとどっちがいいかは微妙なとこだが。
296 :
デフォルトの名無しさん :2009/02/10(火) 14:17:39
MDIアプリで、フォーカスを持ってる子ウィンドウのハンドルを取得するにはどうすればよいでしょうか。 GetActiveWindow()、GetForegroundWindow()的なのがあるとありがたいのですが…
>>297 どうもです。
ついでにお願いします。そのメッセージの結果をAPIで取りたいのですがどう呼べばよいでしょうか。
プラグイン的なものからなのでAPIを呼ぶしかできないのです。
釣れた釣れた
___ ━┓ / ― \ ┏┛ / (●) \ヽ ・ / (⌒ (●) / /  ̄ヽ__) / /´ ___/ | \ | |
>>296 HWND hActiveWnd;
// hClient を Client Window Handle として、
hActiveWnd = (HWND)SendMessage( hClient, WM_MDIGETACTIVE, 0, 0);
で、自分は使っている。hClient の意味が分からないなら、「猫でも
分かるプログラミング」を見るように。コードは古いが、意味合いは
分かるでしょう。
>送られてきた文字をUTF-8に変換して保持し どーしても保持する必要があるなら仕方ないが、オレなら必要になった時にUTF-8に変換する
UpdateLayeredWindowでULW_ALPHAとULW_COLORKEYを同時に使うって出来ないんですか? それがダメでも、ピクセル単位で完全透過部分と半透過部分を共存させた1つのウィンドウを作る方法ってありますか?
>>304 何のためにHDCとBLENDFUNCTIONが引数にあるのかを考えれば判るだろ
>>304 アルファ値が0のピクセルはリージョンのように完全に透過するが。
いません
>>306 例えば完全透過がそのあるビットマップがh_bmpに入ってるとして、どう呼び出したらうまく透過するのか
見せてもらえませんか?家のではどう見ても透過してないんですが・・・
ちなみにこうやってます。
WS_EX_LAYEREDスタイルを追加;
HDC hdc = ::GetDC(NULL);
my_hdc bmpdc = ビットマップのDC;
POINT zero = {0,0};
SIZE bsize = {画像の幅,高さ};
DWORD flags = ULW_COLORKEY|ULW_ALPHA;
COLORREF colkey = RGB(255,255,255);
BLENDFUNCTION bf;
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.AlphaFormat = AC_SRC_ALPHA;
bf.SourceConstantAlpha = 255;
::UpdateLayeredWindow(ウィンドウハンドル,hdc,ウィンドウの左上のPOINT*,&bsize,bmpdc,&zero,colkey,&bf,flags);
::ReleaseDC(NULL,hdc);
WS_EX_LAYERED | WS_EX_TRANSPARENT
>>309 UpdateLayeredWindow は obsolete
SetLayeredWindowAttributes を使おう
> UpdateLayeredWindow は obsolete (゚Д゚)ハァ?
とある知らないEXEがUNICODEビルドなのかANSIビルドなのか区別する方法ってありますか?
インポートしてるAPIを見ればある程度推測できる
そんなもん区別して何がしたいんだ
あとはIsWindowUnicodeとか、EXE(モジュール)単位ではないけど。
APIにしまつ
320 :
デフォルトの名無しさん :2009/02/11(水) 08:55:22
>>315 メモ帳で開いて確認しる
終わったら上書き保存をお忘れなく\(^o^)/
>>315 最近、ANSIビルドのソフトをいじって、キー入力・表示・コピペはUnicodeに
対応させたものを作った。Unicodeなファイル名は扱えないが、これって
何ビルドだろうね。
322 :
デフォルトの名無しさん :2009/02/11(水) 10:29:00
>>321 ANSIビルドでかまわない。
__wargv
>>310 それはマウスヒットテストに使うのでは?
>>311 実際にどうなります?画像に合わせてウィンドウの形を変えたいんですが・・・?
>>312 それらはもう見てその通りにやってるつもりだったんですが・・・うーん
>その通りにやってるつもりだったんですが 「プログラムは、間違いなく自分がコーディングした通りに動く。 しかし、それが自分が想定した通りであるとは限らない。」
>>322 それが判断基準?
あ、もちろんIsWindowUnicodeはTRUE返すから。じゃないとWM_CHARで
Unicodeが受け取れない。APIもA/W両方インポートしてる。(が、Win9xでも動く。)
>>324 そんなこと言うくらいなら指摘して欲しいんですが?
うぜぇ
やってるつもりだったんならそれでいいじゃん。解決
どう考えてもここは324の方がウザイと思うが お前それ言いたかっただけちゃうんかと
反応してる奴もうざい
>>325 ハイブリッド、でいいんじゃね?まあ俺もそういうの作ったことあるけど。
例えばXPのEditコントロールはANSIでもUnicodeの動作をするバグがあるので
Win9xでも動くように作ろうとすると、全体的にはANSIだけど部分的にA/W切り替える必要性が出てくるんだよな。
というかこのバグを無視してANSIアプリのくせにVisualStyle対応してるソフトが多すぎ。
ググレカス
335 :
カイロ :2009/02/11(水) 16:24:29
シリアル通信の受信プログラムがうまく出来ません。。 <やりたいこと> COM3:送信側で、Tera Termで、文字を送信 COM4:受信側 コマンドプロンプトで、作ったプログラムを動かして受信し、受信した文字を表示する。 <受信プログラムの流れ> ①COM4をオープン ②通信設定 ③受信するまで、待つ ④受信したら、文字を表示。 ●受信するまで、待つことが出来ず、フフフ・・・といった文字列が 表示されてしまいます。 どうしたら、受信するまで待つように出来るのでしょうか?
これはウゼェwww
待つって日本語で書かれても。 コードさらせないのか、待ってるとこだけでも。 フフフ・・はデバッグ環境での未初期化のバッファ
339 :
カイロ :2009/02/11(水) 17:11:00
返事ありがとうございます。 以下コードの抜粋です。 ReadFileの第5引数(最後の引数)にNULLを入れると、受信するまで待つんだと思ったんですが、 送信していないのに、受信した文字列が表示されます。 ☆ポートを開いているところ int errorCode; HANDLE handle; handle = CreateFile("COM4", // ファイル名: COMポート名を指定 GENERIC_READ | GENERIC_WRITE, // アクセスモード: 読み書き 0, // 共有モード: 共有しない NULL, // セキュリティ記述子: 取得したハンドルを子プロセスへ継承しない OPEN_EXISTING, // 作成方法: ファイルを開いたときに指定したファイルが存在していなければエラーとする FILE_FLAG_OVERLAPPED, // 非同期 I/O を許す//☆同期にしてみるFILE_ATTRIBUTE_NORMAL, // ファイル属性: 特に指定しない NULL // テンプレートファイルのハンドル: 特に指定しない ); ☆通信設定するところ。(省略) ☆受信するところ。 char data[14]; DWORD dwRead; DWORD dwErrors; COMSTAT ComStat; ClearCommError(handle, &dwErrors, &ComStat); ReadFile(handle, data, sizeof(data), &dwRead, NULL); printf("受信した文字列%s", &data);
340 :
デフォルトの名無しさん :2009/02/11(水) 17:12:28
IPアドレスコントロールから値を取得するには どんな関数を使えばいいですか?IPは入力欄が4つあるので、どうやって 取得するんですか?
>>339 dwReadを確認してないみたいだけど?
IPM_GETADDRESSとか無かったっけ?
>>340 Win32 and COM Development - User Interface
- Windows Controls - Control Library
とりあえず、WindowsSDKのドキュメントの上記辺りを一通り目を通しておけ。
346 :
デフォルトの名無しさん :2009/02/11(水) 17:20:44
やだよばか
>>339 待機とは関係ないんだが
FILE_FLAG_OVERLAPPEDを指定したら
ReadFileの最後はNULLじゃ駄目なんじゃないか
349 :
カイロ :2009/02/11(水) 17:28:52
>341 >dwReadを確認してないみたいだけど? dwReadは、読み取ったバイト数が入るんですよね。 どうやって確認すればいいのでしょうか? 聞いてばかりで、すみません。
関係なくはないけどな
>>348 が真理
つかGetLastErrorぐらいしろ
つーかウォッチ式に @err,hr を入れとけ
>>349 dwReadが0だったらどうなると思う?
354 :
カイロ :2009/02/11(水) 17:46:09
>>348 >待機とは関係ないんだが
>FILE_FLAG_OVERLAPPEDを指定したら
>ReadFileの最後はNULLじゃ駄目なんじゃないか
調べてみたら、通信プログラムでは、
FILE_FLAG_OVERLAPPEDではなく、
属性なしの FILE_ATTRIBUTE_NORMALを指定するのが正しいようですね。
>>353 >dwReadが0だったらどうなると思う?
0だったら、まだ、受信してない状態ってことですか?
FILE_FLAG_OVERLAPPEDはブロッキングしたくない時に使うんだよ。
>>354 dataを1バイトにして、dwReadが0以外のときに表示するようにしてみたら?
357 :
カイロ :2009/02/11(水) 18:49:06
>>356 >dataを1バイトにして、dwReadが0以外のときに表示するようにしてみたら?
やってみました。
以下、修正後のソースの一部です。
☆ポートを開いているところ
handle = CreateFile("COM4", // ファイル名: COMポート名を指定
GENERIC_READ | GENERIC_WRITE, // アクセスモード: 読み書き
0, // 共有モード: 共有しない
NULL, // セキュリティ記述子: 取得したハンドルを子プロセスへ継承しない
OPEN_EXISTING, // 作成方法: ファイルを開いたときに指定したファイルが存在していなければエラーとする
FILE_ATTRIBUTE_NORMAL, // ファイル属性: 特に指定しない
NULL // テンプレートファイルのハンドル: 特に指定しない
);
☆受信するところ。
char data[1];
DWORD dwRead;
DWORD dwErrors;
COMSTAT ComStat;
while(1) {
ClearCommError(handle, &dwErrors, &ComStat);
ReadFile(handle, data, sizeof(data), &dwRead, NULL);
if(dwRead != 0) {
printf("%c", data[0]);
}
}
358 :
カイロ :2009/02/11(水) 18:49:39
続き・・・ なんとか、待機するところまでは、うまくいきました。 Tera Termで入力した文字が、表示されました。 ありがとうございます。 ですが、表示された文字が文字化けしていて、以下のような感じで、表示されます。 解決方法をどなたか、教えてください。 ��������Bャツ����・�・�������・����������・����・�����������������������������
ClearCommErrorって毎回チェックしないといけないんだっけ?
マルチバイト文字を送信してるように見える
ヌルターミネートしてないからだろ 受信したバイトの最後にゼロ入れとけ
362 :
360 :2009/02/11(水) 19:01:20
マルチバイト文字じゃなくて、シングルバイトじゃない文字
363 :
カイロ :2009/02/11(水) 19:15:15
自己解決いたしました!! テラターム側のボーレートの値が受信プログラムで設定した値と違っていたので、 文字化けしていたようです。 同じ値にしたら、ちゃんとした文字が出るようになりました!! これで、すべて解決しました!! みなさま、どうもありがとうございました。 数ヶ月前から、出来ずに困っていたのですが、 なんとか、動くものが出来ました。 よかったです。(TーT)
まあオメデトウ そして死ね
>>364 死ねは酷くね?
せめて成仏しろとか永眠しなさいと地獄に落ちろ、位にしといてやれよ。
フフフ…
ウッゼ
釣れた釣れた
369 :
デフォルトの名無しさん :2009/02/11(水) 19:56:01
>>314 ありがとうございます!、出来ました。
#define _WIN32_WINNT 0x0500に変更で解決しました。
本当にありがとうございました。
相手のボーレート自動で判断してあわせてくれるシリアル通信ソフトあるけど 合ってるかどうかってどうやって判断してるんだろう
IME の前後参照変換に対応するため、WM_IME_REQUEST の IMR_DOCUMENTFEED を 拾うルーチンを書きました。が、XP や Vista + ATOK なら期待通り動作するのですが、 Vista + MS-IME では全く機能しません。 TSF 絡みっぽいところまでは推測がつくのですが、その先がさっぱりです。 そのあたりの仕組みについて記述している資料があれば、教えてください。
>>370 分からんけど。
例えば、相手が送ってくるデータが分かっていれば、
ボーレートを色々変えてみて正しく読めるのを探すとか?
NULLじゃないといけないReservedなメンバをわざわざ追加して互換性無くすとか MSが何をしたいのかさっぱり分からん
>>373 そんな単純な話でもない
もともと
>>314 の参照先はちゃんと0初期化してて
マルチバイトでは動作するのに、Unicode では
動作しないって質問だし、自分でやってみても
うまくいかなかった
OSはVistaなのでOS側の問題とかはないはずなんだけど
>>375 ありがとうございます。なるほど、テキストストアっぽい単語が関係ありそうですね。
>>376 うおすまん、リンク先まで読んでいなかった。
>>376 manifestが無くてcomctl32.dll ver5系を使ってたってオチだろ
多分ver5系はcbSizeにTOOLINFO::lpReservedのサイズを含めてはいけない
>>379 まさにそのとおりでした
なんか昨日から気になってたんだけど、ようやくスッキリした
ありがとう
結局、TOOLINFO::lpReservedってそういう時わざと失敗させるために、構造体のサイズを変えるべく入れただけのような気がしてきた NULL以外の適当な値を入れても動くみたいだし
382 :
デフォルトの名無しさん :2009/02/11(水) 22:37:47
D:→E:のようにドライブレターを変更するにはどうしたらいいんでしょうか?
コマンドプロンプトで D:\> E: と入力する。
つーか板違い
>>382 char path[MAX_PATH] = "D:\dokoka";
char drive[MAX_PATH];
char dir[MAX_PATH];
char name[MAX_PATH];
char exp[MAX_PATH];
_splitpath( path, drive, dir, name, exp);
drive[0] = 'E';
_makepath( path, drive, dir, name, exp);
ネタなので反論は許さない。
>>385 expって何だよw
エクスプローラの略か?
>>386 うっせw 突っ込むなって言ったろw pじゃなくてtだったよ、うろ覚えすぎたw
よく考えたら拡張子だからエクステンションの略なのか。
>>382 MSDN Library
↓
Win32 and COM Development
↓
System Services
↓
File Services
↓
File Systems
↓
Volume Management
↓
Volume Management Reference
↓
Volume Management Functions
にお探しのAPIがあると思うよ
たまに優しい人が居るスレだ
たまに知らないならレスしないでください。ウザイだけですな人がいるスレだ
>>385 _splitpath, _makepath
こんなのあったんか、知らんかったぽ
これでもイジワルしたつもりなんだ、優しい人なもんか まず質問者が最低限自分で調べてから質問する人かどうかを見極めるために >ドライブレターを変更するにはどうしたらいいんでしょうか? という質問から「api ドライブレターを変更」でググったら上位3件(1件重複あり)全てにAPI名が出てきたんだぞ ここでイジワル心が働いた 今度はそのAPI名でまたググって英語版MSDN Libraryに飛んで ツリー形式になってる項目を一つ一つコピペしてrootへ向かってだなあ・・・
>>392 お前のツンデレっぷりに感動したので、付き合ってください
ハ,,ハ ( ゚ω゚ ) お断りします / \ ((⊂ ) ノ\つ)) (_⌒ヽ ヽ ヘ } ε≡Ξ ノノ `J
Linuxユーザーがググった知識を披露するスレになり下がってる。
定型レスしかできないクソバカに比べれば100倍マシだからいいよ
まともな答えになっていれば別に何ユーザでも構わないでしょ。 ツンデレならWine使いかもしれないし。
>>397 >ツンデレならWine使いかもしれないし
詳しく
>>398 LinuxでWinAPIを実装してWindowsアプリケーションが動くというやつ。
使ったことないから出来は知らないけど。
>>397 使ったこともないのにググった知識で答えるのは無駄だろ。
質問者が一番知識があるという状態をよく目にする。
知識のある人が知らないフリして質問して、知ったかで回答する馬鹿を突付いて遊んでるんだよ
母無職、弟ニート、俺派遣 3人家族月10万(家賃含)でなんとかしてるけどなあウチは 残りは昔の生活費の借金返済に充てて
母無職、弟無職、俺無職 3人家族月0.1万(家賃含)でなんとかしてるけどなあウチは 残りは昔の生活費の借金返済に充てて
ここまで人工無能アイちゃんのレス
405 :
402 :2009/02/12(木) 00:02:55
ごめんなさい
407 :
108 :2009/02/12(木) 00:43:34
>>379 出力ウィンドウのデバック表示で
C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6001.18000_none_886786f450a74a05\comctl32.dll' を読み込みました
C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6001.18000_none_5cdbaa5a083979cc\comctl32.dll' を読み込みました
と2種類のバージョンのcomctl32.dllを読み込んだように表示されているんですが、これは関係あるのでしょうか?
最近Win32APIプログラミング始めた素人なので変な質問だったらすいません。
>>407 Side-by-Sideでググっとけ
てか、内部or外部のXMLで、同名DLLのバージョンを切り替えるなんてアホだろ
誰が考えたんだよ全く・・・
>>407 CommonControl 6.0を使用するための具体的な対処ということなら、
以下をstdafx.hあたりに記載しとけばいけるばず
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
>>408 ちなみにお前だったらどういうのがいいと思うのか聞きたい。
directxみたいにファイル名を変えとけばいいんじゃねーの?
dll heaven状態ですね
Direct2DとかWriteってDirectXになるの? それともWIn32API?
1GBくらいのメモリを確保する場合はnewとGlobalAllocどちらがいいですか? またその他に適した関数はありますか?
VirtualAlloc
>>415 ありがとうございます~
さっそく調べてみます!
そんなに独り占めしてずるいわあ
1Gバイトのシリコンメモリ領域を明示的に確保し それにスワップ無しでランダムアクセスするようなアプリを 動作させることが出来る商用パッケージOSは今のところ無い。 (近い将来出るかも知れないが) Windowsの場合VirtualAllocとか使って、シリコンメモリに 領域を確保したつもりになってももどうせディスクにスワップ されるので、1Gバイトのファイルを作成し、それにランダム アクセスするコードと速度面では大差が無い。
>>418 使ったこと無いから詳しくは知らんがAWE APIは?
>>418 そうなんですか><
すみません。GlobalAllocもVirtualAllocも500Mくらいを超えたらエラーになってしまうんですが
一度に取ってもダメで500Mを2回に分けても2回目のVirtualAllocでエラーになります。
ちなみにVirtualAllocで1回で取れる最大サイズってなんぼなんですか?
>>418 本当に欲しければ、VirtualLockがあるよ。Unix系だってmlockがあるだろう。
果たして使いこなせるかどうかはともかく。
>>420 環境によるし、その時のアドレス空間の空き状況にもよる。
>>422 そうみたいですね・・・
いちおうメモリは4GBあるのですが、1MBづつ取ると970MBの所でエラーになりました
タスクマネージャの利用可能メモリは3.4GBあるのですが
2GBくらい取れないんですか?
なるべくプログラム開始直後にVirtualAllocで予約かけたら、 もうちょっと大きくとれないか?
>>423 環境によるし、その時のアドレス空間の空き状況にもよる。
特に設定しなければ、ユーザーエリアは最大2GB そこをプログラムで使用中の上、連続したエリアを取りたいんだろうからそんなもんだな
PCに1GBのメモリを確保できるだけの余力がなかったりして。:-)
そんな大量に物理メモリを取りたければドライバ書けばいいだろ
つーか64bitに移行しろ
顧客にそんなこと言えますか? ねぇ、あなた
こんなとこでそんな質問すんなよ
メモリが少ない別PCの方が多く確保できた これタスクマネージャのコミットチャージの最大値までしか取れないみたいですが 物理メモリが少ない方のPCはここの値がちょっと大きいのですが これってどこで調整できますか?まあAPIとは関係ないっぽい話になっちゃいますが・・・
32APIスレなのに64ビットに移行しろとか言わなくても
>>432 強制的にramdiskとしてメインメモリより1GB搾取して
それをおれおれ専用メモリにしたら?
でも、どうやればよいのしらん
うんこしてきます。 しばらくお待ちください
>432 合計はスワップファイル+物理メモリでしょ。
>>413 そもそもDirectX自体、広義にはWin32 APIの一部分ということはともかく、
DirectXの一部みたいだけど、GDI/GDI+の置き換えとか言っているし、
どっちで質問するのがふさわしいかまだよく分かんないね。
ここ → DirectXスレへ行け DirectXスレ → Win32APIスレへ行け って言われるんですね、分かります
だったらDirect2Dのスレでも立てればいいだけだろうが
実装はCOMだろうしここになるとは思えない。
>>440 スレ立てできないくせにレスしないで下さい。ウザいだけです。
444 :
108 :2009/02/12(木) 20:16:11
>>408 ありがとうございます、勉強になりました。
>>409 ありがとうございます。
CommonControl 6.0を使用出来るようになりました。
ま、Win7のリボンコントロールもCOMだからな てかIUIFrameworkでググっても日本語のサイトが1件も出ねぇw
これをwin32の質問と見なして良いかどうか微妙ですが、 考えていると脳みそが沸騰して訳が分からなくなったので質問させていただきます。 質問 ・VISTAのAero ON でウィンドウを作成する前にそのサイズを知る方法。 開発環境 SDK/VC++ 2005 問題の解決には、通常GetSystemMetrics()かAdjustWindowRectEx()を使うと思います。 ところが、VISTAのAeroが有効なときは奇妙な現象が起こります。 そこで実験してみました。 dwStyleA = (WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CLIPCHILDREN); dwStyleB = dwStyleA | WS_THICKFRAME; の設定で、100,100 (800x600)をAdjustWindowRectEx すると dwStyleA: 97,76 806x627 border w,h: 3,3 dwStyleB: 92,71 816x637 border w,h: 8,8 という結果が返ります。各borderは、次の式で求めています。 横は(ウィンドウ幅-クライアント幅)/2 縦は(ウィンドウ高-クライアント高-::GetSystemMetrics(SM_CYSMCAPTION))/2 一見して当たり前で、作成されたウィンドウをキャプチャしてサイズを確認した ところ、確かに2000/Xp/VISTA aero off の時は見た目もこの通りになります。 しかし、VISTAのaeroが有効な環境では、dwStyleAでもdwStyleBでも、 見た目はdwStyleBと同じ(!)になるのです。 しかも、GetSystemMetricsもAdjustWindowRectExもAero on/off で同じ値を返します。 もちろん作成後に GetWindowRect()した場合、AdjustWindowRectEx()と 整合性のある値(つまり見た目とは違った値)を返します。 これがAPIのバグでないとしたら、dwm.exeが独自にウィンドウを装飾している ものと思われますが、その値を取得する方法がわかりません。 1.Aero on時に見た目通りのウィンドウサイズを取得する方法は? 2.Aero on時のウィンドウサイズは常に thickframeと同じと見なしていいの? 3.2が良いとした場合、Aero on を手軽に知る方法は?
Theme系のAPIを使えば、もう少しまともな値が得られそうな予感。 あまりに面倒臭そうで試す気にもならんが。 ちなみに、AdjustWindowRectExは 必要なクライアント領域を確保するのに指定すべきウィンドウサイズを求めるAPIだから、 その周りのフレームについては何の保証もしていないと思う。
そもそも2000/XPでもメニューが2段以上になる場合とかは想定してくれないからな
>>447 theme系APIというと、uxtheme.dll のあれですね?
チェックしてみます。ありがとうございました。
例えば
>>446 は、800x600のクライアント領域を指定して、AdjustWindowRect を呼び出すことで
作成されるはずのウィンドウの大きさを取得してチェックしたものですが、問題なのはそれが見た目の
サイズと異なってしまうことなのです。
見た目だけの問題なので、だれも気にしないのかな・・・
小学生の頃 必死で買ったエロ本を母親に捨てられた 恥ずかしいから怒る事もできず できるだけゴミ箱から回収するように頑張っていた しかし母親が何度も何度も捨てるもんだから ついに親父がブチ切れた 切れた親父は母親に 「これは!この本は!」とエロ本をゴミ箱からすくい上げ 見せながら力説してくれた 「これはな!このくらいの年のガキにとっちゃ! 金払えば買えるもんじゃないんだ!お前はなぜこれを捨てるんだ!」 俺は感動した 親父はエロ本を俺に投げつけて 「もう絶対捨てさせないし隠す必要もないからな!」 と言ってくれた 俺は泣いた でも次の日にエロ本は親父の部屋にあった 何か複雑な気持ちだった
>>445 COMだとネイティブだけでホストするのめっさめんどくせぇじゃねぇか・・・
んなこたーない WindowProc書いてSendMessage連発する方が面倒
453 :
デフォルトの名無しさん :2009/02/12(木) 22:30:29
くけいと読むんだ、たんけいかと思ってた
あるある。
方形
くけいでよかったんだ、ホッとした
チョコ欲しくない?
くれ
チンコほしい
ひぃ
463 :
デフォルトの名無しさん :2009/02/15(日) 00:25:44
マルチ乙
MAXIMIZEBOXを表示し、且つキャプションバーダブルクリックでの動作をすり替えるにはどうすればいいのでしょうか? WM_SYSCOMMANDのように最大化動作の直前に知りたいのですが.
WM_SYSCOMMAND
独自のキャプションバーを作る
msg が WM_SYSCOMMAND かつ wParam が 0xf012 の時に摩り替える処理を行って かつ DefWindowProc にデフォルト処理をさせなけりゃおk
間違えた ×0xF012 ○0xF032
///<summary> /// Sent when form maximizes because of doubcle click on caption ///</summary> SC_MAXIMIZE2 = 0xF032, これですね、ありがとうございます。 膨大で、やりたいことやろうと思うとすごく難しい
/// Sent when form maximizes because of doubcle click on caption ///</summary> SC_RESTORE2 = 0xF122, これも忘れずになー
ダブルクリックの時だけ動作を変えるってどういう状況? ウィンドウシェードでも実装したいのか?
DirectXプログラムで最大化ボタンでフルスクリーンにしようかと.
昔の俺と同じ動機だ 当時最大化ボタンにマウスカーソルを合わせた時ツールチップで「フルスクリーン」と出るようにもしたかったけどそっちは挫折した
こうやって先人がレールを敷いてくれると助かりますよ、本当に。
>>474 普通にWM_SYSCOMMAND/SC_MAXIMIZEが飛んでくるのを処理すればいいし自ら答え出してるだろ
で、SC_MAXIMIZE2とか定義してる馬鹿がいるみたいだけどMSDNをしっかり読もうな
> In WM_SYSCOMMAND messages, the four low-order bits of the wParam parameter are used internally by the system.
> To obtain the correct result when testing the value of wParam, an application must combine the value 0xFFF0
> with the wParam value by using the bitwise AND operator.
>>477 最大化ボタンもタイトルバーダブルクリックもmsgはWM_SYSCOMMANDだが
前者のwParamはSC_MAXIMIZE(0xF030)で後者のwParamは0xF032なんだよ
479 :
478 :2009/02/15(日) 13:57:20
MSDNも
>>477 のレスもしっかり読んでなくてごめんなさい
480 :
デフォルトの名無しさん :2009/02/15(日) 14:34:57
memory mapped fileを使う場合の一般的な手順としては、 hFile = CreateFile(); hMap = CreateFileMapping( hFile, ... ); mptr = MapViewOfFile() mptrへのアクセス UnmapViewOfFile( mptr ); CloseHandle( hMap ); CloseHandle( hFile ); となると思いますが、↓のように先にファイルハンドルをcloseしても よいのでしょうか? CreateFileMappingではhFileの参照カウントをincrementすると思って いるので、実際にはcloseされないと期待しています。また、実際に試 してみたところ正常に処理できました。 ただ、たまたまうまくいったのか、保証されている動作なのか分からな いのですが...どうなんでしょうか? hFile = CreateFile(); hMap = CreateFileMapping( hFile, ... ); mptr = MapViewOfFile() CloseHandle( hFile ); mptrへのアクセス UnmapViewOfFile( mptr ); CloseHandle( hMap );
hFile = CreateFile(); hMap = CreateFileMapping( hFile, ... ); CloseHandle( hFile ); mptr = MapViewOfFile() CloseHandle( hMap ); mptrへのアクセス UnmapViewOfFile( mptr ); でおk
CreateFileMapping() は、ファイルがなくても使える。
CreateFileMappingでページングファイルの共有メモリを作ったとして その共有メモリって本当にメモリと同等の速度なの? ページングファイル(pagefile.sys)に作るなら速度はファイル並み なんじゃないかと思えてしまうんだけど。 あとページファイル無しに設定したWindows上だと動かないのかな?
別にページファイル上に作る訳じゃないし。
すると↓って具体的に何やってるんだ? hFile パラメータで INVALID_HANDLE_VALUE を指定した場合、呼び出し側プロセスは dwMaximumSizeHigh と dwMaximumSizeLow の各パラメータを使ってマッピングオブ ジェクトのサイズも指定しなければなりません。この場合、CreateFileMapping は指定 されたサイズのファイルマッピングオブジェクトを作成しますが、ファイルシステム内の 名前付きファイルではなく、オペレーティングシステムのページングファイルに関連付 けます。 ページングファイルが無くても関連付けられるんだろうか。
逆に考えるんだ。 mallocなんかで確保したメモリも、ページアウトされればファイル並みの遅さだ。 ナ、ナンダッテー(AAry さらに逆を言えばくメモリマップドファイルだって、 物理メモリが開いていれば、そこですべて済ませる。
物理メモリでやってくれるのね 安心しますた
低脳で分からないんですけど、
>>485 のINVALID_HANDLE_VALUE を指定して使う時ってどういう場合なの?
単に使用後は不要の要高速アクセスのテンポラリファイルが欲しい時?
別プロセスと共有するときとか。
一番オーソドックスな使い方じゃないのか ググって出てくるのも大概これだろ
んなこたーない
16色以上表示可能なモニターに買い換える
ここはカラーセロハンの出番だな。
マウスカーソルで質問があります LoadCursorでカスタムカーソルを読み込んでいるのですが 64x64等のサイズで作成したカーソルも32x32のサイズで表示されてしまいます GetSystemMetricsでマウスサイズを取得すると32x32になってるのですが どこか別の場所でマウスサイズを設定しないといけないのでしょうか?
496 :
デフォルトの名無しさん :2009/02/15(日) 23:17:30
教えてください。(VC6, Win32) Win32でメインウィンドウをクラス化してサブクラスで使用していますが、WM_CREATEがサブクラスに届きません。 構築方法は、スーパークラスでWindow作成後にthisをSetPropしておき、 static WndProcでGetPropして、スーパー or サブクラスのウィンドウメッセージを振り分けています。 動かない理由は、ウィンドウ作成時にthisが関連付けられないため、 サブクラスのメッセージ処理が行われないためです。 ここまでは分かりました・・・ これを回避する方法の参考サイト等を教えていただけないでしょうか? どうぞよろしくお願いします。
岡田にそらそうよって200回言って欲しい
>>496 CreateWindow(Ex)の最後のほうの引数にvoid*のがあるだろ。そこでthis渡せ。
すると、WM_CRAETEもしくはWM_NCCREATEで
reinterpret_cast<const CREATESTRUCT*>(lParam)->lpCreateParamsとすればそいつが取り出せる。
>>492 フルカラービットマップはパレットがないだろ
DIBをごにょごにょしろ
・CreateWindow(Ex)の最後の引数 ・WM_CREATE時の((LPCREATESTRUCT)lParam)->lpCreateParams
俺には早さが足りない
画像を256色にすりゃいいじゃん
>>495 標準と違う大きさのカーソルを扱ったことがないから上手くいくか知らないけど、
まずは大きさを指定する引数があるLoadImageを試してみたらどう?
504 :
デフォルトの名無しさん :2009/02/15(日) 23:38:42
FreeLibraryしてもメモリに存在するDLLを強制的に排除する方法ありますか。
マウスカーソルは32x32がmaxだろ。 SXGA+とかUXGAが当たり前の時代なのに、いい加減もっと大きくしろと思うのだが。
何回もFreeLibraryすればそのうちカウント0になる 99%アクセス違反で止まると思うけど
507 :
496 :2009/02/15(日) 23:49:51
>>498 , 500さん
レスありがとうございます。やってみます!
>>503 ありがとうございます。カーソルサイズの変更できました。
509 :
デフォルトの名無しさん :2009/02/15(日) 23:58:14
493 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/15(日) 21:12:56 16色以上表示可能なモニターに買い換える 494 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/15(日) 22:14:09 ここはカラーセロハンの出番だな。
スタティックリンクされたDLLはアンロードできないけどね
511 :
デフォルトの名無しさん :2009/02/16(月) 10:45:57
アンロードしたいのはVB6のアドインDLLなんですが、書き出そうとしても、そのDLL自身が使われているので 書き込みできません。アドイン自身で自分自身を検知して、Connect=Falseまではできました。 それでも書き込みできないときがあります。アドインマネージャでいちいちやればできるので、 アンロードする手段があると思います。それが何かと。
512 :
496 :2009/02/16(月) 16:23:05
>>498 , 500さん
遅ればせながら、処理が完成しました。
WM_CREATE時とそれ以降の処理がちょいと面倒でしたが・・・
また、同じくDialogのテンプレートクラスも完成しました!
本当にありがとうございます。
みんな自分のそういうクラス作ってるよね。わざわざ作らずとも自分の気に入るタイプのライブラリ作った人 いたかもしれないけどわかんないから自分でやったよ。そういう個人ライブラリのまとめサイトとかあればいいのに
>>513 知らないならレスしないで下さい。ウザいだけです。
2つの画像をまとめてメモリデバイスコンテキストに選択して、 「最終的に表示する画面」を先に作る方法を、 どなたか教えていただけないでしょうか。 BitBltひとつに二つの画像を処理させたいんです。
>>515 >BitBltひとつに二つの画像を処理
たぶん、なにか誤解している
やりたいことはダブルバッファリングのことだと思うので、ググって
調べてみるのが早い
PCIとPCIExpressを区別するにはどうしたら良いでしょうか? SetupDi系かCM_系ででできるんでしょうか?
区別するって事は、既にデバイスのハンドルを取得しているのが前提に見えるけど…… PCI/PCI-Eの判別方法は、WDKのpciprop.h辺りを見れば良いんじゃないかな。
質問です エディット・ボックスの文字列を GetWindowText(hEdBox,strbuf,len); snprintf(msgbuf,msgbuflen-1,_T("%s"),strbuf); SetWindowText(hEdBox,msgbuf); のようにすると、hEdBox に再表示される文字列の最後の1バイトが 失われるのですが、思い当たることはないでしょうか? ちなみにパッファ・サイズは十分あり、改行文字は含まれていません。
521 :
デフォルトの名無しさん :2009/02/16(月) 21:46:59
自作アプリが起動中の場合のみ、ファイルの関連付けを変更したいのですが、どうすればよいのでしょうか?レジストリをいじれば可能なのは調べられましたが、アプリが落ちたときのことを考えるとレジストリはいじれません。
ShellExecute() とか FindExecutable() とかフックしてみれば?
構造化例外をきちんとハンドルすれば、 関連付けを元に戻すくらいの余裕は確保できないか? まあ、アプリが落ちる以前にログオフとかにきちんと対応しないといけないけどな。 WM_ENDSESSIONを最後にプロセス終了、って事もあるぜ。
_,................._ r::':´:::::;、_;;::::::::::::::::‐-....、_ r'´:::::::::::::::'ヘ!::::::::::::::::::::::::::::::::::、 /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ ,!:::::::::;:- '´  ̄ ̄ ̄` ‐-::、::::::::::::::::i ヽ::::;r' _,_,,,,,_ ヾ::::::::::::::::l ./::'':! ,;illliiiiiiiiii;、ヽillll仙lllllllllli;.::::::::::::::::;! ノ::::::::l ィ''ヾフヾ :. ;::'` `"`'':ミ';:::::::::::::ヾメ -='r´:::::::::::l ;:::. .:::::::::::::::::::ミヽ ヾツ::::::::::::i:, ( =ー⊃;:. ...:::::::::::::::::::::::::::i` l::::::::::::::::i;; ,,.:;:' ミ;;;-,,,, .:::::::::::::::::::::::::::::l .i'__ノ:::::::::::::::::i;;, ;il'' -―ー''''''';::::::::::::::::::::::::::::::::;! /´`〉::::::::::::::'';, " --‐‐ .::::;::::::::::::::::::::::::::::;ィ! ヾヾ:::::::::::::::::::::ツ::、,_ ,.,,.;::::::::::::::::::::::::::::::::::r' ーッ;:::::::::::::::::::::::::::::::"::::::::::::::::::::::::::::::::::;rヶノ '"ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::i' チョ・プゲラ[Cho Puguera] (1928~1967 アルゼンチン)
526 :
521 :2009/02/16(月) 23:13:31
ShellExecuteのフックは元の関連付けアプリがわかってればなんとかなりそうですね。 ちょっとやってみます。
API をフックするなら、関連づけアプリなんて関係ないだろ?
スレが荒れるのでフックの話題厳禁
ハ,,ハ ( ゚ω゚ ) お断りします / \ ((⊂ ) ノ\つ)) (_⌒ヽ ヽ ヘ } ε≡Ξ ノノ `J
LoadImageで手のカーソル(OCR_HAND)を読み込んでSetCursorしたら、一応変わりはしたんだけど マウスが止まってる間だけしか絵が変わらない。移動中はノーマルカーソルになってるんですけど、何故でかわかりまっしゅ?
>>516 ありがとうございました
無事ちらつきガなくなりました
ありがとうございました
>>532 ゲェーーッ!!結構めんどくさいんスね・・・カーソルって・・・
フックを教えてください。 世界で戦えるくらいのがいいです。
テンプレ >・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
>>533 こりゃ便利と思って選択肢1をやってみたら、外枠でカーソルが変わってからクライアントに入ってきた時も
そのままなのね。ゲゲェーッ!
テンプレ追加 ・高度なことは判らないので質問しないでください。
せめて「まともな答えが返ってくることは保証しかねます」くらいにしようぜ。
540 :
デフォルトの名無しさん :2009/02/17(火) 10:04:21
CreateThreadで作った別スレッドの中で 宣言した変数は、そのスレッドが終わると自動的に開放される・・・ という解釈でいい?
Win32環境でマルチスレッドの同期の勉強をしています。 クリティカルセクションとかミューテックスとかセマフォとか、 情報処理試験的に考えたら由来や違いはありますけど Win32APIだとみんな似たようなソースになりますよね? Windows環境では、多プロセス間で使えるかとか、実行速度が速いか遅いかとか、 そういうことを知っておく方が大事なんでしょうか
542 :
デフォルトの名無しさん :2009/02/17(火) 10:27:46
Windows環境に限らず大事だと思うけどw
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
マウスドライバがいけないのか、コントロールに、 ホイールパットではWM_MOUSEWHEELが来るのに、 マウスのホイールではキャッチできません。 ブラウザなどでは普通にスクロールできる(ホイールとして機能する)のですが、 こういう場合どんなメッセージが送られてきているのですか?
つspy++
外部アプリのコントロールのテキストを取り込みたい時ってgetwindowtextを使うと思いますが、 例えば、リストボックスに入っている複数行のテキストを取得したい時とかは、 どうすればいいんでしょうか。 教えてください。
まずはそのリストボックスのハンドルを取得しろ
>>546 存在忘れてました。
そして、何もメッセージが来ていませんでした。
親ウィンドウには来ているようなので、
むしろホイールパットの方が余計にメッセージ送っているようです。
スタティックコントロール(使っているのはピクチャボックスですが)で、
マウスホイールのメッセージを得るにはどのようにすればよいのでしょうか…
NotifyをTrueにしているのですが…
そのコントロールがfocus持っていないから WM_MOUSEWHEEL が飛ばないのでは?
551 :
547 :2009/02/17(火) 16:43:42
>>548 リストボックスのハンドルは取得できています。
ハンドルが取れればGetWindowTextで複数行のテキストを
取れるってことでしょうか?
だとしたら、も少し自分で調べますのでヒントください。
お願いします。
俺も知らなかったが、
>>550 のいう通りWM_MOUSEWHEELはフォーカス持ちにむけて送られるようだ。
今までキーボードでスクロールするついでにホイール対応することしかやってなかったから気がつかなかった。
WM_MOUSEWHEELがカーソルの下じゃなくてフォーカス持ってるウィンドウに飛ぶなんて マウスでWindows使ってれば常識だが なんか理由あった気がしたけど忘れた
別プロセスのウインドウへのGetWindowTextは特別なことやってる。 ListBoxのLB_GETSELITEMSとかLB_GETTEXTは別プロセスではうまくいかん。
>>553 WM_MOUSEMOVE と同じで (PeekMessage で言う)PM_QS_INPUT系に纏める為?
558 :
557 :2009/02/17(火) 17:52:08
意味不明 わーすーれーてー
560 :
551 :2009/02/17(火) 18:06:08
なんか、どういう風に質問していいか分からなくなってしまいました。 レスくれた方ありがとうございました。 出直してきます。
>>560 ・外部アプリのコントロールのテキストを取り込みたい
・具体的なコントロールの対象は ListBox で、item のテキスト
自分自身のアプリ内であれば LB_GETSELITEMS とか LB_GETTEXT を使えば可能である
が、"外部アプリ" ではその手法は使えない。
結論あきらめれ
# スクリーンショットとって OCR するぜ とか DLLインジェクションして云々とか 高級杉
562 :
560 :2009/02/17(火) 18:17:59
ありがとうございます。 すっきりしました。
563 :
545 :2009/02/17(火) 18:23:24
>>550 ,552,553
最近ブラウザの表示領域やタブにフォーカス無くても、ブラウザ自体にフォーカスあれば
マウスの位置によってちゃんとホイールする機能が主流になって、
フォーカス必要なことすっかり忘れてました…
えーっとフォーカスってどうやっ(ry
フォーカスなんて全然意識したことないわ…
CreateFileMappingで3GBのエリアを確保できたのですが MapViewOfFileをすると1GBちょいしか取れません。 1つのプロセスで2GBまででなんやかんやでそれくらいになるとおもうのですが CreateFileMappingをした時点でPF使用量が3GB取られてるので 何とかマッピングできないもんですか?
3GB分書き込めば確保されるよん
リニアに取りたいの? 32ビット環境ではかなり難しいかと
スクロールバーの使用不能 (つまみがない状態) について質問です。 WM_CREATEで hVScrollWnd = CreateWindowEx( 0, "SCROLLBAR", NULL, WS_CHILD | WS_VISIBLE | SBS_VERT, rcWrapR.right, 0, 16, rcWrapR.bottom, hWnd, (HMENU)ID_VIEW_VSCROLLBAR, appInstance, NULL ); siView.cbSize = sizeof(SCROLLINFO); siView.fMask = SIF_POS | SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL; siView.nMin = 0; siView.nMax = 0; // ここに siView.nPage - 1 までの値を入れてもだめでした。 siView.nPage = rcView.bottom / 16; //適当な段数(現在は50付近の値) siView.nPos = 0; SetScrollInfo( hVScrollWnd, SB_CTL, &siView, TRUE ); 上記の通りスクロールバーの設定をして使用不能にしたいのですがスクロールバー全域につまみが表示されます。 このあと別ルーチンで siView.nMax++ したのち SetScrollInfo()を実行すると使用不能になります。 もちろん siView.nMax < siView.nPage を満たさなくなればつまみも出てきます。 1回の操作だけで使用不能にするには上記の手順では何か足りてないのでしょうか? OS XP 64bit / 32bitコンパイル / PSDK 2003 R2 / VCEE2005
>>565 どうやって書き込めばいいですかね?
>>566 はいリニアに取りたいです。
CreateFileMappingで確保済みなので(ちゃんとPF使用量は3G分増えてる)
何とかなりそうが気がするんですが・・・
CreateFileMappingを10MBづつforでぐるぐる回して取っても、やはり1Gちょいでエラーになりました
>>564 マップ開始位置を変更して何度もマップし直す。
あるいは64ビット化する。
どうして何とかなりそうが気がしちゃうのかわからない。 >1つのプロセスで2GBまででなんやかんやでそれくらいになるとおもうのですが これがわかってるのに。
>>570 開始位置の計算てGetSystemInfoであれした値の倍数でしたっけ?
それと実際に確保するサイズはちゃんとGetSystemInfoのアレの倍数に収まってないとダメですよね?
>>571 だから実際にPF量はその分とられてるから。
別に3Gの連続エリアが欲しいわけじゃないし
ページファイル上に確保されてれば同じだけマップできるなんて誰が保障してんだよw 脳内でだろ
そもそもNTのページファイルは物理メモリも仮想メモリもシームレスなものでしょ。
子供に指摘されて切れるなよバカw
つうか取れないから失敗を返してるんだとなんで考えないんだろう。
知らないならレスしないで下さい。ウザいだけです。
お前らってほんと文句しか言わないよなw
だから
>>578 が流行ったんだろうけどw
だって脳内ソースでできると言い張られても困るだろ。
ガ板にスレが立っていないような言葉を流行ったとは言わない。
>>572 まあ1GBとか512MBくらいずつ大きくマップすることにすれば、
まず間違いなくその値の倍数になっているだろうと思う。
Apacheスレの役に立たないクズ並みに インパクトあるからなw
584 :
デフォルトの名無しさん :2009/02/17(火) 20:40:35
>>572 お前はメモリ3GB以上使うようなことしてんの?
メモリ3GB使う使い方を言って見なさい。
ただし、大幅にメモリを使うものではなく、3GBギリギリ使い方を言うように。
つまりだ、この使い方を下回れば3GBで十分とわかるようにってことだよ。
めもりをはあどでいすくのかわりにつかうとか
586 :
567 :2009/02/17(火) 21:27:49
自己解決しました。 親ウィンドウのShowWindow()以後でないと反映されないみたいです。 申し訳ありませんでした。失礼します。
AWE だっけ? PAE だっけ? 使わないと、3G は使えないんじゃないの?
588 :
デフォルトの名無しさん :2009/02/17(火) 21:45:42
マウスのホイールがぐりぐりされたときの処理をしたいんですけど、 何かうまくいかないんです。 ちなみにマウスはWirelessOpticalMouse2000というのを使ってるんですけど そんなの関係ないですよね・・・
せめて、どんなコード書いてどんなことが起きたのかくらい書けよ・・・
>>587 PEイメージのLargeAddressAwareが有効で、かつ/3GBスイッチでOSが起動されている。
というのが一応条件だったと思う。
ちなみに、/3GBスイッチは 4-Gigabyte Tuning (4GT) と呼ぶらしい。
PAEはx86の機能で、64GBまでの物理メモリにアクセスできる等の拡張。
AWEは、アドレス空間内に窓を確保して、
4GBオーバーの物理メモリ等をそこにマッピングして扱うための仕組み。
それで3GB有効でも、モジュール (EXE/DLL)を置いたり、 スタック・ヒープがあるからまるまる3GB使えるわけではないぞ。 一応念のため。
ih*∂ψ/∂t=Eψ
ウィンドウを常に最前面に表示するようにしてもオンラインゲームをフルスクリーンにしたら 隠れてしまいます どうすればオンラインゲームの表示より手前に表示できるようになりますか?
ウィンドウとかじゃなくて ビデオメモリに直接描画すればいい
596 :
デフォルトの名無しさん :2009/02/18(水) 06:49:29
>>595 が意地悪だな
>>594 ウィンドウを常に最前列に表示したいんだろ?
文房具屋で「マッキーペン」ってのを買ってこい
……あとは分かるな?
欠点は、再描画が不可能なところだけだしな
マジおすすめ
PCかディスプレイ2台用意して片方の画面をオンラインゲーム最前面にし、もう片方を計算機最前面にする
windowのフレームを消すにはどうしたらいい?
ウインドウスタイルにフレームを設定しない
~キャプション
ゲーム画面よりも前面に表示するにはどうすればいいですか?
605 :
デフォルトの名無しさん :2009/02/18(水) 08:32:49
>>604 ちょっと上みりゃ書いてあんだろクズが
>>595-596 ,598
その答えを得るために何の情報を自分が公開しなきゃいけないかすらわからないならググってろボケ
Windows vista
グラボは nVidia GeForce 9500GT
>>605 知らないならレスしないでください、うざいだけです
つまんないし、しね
>>606 追加
チートツールのウィンドウをゲーム画面より常に前面に表示しておくにはどうすればいいですか?
609 :
デフォルトの名無しさん :2009/02/18(水) 08:45:16
>>606 中学生?
>ゲーム画面よりも前面に表示するにはどうすればいいですか?
一体何を?
あほなの?
優しいエスパー待つ暇あったらググれゴミ
オンラインゲームを起動すると隠れてしまうので困っています! 時間がないので早く教えてください!!
611 :
デフォルトの名無しさん :2009/02/18(水) 08:48:51
>>610 窓(window)あけるだろ
そこからPCを飛ばす(fly)
この意味すら分からないならPC壊せ
分かったなら即行動しろ
自分でゲームを制作して適切なクリッピングを行う
613 :
デフォルトの名無しさん :2009/02/18(水) 08:51:15
>>612 スレ違いの小学生にまともな答えは必要ないだろ
createwindowexで作成したウィンドウをゲーム画面よりも前面に表示するにはどうすればいいですか? topmostしてもゲームより背面になってしまいます
ウィンドウの幅は一定以下にはならないのですか? 45を指定しても90を指定しても同じになります
SYSMENU や CAPTION 持つと それ以上小さくならない境界があったはず
もうだめだこのスレ
SetWindowPosでHWND_TOPMOSTしたら前面にくるけど その後すぐゲーム画面に上書きされる TimerProcで0ミリ秒指定したら一応見えるけどチカチカする これ回避できませんか?
どうして知らない奴って煽ってまでレスしたがるんだろ?
>>620 知らないならレスしないでください、うざいだけです
何度も言わせないでください
622 :
デフォルトの名無しさん :2009/02/18(水) 10:18:27
オンラインゲームでチートしようとしてるクソガキにまともな受け答えする必要なし
チートw 自作でチートするやつがこんな質問するかよw
624 :
デフォルトの名無しさん :2009/02/18(水) 10:45:20
メイプルストーリー(笑) のチート(笑) でも、ネットで買った(笑) んじゃないの?
ちーーーーーーーとwwwwwwwwwwwwww
/\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < まーたはじまった | ,;‐=‐ヽ .:::::| \_______ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
結局、誰一人として質問に答えられる人間は居なかった というお決まりのパターンか
628 :
デフォルトの名無しさん :2009/02/18(水) 12:18:15
そんなにチート使うのに必死にならなくてもwwww かまかけて引き出そうとしても無駄だよ 知ってても教えない奴はこの時間帯にはいない 知らずに叩いてる奴は知らないから答えられない わかったらさっさとググれ
俺は知ってるけど教えない
スレタイの質問箱は質問をためる箱なんですね
どう考えてもすでに製作されてるゲーム画面の最前に表示だろ 屁理屈やら揚げ足取りみたいなしょうもない事する奴多いな
Win32APIの範囲では無理 DirectX9ならプロセスに侵入したうえでIDirect3DDevice9::SetDialogBoxModeを呼び出し
って事はスレ違いなんですね ありがとうございました
/;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;|;:;:l /;:`丶、、_;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;l;:;:;l ,ィヽ /、;:;:;:;:;:;:;:;:;:``;:ー‐--;、、;:;:;:;:;|;:;:;l . / / /:::::`::`::―--:::z、、;:;:;:;:;:;`'ー-+-┤ / / /:::::::::::::::::::::::::::::::ミミ' ` ‐- 、_/_l . / / {::r=、:::::,,ッ' ヾ三) r-、 リ / / ,ィヽ | / ! ゞツヽ / /_`" リ ,ィ≦´ ̄ ̄ ` V / l〈__ j. ,.' l ムツ` ,' |  ̄ ̄ ̄ `V / ヽ‐' / l l ,' YES WE ZIP ! |  ̄ ̄ ̄Vリ Y _ リ `ー 、__,、) / YOU MUST UP! | ´ l ̄ハ l /_,x</l /__,,....、__ l ./ ____j .j 'ー' ン::::::::::::j .ヘ / |‐'‐‐- -''リ/ ,.' :::::::::::::リ /:::::::::::::::| .ヘ l ヽュェェェン / ::::::/! ./ :::::::::::::::::::| ヘ ヽ ヽ ー‐‐"/ /:::::| ,ィ':::::::::::::::::::::::::∧ ヽ \ ン' ::::::::::lヽ__/ l::V:::::::::::::::::::::::::∧ /\ >ー "|、 ::::::::::l /:::lハ::::::::::::::::ヽ::::::::l-‐' ハ _/___|ハ ::::::::::`ー'---.':/:::::::::::::::::::::l::::::l l / l /:::::\
636 :
デフォルトの名無しさん :2009/02/18(水) 18:26:15
>>633 プロセス侵入なんて楽勝だよねw
あとはどうpgrするか
638 :
デフォルトの名無しさん :2009/02/18(水) 19:36:59
WinAPIで出来る事は完全には.NETでは出来ないんでしょうか? また、.NETでは出来るけどWinAPIでは出来ないことは、あるんでしょうか?
>WinAPIで出来る事 まずは具体例を挙げろ 質問するのに質問内容まで他人に丸投げするな どれだけ横着者なんだよ、お前は?
>>637 わからないならレスしないでください、気持ち悪いです><
>>639 あなたも偉そうなので気持ち悪いです消えてください><
641 :
638 :2009/02/18(水) 20:03:40
>>640 このスレはいつからか、こうなってしまいました。
ちょっとまともな回答くるかどうか、適当な質問投下したが、やっぱこのスレはもうダメだな
まぁ、WinAPIなんて、歴史長いしグーグルで9割5部は解決するからいいんだけど
>9割5部 …
643 :
デフォルトの名無しさん :2009/02/18(水) 20:15:17
><
ただいまー
>>615 WM_GETMINMAXINFOでどうにかならないかな?
>>615 WM_WINDOWPOSCHANGING
で変えられないこともないけど
他にもなんかしないとだめだと思う
>>638 暇だから適当にあげつらってみた。
.NETでは無理・困難・実質的に不可: フック、DirectX、シェル拡張
Win32では無理: WPF
647 :
デフォルトの名無しさん :2009/02/18(水) 21:42:58
長い間ご利用ありがとうございました Win32API質問箱は閉鎖になりました グーグル先生がこのスレの役割を引き継ぐそうですので 今後はグーグル先生に聞いてください
>>646 LL ならOK
Managed DirectX
シェル拡張も可能
ぜんぜんダメじゃん・・・
>>684 LLしか出来ないともいえるだろw
シェル拡張はマネージコード使うなって言われるし
ロングパス!!
マネージコード使うな、って誰に言われんの?
誰にってあんた・・・・
The Oに言われるのですね
MS社内のアプリやゲームの開発者に対してに決まっているだろう。
モーダルダイアログを表示したあと、親ウインドウにフォーカスを 移そうとすると警告音が鳴りますが、これを鳴らなくすることは 出来ないでしょうか? モーダルダイアログを表示し親ウインドウクリックでダイアログを 閉じたいので、WM_NCACTIVATE(wParam==FALSE)で閉じるように しているのですが警告音が鳴ってしまいます
657 :
デフォルトの名無しさん :2009/02/18(水) 22:57:16
モーダルっぽく作り込んだ本当はモードレスとか
>>648 Managed DirectXはおしまいの方向みたいだ。
シェル拡張を挙げたのは1プロセスに1バージョンのCLRしか読み込めない制限からだが……、
みんなCLR 2.0使えば解決って流れなのか?
659 :
656 :2009/02/18(水) 23:24:06
Managed DirectXを終わらせたのは.NETだからじゃないだろう
>>657 ,659
「モーダルっぽく作りこむ」必要性もなく、単にモードレスでいいだろw
Managed DirectXが終わってしまった理由をkwsk
目的の異なるXNA Frameworkというものが出て、 いつの間にかDirectX SDKにManaged DirectX関連のものが収録されなくなった。
箱
竹 相
ケケ 木目
SetStretchBltMode はどっちなんだろうか?
Managed DirectXが終わってしまったのは箱丸のせいだ!!
∧_∧ 何でもかんでも人のせいにしないの! ∩`iWi´∩ ヽ |m| .ノ |. ̄| U⌒U
もともとManaged DirectXなんていらないだろう… ここはWin32APIのスレだぜ?w
64bit環境でもWin32APIとな!?
だって、system32 フォルダだし・・・
SysWOW64 ってのもあるぜ! 中身は32ビット用だけど。
わざわざ糞重い.NETでゲームを作ろうとする馬鹿が少なかったってことだろ。
XNAが.NETの拡張なんだからどうでもいいだろ
MSは自分自身では.NET対応の市販アプリを開発しない。 MSは自分自身では.NET単体もXNAを利用したゲームも作らない。 つまり売り物にならないことはMS自体がよくわかっている。
>>672 一応気にしているように思える。
Overview of the Windows API
http://msdn.microsoft.com/en-us/library/aa383723 (VS.85).aspx
> (Note that this was formerly called the Win32 API.
> The name Windows API more accurately reflects its roots in 16-bit Windows and its support on 64-bit Windows.)
2DエロゲくらいならXNA使った方が良いと思うけどな…
680 :
デフォルトの名無しさん :2009/02/19(木) 22:30:40
2Dユーザーは思うほど存在しない現実
2Dエロゲなら昔から使っているエンジン使い回すだけだろ
Fate程度動くゲームってDirectX使わないと無理?
保険に入るなら保険屋が売りたい保険ではなく、保険屋自身が入っている保険を選べ。 ゲームを作るならMSが使わせたい環境ではなく、MS自身が使っている環境を選べ。
684 :
デフォルトの名無しさん :2009/02/20(金) 02:50:42
解説サイトでよく目にする「新しいコモンコントロール」が 全然新しく感じないのはなぜですか
主観だから
こんな時間に何やってんだ・・・ あーねみぃ
>>682 エロゲーのFateのことならDirectXは表示には使用されてないぞ。
>>674 System32が64ビットなんだね。
>>679 客層が糞スペック揃いらしいぞ
楽したいなら汎用紙芝居エンジンでも使った方が無難だろう
実行中に動的にANSIコードページを変えたいんだがCRTのロケール関数とフォントオブジェクトとの関係がわかりまえん コードページ番号でロケール変えた後にフォント作成でテキスト出力が反映される? でもロケールの影響を受けるのは一部のCRT関数のみとか・・・
わかりまえん
>>690 ロケールなど無関係に目的の言語のフォントを選べばいいだけだろ。
いったい何を言っているんだ?
693 :
デフォルトの名無しさん :2009/02/20(金) 13:30:39
でっていう
CreateThreadではCランタイムライブラリの関数を使うことを想定していないとのことですが、 C++の標準ライブラリもこれに含まれるのでしょうか。
もちろん
ありがとうございます。 助かりました。
>>684 新しいといったって、ほとんどはIE 4/5やWindows 98/2000/XPの出た頃だ。
その中で一番新しいXPでさえもう7年前。
新しいと感じなくても仕方ないかもしれない。
というわけで、Vistaや7からのものならもう少し新しく感じるかも。
>>690 Win32 APIのとCRTのとは別関係。
setlocaleしてもこっちに影響は及ばないし、逆もまた然り。
GDIのテキスト出力がどうなるかは、A関数で出力するなら
フォントを作るときの文字集合の指定(LOGFONT::lfCharSetなど)が重要。
W関数を使うなら関係ない。
コンソールならSetConsoleCP。ANSIではなくOEMコードページという罠に注意。
これもW版なら関係ない話だ。
>>697 Windows7のリボンコントロールが最も新しい
が、IUIFrameworkで日本語サイトに絞ってググってもまだこのスレだけ
MFCのCMFCRibbonBarでググってもMSサイトと2chのスレ等が数件見つかる程度
何だかなあ・・・
リボンはコモンコントロールじゃないから
リボンもコモンコントロールの扱いでいいよ
VC2005でGDI+のプログラミングをしてるのですが、 void InitGraphics(Graphics* g, Bitmap* bmp,int width, int height, Color color) { bmp = new Bitmap(width,height); g = new Graphics(bmp); g->Clear(color); } というGraphicsの初期化用関数を作って static Graphics* screen; static Bitmap* screenbitmap; static pen* pen; InitGraphics(screen, screenbitmap, 800, 600, Color::White); pen = new Pen(Color::Black, 1); screen->DrawLine(pen,0,0,100,100); //座標は適当 というような感じで呼び出しても実行時にDrawLineでエラーが発生してしまいます。 どう書いたらいいのでしょうか?
>>703 可愛いなぁ
void InitGraphics(Graphics* &g, Bitmap* &bmp,int width, int height, Color color)
{
bmp = new Bitmap(width,height);
g = new Graphics(bmp);
g->Clear(color);
}
705 :
デフォルトの名無しさん :2009/02/21(土) 11:52:41
カレントスレッドのスタックサイズを取得したいんだけど、どうすればよい?? 具体的にいうと、sp 最小値のアドレスを取得したいんです。
作る時に覚えておけば
>>705 __try~__exceptした上で例外が飛んでくるまで_allocaを呼びまくる
708 :
デフォルトの名無しさん :2009/02/21(土) 12:29:21
>>706 DLL から拾いたいんだよね。
>>707 その方法も考えたんだけど、最終的な方法かな・・・とw
でもスタックの先頭アドレスと最終アドレスを取得して、みたいな方法よりも
よっぽど簡単なのかな。
Win32API で ESP の範囲を取得できるものないですか><
レジスタの値がほしいだけならインラインアセンブラで簡単にとれるぞ
>>709 話を理解してない馬鹿はレスしないで下さい
711 :
デフォルトの名無しさん :2009/02/21(土) 12:41:16
>>709 ごめん、表現が悪かった。
esp 値がほしいのではなく、esp の範囲が知りたい。
常にスタックフレーム(ebp)が最大値ではないし、
単純に PE ヘッダのスタックサイズを ebp から引いても最小の esp 値が
取得できないので、何かほかの方法を探しています。
コンパイル結果をアセンブラ出力して、 自分のコンパイラのスタックチェックの方法みれば 最終アドレスの参照方法とか分からないの?
・C/C++を理解してない奴の質問 ・回答者のスキルが質問者よりずっと低い 最近ってホントこの2つのパターンだなw
NT_TIB::StackBase NT_TIB::StackTop NtCurrentTeb() Win32スレなのに何故誰も出さないんだ?
716 :
デフォルトの名無しさん :2009/02/21(土) 13:18:58
>>712 スタックチェック処理って自分の exe に含まれる??
それならアウトプットで見れるけど、_alloca ならデバッガで追わないといかんね。
ちょっとデバッガで追ってエラーチェックしているところを探してみるけど、
カーネルAPIだったらどうしよう…orz
ドライバなんて作れないYO><
717 :
デフォルトの名無しさん :2009/02/21(土) 13:21:32
>>715 キター!!!!!
ちょっとやってみる!!
みんなthx!!
>>715 NT_TIBにStackTopなんてあるか?
試してみたけどNT_TIBではESPの最小値は取れなかったぞ。
721 :
デフォルトの名無しさん :2009/02/21(土) 13:41:04
スキル低い知ったか厨ばっかw
>>718 すまん、思いっきりStackLimitと書き間違えた。
723 :
デフォルトの名無しさん :2009/02/21(土) 13:55:14
>>715 >>719 NT_TIB に確かに StackLimit があったんだが、
void a(){
__asm{
mov dwLastESP,esp
}
a();
}
を呼び出したとき、
StackLimit : 0x00226000
StackBase : 0x00230000
dwLastESP : 0x001330c8
になっていた。スタック拡張をすっかり忘れていたああああorz
この拡張も含めたリミットはさすがに計算しないと出ませんか?
Windows のバージョンにも依存すると思いますが・・・
1ページずつ拡張してったらどうなるのかな
727 :
デフォルトの名無しさん :2009/02/21(土) 14:39:29
無知ばっかw
ロクに調べもしないで無知を晒す馬鹿って何なの? 他所の掲示板ならポイント稼ぎが目的でそういう奴が多いのは分かるけど 2chにはそんなシステム無いんだし
匿名だからこそ嘘を教えても評価下がらないし、わからない馬鹿が答えてしまうというw
>>728 >ロクに調べもしないで
ここで調べて回答しているすごいのいるのか
じゃね、程度だろ
>>705 のあげ基地は自分で調べるか、ちゃんと調べて回答してくれる回答者がいっぱいいる掲示板で
聞くように。そんな掲示板ではちゃんと質問しろよ。
ロクに調べもしないで質問する馬鹿って何なの?
もうだめだこのスレ
>>731-732 ロクに調べもしないで質問する基地と戯れたり、そのネタでワイワイするスレ
だからいいんだよーーーー
だから、だめなことはない。超有意義に機能しているすばらしいスレだ。
そして、ここはおっさん憩いのスレでもある。
だろ?
>>730 その他
わからないならレスしないで下さい気持ち悪いです
用途不明な質問する奴ってロクなのがいないね 「単なる興味本位です」みたいな
737 :
デフォルトの名無しさん :2009/02/21(土) 19:36:15
WM_SIZEのメッセージが来た時に、新しいウィンドウのサイズは lParam(4つ目の引数)に、 幅(下位16ビット)+高さ(上位16ビット) という形で入ってるのですか?なので、幅と高さをとろうとすると、 UINT width = LOWORD(lParam); UINT height = HIWORD(lParam); としないとだめですか?
>>737 こういう馬鹿を見るとわざとやってるんじゃないかって思う
739 :
737 :2009/02/21(土) 19:49:49
すいません、C++は使い始めてちょっと(1年くらい)経ったんですが、windows環境が 分かってません。どうかよろしくお願いします。
WORD値を返すようなメッセージの値は信用せずに、 例えばこの場合はGetWindowRectを使った方がいいよ。 窓のサイズが16bit以上になることはまずないだろうけど。
>>740 出ました!無知の恥晒し
WM_SIZEのlParamに相当するのはGetClientRectだよ
>>739 君が分かってないのはC++やWindowsではなくて、インターネットの使い方(=検索して調べる)
743 :
デフォルトの名無しさん :2009/02/21(土) 20:25:48
>>739 >C++は使い始めてちょっと(1年くらい)経ったんですが
1年も経験あるのに、経験のないwinプログラムとは言えwinプログラム1週間レベルの
質問するようじゃマとしての適正ないから、もっと適正のある別なことをやったほうがい良いよ
プログラム開発10年やってもマとして伸びそうにないね
趣味なら下手の横好きでも良いが、職業マになったら人生を後悔をする。
批判しか出来ないクズは黙ってろ
すげーな、ここまでたたかれるのかw
746 :
デフォルトの名無しさん :2009/02/21(土) 20:42:24
一応職業マです。 「君はプログラマとして入ったんだよね?」とか上司には言われましたが、、、 WM_SIZEの時はlParamに縦横のサイズが入ってるというのは正しいですよね? 最近入った後輩は、自分が苦労してようやくちょっと分かりつつあるソースを与えられて、 構造体同士の関係とかもう自分より把握してます。自分はソースをプリントして時間かけて 最初から読んだのに、後輩はエディタでじっと読むだけなんです。あと、自分は時間がかかるので、 まだソースのアプリが起動する所までしか追えてないのですが、後輩はそのあとの重要そうな処理 まで結構見てるみたいです。周りから見ると進捗の違いがはっきりしてると思うので、 つらいです。
まあとりあえず MSDN 読もうぜ。 まずはそれからだ。
>746 天職について考えても良いと思う。
能力は誰でも同じではない。 向いている人間、向いていない人間がいる、ただそれだけの話。
>WM_SIZEのメッセージが来た時に、新しいウィンドウのサイズは >lParam(4つ目の引数)に、 >幅(下位16ビット)+高さ(上位16ビット) >という形で入ってるのですか? という疑問を仮に俺が持った場合 まずはMSDNへ ↓ 「WM_SIZE Notification」のページへ ↓ ParametersのlParamの項目を読む ↓ >The low-order word of lParam specifies the new width of the client area. >The high-order word of lParam specifies the new height of the client area. ↓ なるほどThe low-order word of lParam specifies the new width of the client area.なんだな なるほどThe high-order word of lParam specifies the new height of the client area. なんだな ↓ 解決
751 :
デフォルトの名無しさん :2009/02/21(土) 21:03:57
今の会社はようやく見つかった会社なので、転職とかは考えてません。 とりあえずMSDN読んでみます。 でも、自分は上司と頻繁に会議とかやって10時とか11時とかまで会社にいるのに、 後輩は8時9時にはいなくなるし、進捗は向こうのほうがいいし、結構難しめの部分を 任せられたりして、上司の進捗管理も彼に対しては緩めだし。。。 とりあえず彼はC++はあまり使ったことないみたいなので(Cは得意で組み込み系が好きらしい)、 自分はC++を使えるようになろうとしてます。 なんだか長く書いてしまいました。 すいません。
まあ、なんだ とりあえずPezoldでも読めば幸せになれるんじゃないかな… C++だったらそこからMFCか。試練の道だ
・ 調べる能力 ・ 理解しようとする能力 ・ 本質を探ろうとする能力 これが重要だな。 一挙手一投足にいたるまで、 この3点を意識しながら行動するといい。 例えば ・ MSDN 読むのは最低限やらなくてはいけないこと。 ・ 検索するにしても、検索語の選択を吟味する。 どうすれば目的の結果が得やすいか考える。 ・ エラーメッセージをあまり文字通りに受け取ってばかりいてはいけない。 なぜそのエラーメッセージが出るのか、その裏を考えること。 など。
>>737 GET_X_LPARAM/GET_Y_LPARAMおすすめ。
まあ、
>>740-741 のいうとおりGetClientRectもありだけど。
GDI+で、実行ファイル中のアイコンリソースをBitmapとして取得したいのですが、どうにもうまくいきません。 以下の方法を試してみたのですが、何処が良くないのでしょうか・・・orz 1. Bitmap::FromResource(hinstance, IDI_TEST); -> InvalidParameter 2. Bitmap::FromHICON(LoadIcon(hinstance, MAKEINTRESOURCE(IDI_TEST))); -> Okとなるものの、DrawImageなどしても何も表示されない 誰かお助けください・・・
ごめんなさい。こちら側のミスでしたorz 2. の方法で読めていたみたいです。
>>751 WM_SIZEのlParamの意味を知ってなくても、全然気にする必要なんてない。
本当のことを言おう。みんなそんなもんなんだ。
たとえば、これは俺の学生時代にあった話だが、教師がWM_CLOSEで
メッセージボックスを出すプログラムについて説明していた。
その教師はメッセージボックスに応答した後にウインドウが破棄され
ずに、学生の前で必死になって試行錯誤していた。そして、ある生徒が
「return 0じゃなくてbreakですよ」と言ったら、問題は解決された。
先生(会社の上司とかも含めて)ならそれくらい知っておけよと思うが、
やっぱりそいつは知らないし、他にも知らないことは一杯ある。
これが真実だ。
じゃあ、実力を判断する基準というのは一体何なんだ。
企業の場合であれば、それは経験(実務経験)だ。
年数を経てば、そいつは上司からも外部からも多少はできると思われる。
ただし、後輩からみればそいつは本当に実力があるのかと思うし、
実際のところ実力はない。これも真実だ。
多分あなたもこういう経験あるだろう。
分らないところがある→上司や先輩に聞こうと思う→聞いても
答えられないだろうと予測→相手に恥を欠かせないために自分で
調べる→そしてこうした掲示板にたどりつく。
TCHAR型の文字が制御コードかどうか判別するAPIてあるの? .NETのIsControl()とかJavaのCharactor.isISOControl()みたいな感じでつかえるやつ。 やっぱcharにしてiscntrl()するしかない?
>>759 <tchar.h>の_istcntrl
Windows フォトギャラリーで露出とかコントラスト調整するとものすごく速いんですが、 これってどういう風に実装されてるんでしょうか? どんな API を使ってるかご存じのかたがいらしたら教えてください。
32ビットで背景が0x00ffffffなビットマップがあるです。 表示すると背景はただの白くなります。 どうするですか?
どうもしない
764 :
デフォルトの名無しさん :2009/02/22(日) 03:40:04
キーロガーどうやってつくるのか教えて
WM_CHARを監視すれば良いんじゃね?
766 :
デフォルトの名無しさん :2009/02/22(日) 08:50:43
>>764 そんなあなたにはコレをおすすめ
#include <windows.h>
#define GET_KEY_STATE(a,b) Beep(a,b)
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
int key[3]={5,6,7};
for(int kb=0;kb<2;kb++)
{
for(int i=0;i<3;i++)
{
GET_KEY_STATE(key[i]*100,i==3?i*10:10);
}
GET_KEY_STATE(key[1]*100,10);
GET_KEY_STATE(key[0]*100,kb==0?30:10);
}
GET_KEY_STATE(key[1]*100,40);
return 0;
}
>>754 GET_X_LPARAM/GET_Y_LPARAMを使うのは負の値になり得る場合。(WM_LBUTTONDOWNなど)
クライアント領域が負の値になる可能性は無いのでWM_SIZEの場合はHIWORD/LOWORDを使う。
32bit値であってもlParamには下位16bitしか渡されない、 とかわざわざ書いてあるところをみると、 一応GetClientRectが推奨なのかなあ。
769 :
デフォルトの名無しさん :2009/02/22(日) 11:55:00
vb.netでこれ↓ Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) を使用してメッセージを監視してるんですが 他のウィンドウをアクティブにするとメッセージを取得してくれなくなってしまいます。 他のウィンドウがアクティブになっていてもメッセージを取得できるようにするには どうしたらいいですか?
実際にメッセージ来てないだけじゃ?
771 :
デフォルトの名無しさん :2009/02/22(日) 12:05:07
>>770 ブレークポイントを打っても
他のウィンドウがアクティブだと反応しません
>>769 スレ違い
VBスレ若しくは.NETスレヘどうぞ
773 :
デフォルトの名無しさん :2009/02/22(日) 12:15:43
774 :
デフォルトの名無しさん :2009/02/22(日) 12:36:44
他アプリのキーフォーカスのあるコントロールハンドルを取得して SendMessage、EM_REPLACESELをするとうまく文字列を 挿入することが出来るんですが、エクセルやワードではうまくいきません。 エクセルやワードのシートに文字列を送るにはどうやったらいいのでしょうか? クリップボードを利用して、keybd_event、SendInputで「cntrl + v」等するとうまくいくんですが できればクリップボードは使いたくありません。
そもそもターゲットウインドウが標準コントロールじゃないので、 各アプリの仕様に沿って作るしかない。 Office用のSDKを使う話なので、そもそもスレ違い。
SelectObjectの第2引数にNULLを指定したらどうなるんでしょうか? MSDNにも載ってませんが、ひょっとして「何も指定しない」状態になるの?
777 :
デフォルトの名無しさん :2009/02/22(日) 15:00:35
>>776 GetCurrentObjectで調べよ
>>778 文献を探すんじゃなくて、SelectObjectでNULLを指定してGetCurrentObjectで調べてみる、
という意味じゃないの?
>>779 そういう意味ですか
でも今度はGetCurrentObjectの第2引数に指定する引数がわかりません・・・
MSDNに載ってない=不定 と思っとけ
と、いうことはつまりSelectObjectにNULLを指定しても何もしないということですかね?
不定=鼻から悪魔が出てくるかもしれない、ってことだよ
>>784 すみませんレス見る前にレスしてました
不定と思っておきます
GetCurrentObjectの第二引数はUINT型 つまりNULLはWinDef.hで0として定義されてるからUINT型の0が渡され 更にWinGDI.hで定義されているOBJで始まる定数名の一覧には 定数として0が含まれていないから 関数は失敗してNULLが返る と動作が予測される
>>786 9xと言えどその程度(NULLを渡す)では死なない
789 :
デフォルトの名無しさん :2009/02/22(日) 16:06:43
>>787 久々に 話を全く理解してない馬鹿 を見たw
GetCurrentObjectは関係ない?
>>787 人の話を聞かない上に偉そうに薀蓄語るタイプか
迷惑な人間の教科書みたいな奴だな
どこをどう読めばGetCurrentObjectの第2引数にNULLを指定するなんて話になるのやら
>>790 SelectObjectか
読み間違えた
読み間違えた(笑)
自重すると言ったのにまた失敗だ・・・orz またしばらくROMることにするよ みんなすまんかった
誰?
グラフィックチップのアルファブレンド機能を 二枚のDIBの計算に使う方法はないの?
ホストマシンがIPv6に対応しているかはどうやって調べればいいですか?
ホストマシンとどういう関係かによって変わるだろ
ホストマシン=アプリケーションが動作しているマシン くらいに考えてました。すいません。
そんなら、RtlIpv6StringToAddress() とかでいいんじゃない? やったことないけど。
ありがとうございます。RtlIpv6StringToAddressを調べてみます。
DirectOutput
DirectUIHWND というクラスのウインドウをメッセンジャーやインターネットエクスプローラーで よく見かけるのですが、MSDNやgoogle で検索しても 情報がみつかりません。 このウインドウについて詳しい情報が載っている 書籍やサイトなどありますでしょうか?
ないと思います。
ググれカス
死ぬ程出てきたけど
811 :
デフォルトの名無しさん :2009/02/23(月) 05:38:51
ZeroMemory(&wc,sizeof(WNDCLASSEX)); wc.lpszClassName=゙DirectUIHWND゙; : : : RegisterWndClass(&wc);
812 :
デフォルトの名無しさん :2009/02/23(月) 13:51:52
SendMessageのWPARAMやLPARAMって何バイトくらいまで送れるの?
sizeof(WPARAM) sizeof(LPARAM)
ポインタの概念がないようなので他所で聞いてください
815 :
デフォルトの名無しさん :2009/02/23(月) 14:28:44
この時間は知らないのに煽りレスするクズしかいないよ^^
ここからは知らないのに煽りレスするクズが更に必死に煽ってきます ↓
│↑ └┘
819 :
デフォルトの名無しさん :2009/02/23(月) 16:22:26
でも自分を指しているんだよな。。。
自演乙か・・・
821 :
デフォルトの名無しさん :2009/02/23(月) 18:30:08
バイナリファイルを判定する関数をDLL化したら、機能しなくなりました。 なにか思いつくことはないでしょうか?? __declspec(dllexport) int __stdcall isBinary(FILE *f_in) { int c; while((c=fgetc(f_in))!=EOF){ if(0x00==c||0x0e==c||0x0f==c ||0x11==c||0x12==c||0x13==c||0x14==c ||0x18==c||0x19==c||0x1a==c||0x1b==c) { return 1; } } return 0; } コンパイルも成功し、エラーメッセージも表示されません。 DLL化する前は動作したんですが .....
デバッグぐらいしろと
機能しないとは? 常に0が返るとか?
824 :
デフォルトの名無しさん :2009/02/23(月) 19:00:37
>>822-823 思いつくことはないですか?って聞いてるの。
そんな余計なレスはいらない
思いつくことは無いから
827 :
デフォルトの名無しさん :2009/02/23(月) 19:19:11
>>824 プログラムは貴方の書いたとおりに動作します。
まずは、貴方自身の頭脳レベルをどうかしたほうが良いなと
思いつきました。
お前ら、"思いつくこと"何でも書いてやれよ 思いつくことで良いんだぞ
馬鹿にプログラムは無理です
>>821 DLLと呼び出し側でFILE*をやりとりしてるのが悪い
831 :
デフォルトの名無しさん :2009/02/23(月) 19:27:49
>>821 FILE *f
これは自分のヒープ領域に取るんだろ?
それをDLLに渡して見えるんだっけ。
32ビットならフラットだから見えるんだっけ?
取り合えずDLLをデバッグモードで動かしてみろよ
>>821 呼び出し側もちゃんと __stdcall になってる?
EXEとDLLで共通の msvcrt を使っているのか、スタティックリンクして
いるのか、とか。
ビルド方法や現象をちゃんと書いてくれたらもっとましなアドバイスが
できるんだけどねえ。
一応fgetcというWin32APIに関係してるので関係なくは無い
残念。fgetc はランタイム関数です。CE の API には含まれてるみたいだけど。
msvcrt.dllはkernel32.dll等と同じくWindowsのシステムDLLという扱いなのでCRT関数もWin32APIという事になる
じゃ、VB のランタイムも Win32 API? システムDLL だからといって、Win32 API に含まれる訳じゃありません。
そもそもVBランタイムはシステムDLLでは無い
いえ、システムDLL です。 システム DLL ではない、というなら、msvcrt も同様です。
システムDLLの定義を述べなさい
KnownDLLsがシステムDLLだろjk
windowsにプレインストールされているかどうかなら msvbvm60.dll○ VB6JP.DLL× で中途半端だよね。Windows7ではどうなるんだろ。
それは無い VC6以下やgccだと普通にmsvcrt使えるからな
確かに msvbvm60 と msvcrt は違うね。後者は KnownDLLs に登録されてると。 でも、msvcrt でエクスポートされてる関数を Win32 API と呼ぶのは違和感あるな。 ドキュメントの区分も違うし。
msvcrt.dllはOSのビルドに使ってるVC++のバージョンに依存してるので、一応使わない方がいいのかな。 2000 → VC6 XPSP1以下 → VC7.0 XPSP2以降 → VC7.1 Vista → VC8 まあ今でもVC6使ってるならがんがん使っていいと思うがw
自分でリスクを把握して使うのと、 人に勧めるのは違う
VC6なら使っても問題無いだろが
一般のアプリから使うなって言われているんだからAPIとは違う
使うななんていわれているのか 今もVC6がメインなのにどうすればいいんだ
質問なんだけど、Win+Lでコンピュータのロックかける時に開始と復帰のイベントを知る方法ってある? イベントログを使う方法だと復帰の時タイムラグが3秒ぐらいあるし、eventtriggers.exeはXPHOMEだから付いてない。 なんかない?
855 :
デフォルトの名無しさん :2009/02/24(火) 12:03:02
>>359 でもあそこ、濃厚な豚骨がまったりねっとりと舌に絡んできて、
絶妙な味加減なんだよね。
叉焼がすっげー分厚いのも嬉しい。
酒が程良く入ったところに、ガッツりいきたいね。
誤爆した 喧嘩すんなよ 叩くなら俺にしとけ
でもあそこ、濃厚な○○がまったりねっとりと舌に絡んできて、 絶妙な味加減なんだよね。 ○○がすっげー分厚いのも嬉しい。 酒が程良く入ったところに、ガッツりいきたいね。 エロい奴だな
卑猥w
中学生か
小学生ですが何か
焼酎学生が酒の話をすると歩道されるナ 変換がおかしいがマいいや
サポート切れ?のせいか,ご本家に『Windows SDK for Windows Server 2000』なる ものが見当たりませんが、入手先あるでしょうか?
> "Windows SDK for Windows Server 2000"との一致はありません。 お前の脳内にしか存在しない物の入手先なんて知らねーよ
知らないならレスしないで下さい 誰でもいいので入手先をお願いします
じゃ~さ~、「Windows Server 2000」で使える SDK はどこで入手できるのかな~。
それにも答えられない
>>865 に、人生のすべての災いが乗り移りますように. (-人-)ナムナム
869 :
デフォルトの名無しさん :2009/02/24(火) 16:34:10
>>865 早く答えてよ~
どうせ答えられないんでしょ?www
870 :
デフォルトの名無しさん :2009/02/24(火) 16:34:43
釣れた釣れた
873 :
デフォルトの名無しさん :2009/02/24(火) 16:41:17
なんかすごいのが暴れているな
学校で嫌な事でもあったのだろ
またいつものクソガキが暴れてるのか
目覚まし君なのか?
軽度の統合失調症です。 本人は遊びのつもりかもしれませんが、早めの通院をお勧めします。
また目覚まし君か
また目覚まし君って言ってる奴か
881 :
デフォルトの名無しさん :2009/02/24(火) 17:17:15
また目覚まし君って言ってるって言ってる奴か
ゲームの装備強化率100%という名目で張られていました。 このプログラムがどの様な挙動をするか分かる方居たら教えていただけませんか? DWORD WINAPI OutputToSocket(Lunatia lpvoid) { LuDATA pthData = (LuDATA)lpvoid; DWORD dwLen; char szBuf[1024]; while(pthData->bThreadFlag){ Sleep(100); BOOL bret = ReadFile(pthData->fd_write, &szBuf, sizeof(szBuf), &dwLen, NULL); if(bret == FALSE) continue; if(dwLen > 0) send(pthData->sock, szBuf, dwLen, 0); } return 0; }
目覚まし君は今日も元気だな
885 :
882 :2009/02/24(火) 17:22:48
>>884 ありがとうございます。
少し検索したらトロイの木馬の作りかた等が出てきたので怖くて聞きました。
目覚まし君って、まえに.NETで目覚まし時計作ったってここで自慢してた子?
>>886 いいや、目覚まし付きMP3プレイヤー(おまけのMP3ネットラジオも付)をC++とAPIで作った
と自慢してた子。.netじゃないぞ、APIだ
そして目覚まし君に粘着してる奴もいるって事さ。
>>886 みたいな奴ね
そして886みたいな奴に粘着してる奴もいるって事さ。
>>888 みたいな奴ね
>>887 「.net」で「MP3を再生する目覚ましと時計」を作ったんでしょ?
C++とAPIで作ったなんて見栄を張らなくていいよw
>>887 へーネットラジオまで付いてるのか
そんなの書いてなかったのにどうしてそんな事まで知ってるのかなwww
> 231 :221[sage]:2008/11/18(火) 00:11:20
> あるよ。
> 時間も指定できるし。
>
> あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw
> フリーソフトにすら公開してねーけどw
>>887 APIで目覚まし付MP3プレイヤー(ネットラジオ付)でしたか
これはどうも失礼しました
>.netじゃないぞ、APIだ レベルの低さがよくわかる文章だな さっさとうpしてみろよw 本当はそんなの無いんでしょ?w
あるあるw
898 :
デフォルトの名無しさん :2009/02/24(火) 17:59:52
なんでお前らクズの為にうpしなけりゃならんのだ? 言っとくが目覚まし付きMP3プレイヤー(ネットラジオ付) は5,000円のシェアウェアだ。 そしてレジストした正規ユーザーは一万人にも及ぶ。 碌なソフトも作れず他人を煽るだけの似非プログラマーのクズ共とは違うんだよ。
目覚ましは、悔しくてAPIに変更してMP3ネットラジオ付きにしたのか
若いっていいのう
俺は簡単には出来ないが、でもよ、お前らだったら
>>887 程度だったらAPIで簡単に出来るんだろ
なんでそんなに嫉妬してるのか分からん
レジストwwwwwwwwwwwwwwwwwwwwww
粘着だねえ
悔しいのうwww悔しいのうwww
もう少し紳士的に行かないか?君達
906 :
デフォルトの名無しさん :2009/02/24(火) 18:15:45
オッサンが子供を苛めて悦に浸るスレ
>>899 すげーな、去年の11月末ごろに.NET目覚まし時計をバカにされて奮起して
APIで目覚まし付MP3プレイヤーを作ってシェアウェアで売って
それで今まで5000万円稼いだのかよ
たった3ヶ月で開発して売り出して5000万円稼ぐとは…、おまえ天才だよ
実質バカ同士の馴れ合いだからすげえ気持ち悪い
5千万か.....おじさん、完敗だよ、orz
悔しいのうwwwwwww悔しいのうwwwwwww
煽ってる奴って何でそんなに必死なの?
煽られてる奴が必死だから
5千万か.....おばさんも、完敗だよ、orz
煽ってる奴の方が必死に見えるんだが
それはお前が悔しがってるからなのだよ
>>909 ,913
もう天才プログラマーに向かって君付けできないね
これからは目覚まし様と呼ぼう
>>916 妙なこだわりを持ってるんだな
どの辺があなたの琴線に触れたのか詳しく知りたいものだ
なんでそんなに目覚ましにこだわってるんだ? お前らの仕事からすれば目覚ましが作ったソフトって全然たいしたことないだろ? それに火病反応するなんて...
>>918 目覚ましの反応が面白いからでしょうかね
てか、みんな目覚ましにまんまと釣られただけじゃねーの
>>918 ヒント:ここには煽るだけの馬鹿しかいない
おちつけ まずそのシェアウェアを見てみよう URLは?
いつこい奴も多いみたいだねここって
だからどうした?w
>>919 なんか突然目覚ましって出てくるのが不思議なんだよな
.netで作ったころの目覚ましの反応ってそんなに面白かったのか
>>920 午後のカキコってそんな奴の多いからな
>>921 スパムメールで販売
SHGetFileInfoでショートカットのアイコンを取りたいのですが、 左下に矢印がないアイコン(オリジナルのアイコン?)を取得する 方法ありませんでしょうか? SHGFI_ICONLOCATIONでアイコン場所をゲットしてそこから取る方法も 考えたのですが、アイコン場所がヒットしない場合があったりするので、 なんかいい方法あったらよろしくお願いします。
930 :
デフォルトの名無しさん :2009/02/24(火) 19:12:43
からけ
>>927 今はどんなレスにも煽ってくる馬鹿いて荒れてるから・・・
どうせあと70レスくらいだし別にいいじゃん
つまり次はそこが荒らされるわけだな。 体の良い荒らし依頼じゃねーか
もっともふさわしいAPIはどれですか? どんなAPIがありますか? こんなAPIってありますか? はここ C/C++でAPIを使ったら巧く動きません。何故ですか? このC/C++でのAPI使用例を改造して目的を達したいのですが、 どすればいいですか? はC言語スレ でいいんじゃないのか?
ビットマップのヘッダはこんな感じなのに pb4h->bV4RedMask = 0x00FF0000; pb4h->bV4GreenMask = 0x0000FF00; pb4h->bV4BlueMask = 0x000000FF; pb4h->bV4AlphaMask = 0xFF000000; ビットマップファイルを覗くとBGRAの順に並んでるんです。 絵を見ても異常はないんだけどバグですか?
エンディアンネス
ビッグエンディアンうそつかない
Win上でのプログラムであんまり、エンディアン気にしない。 けど、気にするのはソケットプログラムくらいか?
>>937 正しく表示されているのは奇跡だ
バクじゃなく奇跡
たとえば0x1122334と
書いた場合、どのように並んでて欲しいんだ
11223344,22114433,44332211....
それが分らないと、なんともいえないぞ
Windows上のプログラミング言語では 4バイトの整数をディスクに書き込む場合 上位4バイト目 上位3バイト目 上位2バイト目 上位1バイト目 の順に書かれる場合が多いようです。 (最上位=1バイト目として数えた場合) それぞれのプログラミング言語のライブラリが意図的に そのようにしているというよりか、ライブラリが下請けに 出しているAPIやドライバがそのように書き込み、 全く同業のAPIやドライバがそれを読み出して元に戻している のが実情のようです。APIやドライバの趣味だと思って気にされ ないほうが良いかと... 他のFTPとかでOSに送った時に問題がありませんか?という質問ならば それはYesともNoとも言えません。問題が発生する場合もあるかも 知れませんが、大抵の場合、WindowsはメジャーでBMPファイル だと明示して送れば、先方さんのほうで配慮してくれるようです。
943 :
デフォルトの名無しさん :2009/02/24(火) 22:48:14
そのコマンドって、具体的に何をするの?
946 :
デフォルトの名無しさん :2009/02/24(火) 23:13:39
>>944 AdministratorsグループにGroupXというメンバを追加する、というコマンドと理解しています。
>>945 やっぱりそうですかね。個人的にはnetを消してる人がいないかを懸念しています。
いないとは思いますが、、、
最終的な落としどころは、ShellExecute()やCreateProcess()やsystem()を
使うことかな、という気持ちはあります。
追加なら、GroupX の SID を利用して、NetLocalGroupAddMembers() でいけそうだね。 ADSI って手もあるだろうけど。
>>943 NetLocalGroupAdd とか
>>948 そっちはドキュメント見る限り、グループの作成じゃない?
950 :
デフォルトの名無しさん :2009/02/24(火) 23:29:08
>>947-949 ありがとうございます。
NetLocalGroup~を調べてみて、自分なりに試してみます。
あとは、SIDの作成もよくわからないので、調べてみます。
どもでした
951 :
デフォルトの名無しさん :2009/02/24(火) 23:30:32
950を取ったみたいなので、次スレを立てたほうがいいでしょうか? ●持ちなので、ほぼ確実にスレを立てられますが、、、 プログラム板はほとんど始めてなので、空気読めてなくてすいません。
952 :
デフォルトの名無しさん :2009/02/24(火) 23:32:49
keybd_eventを使っているのですが他のキーは動作させることができましたが、 テンキーのEnterキーだけが認識しません keybd_eventでキーボードの情報を送る先のアプリを色々変えたり いくつか別のPCでも試したのですがダメでした 原因分かる方いますか? WinAPIは素人なんですが Private Declare Sub keybd_event Lib "user32.dll" _ (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Public Const KEYEVENTF_KEYUP = &H2 Public Const VK_SEPARATOR = &H6C 'テンキー[Enter] sub test() call keybd_event(VK_SEPARATOR,0,0,0) call keybd_event(VK_SEPARATOR,0,KEYEVENTF_KEYUP,0) end sub VBだと上のような使い方でいいんですよね? どこがおかしいんでしょう? お願いします
>>942 ディスクに書き込む段階でなく、メモリに置かれるときに並びが変わる。
APIやドライバが並び替えてるのではなく、CPUのアーキテクチャ上そうなる。
>>937 エンディアン とか バイトオーダー でググるといいよ
>>942 API/ドライバより
API/ドライバは何もしてないぞw
CPUの癖だ。
4バイト連続してるメモリから整数を読み取る命令や
書き込む命令の際にビット並びを反転させる癖がある。
プログラムのほうで、それをやったものをAPI/ドライバ
に持ってこられているので、そういった現象が起こる。
こちらは基本的には1バイトずつ書き込んでる(読み取ってる)
だけだ。(こっちは書き込むデータの4バイト整数一気読みするよう
なことも基本的にはしてない)
>>954 メモリですが...
私はCPUから書き込まれた値を忠実に保持し
返してるだけなんですが...
>>957 OSの中の小人さん?プログラムの中の小人さんですか?
>>956 貴方はそれをどうして知ったのでしょうか?
ワン リトル ツー リトル スリー リトル エンディアン ...
なにげにプログラマの責任だなこれ
メッセンジャーの通知メッセージやセキュリティーソフトの更新などのときにやっている Window を ある位置まで少しずつ移動するAPIってありませんでしたっけ? 自前で移動しなくてもできた気がしたんですが・・・。
なんだそれ
AnimateWindow
ジャバの質問スレッドをロムってたらコンピュータは01の足し算だけで 動いているというレスがあって、01の足し算だけでは動かないと思うぞとか 足し算だけじゃどう頑張っても無理ではなかろうかとかのレスもあるけど ほんとのところどうなんですかね、ここにはわかる人います?
大半の演算器はXORだけで出来てる
論理和だけじゃ任意の回路を作るのは無理じゃなかったか
ビップでやれ
どう考えてもAPIとは無関係です。 またいつものクズが来ちゃったか
>>968 何ヶ月か前の日経ソフトウェアに載ってたよ
足し算だけでコンピュータが動く仕組みの記事が
引き算も掛け算も割り算も全部足し算で出来るってさ
足し算で出来るというより足し算でやってるかな
975 :
デフォルトの名無しさん :2009/02/25(水) 18:58:23
>>973 またいつもの煽りまくるクズが来ちゃったか
977 :
デフォルトの名無しさん :2009/02/25(水) 19:00:33
質問します。 MoveWindow(HWND, int X, int Y, int nWidth, int nHeight, BOOL) で指定する int と、 *.rc リソース・ファイルでコントロールのサイズを指定する 値は違うのですか?? rcファイルで指定したサイズを MoveWindow() で使ったら 想定外の結果になったんですが??
うんこしたくなってきた
>>977 MapDialogRect使えばいいと思う。
>>977 見た目以前に、デバッグして値を確認したのか?
981 :
デフォルトの名無しさん :2009/02/25(水) 19:12:40
982 :
977 :2009/02/25(水) 19:17:13
みなさんありがとうございます。(除く>>981)
>>981 ← 誰だよ!
983 :
デフォルトの名無しさん :2009/02/25(水) 20:25:53
>>977 俺もそれで悩んだ事があるよ。
BCCForm and BCCSkeltonってやつのおかげで解決したぉ
>>984 空のメッセージってどうやって書き込むの?
本文がありませんってエラーになるんだけど。。。
過去スレ69の333と同じこと(他アプリのタブを切り替える)機能を実装中です。 そのスレでは、TCM_SETCURSELだけではタブだけが代わり、タブの切り替えに 伴うウィンドウの切り替えができていなくて、その原因にTCN_SELCHANGEを 送信していないとありました。 TCN_SELCHANGEには、LPARAMにNMHDRのデータアドレスを設定するため、 対象タブが他プロセスの場合は共有メモリを使ってやり取りするというレスが あったところで、レス主は「解決しました。」で終わっています。 同じようにしたと思ってるんですが、どうもうまく行きません。 TCN_SELCHANGE(msgはWM_NOTIFY)の送信先は、タブの親ウィンドウなので、 ::GetParent()で::SendMessage()によりメッセージを送信したのですが、 タブの親ウィンドウでSpy++してみてもメッセージを受信していません。 どの辺が原因なのか、教えてください。 以下ソース概要 NMHDR nmdr; nmhdr.hwndFrom = m_hTab; ← 事前に保持している対象タブのハンドルです nmhdr.idFrom = 0; ← 対象アプリを動かしてSpy++してみたら、0だったので。 nmhdr.code = TCN_SELCHANGE; ::WriteProcessMemory(m_hProcess, m_pVirtualBuf, &nmhdr, sizeof(nmhdr), &dwByte); m_hProcessは対象アプリのプロセスハンドル、m_pVirtualBufは事前に確保した 共有メモリです。これを使ってタブのテキストは取得できたんで、確保自体に 問題はないと思います。 :SendMessage(m_hTabParent, WM_NOTIFY, (WPARAM)0, (LPARAM)m_pVirtualBuf); m_hTaParentは::GetParent(m_hTab)です。事前にSpy++で正しいことを確認しています。
タブの位置でWM_LBUTTONDOWN/UPを送ればいいだろ
>>987 やっぱその方法しかないですか…
その方法ではできているんですが、対象アプリがアクティブ(前面にくる)になって
しまうのが気になって、過去スレにもあったんでもっとスマートなやり方として
>>986 のようなことをしようとしてました。
解決しました。
991 :
986 :2009/02/25(水) 22:18:20
>>990 は私じゃないんですが、この部分で時間を取られすぎるのも
良くないんで、マウスメッセージ型にしようと思います。
993 :
デフォルトの名無しさん :2009/02/26(木) 10:28:14
SendMessage -> PostMessage ってことね
答えられる人は来ないでください。有意義なだけです。
もう終るしな、このスレ
999 :
デフォルトの名無しさん :2009/02/26(木) 13:28:18
999
1000 :
デフォルトの名無しさん :2009/02/26(木) 13:28:30
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。