・MSDNライブラリのリンクを新しいのにした ・AdvancedWindowsのリンクを5版にした ・MSDN2ライブラリのリンクを消し忘れた 以上
8 :
デフォルトの名無しさん :2008/11/29(土) 14:09:34
ReadFile関数の読み込みバッファにwchar_t型のバッファを渡したのですが、 文字列が格納出来ていない原因がわかりません char型のバッファだとうまくいくのですが
BOMつけろ馬鹿
>>8 入力がwcharじゃないからでしょうよそりゃ
, ;,勹
ノノ `'ミ
/ y ,,,,, ,,, ミ
/ 彡 `゚ ゚' l
〃 彡 "二二つ
| 彡 ~~~~ミ
,-‐― |ll 川| ll || ll|ミ―-、
/ |ll | ヽ
/ z W`丶ノW ヽ
/ \\ / / |
/ 天 \`i / / 狗 |
*、 *、 。*゚ *-+。・+。-*。+。* / ゚+、 ゚+、 *゚ ・゚ \ 。*゚ ∩ *。 *。 +゚ ∩ * (´・ω・`) +。 +。 ゚* (´・ω・`) と ノ *゚ *゚ ・ 。ヽ、 つ と、ノ ・゚ ・゚ +゚ * ヽ、 ⊃ ~∪ *゚ *゚ * +゚ ∪~ ☆ +′ +′ +゚ ゚+。*。・+。-*。+。*゚
予めウィンドウのハンドルなどを適当な変数に代入しておいて、 ウィンドウプロシージャ内などで、引数として与えられるハンドルではなく、予め代入しておいたハンドルを使用することは、何か問題あるのでしょうか。
13 :
デフォルトの名無しさん :2008/11/29(土) 14:37:56
>>12 まったく問題ないよ。でも WM_CREATEは、作成完了前に送られるから、プロシージャの仮引数を使わないといけないね。
>12 同じウィンドウクラスに属するウィンドウを複数作るのが面倒になるけどね。
>>15 どこの誤爆だよw
そしてどういう状況だよw
Windowをクラスでラップすればいいんじゃね?www 俺天才wwwwww ↓ メンバ関数ポインタをウィンドウプロシージャに設定するにはどうしたらいいんですか ↓ SetWindowLongを呼んだら64bitがどうのと警告がでます
>>18 SetWindowLongPtrだろ。
こっち使って64ビットの警告が出るのはバグみたいなもんだから、
64ビットで動けば無視していい。あるいはATLみたいな対策するのもありだ。
MenuHelp使うと、ステータスバーが平面になるのは仕様?
まあ俺も、みずほの通帳とカードはキティなんだけどな。
自分のこと俺って呼ぶ女の子ですね。分かります。そういうの嫌いじゃありません
※ わざと誤爆したり.NETマンセーして荒らす基地外が粘着中です ※
嫌いじゃないどころか燃えるのですが、私って変ですか?
AlphaBlend()がうまくいかないので教えてください。 BCBのソースで申し訳ないのですが基本的にはMFCなどと同等です。 Graphics::TBitmap* bt = new Graphics::TBitmap; BLENDFUNCTION blend = {AC_SRC_OVER, 0, 100, 0}; RGBQUAD rgbq; TCanvas* ti = Image1->Canvas; bt->Width = 256; bt->Height = 256; bt->PixelFormat = pf32bit; for (int i = 0; i < 255; i++) { int* sc = reinterpret_cast<int*>(bt->ScanLine[i]); for (int j = 0; j < 255; j++) { rgbq.rgbBlue = i; rgbq.rgbGreen = j; sc[j] = reinterpret_cast<int&>(rgbq); } } BOOL RESULT = ::AlphaBlend(ti->Handle, 0, 0, Image1->Width, Image1->Height, bt->Handle, 0, 0, bt->Width, bt->Height, blend); if (RESULT == FALSE) { Application->MessageBox(L"失敗!", L"", MB_OK); これでImage1という場所に32bitのBitmapを透過度100で貼り付けようと しているのですが、白い四角が表示されるだけです。しかもAlphaBlend()が 返す値は常にFALSE、つまり失敗しているのです。 BCB固有の部分を無視していただいて差し支えありません。単純に32bitの Bitmapを透過度100程度で別の場所に貼り付けたいだけなのです。
GetLastError
87
>>27 >>28 はい、その通りエラーコード87でした。
つまり ERROR_INVALID_PARAMETER って事ですか・・・
ちなみにAlphaBlend()を通さずに直接描画するとちゃんと
グラデーションがかかった256×256の画像が表示されるのですが、
どこがIvvalid Parameterなのやらさっぱり。
INVALID_PARAMETERって言われてるなら渡してるハンドルが変なんじゃないの OWLだっけ?じゃなくて普通に作ったHDC渡して試すとか
VCLですが、HandleプロパティがVCL内部に保持している オブジェクトのHDCを取り出します。 BCBのヘルプを見ても、Handleで取り出したHDCでWin32を 呼び出しているプログラム例が載っていました。 でも実際に呼び出しが失敗しているわけですから、もうHandleが おかしいとしか考えられませんね。普通にHDC作ってやってみます。
NescafeGoldBlend()
お騒がせしました。 ×bt->Handle, 0, 0, bt->Width, bt->Height, ○bt->Canvas->Handle, 0, 0, bt->Width, bt->Height, 私のケアレスミスでした。無事動きました。
NescafeGoldBlendの大瓶500円で買ってきますた
職場で飲むのかえ?
そういやAlphaBlend() APIって計算式おかしいよね Dst.Red = Src.Red * Src.Alpha + (1 - Src.Alpha) * Dst.Red Dst.Green = Src.Green * Src.Alpha + (1 - Src.Alpha) * Dst.Green Dst.Blue = Src.Blue * Src.Alpha + (1 - Src.Alpha) * Dst.Blue ↑これが正しいはずなのに > Dst.Red = Src.Red + (1 - Src.Alpha) * Dst.Red > Dst.Green = Src.Green + (1 - Src.Alpha) * Dst.Green > Dst.Blue = Src.Blue + (1 - Src.Alpha) * Dst.Blue ↑実際はこういう計算らしい なんでこんなおかしな仕様なんだろう
うそん
>>38 SrcとAlphaの対応は固定だから事前に計算しておけば計算量が減るだろ?
>>40 違う
AC_SRC_ALPHAを指定するとSrc/Destは合成する画像のそれぞれのピクセルだから
ピクセルごとにRed/Green/Blue/Alphaの値は違う
>>38-42 要するに、Src(32bppDIB)をDstに合成したいときは、
AlphaBlend(Dst, Src)
ではなくて、
Tmp.Red = Src.Red * Src.Alpha
Tmp.Green = Src.Green * Src.Alpha
Tmp.Blue = Src.Blue * Src.Alpha
Tmp.Alpha = Src.Alpha
を用意しておいて、
AlphaBlend(Dst, Tmp)
って事でしょ。使えねぇw
プロシージャってクラスの中に入れちゃだめ?
いいんじゃね そのままじゃ入れられないんでサンクを使うか SetWindowLongPtrでインスタンスのポインタを仕込んでおいて使うか
よし!今の俺には難しそうなので、プロシージャだけ独立させようと思います どうもありがとです
スレッド毎のTLS管理で オブジェクト⇔HWND のマップを持つか
>>38 それに加えてDst.alpha = Src.Alpha + (1 - SrcAlpha) * Dst.Alphaもやれば、問題ないのでは?
プロシージャって何を指してんの
45が解答になったらしいからウィンドウプロシージャのことなのだろう。
>>48 それ意味無いからw
てか、
(1) Src.Red * Src.Alpha + (1 - Src.Alpha) * Dst.Red
つーことは
(2) Dst.Red + (Src.Red - Dst.Red) * Src.Alpha
と等価なわけだ。
で、AlphaBlend APIの計算式がこれ。
(3) Src.Red + (1 - Src.Alpha) * Dst.Red
あまり計算量減ってなくね?
むしろ事前にSrcにAlphaを掛けろって方が(結果的に)計算量は増えてる気がする。
なぜ(1)または(2)ではなく、敢えて(3)の計算式を採用したのか全く理解できない
このAPI作ったやつ馬鹿だろ。
53 :
52 :2008/11/30(日) 14:40:38
ああGoogleキャッシュのフレーム外したら MSの記事がありました。まずそれ読んできます
>>52 WS_EX_LAYOUTRTLが指定されている部品の上では座標変換が行われる。
つまり、RTLシステムの上ではこれを解除しなければ原点は右上。
>>51 同じαつきsrc画像を使って、複数の別のdstにAlphaBlendを行う場合について考えてみよう。
UpdateLayerdWindowではとくに頻繁に発生する状況だ。
56 :
52 :2008/11/30(日) 16:22:24
>>54 分からなくなってきました。
GetWindowRectで得たRECTのleftは左のままですよね?(; ・`д・´)
コードのなかで
int left = rct.left;
ってやってたら
LTRの世界では原点に近い方で
RTLの世界では原点から遠い方なんですよね?
>>55 >>51 の(2)と(3)はどちらも減算、乗算、加算が一回ずつなんだけど。
(まあ実際にはalpha=0〜255だが)
それに、レイヤードウィンドウならsrc画像(=ウィンドウ内)は頻繁に変わる。
>>56 原点の位置 と X軸の符号(右が正か? 左が正か?) は別物でしょ
RTLシステムはどうなっているのかワカランけど
>>57 (3)は Src.Red + ~Src.Alpha * Dst.Redだろ
(2)は Dst.Red + (Src.Red + 1 + ~Dst.Red) * Src.Alpha か。加算が2回多いな。 でもさ、この最適化(?)ってSrcがほとんど更新されない場合しか意味なくね? 結局のところフェードイン/アウトぐらいしか使い道なさそうな気がする
BLENDFUNCTIONに一般的なαブレンド計算式のフラグがあればいいのにねぇ ま、そういうのはDirectXやGDI+を使うかMMX/SSEで書けってか
>>59 は/255が抜けてるな。
GDI+ってロクにα合成のオプションなかった気がするが。
Bitmapに前乗算指定しとけば勝手に(3)で要求される処理するけど。
まあ、10年以上前のスペックのPCを想定して作られたAPIだからなあ。
いや、だからBLENDFUNCTIONに普通のアルファブレンドあるだろ。 ヘルプよく読めと何度言えば…
もういいです。 蛇足なのでここで終了。
>>66 だから不便で使いづらいAPIだっていってるのがここまでの流れだろ
話を理解してないのが数人いるみたいだなw
>>67 うん。ただ、
>>66 はそのことに気づいていないでは?と思ったから一応書いてみた。
気づいてないのはお前だけ
いいや俺も気付いてないぜ
気づいていないならレスしないで下さい。ウザイだけです。
ウザイならレスしないで下さい。ウザイだけです。
ウザイならレスしないで下さい。ナウイだけです。
イ`ヘ /: :| ヽ / : :/ ヽ ___ _,,,:. .-: :´彡フ _ノ\_∠: : : : : : : : :`: :-: :,:_:/彡 / ( : : : : : : : : : : : : : : `ゝ / マ r::/: /: : | : : : : : : : : ::\ / //: /: : : |: : | |: : |: _: : : :ヽ ジ {/ 7|`\/i: /|:|/|´: : : : :|ヽ 〉 ,‐-‐、`|7 || |_::|,_|: : :|:::|: | で / r:oヽ` /.:oヽヽ: :|: | :| { {o:::::::} {:::::0 }/: :|N っ | ヾ:::ソ ヾ:::ソ /|: : | !? ヽ::::ー-.. /ヽ ..ー-::: ヽ::| r--ッ -tヽ/´|`::::::::::;/ `、 ::::::::::: /: i } > ::∧: : :|: |J \ / /::i: | /_ゝ . \ヾ: |::|` - ,, ___`-´_ ,, - ´|: : :|:::| ヽ: |::|\  ̄/ /| |: : :|: |
結論 AlphaBlend APIは糞。 糞APIを作ったMicrosoftは馬鹿。
結論 76のウンコは糞。 糞を作った76は馬鹿。
>>66 Per-pixel alphaを事前にRGBに賭けておくのは別に不便じゃないだろ。
DIBに読む込む段階で乗算しても、負荷0だろ。
Per-pixel alphaまで動的に変更したいなんてレアな状況以外では
まったく問題ない。
RECTの複製って、CopyRect使うのが普通? 普通に代入したりCopyMemoryするのはダメだから、用意されてるの?
>>79 普通に代入でいいんじゃない。
CやC++以外の言語の為に用意されているのかもしれない。
CやC++以外の言語でも代入でいいけど
>>81 構造体を代入できない言語なんてあるのか?
APIの変な仕様に合わせてコード書くって馬鹿げた話だよなw それを「まったく問題ない」で片付けられるプログラマって尊敬してしまう
wsprintf() ってfloat, double 変数の format はやってくれないよね。 昔はこれだけのために sprintf() を使うと module が入ってくるので 自前で format していたよ。
GDI+でRoundRectって描けないの?
自分でパス作って描けってことらしい。
>>84 古いC。それすらmemcpyでいいだろうと思うのだが。
SetRectEmpty: memset, ZeroMemory CopyRect: memcpy, CopyMemory SetRect: 普通に代入する こんなのAPIで用意する意味が分からん
memset相当のランタイムが無い言語のためとか 他のAPIから使われてるからとか 社内の政治的理由とか アメリカンジョークとか
コードサイズ?
OOPではメンバに直書きはご法度だからな Win32APIもオブジェクト指向らしいから バリバリCのくせに
中で別なことしてんじゃね? なんかcoordinatesがどうとか書いてあるじゃん
EqualRect: memcmp
ってのもあるな
>>94 してない。逆汗すれば分かる。
IsEqualGUIDみたいにインライン展開してくれればいいのだが
どう考えてもAPI呼出の方がオーバーヘッド大きいだろ
むしろ何もしねーよって書いてあるだけじゃん
昔はプロセス間でAPI実装してるDLLが共有されてたから、どこのアプリでも使うようなコードはなるべくAPIにおいてあったほうがメモリの節約になったんだよ。
pdbファイルの情報にアクセスしたいのですが、 どのAPIを使えばいいか知っている方いませんか?
dbghelp?
>>97 >昔はプロセス間でAPI実装してるDLLが共有されてたから
今でもシステムDLLのコード領域は基本的にプロセス間共有だったはず
それに、「CopyRectは使いまくるがmemcpyは一切使わない」アプリなんて無いに等しいから
#define CopyRect(r1,r2) memcpy(r1,r2,sizeof(RECT))
としてもバイナリのサイズはそれほど増えない
>どこのアプリでも使うようなコードはなるべくAPIにおいてあったほうがメモリの節約になったんだよ。
だからこれも当てはまらない
>>90 それらAPIが実際どれほど役に立ってるかはわからんが、少なくともSetRect()他はSetRect()他であって、わざわざ違うインターフェイスとを持っているからにはmemset()他とは違うものだって発想はもっておいた方がいいと思うよ。
少なくともWineのコードでは各メンバにそれぞれ値をセットする実装だったし。
>>97 CopyMemoryやZeroMemory相手なら、それで納得できるんだけどな。
>>102 各メンバにそれぞれ値をセットしていてもコンパイラの最適化でmemset/memcpy相当になるんだよ
そんな事も知らないの?
IsEqualGUIDの場合はこういう定義がちゃんとしてあるね これはつまりOLE開発チームよりUSER開発チームの方が頭が悪いという事だろう __inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2) { return !memcmp(&rguid1, &rguid2, sizeof(GUID)); } __inline int operator==(REFGUID guidOne, REFGUID guidOther) { return IsEqualGUID(guidOne,guidOther); } __inline int operator!=(REFGUID guidOne, REFGUID guidOther) { return !(guidOne == guidOther); }
その辺にしとけ。意味のある議論なのかそれは。
意味のある議論ですが何か?
>>90 SetRect, SetRectEmpty
→ 宣言時以外は構造体の初期化構文が使えないために
これらの関数がないとメンバを一つ一つ設定することになる
ZeroMemory, CopyMemory
→ Windows名前規則がアッパーキャメルケースなので、memcpyやmemsetは名前的に合わない
CopyRect
→ これは謎
>>104 コンパイル後の最適化の結果memcpy相当になるとか、そういう実装の詳細の話じゃなくてね。
最適化の結果同じようなバイナリになるからといって、例えばSetRectEmpty()とmemset(),ZeroMemory()は意味が等価な訳じゃないんだよ。抽象度が違うんだ。
あくまでSetRectEmpty()は『矩形構造体の内容を未設定状態にする』という意味を持たせられていて、
memset(),ZeroMemory()は『指定バイト列のポインタから始めて指定サイズ分の要素を特定の値/あるいは0にする』と言う意味が持たせられている。
結果が同じだからと言って文字列の終端にNULLをセットしないのと同じ発想だよ。
>>109 生成されるコードが同じなら、等価とかどうでもいいだろ
上のIsEqualGUIDがその最たる例
つか、こういう屁理屈こねる奴ってまだいるんだな・・・
加齢臭プンプンするんだが
つうかインタフェースいっこ挟んでおけば 何かあった時こっそり実装直しやすいだけの話しだろ
いちいち煽りを加えないと喋れんのかこの乳臭い糞ガキは
確かに加齢臭だの乳臭いだの言い出すと 途端に荒れだして まさに議論が無意味になるな
#define CopyRect(r1,r2) (memcpy(r1,r2,sizeof(RECT)),TRUE) #define SetRectEmpty(r) (memset(r,0,sizeof(RECT)),TRUE) #define SetRect(r,l,t,r,b) ((r)->left=l,...略...,TRUE) こういうのをwinuser.hに定義してしまえばいいのにな どうせほとんどの人が使ってないAPIなんだし
ここでVB厨が乱入
俺勉強したてのころは使わなきゃダメなのかと思ってたw
>>109 マクロやinlineにしとけって話なのになんでmemsetの話をしてるんだろこの人
ZeroMemory あたりは非C言語で利用されそうだけど Rect〜はどうだろうか? かなり特殊ケースだけど、アライメント調整できない系で、大きさだけあわして使う?
>>109 memset(&rc,0,sizeof(RECT));
memcpy(&rcDst,&rcSrc,sizeof(RECT));
ていうかさ、わざわざこんな書き方しないってw
意味がどうって言うよりそもそもタイプするの面倒じゃん
ただ、user32.dllのSetRectEmpty/CopyRectの実装にはmemset/memcpyを使ってると思う
RECT操作セットを揃えておいてるだけだろ単純に copyだけ無いのは何故なんだとか騒ぐ人が出てくるから
インライン展開白だのなんだの言ってるけど 今時のPCでそんなもん気にかけたぐらいで性能差出るかよ 過去の遺物みたいなもんを今の時代の論理で考えても答えが出るわけねえだろ
性能差出ないと思ってる奴は素人
そういう煽りはいいから。
APIならこれくらいしてくれよ BOOL CopyRect(LPRECT lprcDst, CONST RECT *lprcSrc){ __asm{ movdqu xmm0, [lprcSrc] movdqu [lprcDst], xmm0 } }
RECTの話ですけど RightToLeft環境への移植を考えると .netのRectangleがとっても頭いい実装になってることに 今日感服いたしました。
ハァ?
>>125 頭の悪い.net厨には普通の事でも頭いいと思ってしまうんですよね、分かります
>>110 んなこたぁない。最終的な出力となる機械語が同じだろうが、元のソースコード上で表現している意味が異なることもあるしその逆もある。
例えば104=110の例に挙げているIsEqualGUID()だってそうだ。同じヘッダでIsEqualCLSID(), IsEqualIID()と言う関数がある。
ほぼ同様の処理を行うInlineIsEqual{GUID,CLSID,IID}()と言うバリエーションもあり、マクロとして定義される場合とインライン関数とで定義される場合がある。
しかし、現状の実装ではどのGUID,CLSID,IID比較関数でもほぼ同じような実装をされている。
それは結局CLSIDやIIDがGUID構造体のtypedefとして定義されているためで、そのためIIDをIsEqualCLSID()で比較するなんてことも可能になっているが、
それこそ現状の実装の都合でしかないわけで、結果として同じコードになるからと言ってCLSIDとIIDとGUIDが分かれて存在する意味がないとはならないよ。
>>117 >>90 だけ見て『等価な処理を行う関数があるんだからSetRect()その他は存在価値ねーじゃん』ってことかと勘違いしてたよ。
>>95 を見ると確かにそういってるな。すまない。
しかしまあ、Win95位からDLLのシンボルとして公開しているものを今更マクロだinline展開だする訳にもいかないだろう。互換性的に考えて。
>>128 どうもお前さんは話を飛躍しすぎる癖があるようだぞ。
とりあえず一点だけ突っ込んどくか。
> Win95位からDLLのシンボルとして公開しているものを〜
だから、Win32の時にマクロやinlineに置き換えとけばよかったんだよ
CreateWindowがいい例でしょ
それか、例えばCopyRectならAPIの説明に「代入するのと動作上は同じ」と書いておくとか。
GUID,CLSID,IIDの話題なんて誰もしてないのに、ほんと凄い飛躍だね
>>128 周囲から「空気読めないね」ってよく言われない?
もういいよ。 違いがあろうが無かろうが何の意味も無いから。 くだらない事でスレを流すな。
>>129 *Rect()程度の処理をわざわざAPIで提供して関数呼び出し分のオーバーヘッドを課すのは無駄だ、ってのはそのとおりだと思うよ。
しかし、VB(後にはJ++とか)というC言語以外の主要なAPIを使用するクライアントがあるんだし、C言語でのバイナリ構造を直に弄らせることはできなかったんだろう。
(J++なんかCのバイナリ直接弄れないはずだし、VBのユーザー定義型だって初期にはなかったんじゃないかな)
その辺を隠蔽するためのRECT構造体に対するインターフェイスとして*Rect()は『API』でなければならなかったじゃないかな。
CreateWindow()だってきっと同じことだろう。マクロで定義した場合の多少の処理速度よりモジュールの共有、再利用性を考えたんだろうさ。
inlineキーワードが生まれたのはWin95が世に出るより後だろうし、その頃には元のAPIをinline化したらやばいしね。
どうせ煽りあいしかしないくせに スレを流すなも糞もないわな レス控えて地球環境に配慮ってか?
そもそも
>>90 が勝手にWin32==C言語を前提にしてアホな質問するから
inline化してる方が頭良いとか変なのが湧くんだよ
俺だって頑張ってるのに なんで皆認めてくれないんだ
>>134 Win32はC言語前提じゃん
馬鹿ですか?
Win32がVBなんか意識してるわけ無いでしょ VB5でAddressOfが追加されるまでコールバック関数すら渡せなかったし タイプライブラリ作らないとCOMインターフェイスも使えなかったのに、何言ってんだか・・・
win32apiっつうかplatform sdkの.hには結構な数のinline関数があるよ たとえばwinbase.hには InterlockedIncrement mstcpip.h にもいくつか grepしたが44ファイルに__inlineキーワードがある inline化してもDLLにシンボル残しておけば互換性的には問題ないと思うが、どうか? あとVCはC言語でも__inlineが使えるんだとさ
pngファイルを表示するアプリを作ったわけだが pngファイルを暗号化するみたいなのってあるの? フォルダ内からpngファイル取得してライブラリで読み込んでるんだけど(非GDI+) pngファイルをどうしても第三者に表示させたりしたくないときってみんなどうしてるのかな リソースにいれるとかはなしにして。 拡張子かえるだけじゃいけないよね
んなこたわかってる 黙ってろ
>>139 上に挙がってるIsEqualGUIDはole32.dllにもエクスポートされてた
てことは
>>105 の
> これはつまりOLE開発チームよりUSER開発チームの方が頭が悪いという事だろう
が結論かw
満足したか?カス共
>>129 どうでもいいAPIだから放置されてるだけじゃね?
互換性のために残す必要はあるけど。
145 :
カス共 :2008/12/02(火) 01:46:42
頭の固いオッサン共を論破できて大変満足しております^^
>>140 普通は人に見せたくなかったらPNGなんていう汎用的なフォーマットではなく
独自フォーマットにする。
>>146 さんくす
独自フォーマットかぁー、画像を独自フォーマットにするのってどうやるんだろ
独自フォーマットや独自アーカイブにしても いずれ誰かがリバースエンジニアしてsusieプラグインが出回るってオチ
手っ取り早いのは暗号論的乱数を作ってXORしてしまう どうせ誰も見ないよ
>>149 そうすると形式はpngのまま?
そうすると中身ひらくとぐちゃぐちゃとか?
すまそ。 150の日本語が微妙ですね。訂正しまつ
>>148 誰もリバースエンジニアリングしたいと思わない糞アプリを作れば
その心配はいらない。
そういえば、DL販売の写真集がPrintScreenでキャプチャされて
配布されてるのを見たことあるなw
せっかく元のファイルは暗号化されてるのに涙目
WinAPIとまったく関係ないところで GetMessage とか書いたら、GetMessageW に名前変わっちゃうんだけど、どうしようもないの? 上の方でインライン関数って話出てたけど、こういうのもマクロじゃなくてインライン関数にしちゃえばいいのに。
>>154 class Hoge
{
void GetMessage() { }
void GetMessageW() { }
};
A系とかW系とかAPIとは関係ないつもりで書いたとしても、偶然名前が一致してしまったら
問答無用で置き換えられて二重定義になってしまう。
偶然一致しないような名前つければ? てかA/W系でないのにWで終わる関数名ってどうよ
マクロundefしとけ
class Hoge { void MessageWoGetSuru() { } void MessageWoGetSuruWa() { } }; こうやって関数名に日本語を混ぜればまず衝突しない
159 :
デフォルトの名無しさん :2008/12/02(火) 06:37:55
GetMessage(w
こーゆー馬鹿なのに自分の無知をしたり顔で述べる連中がどうして絶えないのかな。 14 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/12/02(火) 03:46:46 ID:??? DDR3になっても32ビットOSじゃ4GBですら使いきれない
個人的には蒸し返すバカがなぜ消えてなくならないのかの方が疑問だ。
個人的には蒸し返されるような馬鹿発言するバカがなぜ消えてなくならないのかの方が疑問だ。
そうでもないよ。
そうだよ
VIPでやれ
VIPでやりなさい
VIPでやりました
乗り遅れてしまって悔しいので蒸し返すぜ CopyRect の存在意義は 名前による意味づけと引数チェックだ 「ポインタの型なんて区別しないし、変数名なんて飾りだ」 って人には必要ないのだろうな
個人的には蒸し返すバカがなぜ消えてなくならないのかの方が疑問だ。
PAEとかないと4GBまでだろ
>>168 それだったら、インライン関数でいいじゃないという意見が出ている。
>>168 CopyRectの存在意義はあるかも知れない
だがお前の存在意義は確実に無い
>>153 #pragma push_macro("hoge")
#undef hoge
//hogeを使う
#pragma pop_macro("hoge")
これだと最後に再定義しなおさなくて済む
>>175 Hoge::GetMessageの呼出箇所で毎回そんなの書くなんて馬鹿げているというか馬鹿
APIと衝突しないような名前を付ければ済むだけだし結論出てる
そりゃそうなんだが、IGNOREがマクロに使われてるとか、泣けてくる。
マクロで泣くといえばmin,maxだろ
まず#define NOMINMAXから書き始めている。
いくらC++より歴史が古いからって、STLと一緒に使えないなんてホント終わってるよな
終わってるのは同意だが、一緒に使えるように対応してるだけ評価しろよ
ウィンドウのスタイルと拡張スタイルのマクロの値って、被っちゃってますよね?一つのDWORDで両方を 同時に指定するのってできないですか?
DWORD dwExStyle, // 拡張ウィンドウスタイル DWORD dwStyle, // ウィンドウスタイル 指定する場所から違うわけだが 何をどうしろって?
プログラムからスタートアップの登録ってレジストリのみ? XPとvista両方のOSで同じことさせたいんだけど、スタートアップのレジストリパス ってこの二つのOSは同じ?
スタートアップフォルダ、レジストリ、タスク
>>185 なるほどー、レジストリに書き込みしなくてもフォルダにショートカットいれれば
おkなわけね、サンクス!
もちろん、レジストリでもXPとVistaで違うわけないよ。 じゃないとみんなVistaで動かなくなるでしょ。 仮にもし変わっていたとしてもXPと同じ方法にしておけば大丈夫(もちろん実際には変わっていないが)。 当面は互換性のために昔と同じ方法が通用するはずだ。
実際、Vistaで動かなくなってるアプリケーションなんて五万と存在するがな。
Win32の互換性が薄くなってきてるんだろうな 要するに.NET使えってことでしょ
ウェーン
>>189 お断りします
お断りします
お断りします
ハ,,ハ ハ,,ハ ハ,,ハ ハ,,ハ
( ゚ω゚ )゚ω゚ )゚ω゚ )゚ω゚ ) お断りします
/ \ \ \ \ お断りします
((⊂ ) ノ\つノ\つノ\つノ\つ)) お断りします
(_⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ お断りします
ヽ ヘ } ヘ } ヘ } ヘ }
ε≡Ξ ノノ `Jノ `J ノ `J ノ `J
SilverlightでC#使ってみてかなり良いとは思ったが、 このスレに出張してくる信者は超キモい。
いちいち信者認定してる奴の方がキモイわ
>>174 海外版はバルログ・バイソン・ベガの名前が入れ替わってるんだわ。
いやしかしその笑顔、素敵すぎるw
ここで.NETマンセーしてるクソガキはこいつだろw > 231 名前:221[sage] 投稿日:2008/11/18(火) 00:11:20 > あるよ。 > 時間も指定できるし。 > > あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw > フリーソフトにすら公開してねーけどw こんなゴミしか作れないレベルだから.NETスレで話題についていけなくて Win32スレで人を見下したい気分になるのだよ。
Win32の互換性が薄くも何も何かに依存しすぎたプログラム書いてると Vistaで動作しないだけの話で、Windows3.0時代のプログラムも動くものはVistaでも動くぞ?
動かねーよばか
問題になるのはセキュリティがらみ(UAC,セッション分離など)とエミュレーションの不備(IME,GDI)くらいだな 後はDOS互換環境の日本語関連機能削除
VPCを無料化したという事は、今後はAPIの互換性を切り捨てる方向で行きますって事だろ Windows7が出たら、もっと動かないアプリが続出すると思うよ
>>197 いや、動く奴は動くはずだが・・・
Windowsの仕様まともに理解してればわかるけど。
クリックしたらそこに今持ってるペンで点を描きたいんだけど どうしたらよろしいでしょか??
>>200 お前がWindowsの仕様をまともに理解してないのは分かった
api直接叩いてるソフトはそのまま動くよ でもWindowsの仕様自体が9x系とNT系で分かれてるから それに依存した設計になってると 実装依存の書き方してなくても結局正常に動かないんだよね
205 :
デフォルトの名無しさん :2008/12/03(水) 19:46:32
ポート445(ダイレクトホスティングSMB)が空いているかどうか チェックしたいのですが、方法やAPIを教えてください。 サンプルソース(URL)があればもっと助かります。 C++かMFCでお願いします。
socket開いてlistenすると使用中ならWSAEADDRINUSE返すよ ネットワークスレのほうがいいかも
>何かあるとOSのせいになる OSのせいでなくともMSのせいではあったな(遠い目)
MSのサンプルコード見ながら作ったら後のOSで動かないなんてのは珍しくないだろ。 で、その都度サンプルコードも修正されてる。つまりそういうこと。
>>204 MoveToEx(x,y);
LineTo(x,y);
は出ないのよ
LineToの仕様で終点を描画しないから
でもLineToは始点を描画するから描画するんじゃないかなー と思ったけどSetPixelでどうぞ
終点だけSetPixelVで描け
213 :
204 :2008/12/04(木) 00:59:37
ペンって言われたからしょうがねーじゃん
>>211 残念ながら出ないのです
>>212 SetPixelVとやらを調べとく
>>213 そう ペンがいいの
総括:
MoveTo→LineToじゃ同点同士は描けない
SetPixelはペンじゃないから芳しくない
じゃあ1ピクセルだけずらせば始点も出るし終点は描画ざれないんだからちょうど良いじゃん
>描画ざれない どこの方言?
マイクロソフト帝国
220 :
デフォルトの名無しさん :2008/12/04(木) 09:37:53
>>210 うろ覚えだが、GM_ADANCED でもダメか?
>>215 これに1票
小細工というかTipsって感じじゃないのかな
ノウハウやテクニックというと大げさだし
Windows7ではUIがMacチックになるとか取り沙汰されてるのだが、 もし大変革ということになったら、Win32APIもいよいよ役に立たなくなるのかな…
ありえないな
VistaのときもXPのときも毎回同じようなことが言われたが結局今まで通りという罠。
225 :
205 :2008/12/04(木) 15:30:11
>>207 具体的にsocket開いてlistenするには、どのようなAPI、クラスを
用いればよいのでしょうか?
教えてください
WinSock2
UIがMacチック(笑)
7っつても6.1らしいし、心配なのはタスクバー周りぐらいでしょ。
タスクバーにフォアグラウンドウィンドウのメインメニューが出たりするのん?
WPF使えっつってもねえ・・・
クイック起動みたいに、ツールバーをデスクトップに貼り付けて 拡大縮小時も隠れないようにしたいんですが、どのAPIを調べれば解りますか?
コモンダイアログで選択したファイルの場所が static TCHAR filename_full[MAX_PATH]; に格納されています。 このファイルを読み込むのにconst charを引数にした読み込み関数に渡したいんですが、どうやって変換すればいいでしょうか? VS2008を使っています
>>234 UNICODEプロジェクト?
WideCharToMultiByteで変換すれ
>>235 プロパティの文字セットのところですよね?
Unicode文字セットを使用するの設定になってます
>>236 CT2CA(filename_full)
>>237 filename_c = CT2CA(filename_full);
こうですか?識別子が定義されてないって言われます・・・
マルチバイトにすれば解決なんだが、質問者はunicodeのまま何とかしたい、ということか?
だったら
>>235 の通り。
char型はunicodeなんですか?
WIN32APIのプロジェクトのプロシージャから過去のcで出来た関数を呼び出すとします。この関数内にprintfなどの関数が使われていた場合どうなりますか?
そりゃリンクしたライブラリのprintfが呼ばれるだろう
>>238 読み込み関数(CT2CA(filename_full));
ただ、ATLのテンプレートだから、AtlBase.hのインクルードが必要。
標準出力の扱いがどうなるかってこと聞いてるような気がする
>>244 そうです。
ためしにやってみたところprintfはされてないきがするんですが・・・
printf そのものは動作している 標準入出力の出力先が無いだけ AllocConsole なりすれば?
そのことによって問題はおきていますか?
XNResource Editorでダイアログボックスをつくっています。 コンボボックスを配置したんですが、ドロップダウンしたときの項目はここではつくれないんですか?
コードで CB_ADDSTRING していくしかないんじゃね?
IDC_CHECKBOXってチェックされてるかされてない状態をどうやって返してくれるんですか?
252 :
デフォルトの名無しさん :2008/12/05(金) 16:31:02
cout<<"i;"<< i <<endl; これをメッセージボックスで置き換えるにはどうするんですか?
sprintf で文字列にしてしまえばどうにでもなるべ。
std::ostringstream osr; osr<<message; AfxMessageBox(osr.str().data());
>>257 Afxmessageがつかえないんですが・・・
MessageBoxでもprintfでも何でもいいじゃない
MessageBox( NULL, osr.str(), _T("メッセージ"), MB_OK ); これだとLPCWSTRに変換できないっておこられて・・・
std:stringをTCHARに変換できないの?
.data() はどうした?
265 :
デフォルトの名無しさん :2008/12/05(金) 19:55:13
MultiByteToWideChar
MultiByteToWideCharなんかつかわねーよw
>>265 検索したんだけど、使い方がわからない・・・
::MessageBoxA(NULL, ostr.str().c_str(), "hoge", MB_OK);
最初っから std::basic_ostringstream<TCHAR> でやれよ。 つかC++とかWin32とかいうレベルじゃないからVB.NETでもやってろよ。
いませっかく書いたコードを保存したらVC6が固まってしまって 30分放置しても固まったままで、他のプロセスを殺したりしても 固まったままなんだが、どうしたらいいですか?
APIスレで聞く話じゃない
274 :
263 :2008/12/05(金) 20:47:28
basic_ostringstream<TCHAR> os; int i=1; os<<"データ:"<< i <<endl; MessageBox( NULL, os.str().data(), _T("メッセージ"), MB_OK ); カタカナが文字化けしてしまいます・・・
ふ〜ん
知らないならレスしないで下さい。ウザイだけです。
カナが文字化けしてるんじゃなくて、_T()忘れてるせいで文字列がポインタだと認識されて、そのアドレスが表示されてるオチに3カノッサ
素直にMBCSでビルドした方が時間の節約だな。
後、可能性としてはlocale関連もあるな
>>275 さっきからこの馬鹿はなぜWin32スレでSTLの質問をしてるの?
>>278 _Tってどうやってつけるんですか?
iの値は出てるんですけどねぇ
iostreamはSTLじゃねーだろ。まあいずれにせよスレ違いだが。
C++のスレできけばいいですか?
おう
>>282 #include <TCHAR.h>
TCHAR szBaka = _T("馬鹿");
> TCHAR szBaka = _T("馬鹿"); 自分が馬鹿だってよく分かってるみたいね
TCHAR szBaka TCHAR szBaka TCHAR szBaka
[]ないけど、確か[]無くても無理やりは入るぞw
> error C2440: 'initializing' : 'unsigned short [3]' から 'unsigned short' に変換することはできません。
>>291 ばーか
そろそろ違うネタを頼む
ん?悔しかったの?www
IDがないって便利だな。 []は付け忘れただけだwww
他人を馬鹿にしようとして逆に己の馬鹿を露呈した馬鹿がいるようだ
うるせー馬鹿
QueryPerformanceFrequency QueryPerformanceCounter を使って1秒間に60回ある処理(画面に描くとかを行ないつつ 実際に1秒間に何回処理出来たか計算するには どーすればいいの?
60回では
http://www.geocities.jp/ky_webid/win32c/036.html // ダイアログプロシージャ
BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
のなかで関数func();を呼ぶとします
func()内で
hDC = GetDC( hwnd );
TextOut( hDC, 55, 55, Buf, (int)_tcslen(Buf) );
ReleaseDC( hwnd, hDC );
みたいな事をして元のウィンドウに文字を表示したいんですが, hwndをどうやって渡せばいいでしょうか?
CALLBACK DlgProcの第一引数HWND hDlgを
func(hDlg);で渡したんですが表示されないんです。 (関数の定義は func(HWND hwnd) )
>>301 そこは過去スレでもコードが間違ってて正常に表示されないのが指摘された
うんこサイトだから参考にしない方がいい
ヽ( ・∀・)ノ● ウンコー 反省するために散歩してくる
サンプルソースコードの間違いに気づくようになり、安易にコピペしなくなったら それはあなたが一人前のプログラマに成長したということ。 だから「敢えて」間違ったコードを載せているんだよ。
>>278 いやいやそれが、wostreamにもconst char*とかを流しこめるの。
中ではwidenしているだけでまともな変換をやるわけではないから、ASCII文字列しか使えないけど。
wchar_t と WCHAR ってなんか違うの?
>>306 Win32APIにおいて、後者は前者のtypedef。
だからこの世界ではごっちゃにしてもいいが、
それを好みとするかどうかは人による。
ぬるほど
カッ
ヵツ
APIENTRY と WINAPI はどう違うの? LPSTR と PSTR みたいに昔のなごりってわけでもなさそうだし
#ifdef _MAC #define WINAPI CDECL #define APIENTRY WINAPI #elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) #define WINAPI __stdcall #define APIENTRY WINAPI #else #define WINAPI #define APIENTRY WINAPI #endif
言葉が足りなかった 常に #define APIENTRY WINAPI なのをなんでわざわざ定義してあるのかなと思って
314 :
301 :2008/12/06(土) 11:37:03
元ウィンドウのハンドルをダイアログプロシージャから呼ぶ関数にはどうやって渡したらいいですか? グローバル変数に入れておくのはいやなので・・・
元(既に破棄された)ウィンドウなのか親ウィンドウなのか、まさかのInstanceなのかはっきりしてくれ 方法が考え付かないならとりあえず、グローバルに突っ込んで後々別な方法を考えろ。
>>314 DiarogBoxに渡した奴なら単に親ウィンドウじゃねーのか
>>315 元ウィンドウがあって(ここに文字を表示)
元ウィンドウが作られたらプロシージャでダイアログプロシージャを呼び出す。(設定画面)
そしてダイアログプロシージャで関数を呼び出し元ウィンドウに文字を表示って感じなんですが
>>317 じゃあ、元じゃなくって親ウィンドウな。
だったら、多分GetAncestorでできるんじゃね?
それか、GetParentじゃね?
とりあえず「元ウィンドウ」って表現をやめろよ紛らわしい
HWND GetAncestor(HWND hWnd, UINT gaFlags); ですよね? HWND A_hWnd; A_hWnd = GetAncestor(?,GA_PARENT) 第一引数がよくわからないんですが・・・
先祖が欲しいならそこには子孫が入るに決まってるだろう
WINAPI func()という関数で先祖が欲しいいんですが、子孫のハンドルがわからないんです
ダイアログを実際に作ってSpy++で見てごらんよ 親子関係がツリーで表示されるから 一度見た方が早いわ
それじゃあ一緒に考えよう うーん(^_^;
自分が誰なのかもわからないのか?重症だな…… それにダイアログボックスと呼び出し元ウィンドウの間は 親子関係というよりオーナー関係だったと思うけど。 そもそも、DialogBoxParamでパラメータ1個渡せるんだから 四の五の言わずにそれ使えばよくね?
BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp){ } のなかでfunc()を呼び出してるんですが、 HWND A_hWnd = GetAncestor(hDlg,GA_PARENT); これでいいのかなと思ったらダメみたいです・・・ Spy++ってなんですか?
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){ 親ウィンドウ作成時 DialogBox( g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgProc ); } Windowsプロシージャはこうなってrます
>>327 面倒だからこれ使え
INT_PTR DialogBoxParam(
HINSTANCE hInstance,
LPCTSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogFunc,
LPARAM dwInitParam
);
dwInitParam
[in] Specifies the value to pass to the dialog box in the lParam parameter of the WM_INITDIALOG message.
BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){ DialogBoxParam( g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DlgProc, lp ); } こうですか?DlgProcのほうでfuncにどうやってハンドルを渡せばいいのですか?
・調べる ・試す 10ループしてから人に聞け つか329の最後の行に使い方書いてあるだろ 1から10まで指示されないとできないなら プログラム止めて出来合い使ってろ
あんまりWin32APIとは関係ない気もしますが・・ 質問させてください。 SetCursorPos()が失敗する原因ってなんでしょうか? 具体的に言っちゃうと、DirectX3Dを使用している アプリケーション(ゲームです)上で オートでマウスを動かしたいんですが、 Getはできるのに、Setはできない・・ 散々ググったんですが、理由が分かりません。 神様いたらお願いしますm(_ _)m
DrawTextでテキスト描画してるんですが、別のウィンドウとかが重なるときえてしまいます。 こうならないための方法はあるんですか?
>>334 消えたらまた描けばいい
そのための仕組みがWM_PAINT
>>333 GetLastErrorは?
あとSetしたあとにGetしてみた?
他の絵(別のウィンドウ)で塗りつぶせば元の絵は消えちゃうのは当たり前(レイヤーでもない限り) 逆に自動で復活してたら気持ち悪い
>>335 つまり処理関数→buff→描画→処理→buff→描画みたいなやりかただと
できないってことですか?
>>339 ある関数で計算した結果を描画するとします
1回目の処理であいうえおって結果
2回目の処理でかきくけこって結果だとして
あいうえお かきくえこ ・・・・と描画したいんです。
>>340 別に描画は好きなタイミングでいいけど、
WM_PAINTでその描画をいつでも再現できるようにしとかないと。
>>341 つまり各回の結果を保持しておかないとだめという事ですか?
それを元に描画するならそうだね。 もしくは、ビットマップに描画してそれを転送するようにするとか
344 :
333 :2008/12/06(土) 15:46:49
333です。レスありでした。 GetLastError()すっかり頭から抜けてました。 というわけでデバッグ文出力やってみたんですが、 Cursor handle is 0x00380367 , position is 248 184 bret = 0 GetLastError() = 126 126: 指定されたモジュールが見つかりませんでした。 なんでしょうか、、これは。。 分かるかたいますでしょうか。
オフスクリーン描画を使うといい CreateCompatibleDC オフスクリーンあたりでぐぐれば サンプル出てくるはず
もうほっとけよ 自分で調べようとしない奴に何をやらせても無駄だろ
知らないならレスしないで下さい。ウザイだけです。
升
>>341 WM_PAINTはウィンドウプロシージャにかくんですか?
知らないならレスしないで下さい。ウザイだけです。
フォントサイズがsの文字の横幅ってどうやってわかりますか?x座標単位で換算するとということです
GetLogFontとか? プロポーショナルフォントなら実際の文字列用意してGetTextExtent32とか。
>>354 GetLogFont/GetTextExtent32なんてAPIねーよ
うろ覚えで回答するなクズ
vectorに入った文字列を次々に表示していくんですが SetRect( &rc, 20+x, 10+y, 4000, 4000 ); 直前の文字列の長さ(*10)をxにプラスして表示していってるんですが、綺麗にならないんですよね。直前の文字列がながいと妙にスペースがあいたりするんです
*10というのはどこから?
DT_CALCRECT
DrawTextでだんだん長さを足していけば。
GetLogFontなんてAPIねーとはいうが、WindowsSDKのAPIのAPIがMFCというかなんというか。 まぁ、幅ってGetCharWidthFloatだとかで取得できなかったっけ?
>WindowsSDKのAPIのAPIがMFCというかなんというか。 日本語でおk
アイコン(.ico)のアルファ値を殺さずに表示したいんだけどなにかないかな? 仕様調べたらDrawIconだと32BITアルファ値つきビットマップ(メモリデバイス) に転送してもアルファ値を書き込む機能がDrawIconにはないからアルファ値0のまま転送してなにも表示されないんだよね どうしたものか・・・
Direct3D
GDI+
>>357 1個の文字で10座標ぐらいかな?と思ったんです
>>359 長さを足していくって良くわかりません
第3引数で文字列の長さを指定するとこをながくするということでしょうか?
<<366 kwsk
369 :
デフォルトの名無しさん :2008/12/06(土) 19:07:34
TextOutだかDrawTextだか何を使っているかは知らないが、 1度の呼出で全部を表示させるというわけにはいかないの? vectorなら先頭要素へのポインタを取ればよいのだし。
LoadIconじゃなくてLoadImageにLR_CREATEDIBSECTIONつけてDIBSection作ればどうにでもならんか?
RPGみたいに一文字ずつ表示したいんじゃないの?
>>369 それが楽なんですが、1個1個色を変えたりしたいので・・・
>>370 SHGetFileInfoこれでアイコンとる形のプログラムだから、ロードはしないんだよね・・
>>365 俺違う人なんだけどw
GetLogFontとかといった人とはw
ある特定のミドルウェア、OS等の環境を利用する為の関数群がAPIだから
APIのAPIは間違ってないよw
つーかMFCはスレチだろ
waveファイルを再生しながら、マウスをクリック そのクリックが起きたときのwaveファイルの再生時刻を取得っていうことをするのに適したAPIはなんですか?
APIを列挙してよ! つーか、再生時間カウントしておいてクリックされたのメッセージで処理すりゃいいんじゃねーのか。
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); とかでいいですかね? 再生時間のカウントとはどのようにやるんでしょう?
>>378 g_tick = GetTickCount();
WavePlay(); // wave再生
// クリック
if( msg==WM_LBUTTONDOWN )
{
DWORD sec = (GetTickCount() - g_tick) / 1000;
sprintf(buf,"%u分%u秒",sec/60,sec%60);
MessageBoxA(hwnd,buf,"再生時間",0);
}
WavePlayのところで読み込みとかで時間くったら うまくいかないだろ
再生時間カウントしないでも 再生開始時刻を取得、クリックされた時間を取得して差分を出せばわかるんじゃね? それか、waveOutGetPositionを使って再生されたバイト数を取得すればできるんじゃね?
初代のドラクエとか紙芝居的なゲームの場合 WM_PAINTでかばでキルですか
京都は たのしい ですか?
ダイアログボックスから別のダイアログボックスを呼び出したのですが、こちらでEndDialogをすると元のダイアログボックスも閉じてしまうんですが、どういうことすればいい
Icon icon1 = new Icon("test.ico", 32,32); Bitmap bmp = icon1.ToBitmap(); HDC hdc = GetDC(hWnd); Graphics MyGraphics(hdc); MyGraphics.DrawImage(bmp, new Point(30, 30)); こんな感じでアイコンを表示しようと思ってるんだが、これはアルファ値 つきで表示してくれるのかな? 上で質問してたものです。
無駄な改行ウザイ
>>388 コピペしたらかってについてきたんだこのやろう
要するにマルチポストってことか
>>390 エディターからだろjk・・・
なんでこういうやつは−方向に物事を考えるのだろうかな
392 :
デフォルトの名無しさん :2008/12/06(土) 21:39:43
まだマルチとか言ってるしな
別にマルチポストでもいいだろが
くだらん雑談してないでさっさと回答しろ
>>387 どうだったかな・・・GDI+だろ?
実際組んでみて確かめてくれ。すまんわからん。
おまえらも回答できないなら無駄なツッコミいれないでスルーしろ
Icon icon1 = new Icon("test.ico", 32,32); Bitmap bmp = icon1.ToBitmap(); HDC hdc = GetDC(hWnd); Graphics MyGraphics(hdc); MyGraphics.DrawImage(bmp, new Point(30, 30)); こんな感じでアイコンを表示しようと思ってるんだが、これはアルファ値 つきで表示してくれるのかな? じゃなくって、やってみればいいだろう
384の回答お願いします
>>398 ダイアログボックスをデストロイ!しちゃえばいいじゃない
>>387 ここで聞くよりも、試した方が早いと思うぞ
>>387 人に聞く前に自分でやってみればいいじゃない。
C++のコードには見えないけど、まあ関係ないか。
自分でやってみる前に人に聞いて何が悪い
知らないならレスしないでください。うざいだけです。
なんか素人くせー質問多いな 今日だけ
ここに居る人間ってプロだったのか?w
俺はプロのグラマーだ
もしかして実行環境とかなしで、座学で勉強してんの? って訊きたくなるような質問ってあるよな。
プロって職業プログラマーか。 IT業界の底辺だな。
410 :
デフォルトの名無しさん :2008/12/06(土) 22:12:36
答えが返ってくるまで待つ暇があったら、 自分でやってみるほうが遥かに早く結果が見れるぞ。 つまり、時間を損していないかということ。 ただ、自分のとこではうまくいくけど、他ではだめって場合もありうるから人に聞くのも大事だよ。 俺? 396のコードからコンパイルして実行できる状態までコードを補完するのがめんどいからやらない。
IT業界の底辺だなってIT業界ってプログラマとSEとNEぐらいしかいねーだろw
>>410 80286のボロボロPCだからコンパイるよりも答えを待った方が早いんだよ
あと、いちいちそんなことを疑問に思ってそのたびにネットで質問してたらぜんぜん 先に進まないだろ、入門書でも買って、それを頭からやっていったほうが早いよ、とか思わせる質問とかあるな。
完璧主義なんだよ。文句あっか
>>412 それはさすがに新しいPCの入手をお勧めする。
286で動くWindowsでGDI+が使用可能なものはないはずだ。
コンパイルにいくら時間がかかっても実際に動かせないのではつまらないだろう。
386ならWin95が動くからGDI+は一応使えるな
完璧主義者なら、マシン語でかけよ
>>408 修行を積めば脳内でコード書いて脳内でコンパイルして脳内で実行できるようになるよ
IDがID_HOGEのエディットボックスに数字とか表示するのどうやんだっけ?
SetDlgItemじゃべ
文字列なら、SetDlgItemText() 数値(整数)なら、SetDlgItemInt()
SetDlgItemText SetDlgItemInt SetDlgItemInt64 SetDlgItemPointer SetDlgItemFloat SetDlgItemDouble 全部用意してくれればいいのにケチだなあ
ある関数でダイアログを呼び出し、 その関数でダイアログを閉じるにはどうしたらいいですか? DestroyWindowだとプロシージャの中でしかできないですし・・・
>>425 DestroyWindow(hWnd)
次くだらない質問したらお前は今後ダイアログ使用禁止な
>>426 それやってるんですが閉じないです・・・
EndDialog
>>428 EndDialogでも同じく閉じないです。
動作も固まります
とりあえずコード晒せよ どうせまたどこかの糞サイトのコピペだと思うがな
DialogBox( g_hInst, MAKEINTRESOURCE(MYDIALOG), hParent, DlgProc_progress); 処理 この処理の進行状況をダイアログに表示したい 処理が終わると DestroyWindow(hParent); って感じです。ダイアログは表示されますが・・・
DialogBoxで作ったダイアログはEndDialogで終わるんだろうが MSDN読んでから出直して来い
そんなんで伝わると本気で思ってるのか?
>>436 MSDNを読む気は一切無いみたいだな
正直Win32は諦めた方がいいと思うよ
日本を代表するWin32プログラミングのサイトがコレだからな・・・
DialobBox 関数はダイアログボックスが閉じられるまで呼び出し元に返ってきません。
どうせモーダルとモードレスの違いも分からんのだろう
>>445 新手の荒らしか何かか?w
少し上でクソサイトと書かれて間もないというのにw
管理人自らSEO対策ですね、わかります
根拠の無い誹謗中傷で個人サイトを叩く基地外は死ね
ソースが間違ってんだから糞サイトといわれる根拠はあるだろ 嘘掲載しなければいいだけ
間違ってんなら管理人に連絡してやれよw
そんな義理が誰にある。
一番下はダメなのはわかるけど、 久米井さんとウィズダムソフトは別に間違いだらけじゃないでしょ? くめいさんはちょっと古いけど
古い事は叩かれる理由になりうるような気がしないでもない。 テンプレからはずせばいいんだけどさ。
じゃあWisdomSoftは?
なんでこのスレが一般サイトのヘルプ役まで担わないといけないのか メールアドレス書いてあるんだから書いた本人に聞けよ
書いた本人が宣伝してるんだよ
間違いだらけの初心者向けサイト作ってるやつって何が目的なんだろうね アフィとか金が絡むならまだ分かるけど
ここのドカタと違い猫は凄いよな。 本職は医者で、プログラムも作れる。すげーーー おまえら、医者なんて絶対になれないだろ。
医者になろうなんて人生で一秒たりとも思った事無いんだが
グダグダ言うなら自分で「正しい」解説のサイトを作ればいいだろ 行動で示せないくせに匿名掲示板で文句だけは人一倍偉そうに言う奴って人間のクズだね
そういうスレじゃないしw 趣旨間違えてるアホに言われたくないよ
結論 日本の代表的な解説サイトは嘘が多いので注意すべし サイトに載ってるソースコードの事は管理人にメールで聞け
猫サイト、ずいぶん昔メールで間違いを指摘したけどシカトされたよ。
ちゃんと猫語でメールしたのか?
日本の猫は日本語だろ?
>>460 だって、基地外どかただもん
本職プログラマじゃないのが、あれだけのと書けるんでだから
プログラム開発で生計立てている香具師のweb・blogはEffective ???本や
やAdvaced Winowsレベル以上のことを色々書かないとこいつほんとにプロかと馬鹿にされるよな。
でも、どかたじゃ無理だろな。所詮プロじゃなくどかた。
そのITドカタって言われてる職業ですが、年収は1000万超えるんですが・・・。
海外在住のITドカタですが、年収は手取りで900万を超えますよ
>>467-468 年収じゃ医者はそれ以上だろ。
2,3千万年収ないと、医者なら能力ないからそんな低年収なんだと馬鹿にされるぞ。
せめて、2千万ぐらい稼げよ
で、Effective ???本やAdvaced Winowsのレベルを軽く超える内容
たくさん書けるんだろ?
はいはいわろすわろす
471 :
デフォルトの名無しさん :2008/12/07(日) 10:36:22
>>469 そういうおまえさんは、いくらなんだよ? 1本稼ぐ苦労は、おまえさんが言うほど甘くないぜ
3000万円(自称)
>>469 最近の医者はそこまで儲からんよ?
個人の医院開いてひーこら働いて2,3千万いくかいかないか
大学病院とかの雇われ医師で1千万ぐらいだよ。
で、「書ける」「書けない」じゃなくって「書いても質問メールがうぜぇ」でFA
>>471 俺、年収1千万超えるようにになって数年
俺、IT業界の人間じゃない。プログラムは趣味
日本のIT業界って、超内向き産業だからほんと土建業界と同じでワロタよ
だから、PG=どかたと言われてるんだろ
やっぱ、自社製品開発販売、外貨稼をがんがん稼ぐ業界にならないと
底辺産業言われるんじゃね。
自社製品開発販売って・・・普通にしてるだろ。 受託して開発するのも自社製品の開発の一部だし 「他業種」にドカタって言われてもなぁ・・・ 日本のIT業界って超内向き産業じゃないし外向きだしPMがクソッタレだから失敗するプロジェクトも多いけど 段々と成功するプロジェクトの数が多くなってきてるしなぁ まぁ、アレだ自分より下を見つけて自己保身したいだけの馬鹿乙
>>473 大学病院なんかで低給料でがむしゃらに働くのは技術習得や経験を積むためだろ、
そこで独り立ちやプロ医師レベルになったら自分で開業か、高給料で雇ってくれるところに移る。
web/blogに書いたからと言って質問を受ける義務(連絡先記載の必要性なし)はない。
ここで、質問してるのって、俺みたいな趣味グラマ連中で動けばOKレベルだろ。
それに合わせてテンプレも書かれてるんだろ。なら、猫でも良いじゃないか。
どかたはするかもしれんが、プロならこんなところで質問するレベルじゃないだろ。
>>476 いや、独り立ちするのにいくら資金がいくら必要だと思ってんの?
プロ医師って何だ?「プロ」の定義さえもわかってねーの?
で、だからどうしてお前みたいな人間のために得た知識を公開しなきゃいけないの?
間違ってると思うならおまえ自身が造ればいいだろう
>>475 業界構造が土建に似てるから、そこの末端にちなんでどかたと
いってるんじゃないのか。俺がPGをどかたと呼ぶんだと知ったのこの板でだ。
超内向きってのは、内需依存業界ってことだ。市場は海外もあるんだから
そこにもがんがん自社製品を売り込めば良いんじゃね。
俺、アメリカ企業みたいに海外で自社ソフト製品を売り込もうとしないのか不思議だよ。
それが当たればれば、給料も上がって年収1千万も普通に行くようになるんじゃね。
>>477 公開するか自分で決められないのか?
>>478 もうこのスレが雑談スレだろ
480 :
デフォルトの名無しさん :2008/12/07(日) 11:48:07
猫は具体的に何が間違ってるの?
>もうこのスレが雑談スレだろ いいから死ねよ
>>479 1、日本の経済は内需で7割近く
2、日本のソフトウェア海外でも数多く使われてる
3、お前が知らないだけ
スレ迷走作戦大成功で成りすまし.NET厨大喜び
何年もあるサイトなんだから仕方が無いだろう
仕方ないのは仕方ないけど、古いならあんまり初心者に勧めないほうがいいよね、って話じゃないの。
だがしかし、日本語のウェブサイトでのサンプル集としては、なかなかの量を誇るのが猫の魅力的なとこだと思う。 コードがアレなのを分かった上で使えば薬にもなるよ。
おまえら、そんなことより
>>445 の打開策を考えてくれ
>>488 そのサイトの管理者に訊けばいいのでは。
トップページに
>>質問や要望・ご指摘など、ご気軽にどうぞ(匿名で結構ですよ)。
って書いてあるし
もうだめだこのスレ
>>487 職業プログラマなら周りに教えてもらえる先輩いるだろうしな。フリーの開発ツール
使ってて教えてもらえる相手がいないサンデープログラマなら多少問題あっても十分役にたつと思う。
それは知ってた
もうだめだ? いやいや、ずっと前からだめなまんまだろ
>>491 先日、WM_SIZE に対応するコードはどうだっけかと、数年ぶりに見に行った。
いやー、助かった。何年も使っているプログラムのダイアログのサイズを自由
にしたくなってのこと。
あれで一から勉強しようと思うと失敗する。
いまどき、winapiでwinプログラムを一から勉強することもなかろうに
API知っとくとMFCも楽だし.NETもとっつきやすいだろう
498 :
デフォルトの名無しさん :2008/12/07(日) 20:21:36
>>496 ついでにプログラムを勉強する必要もないな、おまえには
近頃の・・・とは言わんが無目的な者につける薬はない
>>498 何でそんな反応になるんだ、おっさん?
C#、VBでウィンプログラム初めて必要になった時にapiをやっても良いんじゃないのか
猫C、スレ見て久しぶりに見に行ったがC#はじめたんだな
スレの流れが速いなと思ったら例の.NET厨がファビョただけか
XPとVistaで動作するアプリケーションを作ってて思ったんですが Vistaって結構いいかげんでも落ちずに動きませんか? XPだとアホなバグで落ちて分かりやすいんですがVistaだとなんか持ちこたえちゃうみたいな。 メモリまわりで。
.net厨って誰かさんの脳内にしか存在しないみたいですが
GlobalFlag弄ってヒープ周りのチェック入れとけ
目覚ましと時計(笑)ならAPIの知識は全く必要無さそうねw てかガジェットで作るレベルのソフトだろそれwww
APIの知識(笑)
.net厨(笑)
あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw
指定時間に休止状態(サスペンド)から復帰する目覚ましじゃないの? 俺は「タスク」を使ってるけど
重要なのは道具じゃなくて何を成したか、だ 他スレにまで来て宣伝してる奴を見たらこう言えばいい 「で?お前は何ができんの?」 と
>>511 「指定した時間にMP3を再生する目覚ましと時計」が作れると本人も言ってるじゃないかw
GDI+使ってるんだがGraphicsにDrawIconメソッドがないんだ MSDNにのってるんだからあるはずだよな・・・ ついでにIconクラスもなかった .NET Fw3.5のはずなんだが、原因わかるやついる?
ダイアログプロシージャの case WM_INITDIALOG のダイアログが作成されたときという条件に 処理を書くと、その処理後にダイアログが作成されるんですが、これは仕様ですか?
>>513 開発環境が.NETではないのでは?
通常のAPI叩いたC/C++の開発ならGdiplus.libにはいってるクラスしか使えないだろjk
>>514 WM_INITDIALOG==WM_CREATE
ちょっぴり違うものだけどダイアログボックス用のCreateだとおもっとけ
>>516 ということは仕様なんですね。ダイアログ表示後すぐ開始した処理はどのように書いたらいいのでしょうか?
>>513 BitmapクラスのコンストラクタにHICON食わせられるが。
少なくとも素のC++からなら。
>>518 日本語でおk
っていうか、ソレを考えるのがプログラマだろ
>>518 言ってる意味がわからないが、ダイアログがアクティブになったら
処理することか?
それならメッセージでなんかあったろうに
>>520 ダイアログプロシージャから関数を呼び出したいのですが、それをダイアログが表示された後に呼び出したいんです。
ダイアログのハンドルをその関数に渡してダイアログに文字を表示とかそんなことをしたいのです
普通にWM_PAINTで文字を描けばいいだろ
関数を呼び出すのはどうすればいいですか?その関数内での計算結果を描画したいんです
>>517 WM_CREATE はダイアログリソース上の子がまだ出来ていない
WM_INITDIALOG は子の生成が完了した後に来る
>>525 case WM_CREATEでやると
そこにある処理は実行されません・・・
プロシジャーをサブクラス化してるんじゃねーの? サブクラス化を施したタイミングだと既にWM_CREATEが通った後で、 差し替えたプロシジャーには WM_CREATE は来ない
サブクラス化???
何もしなくてもダイアログプロシージャにWM_CREATEは来ないだろ
ダイアログがどうたら言ってる奴はもう少し基礎からやれよ スコープとか何も理解してない気がする
めんどくさい。 アップローダにソース一式挙げろ。 訳の分からん説明を聞いていても埒が明かない。
すいません。ちょっとそれは・・・ とにかくダイアログ(モーダル)が出来たら無条件で関数を開始したいのです
>>532 作成後ならWM_INITDIALOGでいいし
表示時ならWM_PAINTでいい
まだ何かあるか?
>>532 妄想レス
WM_INITDIALOGで関数やれフラグ立てる
WM_PAINTでフラグあったら関数やる、そしてフラグおろす
で駄目か
動かしたい関数の処理時間が長いとか?
>>535 「WM_PAINTを描画以外の用途に使わない」
Win32の基本を理解してないお前に回答する資格は無い
>>537 ダイアログに文字を表示だから良いんじゃね
描画するための文字を生成するのは描画用途と違うのかw
つーか普通にWM_PAINTで描画すればいいだけじゃん
ソース晒せといわれても出さないし、おかしな日本語で後出しするだけ こんな馬鹿ほっとけよ
tkなんでVS2008のSDK開発で.NET Framework クラス ライブラリ使おうとすると 存在しないGDI+クラスがあるんだよ MSDNでのってるくせにGdiplus.libにないのはどういうわけだくそが
処理は結構ながいです。その処理の進行状態を描画するためのダイアログなんですよ
>>543 だから、WM_INITDIALOGで駄目な理由を明確に書けよ
>>524 >その関数内での計算結果を描画したいんです
って
計算はダイアログからのユーザー入力情報いらないのか?
いらないなら、計算はWM_INITDIALOGでし、
表示のみをWM_PAINTでやれば良いんじゃないか
>>545 WM_INITDIALOGで計算させると計算が終わるまでダイアログがでなくね
>>543 計算は別スレッドなんか?
別スレッドの進行状況をダイアログに表示させたいと。
>>546-547 余計な事いうとダラダラ続くから
計算結果を表示する所だけに絞ろうぜ
聞かれてない事まで答えなくていいよ
脱線するから
>>548 また新情報かよ。
質問する時はできる限りの情報を纏めた上で聞けよ。
計算の関数で、for文とか回しててインクリメントのiを表示するみたいな漢字か
WM_INITDIALOGで計算用のスレッドを立てる 別スレッドで計算しつつWM_PAINTで描画する これでいいだろ
>>550 計算する関数を呼びだすっていうことは書いていたとおもうんですが・・・
>>551 そんなかんじです
>>548 > よくわからないんですが
ってテメー本人が分かってなくて誰が分かるんだよ
>>552 ダイアログの表示も満足にできない奴にスレッドなんか使えると思うのかw
こいつにマルチスレッドできるのかよw
>よくわからない だからソース見せろってんだよ。 添削してやるからw
り 上 盛 が あ っ さ ぁ っ て ぁ ! き ぁ ! ! ま ぁ し ぁ た ぁ
Graphics MyGraphics(hdc); //HDC hdc Bitmap *bitmap = new Bitmap(icon) //HICON icon MyGraphics.DrawImage((Image *)bitmap,x,y); //hdc icon x y それぞれ値がはいってるものとする これだとアルファ値を32bitアイコンからうまく取得できなく、影の部分が 黒くなっちゃうんだよ。影の部分を半透明させるためにどうすりゃいいんだ おしえてえらい人!
マルチスレッドというのを調べました。 マルチスレッドではなかったです
>>559 APIのDrawIcon(Ex)を使えばいいだろ
ソース見ないとわからないならレスしないで下さい。
ソース見ても分からないからレスします
ソース見ても見なくてもわからないならレスしないで下さい。
>>WM_INITDIALOGで計算用のスレッドを立てる 別スレッドで計算しつつWM_PAINTで描画する もう回答でてるだろあほ
今の状況でソースみせろってのもあほだろ
質問者は日本語が不自由のため「ソース見せろ」や
>>552 の日本語が理解できません
もう無視でいい。 根性があれば谷に突き落とされても這い上がってくる。
もうお前らの馬鹿さ加減にはほとほと嫌気がさして候
糞ソース見たくないからレスします
初めてのお使いじゃなかった、初めてのマルチスレッドをがんばる
>>560 多くの苦難挫折を乗り越えやり遂げた
>>560 にここのみんなが涙する
もういいです。 ここまで役に立たない人ばかりとは思いませんでした
そんなことより
>>559 のやつを一緒に考えてくれよ
ようは半透明なウィンドウにアイコン表示させると、影の部分が全体一定の色で
残っちゃうんだよ、DrawIconにしてもGDI+にしても。
アルファ値も一緒に書き込んでくれる関数があったらいいんだけどな
>>576 その程度なら自分で作ればいいだろ
何でもAPIが用意されてると思うなよ
もうだめだこのスレ
俺がいるからまだ大丈夫
誰お前
俺だよ、俺
WM_INITDIALOGでユーザー定義メッセージを自分にポストして そのメッセージに応答して計算しInvalidateRectなりする、でどうでしょう PostMessage(hWnd,WM_MYCALC,0,0);
カタカタ || ̄ Λ_Λ ||_(Д`; ) 「なに?このスレ・・・」 \⊂´ ) ( ┳'
Win32APIの質問に優しく答えてくれるスレッドです (ただし、スレ違い、情報後出し、おかしな日本語などは激しく罵倒されるので注意しましょう)
Windowsプログラマーって日本一性格が悪いと思う どの板、どのスレを見てもここまで酷い連中が集うスレは 見たことがない。 なんなんだろうね。プログラム作ったりすると何か脳に 障害でも起こるんだろうか。
御客様が相手ならエスパー能力を要求されても可能な限り善処するが 同じ開発者のはずなのにこの質問は無いだろうと
Win32APIのFALSEって、絶対に0と保証されているのですか? よくTRUE or FALSEを返す関数を呼ぶ際に if (Func()) { : } とか書いてあるのを見るけど、 これってFALSEが0以外に変更されたら破綻しませんか?
#define TRUE 1 #define FALSE 0 だろjk
595 :
デフォルトの名無しさん :2008/12/08(月) 11:27:41
>>593 FALSE が 0 以外に変更されることはありえない
∵ Win アプリはバイナリ配布で、FALSE を返す API も使う
if文は0か非0かで判定してるんだから、 Func()が0を返すかどうかってことでしょ? Func()の定義の中でFALSEをいじってたりすると違うかもしれないが・・・
>>594-596 MSももはや変更できない定数ということですね。
それならBOOLの説明にでも「FALSEは0です」と明示しておいてもらいたいです。
ありがとうございます。
明示しなくてもそんなの常識でしょ
BOOLなのにFALSEとTRUE以外が戻る事もあるので 常識が通用するかどうか疑う事も重要
>>597 てか、"TRUE/FALSEを返す"なんてMSDNに書かれてるか?
zero/nonzeroって表記だと思うけど。
BOOLの説明にはFALSEかTRUEであるべきだと書いてあるがな
なのに-1を返すGetMessageがっていつもの流れになるわけだな。
普通の呼出方法ならGetMessageが-1を返すケースは無視できる
>>600 自分でBOOLを返す関数を作るときは
TRUE/FALSEではなくzero/nonzeroを返すようにするべきということ?
>>604 関数内部ではTRUE/FALSEを返すように作る。
外部仕様ではzero/nonzeroを返すと説明する。
自作関数ならBOOLでなくてboolを使えばいいだろ
いやいやそうじゃなくてさおまえらだまっとけと
Cで書いてるとライブラリごとにBOOLがあって どれがどのBOOLがあるのかわからなくなってくる
”マルチモニタ”での画面の解像度を取得したいのですが、 何かAPIありますか? GetDesktopWindow GetClientRect だと、メインディスプレイの解像度(1280x1024)しかとれませんでした。
ある
>>611 知らないならレスしないで下さい。ウザイだけです。
マルチモニタごとの領域を得るにはEnumDisplayMonitorsを使い モニタの個数回だけ呼ばれるcallbackに引数として渡される。 nVidiaとATIで呼ばれる順番が違った経験があるのでrect.leftで判断した。 2つ目のモニタのrectは、例えばleft=1280, right=2559になるから解像度はwidthとheightで判断
>>610 APIの名前教えてもらえますか?
>>611 そんな回答しておもしろいとかおもってるの?
馬鹿なの?
氏ねよ
>>613 いけました。
ありがとうございます。
ヘルプの場所を教えてもらったのに見ようともしない馬鹿がいるような気がする
気がするだけ
もう駄目猫のスレ
ばかばっか
”マルチモニタ”での画面の解像度を取得したいのですが、 何かAPIありますか? 知らないならレスしないで下さい。ウザイだけです。 GetDesktopWindow GetClientRect だと、メインディスプレイの解像度(1280x1024)しかとれませんでした。 「マルチモニタごとの領域を得るにはEnumDisplayMonitorsを使い モニタの個数回だけ呼ばれるcallbackに引数として渡される。 nVidiaとATIで呼ばれる順番が違った経験があるのでrect.leftで判断した。 2つ目のモニタのrectは、例えばleft=1280, right=2559になるから解像度はwidthとheightで判断する」みたいな誰かが既に定式化して名前が付いて いる芸をそれを知らずにあえて行うような愚だけはしたくないんです。
UpdateLayeredWindowで部分更新ってできる? 前に登録してあるビットマップデータの上に違うビットマップを転送したいのだが うまくいかないんだ・・・・ 1.ビットマップを作る 2.メモリデバイスと関連づけ 3.BitBlt(hdc, 0, 0,w,h, hmemdc, 0, 0, SRCCOPY|CAPTUREBLT) 転送 4.UpdateLayeredWindow(hWnd,NULL,NULL,NULL,hmemdc,NULL,NULL,NULL, ULW_ALPHA) 更新
>>619 何に怒っているんだか良くわからないんだが、なんか悪い事をしたんだろうか
>621 騙りか真性のどっちかだからほっとけ
神聖の....ですね
>>620 UpdateLayeredWindowなんて使ったこと無いが、MSDN見る限り
・hmemdcではダメなんじゃないの?
・ULW_ALPHA指定するならpblendがNULLじゃダメなんじゃないの?
ってあたりが気になるな。
それ以前に、本当にUpdateLayeredWindowを使うべきなのかってのも気になったりもするけどな。
普通にBitBltで重ねて書いたら書けちゃった!ってオチだったりしないか?
>>624 さんくす
いやー、pngとかのフォーマット形式を表示させてたからUpdateLayeredWindow
で半透明にさせる必要があったんだよね。。。。
BitBltで普通に転送しても描画関係はシステムのほうに登録してあるから
Updateを使うほかなかったんだ・・・
>>590 ここに質問に来ているのは、学生、趣味グラマが多い
フリーのプログラマならともかく、仕事で開発やってるなら、
周りの奴に普通聞くだろ。
周りの奴とコミュニケーション取れない奴が質問に来るんだろ そういったコミュニケーション能力の無い奴は当然ながら日本語が不自由
>>628 知らないならレスしないで下さい。ウザイだけです。
会話のキャッチボールができないだけだからほっとけよ
>>629 周りの奴ととコミュニケーションがとれないからここにいるんですね。わかります。
まとめ、普通の奴はここで質問しない このことが分ってない奴がいっぱいてことだな 今日もぷちお祭りあるよね
そこしか煽るとこがなかったですもんねw
知らないならレスしないで下さい。ウザイだけです。
まとめ、普通の奴はここでレスしない このことが分ってない奴がいっぱいてことだな 今日もぷちお祭りあるよね
WriteProcessMemoryとWriteMemoryの違いってなぁに
知らないならレスしないで下さいね
キチガイの気に障ったみたいだな
プログラマ==小泉毅 が常識、覚えとくように
>>639 WriteMemory?そんなWinAPIありませんが?
知らないならレスしないで下さい。ウザイだけです。
リア小、リア中がいるのがよく分かる こいつらが帰宅した時間になるとこれだからなw
むしろ、疑問なんだがリア小、リア中だとしたら何なんだ? すばらしい事だろう、育てるべき人財であろう?
まとめ、普通の奴はここでレスしない このことが分ってない奴がいっぱいてことだな 今日もぷちお祭りあるよね
うんち!
ツールもドキュメントもこんなに充実した環境でまともな質問者がそうそう来るわけないじゃん 少し肩の力抜けよ
>>612 2008/12/08 15:41:56
>>616 2008/12/08 16:42:24
>>618 2008/12/08 16:55:11
>>626 2008/12/08 18:07:26
>>630 2008/12/08 18:14:41
>>633 2008/12/08 18:19:50
>>635 2008/12/08 18:26:44
>>637 2008/12/08 18:27:37
>>638 2008/12/08 18:27:57
>>640 2008/12/08 18:30:50
>>643 2008/12/08 18:34:20
>>645 2008/12/08 18:40:53
>>647 2008/12/08 18:42:15
>>648 2008/12/08 18:43:19
本当にリア小、リア中だとしたらすげえ けど素晴らしい事かは疑問 あまり来てほしくはない だって小中学生が煽ってるって想像してみなよ
>>649 まともな回答者も来るわけないじゃん がぬけてるぞ!
>>650 つまらないレスしないで下さい。ウザイだけです。
>>612 2008/12/08 15:41:56
>>616 2008/12/08 16:42:24
>>618 2008/12/08 16:55:11
>>626 2008/12/08 18:07:26
>>630 2008/12/08 18:14:41
>>633 2008/12/08 18:19:50
>>635 2008/12/08 18:26:44
>>637 2008/12/08 18:27:37
>>638 2008/12/08 18:27:57
>>640 2008/12/08 18:30:50
>>643 2008/12/08 18:34:20
>>645 2008/12/08 18:40:53
>>647 2008/12/08 18:42:15
>>648 2008/12/08 18:43:19
>>652 2008/12/08 18:49:56
>>653 2008/12/08 18:50:45
うんちうんち!!
ふくふく
にゅうにゅう
こうやって統計とってみるとよく分かるな
レス間隔は狭いが、次のレスまで30秒以上は空いている
つまり粘着してるのは一人
>>612 2008/12/08 15:41:56
>>616 2008/12/08 16:42:24
>>618 2008/12/08 16:55:11
>>626 2008/12/08 18:07:26
>>630 2008/12/08 18:14:41
>>633 2008/12/08 18:19:50
>>635 2008/12/08 18:26:44
>>637 2008/12/08 18:27:37
>>638 2008/12/08 18:27:57
>>640 2008/12/08 18:30:50
>>643 2008/12/08 18:34:20
>>645 2008/12/08 18:40:53
>>647 2008/12/08 18:42:15
>>648 2008/12/08 18:43:19
>>652 2008/12/08 18:49:56
>>653 2008/12/08 18:50:45
>>655 2008/12/08 18:52:39
>>656 2008/12/08 18:54:57
学校で嫌なことでもあったんだろ 先生に怒られたとか、同級生にいじめられたとか ネットで憂さ晴らしなんて情けないやつだな
ちげーよwwwwwwwwwwwww
7時になった、タイムカード押して蛙よ
いつもの「目覚ましと時計を作った」人でしょw
俺のとこと未だに非現代的なタイムカードなんだが お前らのところ、社員IDカードで入退室や勤務時間管理してるよな
なんか最近MSDNが更新されてるね __inとか__outとか Function InformationがRequirementsになったり Security Remarksとか(これは以前からある?) しかも一部のAPIだけ
まじなんでこいつらこんなに性格悪いのw
普通じゃないからね
>>668 知らないならレスしないで下さい。ウザイだけです。
Win32経験者は極力採用を控えるようにしよう
win32apiを開発で使ってるならSALって常識じゃないのか DDKはかなり前からその記述スタイルだ
いやweb版のMSDNがね
web版でもDDK関係はSALスタイルになっているよ
__out_ecount_partとか__field_ecount_optとかついてて見づらい
Win32APIの範囲の質問にはまともに解答が付いているというのに
どこがw
まともな質問にはまともな答えが返ってくる おかしな質問にはおかしな答えが返ってくる
俺は判らないから自分で調べてやれ みたいなのばっかな気がする
>>1 の注意を守ってないならまともな回答は期待しない方がいい
まともな回答が無くて逆ギレするなんて論外
誰がどう見てもまともなスレには見えないだろ みんな喧嘩してるだけじゃん
って言うか、まともに答えてくれる人がいないんだよねここってw
じゃあまともに回答できるように頑張れ。 まずはまともな質問文の書き方から頑張れ。
レスするなよクズ
クズするなよレス
689 :
デフォルトの名無しさん :2008/12/09(火) 14:11:37
レズるなよガス
・20代は50代と同じくらいしかパソコンサイトを使っていない。 ・ケータイの普及でネット利用者の底辺は広がったが、「コンピューターに対する知識の欠如」「キーボードで字を打てない」という”退化”を若い世代にもたらしている。 ・ケータイの入力はキーボードと比べれば遅く、情報発信力に劣るので、ケータイ文化は「情報を受け取るだけ」の受身スタイルになるのかも。 ・アップルのiポッドはこの「受身スタイル」を先取りしている。 ・ブルーワーカーやフリーターはパソコンすら買えずパソコンも使えない「親指族」になる。これも「格差社会」の象徴ではないか。
格差社会ねぇ かつて日本が共産主義だったことなど一度もなかったんだが、なんでこんなに主張するやつが増えたんだろうね ああ、皮肉で言ってるだけだから気にしなくていいぜ?
>>691 一人暮らしでも手取り13万あればノートパソコン買ってインターネットできるぞ
(家賃7万以内、水道光熱通信費2万以内、飲食嗜好品日用品雑費3万以内にする)
今はノートパソコン新品でも6万で買える
収入の割りにいいもん食ったり飲んだりしてるから買えないんだよ
MDI子ウィンドウの子ウィンドウ(以下MDI孫)を WS_OVERLAPPEDWINDOW で作成したのですが、 GetParent( MDI孫 ) が NULL になってしまいます。 また、GetWindowLong( MDI孫, GWL_HWNDPARENT ) を取得すると、 全然関係のない値が入っています。 SetWindowLong( MDI孫, GWL_HWNDPARENT, (LONG)MDI子(MDI孫の親) ); とすると、 GetParent( MDI孫 ) は依然NULLのままですが、 GetWindowLong( MDI孫, GWL_HWNDPARENT ) は設定した値が入ってきました。 SetWindowLong() をすることなく、 GetParent( MDI孫 ) で MDI子 を取得したいのですが、 何か必要な設定はあるのでしょうか?
いくつかの文字列を1行に表示したいのですがx座標のずらし方がなかなかうまくいきません。 TEXTMETRIC の tmAveCharWidthに文字数をかけた値の分をずらしているんですが、それだと平均の幅のせいか重なってしまう事があります。 またtmMaxCharWidthにすると逆に間が空きすぎてしまいます なにか良い方法ないでしょうか?
イーモバ入れば100円とかあるしなー。
携帯厨がネットブック買うとは思えない
>>695 文字列の幅を得るにはGetExtentPoint32辺りがいいよ。
めずらしくまともなやりとりが!
↓以降またグダグダに戻ります
>>701 知らないならレスしないで下さい。ウザイだけです。
>>694 その関係はParentじゃなくてOwnerだろう
waveOutOpenしたWAVEファイルってデータ全体をヒープに読み込んでる? すぐに再生開始されないんだが・・・
704です。なんか質問おかしいわw取り消す
メモリにすべて読み込む事なく、waveを再生できて、(再生停止ができればいい 巻き戻しとかできなくていい) かつ waveOutGetPositionのような関数で現在の再生位置を知る方法ってありますか?
MCI_STATUS_POSITIONで似たようなことが出来ると思うが、メモリにすべて読み込むことなくってのは無理ぽいなぁ
無理ですかねやっぱ。 最初にファイル開いて, メモリに置くときにレスポンスが悪くなるのがいやなんですよね・・・
ある時間間隔ごとに描画するって事はどうやったらできます?
WM_TIMER
Sleep
>>695 ↓を利用するという手もある。
>fMode パラメータに TA_UPDATECP をセットし、出力先のデバイスコンテキストを指定して SetTextAlign 関数を呼び出せば、既定の動作を変更して、TextOut 関数を呼び出すたびにカレントポジションが使用され、更新されるようにすることができます。
>>706 waveOutWriteとダブルバッファあたりで検索すれば、ストリーミング再生の
方法が見つかると思う。
>>709 時間の間隔によって最適解は違うが、SetTimerでいいかと。
ちなみに、ウインドウを作成したスレッドではSleepは使ってはいけない。
TA_UPDATECPでググったらVC6の割れが3番目にヒットするんだがw
ウィンドウプロシージャにメッセージを送りたいんですが、どうやって送ればいいでしょうか? 関数である条件を満たしたときにメッセージを送るんですが、そのメッセージをHOGEとして SendMessage(hwnd , HOGE , 0 , 0); でプロシージャに送ろうと思ってるんですが、HOGEを定義しないとダメですよね?その定義の仕方がわからないんです
>>714 #define HOGE メッセージ
const UINT HOGE = メッセージ;
enum { HOGE = メッセージ };
好きにしろ
WM_USER以降でも使えない数値があるよねって事だけは覚えておいて欲しい
プライベートクラスならWM_USER以降は全部使えるだろ。
予約させているのとかぶらないようにしろってことですね #define MYMSG WM_APP #define MYMSG2 WM_APP+1 でいいんでしょうか?
719じゃダメですか?
いいよ。
いいね、
WM_APPか!WM_USER+α使ってたわ こっそり昔のプロジェクトも直しておくか orz
>>724 だから、自分でRegisterClassしたウィンドウならWM_USERで問題無いって
>>724 自分でRegisterClassしたウィンドウならWM_USERで問題無いっつってんだろ!
あれ?チェックボックスの状態を変える関数ってなんだっけ?
CheckDlgButton
>>729 知らないならレスしないで下さい。ウザイだけです。
工エェ(´Д`)ェエ工
BM_SETCHECKだろ
メッセージじゃなくて関数でお答え下さい
BM_SETCHECK(hWnd);
さっさと教えて下さい。。。
736 :
デフォルトの名無しさん :2008/12/10(水) 16:21:25
また「目覚ましと時計」の人か
またか
TEXTOUTで描画した文字をすっきり消す方法ってないですか? 場所が重なると文字がかさなってしまうので・・
TexeOutを書かなければ描画されないわけだよ つまりどういうことか?
744 :
728 :2008/12/10(水) 17:29:54
CheckDlgButton(hDlg,IDC_CHECK1,BST_UNCHECKED ); こうですよね?こうやってもチェックが解消されないんです
>>742 つまりTextOutで白い文字をかけって事ですか?
でも文字の線で重ならないところは元のが残るし・・・
Drawtextのほうがいいんだろうか
>>745 WM_PAINTの処理でTextOutあるよな?
じゃあ、そこでTextOutがなくなれば?
>>746 WM_PAINTには書いてませんよ
前の処理で描画した文字を一回クリーンにしたいんです
ああ、そういう事か。 再描画命令以外で書いてるのか。 SetROP2(NOT);で同じ場所に同じ字かかせりゃきえるんじゃね。 やったことねーからしらんけど
>>744 CheckDlgButton() の前に…
ASSERT(hDlg);
と書いて、
CheckDlgButton() の後に…
ASSERT(IsDlgButtonChecked(hDlg,IDC_CHECK1)==BST_UNCHECKED);
と書いて、Debugビルドで走らせてみな。これでASSERT()に引っかからな
ければ、どっか他でチェックボックスを変更しているな。
動作がおかしい時には関数の返値とLastErrorを調べるのは基本だろ
>>747 文字を書く前にしたことと同じことやればいい。
もう無いってんならどっかに取っておくしかないが
WM_PAINTに対応してるならそんなことないはず
WM_PAINTで描画してないって・・・ Aero切ったりXPに持っていったらウィンドウを重ねた時に再描画されなかったりしてw
>>741 分らないなら、そんな質問しないでください。ウザイだけです。
目覚まし君ウザイよ
>>741 描画時の座標と返り値のSIZE使ってFillRect
>>741 windowを破壊して、新たにwindowをCreateしろ
>>749 ASSERTがコンパイル通りません・・・
環境はVC++20008expressです
>>757 2万年後から来た奴に何のアドバイスができるんだよ
あああ間違いました。2008です
すんません。ほんとは2009ですた><
762 :
デフォルトの名無しさん :2008/12/10(水) 18:52:34
>>759 その程度も間違いだとわからないお前はレスするなクズ
ASSERTでググって見れば?
やっぱり20008で合ってました。ごめんなさい未来に帰ります。。。
2万年後もやっぱりウィンドウズですか?
スレ違いだからVC++スレに行ってね
そういやそうだな
>>741 適切に背景色とか設定してExtTextOutしろ。
MSの開発者センス悪いな なんでVK_A〜Zがねぇの? だせぇよ
そんなあなたにセンス溢れるDirectInput
GetClipboardData( CF_HDROP ) の戻り値は GlobalLock/GlobalUnlock に渡して使うんですか? そのままHDROPとしてDragQueryFileに渡してるサンプルも見かけるんですが どうなんでしょうか? たしかにどっちでも動くっぽいんですが……
ドキュメントにはDrawQueryFileで情報を受け取れると書いてあるな。 というか、GlobalLock/Unlockなんて一言も書いてないぞ。
>>772 >GetClipboardData( CF_HDROP ) の戻り値は GlobalLock/GlobalUnlock に渡して使う
そんことしているはどのサンプル? そのサンプル示すなりあるニダ
単に上書き防止のためにロックしてんじゃね
HDROPの実体はDROPFILESなどへのグローバルハンドル(移動可能なメモリ)だよ。
自分からドラッグドロップを始めたり、クリップボードにセットするコードを書くときは、
それを使ってHDROPのインスタンスを作成する。
MSDNライブラリでも、そうだと明言した資料をほとんど見かけないんだけどね。
http://msdn.microsoft.com/en-us/library/bb776904.aspx 「Extracting the File Names from the Data Object」の中らへん
> The HDROP variable is now a handle to a DROPFILES structure followed by
> a double null-terminated string containing the fully qualified file paths of the copied files.
だから、逆にHDROPをGlobalLockして中身を直接見るのも問題ないのだろう。
777 :
772 :2008/12/11(木) 00:20:40
どうもありがとうございました。
もうだめだこのスレ
もうだめだ? いやいや、ずっと前からだめなまんまだろ
490 :デフォルトの名無しさん:2008/12/07(日) 15:44:34 もうだめだこのスレ 580 :デフォルトの名無しさん:2008/12/08(月) 01:43:56 もうだめだこのスレ 778 :デフォルトの名無しさん:2008/12/11(木) 01:11:35 もうだめだこのスレ
レスのこだめだうも
782 :
デフォルトの名無しさん :2008/12/11(木) 11:21:52
NULLぽ
ガッ
■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
ドラクエ10がWiiで出るらしいんですが、どうしたらいいでしょう?
790 :
デフォルトの名無しさん :2008/12/11(木) 11:48:14
買うしかないな。
ダイアログプロシージャの頭で宣言した変数は、ダイアログが呼び出されたときに一度だけ宣言されるんですか? BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp){ int count =0; switch( msg ){ case WM_COMMAND: switch( LOWORD( wp ) ){ case HOGE; count++; みたいにしたらcountがうまく加算されていきますか?
staticつけなきゃ毎回新しい0のcountだな。 staticつけると、複数のウィンドウで同じプロシージャ使った場合も共有されるが。
>>791 されない
APIに触る前に変数とスコープの勉強して来い
またダイアログ君かよ。
case HOGE; コンパイル通りまへん
staticがどうとか既にAPIじゃなくて言語仕様の範疇だし CスレかC++スレ行けよハゲ
>>792 なるほど!
>>793 変数とスコープのことはわかってるんですが・・・
ダイアログ呼び出すのは1回だけなんで、1回だけ初期化されるんだと思ってました
分かってないからそういう質問が出て来るんだよボケ。
まあ認識半分ってとこだろうな
801 :
デフォルトの名無しさん :2008/12/11(木) 14:20:25
HOGEって変数名はやっぱhogeって小文字でするべきでしょうか?
好きにしてください('A`) で、APIと何の関係が?
hogeって変数名はやっぱHOGEって大文字でするべきでしょうか?
ハゲは黙っててください。眩しいだけです。
hugeならするべき
お前ら面白いな 毎日楽しませてもらってるよ
アイコンを自分でつくったアイコンにするのってどうやんの?
どこのアイコン? exeファイル? ウィンドウ? もっと他の何か?
アイコンエディタでアイコンを描く。
>>809 的外れなレスはしないで下さい。ウザイだけです。
>>808 EXEアイコンおよび、ウィンドウの左にでるアイコンです
ResEditでかいたアイコンを
wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
で読んでるんですが、アイコン部分がなにも表示されなくなるんですよね・・
〜.exeのアイコンも真っ白です
作ったリソースをexeにリンクしてないとか
それはどうやるんですか?
リソースエディタでつくってるんだからリンクは勝手にされてんじゃないの?
今気づいたんですが、リソースエディタ上では書いた絵がみえるのに、保存されている 〜.icoをみると真っ白ですね・・・ たぶんこのせいですね
二度と来んなカス
16x16アイコンが白のままといった所か
>>817 俺もそう思う。
環境書けばすぐ答えられるのにな。
ってそもそもAPI関係なさそう
ここ最近わざとやってるとしか思えないようなスレ違いの質問しか無い たぶん質問のフリして食いついてきた奴を煽りたい為にネタを撒いてるだけだろ
お前がそういうレスするからだろ。わかれよクズ
> あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw > フリーソフトにすら公開してねーけどw ↑この人が粘着してるだけだよ。みんな釣られすぎ。
823 :
デフォルトの名無しさん :2008/12/11(木) 16:08:17
次の質問どぞー
目覚ましと時計を作ったのですが、どうすればいいでしょう?
寝ろ
ラジオ発言を一部ヒアリング 植田 あたしはーその後にものすごい考えたのよ。 清水 ウフフフ(笑) 植田 このオヤジをー、社会的に抹殺とか、とにかく辱めてー、 あいつが悪い方にさせるにはどうしたらいいのかって考えたわけ。 清水 うん(笑) 植田 まずは、んでね?結局辿り着いたのが、そこで大声をあげる! 清水 ウフフフ(笑) 植田 最も、あたしの、定評のある悲鳴をあげる! 清水 あはは(笑)キャー!!(笑) 植田 ものすっごい悲鳴をあげてー、とりあえず誰か、あのー呼んで来てください!っていう。 清水 鉄道警察呼ぶ?って言ってた(笑) 植田 そう、言ってた(笑)んでまずそこで、あの駅員さん呼んで来い!呼んで来て!って 誰かに呼んで来てもらってー、んでみんなにー、 すみません携帯で警察に電話させてくださいって電話してー、 今どこどこの何両目に乗ってるんだけどー、なんかすごい絡まれて大変なんでー、 次の駅に警察待たせといてくださいっていう。そこまできたら、あいつ絶対焦るからー。 清水 焦るね(笑)ウフフ!いやー(笑) 植田 そこで手ぇ出されてもこっちのもんなのよ。 清水 そうだね。向こうが悪いもんね。 植田 んで名誉毀損で訴えます!じゃん。名誉毀損がプラスー、傷害事件になるかなーって。感じじゃない? 清水 うんそれをさー、腹立ったねーって降りた後にさー、言ってた後にさー、 植田 うん。 清水 その後に駅降りてからさー、あたし達タクシーで移動したじゃない? 植田 うん。 清水 タクシーの中でさー、かなちゃんがさー、ずっと黙ってたからどうしたのかなーって思ったら 「やっとわかったー!」って言ったから(笑)ウフフフフフ(笑) 植田 その時の対処法は! 二人 (大笑) 清水 もうあのおじさんに会ってから20分ぐらい経ってるよ!みたいな(笑)
「目覚まし男と時計の国」という題名で戯曲が書けそうです? 徹夜になるので21:00に起こしてください?
目覚まし男に粘着してる馬鹿が一人で荒らしてるって結論になったわけだが。
>あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw 目覚まし男って凄いな、MP3を再生するのを自分でwin32apiつかって作ったのか 粘着男、自分で出来ないから嫉妬しちゃタンだな。俺も出来ないけど
↑話を理解してない馬鹿
↑毎日このスレを荒らしてる馬鹿
↓馬鹿は無視してまともな質問をどうぞ
目覚まし君とは、 .netでMP3を再生するためにwin32api (mciSendString) を知り、 「俺は.netとwin32apiの両刀使いだがここにはwin32しか使えないオッサンだらけw」と 一人で勝手に妄想して優越感に浸ってるゆとり世代の少年 です
>win32しか使えないオッサンだらけ は事実だろ
Win32.NETしか使えないオッサンですが何か?
↓世代妄想馬鹿は無視してまともな質問をどうぞ
MP3を再生するapiを教えてください by 目覚まし
mcisendcommand
System.Windows.Multimedia.Audio.Sound.SoundFX.FileFormat.MP3.PlaySound
駄伊例区戸照
別にShellExecuteでもいいじゃないか
何をShellExecuteするんだよ
このスレのおっさん:MP3playerを....ShellExecute 目覚まし:MP3デコーダをwin32apiで開発 若いっていいのう
> MP3デコーダをwin32apiで開発 何この馬鹿っぽい発言
MP3デコーダをC言語で開発、ならわかるが、 デコーダなんてアルゴリズム的な計算してるだけなのにwin32apiとか関係ないだろw てか、目覚まし君はどうせならMP3デコーダをC#やVBで書けばいいのにね リアルタイムデコード可能な速度が出るかどうかは知らんが
>>847 H264とかならまだしも、MP3のデコード如き今時のCPUなら余裕じゃねぇの
JavaSoundとかはPure JavaでMP3フレームのデコードをやってるはずだが
そういや随分前にVB(4か5ぐらい?)だけでCRC計算とかJPEG保存するソース拾ったが ネイティブコンパイルしても実用には遠く及ばない速度だった記憶ならあるw
MP3デコードなんて10年くらい前のPCでも余裕だが Javaはよく知らんが最近リアルタイムでデコードできるようになったの?良かったね
Javaだの.NETだのはCの1/2ぐらいの計算能力はあるぜ 起動はアホみたいに遅いけどな MP3ぐらいは余裕であたりまえ
ここ本当に爺が多いんだな
DirectShow
>>852 「目覚ましと時計」を今すぐうpするんだ。
>>853 ここで質問しててるような奴が自力でCOM呼ぶとか無理だろ
>>854 schtask.exeでも叩いてろ
>>855 C#ならquartz.dllの参照を使うだけだ
勝手にラッパーが作られるし何も難しいことはない
つーかVBScriptでも出来る仕事だろ
858 :
デフォルトの名無しさん :2008/12/11(木) 20:42:46
物理ドライブの番号から 論理ドライブ(A:B:C:D:など)を取得する関数ってありますか?
>>857 なら#importでも使ってろ、これでいいか?
セキュリティ関係の質問です。
ttp://screencasters.heathenx.org/wp-content/videos/ep070/ep070.html ↑の動画で現在押されているキーがリアルタイムで表示されますが、
GetAsyncKeyStateを使って同じような物を作ってテストしていたところ
一部のアプリケーションがフォアグラウンドのときはキーの状態が
取得できませんでした。DirectInputでも同様に取得できませんでした。
たぶんキーロガー対策だと思いますが、nProtect等は使われていないので
もっと単純な仕組みのようです。
むしろこちらの技術に興味を持ってしまったのですが、これはプロセスの
セキュリティ設定等で簡単にできるんでしょうか?
ちなみにテスト環境はVista SP1です。
mpg123.exe
Winでプログラム作らないといけなくなりました。 うにっくすでの (a) find . | xargs grep HOGE (b) grep -r HOGE . みたいな動作を実現するAPIありませんか?
>>861 つーか、取り方がまずいだけじゃね? フックなりフィルタドライバなりで取るのが普通。
>>863 ない。Unix にもないし。
本当にそれがやりたいだけならcygwinかperlかrubyかpythonでも 入れたほうがいいぞ それと、Windowsならパスに空白が入ってることは日常茶飯事だから そのfindやxargsの使い方はNGだ
>>863 API=Winのシステムコール
システムに関係のないものがあるわけないだろ
ファイルの探索にはFindFirstFile()等のAPIが使える 正規表現はAPIとしては存在しないので、 boost.regexなどのライブラリを使えばいい 勿論、シェルのワンライナーで済む仕事を、多分100行とかかけて 記述することになるがな
//(a) HANDLE hOut = Find(NULL, _T(".")); hOut = XArgs(hOut, Grep(hOut, _T("HOGE"))); //(b) HANDLE hOut = Grep(NULL, _T("-r"), _T("HOGE"), _T(".")); //結果表示 ReadFile(hOut,buf,sizeof(buf),&d,NULL); MessageBoxA(NULL,buf,"結果",MB_YES);
PowerShellってすっかり忘れられてるよな
871 :
863 :2008/12/11(木) 22:23:58
みんな、ありがとう。
漏れとしてもひとつのAPIで機能を実現出来るとは思っていなくて
なんかんとなんかを組み合わせてやるんだろうけど、なんかって
なんだろ?ってことで聞いてみた。
基本は
>>867 みたいな感じですかね。
もし正規表現検索でなくて単なる文字列検索だとしても
boost.regexを使うことになってしまいますか?
_tcscmp
>>871 めんどくさいなら.NETつかえばいいよ。
正規表現のAPIくらい標準で用意しとけよなー
APIであっても誰も使わん
>>874 正規表現みたいな代物にはシステム依存性は全く無く
ANSI Cの範疇で移植性の高い形で記述できるわけだから、
Windowsでしか使えないAPIやシステムコールの形で提供されても仕方が無い
もっともUnixは伝統的に正規表現ライブラリをlibcの中に持っているが
>>876 ばーか
Str〜系やPath〜系のAPIがあるだろが
尤もPathMatchSpecは*?しか使えないから役に立たんが
BOOL StrCmpRegExp(LPCTSTR lpStr1, LPCTSTR lpStr2); こういうのがあればいいんだがな
正規表現とワイルドカードは別物なんだが…
>>877 Path〜系は一応システム依存性あるだろ
まあlibcに同等の奴があるようなAPIも多いが
>>878 毎回正規表現をコンパイルさせる気か
>>874 VBScript.RegExpで勘弁してくれ。
そんなウイルス量産機使えるかよ
大人しくboost::xpressive使ってバイナリもりもり増やすとイイヨ!
std::tr1::regexでがんばります
>>882 comとして使うだけなのに何がウィルスなの(・∀・)ニヤニヤ
>>880 >>878 はStrCmpLogicalみたいにStrCmpRegExpというAPIも用意しろって意味だろ
>>886 >>880 は、StrCmpRegExp()という
>>878 のAPIが、毎回正規表現をコンパイルして
コンパイルしたものを再利用できないインタフェースになっている点を
突っ込んでるんだろ
キャプチャやオプション等の指定もできないけどな
*?[]^$ くらいならオートマトン作るほどの物でも無かろう
ラムは好きだがマトンはちょっと……
道民っぽいボケ乙
ラムは北海道だけって思ってる無知乙
メッセージボックス出したときのポンって音なくす方法ありますか?
メッセージボックスっぽい自作ダイアログ作る
自分で作るしかないですかね?
895 :
892 :2008/12/12(金) 11:32:33
896 :
892 :2008/12/12(金) 11:36:00
さっさと答えてくださいよ
結局同じ事聞いてんじゃんwwwww
899 :
892 :2008/12/12(金) 11:39:23
>>898 も俺じゃないですから・・・
IDさえあれば・・・
暇だったから
createwindowでウインドウ作成して、 プロシージャでWM_CREATEの時に-1を返して createwindowsを失敗させました。 そのときに、メッセージボックスを出すようにしてたのですが、 一瞬で消えてしまうようです(音が一瞬でる)。 メッセージボックスがGetMessageでメッセージを取得し、 何かのミスで、間違って閉じられているのでしょうか?
HWND の指定はどうしてんの?
904 :
902 :2008/12/12(金) 22:33:16
>>903 MessageBox( NULL , NULL , NULL ,MB_OK );
HWND_DESKTOP
父ちゃんなしで子供作れたっけ?
HWND_DESKTOP を MessageBox に使うのって正しいんだっけ?
MapWindowPoints に使うぐらいだと思ったのだけど。
http://msdn.microsoft.com/en-us/library/ms632597 (VS.85).aspx
There are special constants that can replace a window handle in certain functions.
For example, an application can use HWND_BROADCAST in the SendMessage and
SendMessageTimeout functions, or HWND_DESKTOP in the MapWindowPoints function.
逆に MessageBox の第1引数に NULL を指定するのは全く問題ない。
http://msdn.microsoft.com/en-us/library/ms645505.aspx If this parameter is NULL, the message box has no owner window.
909 :
902 :2008/12/12(金) 23:09:51
>>905 何かおかしいところがあるのでしょうか?
>>906 NULLをやめHWND_DESKTOPにしてみました。(void*)0?なので変わらない気もするのですが。
>>907 ウインドウが失敗してるので、親はなしです。
HWND hWnd = CreateWindow( L"classname" , L"titlename" , WS_OVERLAPPEDWINDOW , 0 , 0 , 500 , 300 , NULL , hInst , 0 );
int ret;
if( hWnd == NULL )
{
ret = MessageBox( HWND_DESKTOP , L"失敗しました" , NULL , MB_OK );
return 0;
}
ShowWindow( hWnd , SW_SHOWNORMAL/*nCmdShow*/ );
UpdateWindow( hWnd );
while( GetMessage( &msg , NULL , NULL , NULL ))
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return 0;
ちなみ ret == 1でした。
もしかしてCreateWindow自体がGetMessage?を呼んでてそれが原因とか?
911 :
902 :2008/12/12(金) 23:27:01
WM_CREATE内で失敗が起こる可能性があるときは、WM_CREATE内でメッセージボックスを出すか、WM_CREATE内では失敗する可能性があるものは処理せず、Createが成功した後で、メインスレッドないで処理をするのが普通なのでしょうか?
LPWSTR使うんなら、APIもWを明示的に指定したほうがいいな
PeekMessage を呼んでキューに溜まってた WM_SETTEXT を削除したら メッセージが出たけど、理由は説明できません。。。
ウィンドウプロシージャのソースも出せよ
vista VS2008でMSXMLを利用したアプリつくってるんだが、 xpのPCで実行しようとしたらランタイムエラーをはきだしたんだ MSXMLを利用してからこうなった #import "msxml4.dll" でインポートしてるわけだが、どこのフォルダからmsxml4.dllを 探してくるんだ? xpのほうはsystem32にちゃんとmsxml4.dllがあるわけだが、どうも実行できない 誰か経験者いませんか? VSのコード生成はマルチスレッドのMTです
>>916 めんどくせぇから一度そのDLLを実行ファイルと同じディレクトリにおいてみろ
>>909 WM_DESTROYでPostQuitMessageしてるんだろ?
で、MessageBox内のメッセージループが速攻終了してるんだろう。
>>918 それでもえらったよ
>>919 ということは実行XP側で事前にインストしなくちゃいけないってこと?
情報後出しだけでもうざいのに、そのうえ的外れな部分のソース出されてもねぇ
922 :
902 :2008/12/13(土) 00:32:26
>>914 ありがとうございました。
WM_QUIT 0x0012がきてましたので、それを消したらメッセージボックスがでました。
>>918 そのとうりでした。
ありがとうございました。
>>919 MSXML4は素のWindows XPには入っていないよ。
XPに初めからあるのはMSXML3(IE6附属でもある)。
あと、SP3にMSXML6が付いてくる。
MSXML4でライセンス的・技術的に可能かどうかは知らないけど、
RegFree COMといって、COMコンポーネントをレジストリに登録せずとも使う方法は一応ある。
そこまでレジストリを毛嫌いしなくてもいいだろ どうせMSXMLが内部でレジストリに何か書き込んだりしてるって
>>923 msxml4.dll は 一緒にアプリと配布していいみたいだけど
事前にmsxml4.dllをいれておいてインストとかめんどいことしないで
実行させたいんだ。(配布目的)
ダイナミックリンクの方法をとりたいわけだが方法がわからない・・・
XMLLiteでいいんじゃねーの?
IE7を入れろ、と申したか
単体で用意されてるだろ
ここまでの整理 MSXML利用アプリを素状態のPCで実行させたい場合は インストーラーを利用してCOMをレジストリに登録させるなくちゃならないってこと?
つ regsvr32
質問です CPUがSSE2に対応しているかどうか調べる方法はありますでしょうか? Win32APIの領域かどうかはわからないのですが・・・ よろしくお願いします
>>931 Win32APIの領域ではありません
帰れ
ID出ないから釣り放題だな こんな釣りの何が楽しいのか理解不能だが
uho 上での話題で、XPにMSXML4のSP2最新バージョンをインストしてアプリ実行 してみたらランタイムエラーになりやがった。 同ディレクトリにmsxml4.dllいれてやったらこんどは問題が発生したためっていうのがでて落ちた なんじゃこりゃああああ
XPで使うなということ Vistaにしろ
XPを棄てるか、MSXML4を棄てるか さあ究極の選択肢だ
それVista兄さんが頑張ってるだけで糞コードなんじゃねーの?
OLE/COM Object Viewerで実際にインスタンス生成できるか試してみたほうがよくね?
問題が発生したため〜はCoCreateInstanceに失敗してぬるぽアクセスしてるだけだろ
PaintDesktopしたあとCreateCompatibleBitmapしてイメージをブレンド してコントロールに描画しているのですが、PaintDesktopがVisibleでない ウィンドウDCやメモリDCには画いてくれないようで、PaintDesktopの一瞬 デスクトップ(つか壁紙)が見えてしまいます 何とかこの過程を表に出さずにやる方法は無いでしょうか
日本語でおk
PaintDesktopってクラス名"Progman"のウィンドウが壁紙を描画するために使ってるAPIだろ それ以外の用途ではほとんど役に立たんし、なぜこんなのが公開APIなんだろうねぇ
ヨーロッパの消費者団体がM$を突き上げたから 独禁法最高
PaintDesktopはWin95の頃から公開されてるぞ。
質問です _mbctokata この関数の引数と戻り値は strcpy(temp,"あ"); hikisu = temp[0] << 8; hikisu |= temp[1]; modori = _mbctokana(hikisu); temp[0] = (0x0000FF00 & modori) >> 8 temp[1] = 0x000000FF & modori; temp[2] = 0; な感じでいいんでしょうか? なぜこんなことを聞くかというと ビッグエンディアンとかリトルエンディアンとか 中途半端な知識が頭に入っていて不安になった次第であります
WindowsAPIの時点でエンディアン固定だろう
>>954 ありがとうございます
Itel系とかWindowsって全部リトルエンディアンなんですね
なんか安心しました
エンディアンに影響するのはCPUの種類だ Intel系のみ使ってるのなら心配無用
CPUの種類だけどPower系のCPU用WIndowsとか聞いた事ねーし OSでかんがえt(ry
昔はPPC用にNTを出荷していたんじゃなかったか
ヘッダを覗くと今でも痕跡は残っている。 typedef struct tagPOINTS { #ifndef _MAC SHORT x; SHORT y; #else SHORT y; SHORT x; #endif } POINTS, *PPOINTS, *LPPOINTS;
CreateWindowのクラス名にアトム指定したら例外が発生するんだけど理由分かりますか? 一番目の引数に (LPCTSTR)MAKELONG(atom, 0) と指定してるんだけど 関数が失敗するんじゃなくて例外で落ちるんだよね 何故? デバッガで追ってみたけどよくわからん
おもしろいと思ってんの?
ストックオブジェクトにNULL_BRUSHってありますが、PS_NULLみたいに指定して創る事ってできないんですか?
>>960 x64Vista+VS2008のWin32/64両方で試してみたが、
RegisterClassで返されたATOMをその書き方で渡しても、
普通にウィンドウが表示されたぞ。
WindowProcの中で例外を起こしている可能性は無いか?
ちなみに書き方としては一応
>>961 が正式。
(LPCTSTR)MAKELONG(atom, 0) と書いてるつもりが (LPCTSTR)MAKELONG(0, atom) と書いてるとか
XBOXってPowerPCじゃなかったか?
果たして、XboxはPowerPC用ウィンドウズなのだろうか
まーどっちにしろ PowerPC MIPS Alpha 用のNT4.0があったけどな。
PC98も
>>956 ネットワークエンディアンはビッグエンディアンだけどな
exeにはXBOX用フラグがある
フラグ(笑)
それより誰か次ぎ立てろ
>>980 次スレ立てるためのAPIを教えてください
>>985 >>437 をそれとなく入れてくれたみたいだなw 乙
まあ、書いた奴にメールで聞けばいいだけなのになぜココで聞きたがるのか分からんが。
それじゃあうめうめ。うめうめ、うめうめ、うめ、うめ? うめうめ。 うめぇ うめ!
M$の本でも時々ミスあるからいいんじゃね?w
うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ うめうめうめうめうめうめうめうめうめうめ
埋めるなくずしね
埋める、泣く逗子ね と言っただけですが何か?
Ume
うメ
Win64API になるのはいつですか?
もうなってるだろ
おっぱいと梅
生め
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。