Win32API 質問箱 Build6
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGやさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。
過去スレ
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html
参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG是非お願いします。
http://210.153.114.238/cgi-bin/upbbs2/imgboard.cgi
ここにUPして頂けますか?
0004デフォルトの名無しさん
NGNG猫でも〜にもあったが、あれじゃいかんの?
0005デフォルトの名無しさん
NGNGそれが出来ないから困ってるんですよ
たとえばMSゴシック11ptだと全角の幅=半角*2にならないので、
GetTextExtentPoint32等を含む通常のAPIでは描画結果がずれるのです。
なので、手動で補正もしくはExtTextOutで強制的に幅を指定しないといけないのですが、
自前で調整するには文字が半角か全角かを判別しなければなりません。
で、SJISだけなら問題なかったのですが、UNICODE(UCS2)だと、
すべての文字が2byteで表されるわけで、困っちゃったな、ということです。
プロポーショナルだと楽なんですが、そういうわけにも行かないので。
0006前スレ959
NGNGおなじ12ptでもフォントによってTEXTMETRICのtm.tmHeightは異なるので
上限があるのかなと思ったのですが…
高さの上限は決められていないのでしょうか。
わかる方お願いします。
0007デフォルトの名無しさん
NGNGhttp://210.153.114.238/img-box/img20020921043840.zip
うぷした。
パスワードはsplitterね。
ウインドウクラスにControlを継承させてからSetControlする。
それから、HandleMessageに適切なメッセージを渡せば使えるはず。
0008デフォルトの名無しさん
NGNGUnicode文字をANSIに変換してバイト数を得るのはまずいのか?
でもあんただったらそのくらい分かりそうから、ボツなんだろうな。
0009デフォルトの名無しさん
NGNGあの方法で、3つや4つに分割できますか?
0010デフォルトの名無しさん
NGNGどうもありがとうございます
早速DLさせてもらいます
0011デフォルトの名無しさん
NGNGフォント作成時にサイズを-xとかにしたら?
0012デフォルトの名無しさん
NGNGUNICODE化の目的は似非I18nなので、
UNICODE->ANSI(SJIS)にマッピング出来ない文字もあるわけでして…
0013デフォルトの名無しさん
NGNG漏れのアプリだとボタンを話すまで再描画されないのだが
他のアプリは バーが動くとすぐ描画されてる気がする
なんか指定しないといかんの?
0014デフォルトの名無しさん
NGNG固定ピッチなら、明らかに半角であると分かっている文字の幅より
広ければ全角とみなして構わないのではないか?
0016デフォルトの名無しさん
NGNGどうすればいいでしょうか。
ListView_SetTextColorとかだと全体が色変わっちゃうし。
0017デフォルトの名無しさん
NGNGなんかしょぼ〜んだけど、以外とそれが正解クサイかも
全角半角の整合が取れなくても、それぞれ半角同士全角同士は整合取れてるはずだから。
サンクス!
0018デフォルトの名無しさん
NGNGUnicodeの半角全角の表。これ使ってみる?
http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
説明はこれ。
http://www.unicode.org/unicode/reports/tr11/
0019デフォルトの名無しさん
NGNGどうもです。
しかし、これを見ると文字幅は一意に決定することが出来ないようですね。
emacsのように独自の多言語コードに変換するのがスッキリしているみたいです。
FIXED PITCHという文化とWin(覗くXP)のフォントが憎くなってきました。
0020デフォルトの名無しさん
NGNGLOGFONTの説明を見れ。フォントマッパは指定されたサイズを越えない
最大のフォントを探すとある。だから、12ptと指定したなら最大のサイズは
12ptなんじゃないの? 論理単位で。
0021ねこま
NGNGhttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createfile.htm
1.ハードディスク x を開くには、lpFileName パラメータで \\.\PHYSICALDRIVEx と指定します
2.フロッピーディスク x や、ハードディスクのパーティション x を開くには、lpFileName パラメータで \\.\x: と指定します
と書かれています.
1.の,「ハードディスク x を開く」
2.の,「ハードディスクのパーティション x を開く」
という違いがわからないのですが,このあたり明るい方教えてください.
ここ読めとかでもいいです.
やってみると,うちでは
\\.\PHYSICALDRIVEx はハードディスクのすべてで失敗し,フロッピードライブである A と B で成功する
\\.\X: ハードディスクのすべてで成功する
となりました.
0022デフォルトの名無しさん
NGNG2.はその中の各パーティション
どうして失敗するのかは知らん
0023デフォルトの名無しさん
NGNG\\.\PHYSICALDRIVE0 なら一台目のハードディスクという意味では
0024デフォルトの名無しさん
NGNG>>970
Unicodeか・・・ちなみにギリシア文字(アルファとかベータとか)は全角だと思いますか?半角だと思いますか?
0025デフォルトの名無しさん
NGNG2. の方は日本語訳が間違ってるよ。英語版の方では...
When opening a volume or floppy drive, x, the lpFileName
string should be of the form \\.\x:.
となっていて、パーティションと言う言葉は出てこない。
参照: ttp://msdn.microsoft.com/library/en-us/fileio/base/createfile.asp
ただ日本語訳のほうもその後を読めば、\\.\X はドライブ指定であること
は、普通わかるはず。
失敗する時は、エラーコードぐらい示したら ?
どうせ、Windows 9x でやってるか、Windows NT の一般ユーザー権限で
やっていると言うオチだろうが...。
0026デフォルトの名無しさん
NGNG0027ねこま
NGNGDISK_GEOMETRY の内容を表示すると,確かにそうですね!なるほど
同じハンドルしか返ってこないし
>>23さん
MSDN より
>\\.\PHYSICALDRIVE2
>ユーザーのコンピュータの 3 番目の物理ドライブのハンドルを取得します。
なのでその通りでした.勘違いしてました.
どうもありがとうございます.
0028デフォルトの名無しさん
NGNGWindows95 APIバイブル1,2
0029デフォルトの名無しさん
NGNGと書いているのですから,読めばそんなオチではない事
は、普通わかるはずでは?
0030デフォルトの名無しさん
NGNG> 読めばそんなオチではない事は、普通わかるはずでは?
これは、Windows9x の方か ? 権限の方か ?
確かに Windows9x は、\\.\x もダメみたいだな。ちょっと勘違いしてた
よ。
でも、そんなことぐちゃぐちゃ言ってる暇あったら...
> 失敗する時は、エラーコードぐらい示したら ?
の方をやってみたらどうよ。
0031デフォルトの名無しさん
NGNGみたいにするにはどうすればいいんでしょうか?
Tcalenderのようなメニューバーはなくて画面表示のみ、
それで、画面をクリックしながら動かせば移動が可能、とやりたいのです。
0032デフォルトの名無しさん
NGNG003331
NGNGタイトルバーのことです。
タイトルバーもメニューもない、内容だけのWindowを作って、
なおかつそれをドラッグで移動させたいのです。
0034デフォルトの名無しさん
NGNGcase WM_NCHITTEST: return HTCAPTION;
0035デフォルトの名無しさん
NGNGFAQだな
003634
NGNG003937
NGNG0041デフォルトの名無しさん
NGNGそのxをどうやって求めるかを知りたいのですが・・・
0042デフォルトの名無しさん
NGNGxは自分が作りたいフォントのサイズなのだが。
0043デフォルトの名無しさん
NGNGいやあの、あるサイズのフォントを作りたいのでは無くて、高さを知りたいんです。
例えば12ptの任意のフォントで描画された文字列を矩形で囲むとしたら
その矩形の高さをどう求めたらよいのかということです。
矩形の高さはポイントによって固定したく、
12pt→RECT rc12;
13pt→RECT rc13;
:
:
と対応させて矩形を表します。
rc12内へ12ptサイズのフォントを表示させれば、どんなフォントでも上下が
はみ出さずに表示できるようにするには、rc12の高さをどう設定すればよいのでしょうか。
0044デフォルトの名無しさん
NGNGねぇねぇ、もしかしてポイントサイズからドットサイズへ変換する式がわからないとか言う話?
0045デフォルトの名無しさん
NGNG0 指定された値をデバイス単位に変換し、それを利用可能な各フォントのセルの高さと比較します。
<0 指定された値をデバイス単位に変換し、その絶対値を利用可能な各フォントの文字の高さと比較します。
これ、思いっきり謎なんだけど、誰か解説出来る人いますか。
昔、本で高さには負数を入れろと書いてあったのを覚えているんだけど、
絶対値で比較されるなら差がないと思うんだけど、どうだんでしょ。
0046デフォルトの名無しさん
NGNGちなみに、MSDNの例では負数を入れてますね。
旧スレが上がっているのでage
0047デフォルトの名無しさん
NGNG正だったらフォントの (* セル *) の高さ。
負だったらフォントの (* 文字 *) の高さ。
文字の高さ (em height としても知られている) とは、文字セルの高さ
から内部レディング (アクセント記号などのためのスペース) の高さを
引いたものです。
0048デフォルトの名無しさん
NGNGレスどうもです。
文字の大きさを基準にスペースを決定したい場合は負数で、
スペースを基準に文字を収めようとする場合には正の数ということですね。
0049デフォルトの名無しさん
NGNGちょっと違う、 Á, Ö みたいにアクセント/ウムラウト等の文字の上につ
く記号のためのスペースを含むかどうか。(もちろん、文字としては含まな
い、セルとしては含まれる。)
ttp://amalfi.dis.unina.it/~carlosan/F3+BD/chap2/default.htm
の真中辺の Fig. 2-3 を参照のこと。
0050デフォルトの名無しさん
NGNGえっと、混乱してきました。
文字の高さ = otmMacAscent + otmMacDescent
セルの高さ = otmMacAscent + otmMacDescent + otmMacLineGap = tmHeight + tmExternalLeading
ですよね?
# 記号のスペースがtmInternalLeadingって事ですよね。
tmHeightにはtmInternalLeadingが含まれますが、
tmHeightを基準にするか(セル)、tmHeight - tmInternalLeading(文字)を基準にするかと言うことでしょうか?
そうだとすると、US ASCIIとかSJISの文字を表示するときはスペースの利用効率で負数を使って、
ウムラウト文字を含むような西欧文字を表示するときには正の数を使う、ってことですか。
0051デフォルトの名無しさん
NGNG読み捨てて下さい
0052デフォルトの名無しさん
NGNG君がッ
LOGFONTのヘルプを見るまでッ
僕はッ
LOGFONTのヘルプを見ろと言うのをやめないッ!!
0053デフォルトの名無しさん
NGNG> セルの高さ = otmMacAscent + otmMacDescent + otmMacLineGap
> = tmHeight + tmExternalLeading
これは、違う。
セルの高さ = 文字の高さ + tmInternalLeading
= otmMacAscent + otmMacDescent + tmInternalLeading
詳細は、
ttp://www.topposystem.co.jp/DL/Win32API/font/Font09.htm
の下のほうの図を参照のこと。
0054デフォルトの名無しさん
NGNG馬鹿におつきあい頂きありがとうございました。
それぞれの値が意味する物はわかりましたが、使い分けがさっぱりだったりします。
0055デフォルトの名無しさん
NGNG矩形の高さは
MulDiv(m_nFontSize, pDC->GetDeviceCaps(LOGPIXELSY), 72)
で計算したのですがArial Blackなどの一部のフォントだと下が切れてしまうんです。
フォントは
lf.lfHeight = -MulDiv(m_nFontSize, pDC->GetDeviceCaps(LOGPIXELSY), 72);
で高さを指定しています。
lf.lfHeightに入れる値を正数にすれば矩形内には収まりますが、
それだとワードパッドで表示した同じポイントのフォントより明らかに小さく描画されてしまいます。
というわけでこの方法ではうまくいかないものだと思い、ここで質問させていただきました。
0056デフォルトの名無しさん
NGNGここで聞いて解決するような問題なのか?
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGワードパッド(に限らずIEや他のペイントソフトなど)と同じポイントを指定してるので
できれば同じ大きさで描画されて欲しいです。
0060デフォルトの名無しさん
NGNGシステム色ではなく、赤とか青とかいろいろな色で作りたいのです。
ご存知の方、教えてください。
よろしくお願いします。
0061デフォルトの名無しさん
NGNGリファレンスみたいなのが載ってる本はないでしょうか?
MSDNはその部分日本語化されてないし、
ネットで探しても、ごく一部分だけの解説とかしか
見つからないのです。
0062デフォルトの名無しさん
NGNGあと具体的にどのコントロールのことを知りたいのか書けば
知ってる奴が教えてくれると思う。
0063デフォルトの名無しさん
NGNGで、切れてもいいのか?
お前が何をやりたいのかさっぱりわからんのだが。
006461
NGNGという時なら、それで事足ります。
でも、たまに暇な時に何となく説明を読んでたら
「おお、このコントロールにはこんな機能があったのか!」
みたいな便利機能発見して嬉しくなることができないなぁと。
0065デフォルトの名無しさん
NGNGMFCのドキュメント。
SDKとの対応がだいたい想像付く。その逆も。
0067デフォルトの名無しさん
NGNGなんとなく読むだけの暇があるんなら最初から英語版に目を通せや・・
0068デフォルトの名無しさん
NGNGうまく出来ました!
とても参考になりました。
ありがとう。
0069デフォルトの名無しさん
NGNG切れないように。矩形内に収まるように。と書いてあるが。
0070デフォルトの名無しさん
NGNGWM_CHARを取ろうと思っても親にSendMessageしてもらわないとできません。
標準のエディットコントロールでは、そんなことせずにできるんですが、
どうやったらいいのでしょうか。
RegistClassあたりでそういうのがあるんでしょうか。
0071デフォルトの名無しさん
NGNGサブクラス化すればいいだけじゃないの?
007270
NGNGサブクラス化とは何でしょうか?
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGダイアログに置いてあるなら WM_GETDLGCODE をヘルプで見てみるとよいよ
自作のウィンドウクラスの中に置いてあるなら何もしないでも来るはず
007670
NGNG0077デフォルトの名無しさん
NGNGWM_GETDLGCODEあたりの問題ですか?
007877
NGNG0079デフォルトの名無しさん
NGNGそしたらワードパッドと大きさが違ってくるんだろ。
ようするに要求が矛盾してるんだよ。
奴がやりたいことを整理して出直してくるまで放置だな。
0080デフォルトの名無しさん
NGNGやりたいこと。
・固定高の矩形内におさめる
・表示はワードパッドやIEで表示したものと同じ大きさで
これだけです。
この条件で「(矩形の高さの)上限は求められますか?」ということと、
「可能ならその方法を教えてください」というのが元の質問の意味です。
0081デフォルトの名無しさん
NGNG固定高の高さによって表示が切れるのは当然だと思うが
0082デフォルトの名無しさん
NGNG何をぐだぐだ言っとんねん。
0083デフォルトの名無しさん
NGNGその部分のソースを出せば解決するんじゃないのか?
0084デフォルトの名無しさん
NGNGこういうツールバーってどうやって作るの?
どこかに資料ありませんかぁ?
0085デフォルトの名無しさん
NGNG発行すればできるんでないか。まあ、表示文字列に対して
GetTextExtを発行した方が速いけどナ
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGC言語でプログラムを書いたんですが、バックグラウンドで
動かす(MS-DOSプロンプトウインドウを出さないで動かす)には、どんなAPI
を使えばよいのでしょうか?
ご教授いただきたいですが^^
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGカーニングがあるからすべての2文字の組み合わせで
やらなければいけない≒事実上不可能
0090デフォルトの名無しさん
NGNGRECONVERTSTRING 構造体を「どーにか使う」というところまで辿りついたのですが、
まったく使用例が見つからず、肝心の「どう使うのか」が分からず行き詰まってしまいました。
どなたか、お助けいただけますでしょうか。
0091デフォルトの名無しさん
NGNG標準出力(coutとか)に文字列とか吐き出すと
どう処理されるんですか?
0092デフォルトの名無しさん
NGNGSetCommMask( ,0)で
別スレッドでの受信待ちのWaitCommEventをキャンセルしているのですが、
処理が戻るまでに数秒〜数十秒かかってしまいます。
なにか、心当たりある方いらっしゃいますでしょうか?
0093素人ですが。
NGNG過去にVBA(Access97)で組んだGetSaveFileNameの記述なんですが、Windows 2000になってから
動かなくなりました。
OPENFILENAME構造体が拡張されてサイズが変わったらしいこと、拡張された部分まではわかったんですが、
構造体の拡張部分をVBでどのように宣言したらいいのかわかりません。
つーのも、pvReservedがvoid*らしいのですが、VBにはどうやら該当するデータ型が見当たらないのです。
(試しにVariantで宣言したらダメでした。)
うまく動かないのは、ここの宣言が間違っているからと睨んでいます。
TypeからEnd Typeまでの記述はどうすればいいのでしょうか??
0094デフォルトの名無しさん
NGNG標準出力に相当するハンドルが標準では存在しないため、
未オープンファイルへ書いた場合と同様にEBADFとなる。
0095デフォルトの名無しさん
NGNGlStructSizeの値が76に設定されていれば、古い定義のままで動くはずだ。
どうしても新しいのが使いたければLongで宣言しておけ。
0096デフォルトの名無しさん
NGNGttp://www.codeproject.com/useritems/toolband.asp
0097デフォルトの名無しさん
NGNG了解しました
ありがとー
0098デフォルトの名無しさん
NGNGカーニングは高さを変化さすのか?初耳だが。
0099デフォルトの名無しさん
NGNGその別スレッドの処理がものすごいことになってるのでは?
0100デフォルトの名無しさん
NGNGJava側で
ObjectOutputStream oout = new ObjectOutputStream(socket.getOutputStream());
PrintWriter out = new PrintWriter(new OutputStreamWriter(oout, "SJIS"));
out.println("hogehoge");
out.flush();
と送って来て、それを recv しているんですが、
文字化けしてしまいます。
unicode変換とかが必要なんでしょうか?
0101デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1016065855/893
0102デフォルトの名無しさん
NGNGとりあえず、受信側でデータがSJISできてるか確認してみれば?
(スレ違いだと思うけど)
0103質問はここでも受け付けてるよ
NGNGhttp://pc.2ch.net/test/read.cgi/pcqa/1032847313/l50
0104デフォルトの名無しさん
NGNGアプリケーションから(「に」ではありません)エクスプローラ,デスクトップ
orETCにドラッグ・アンド・ドロップしてファイルコピーをしたいのですが・・・
SimpDNDサンプルだとコピー先のファイル名がスクラップになってしまいます
どうしたらいいのでしょうか?
参考のURLがありましたら教えてください
0105デフォルトの名無しさん
NGNGだれかおながいします
010693
NGNGありがとうございます。
今日さらに突っ込んで調べてみたら、確かにlStructSizeは拡張前76、拡張後88でした。
でも76じゃ、CommDlgErrorExの値が構造体サイズ不正だったんです。
おっしゃる通りlongで定義(←他でヒント見つけました)したら、構造体サイズエラーは回避できました。
が、今度は初期化失敗のエラーが。
原因がわかりそうになかったら、また質問させて下さい。
010793
NGNG○ CommDlgExtendedError
010892
NGNG単に受信待ちしてて、受信後にメッセージ送るだけです。
通信せずに終わると比較的早く、何度か通信してからだと大抵遅くなります。
0109デフォルトの名無しさん
NGNGDoDragDrop()に渡すIDataObjectで、CF_HDROPフォーマット
に対応しろ。DROPFILES構造体あたりを調べてみろ。
あとは必要に応じてCF_IDLISTにも対応(コピーだけなら不要)。
コピーだけなら CF_FILECONTENTSというのもあるが
これはあまりおすすめできんぞ、ボケナス。
0110デフォルトの名無しさん
NGNGありがたうごじゃいます
やってきます
0111デフォルトの名無しさん
NGNGDragFinish() って内部では何をやっているんでしょうか?
GlobalFree()? GlobalUnLock()?
0112111
NGNG0113デフォルトの名無しさん
NGNGどうすればいいんですか?
0114113
NGNGアプリからコプロセスを起動して、その標準出力を取りこみたいのです。
0115113
NGNGお騒がせしました。
0116113
NGNGこれはどうしたことか。
0117デフォルトの名無しさん
NGNG一度甘い汁を吸うと駄目ですね・・
0118デフォルトの名無しさん
NGNG漏れはそんなことにならなかったから、イマイチ分からない。
ここからサンプルを落として、ttyというサンプルを読むといいかも
http://download.microsoft.com/download/vstudio60pro/Utility/6.0/W98NT42KMeXP/EN-US/vs6samples.exe
0119デフォルトの名無しさん
NGNGFILE_SHARE_READで開こうかと思うんですが、これって書き込み中に他のアプリが
ログファイルを読み込んだりしてもファイルが壊れたりはしないですよね?
0120デフォルトの名無しさん
NGNG壊れないとは思うけど、LockFileを使うとイイ!
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGGetStdHandle(STD_INPUT_HANDLE)はどうよ
0123122
NGNG0125113
NGNG今Win98SE上で作ってます。
NTだとうまく機能するのかもしれませんね。
実際、さっき試したら自分で作ったEXEの標準出力は取りこめたので。
DIRとかのcommand.comのシェル関数を使うと駄目っぽいです。
0126デフォルトの名無しさん
NGNGAccessのMDB形式のデータベースをC言語でのWin32SDKとかから
VBの様にSQL発行したりしてアクセスしたいんですが、方法は
あるでしょうか。(このためだけにVB使うのは気が引けるので)
ExcelみたいにCOM経由ででもできればいいんですが。
0127デフォルトの名無しさん
NGNGローマ字入力/かな入力の切換え関数を教えて下さい。
Win2K+VC6+MS-IME2000です。
...出来れば、入力モードの取得関数もお願いします。m(_ _)m
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGADOをCOM経由で叩いたり、DAO使ったり、ODBC叩いたり
すればいいとは思うけど。
0130デフォルトの名無しさん
NGNGImmSetConversionStatus とかかなぁ
0131127
NGNG>ImmSetConversionStatus とかかなぁ
↑は半角/全角とかの入力モードの変更関数です。
知りたいのはIME2000プロパティ上の
「入力設定」-「ローマ字入力/かな入力」の変更方法と取得方法なんです...
よろしくお願いします。m(_ _)m
013293
NGNG全然違う所で引っかかってたようです、すみません。
Win95で開発当時、OPENFILENAME構造体を次のように定義していたのですが…
Type
…
lpstrFilter As String
…
End Type
2000では、こうするとまともになりました。
Type
…
lpstrFilter As Long
…
End Type
95でも、これで大丈夫みたいです。
ここはVBではStringにするようになってたはずだと思うんですが、なぜLongに変える必要があったんでしょうか?
結果オーライでは今一つ不安なので、どなたか理由を教えて下さいです。
0134デフォルトの名無しさん
NGNGどっちでもまったく同じ。
0135134
NGNG0136126
NGNGありがとうございました。
0137デフォルトの名無しさん
NGNGそれって、カナロック?
0138名無しさん@Emacs
NGNGレスがつかないようなので。
HPは、なくなっているようだけど
ImeReconvでぐぐってみそ。
013993
NGNGいかにも、lpstrCustomFilterに0だのNullだの入れるとおかしくなったけど、無視したらまともでした。
でも、なんでLongだと問題が解決したのか知りたいです。
0140134
NGNGLong型の初期値(宣言後に何も入れてない状態)は 0。
これにコード内で明示的に0を入れても元の値のまま。
String型の初期値はvbNullString。(他の言語で言えばNULLポインタ)
これをAPIに渡すのと、Long型の 0を渡すのはまったく同じ。
しかしコード内で "" を入れてしまうと、この値は変化し、
長さゼロの文字列へのポインタとなる。
明示的に初期化したいのであれば vbNullString を入れろ。
API呼び出し以外の場面では、(普通は)両者の違いを意識する必要はない。
0141デフォルトの名無しさん
NGNGナラネーヨ
なにげに存在してるぞ。コンソールに反映されないだけで
0142127
NGNGレスどーもです。
そです。「Alt+ローマ字」キーで切替えるトコです。
入力モード/変換モードは変更出来るんですが、
ローマ字入力/かな入力の切替えが出来なくて...
よろしくお願いしますm(_ _)m
0143デフォルトの名無しさん
NGNGバッファリングって知ってる?
0144デフォルトの名無しさん
NGNG関係ないよ
コンソールが存在してないんだから
0145デフォルトの名無しさん
NGNGマルチスレッドを勉強しているのですが、
クリティカルセクションとミューテクスの違いがわからなくて困っています。
両方、フラグがOFF(他のスレッドで排他処理を行っていない)状態になるまで
待機するものと思うのですが、なにか使い分けはあるでしょうか。
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNGkeybd_eventじゃダメなの?
0148デフォルトの名無しさん
NGNGコンソールアプリでなくてもリダイレクトすると
ちゃんと標準出力の内容をファイルに落とせる。
つまりコンソールがないから見えないだけで
標準出力はちゃんと存在するんだな。
0150127
NGNGモードはかな入力になりますよね?
それだと、困るんですよ...色々と
諦めるって訳にも逝かないし...脳味噌から煙が...
0151デフォルトの名無しさん
NGNGというような問題で悩んでおります。
MessageBox("テスト",NULLL,MB_YESNO|MB_ICONQUESTION);
見てのとおりのメッセージボックスなのですが、
MB OKなら「ポン♪」って音がなりますよね?
↑のコードじゃならなくて困ってます。
直前にMessageBeep入れてもできるとは思いますが、
どうも根本的な解決じゃないような。。
ご指導よろしくおねがいします。
すまんが、確認したOSは?
0153デフォルトの名無しさん
NGNGキミの環境ではサウンドのプロパティのメッセージ(問い合わせ)が
設定されてないだけだと思ふ。
0154デフォルトの名無しさん
NGNG98と2000とXP
9xだと常駐ソフトの絡みか何かでファイルに落ちないことは
あるけどそういうときはコンソールアプリも落ちない(リダイレ
クトしてるのにコンソールに吐かれる)から単なるバグだと思う。
あと処理系によってはGUIアプリのとき標準出力の準備を
省略することがあるかも(>>148を確認したのはVC++ 6.0)
変だね。当然、標準出力をわざわざ作ってはないよな?
0156154
NGNG幻を見てるって事はないはずなんだけど…
は、リダイレクトを指定しないとき、ハンドルが存在するか確認はしてないわけだな?
リダイレクトすると、自動作成されるってのが結論なのかねぇ。
0160デフォルトの名無しさん
NGNGDOS窓から実行させればリダイレクトしなくても表示されますが?
0161127
NGNG以下のよーな感じですよね?GetKeyState関数の使い方は
引っ掛かりませんでしたけど...ね
if(GetKeyState(VK_KANA) & 0x0001){
// かな_ON
}else{
// かな_OFF
}
指定してる仮想キーを間違えてるのかなぁ...
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG9x系ではGetLastError「このアプリケーションの実行に必要なライブラリ ファイル
のうちの 1 つが見つかりません。」と返してきます。
MSDNには、
「DllMainがWin32 関数の Unicode 版を呼び出そうとした場合も、LoadLibrary は失敗します。」
とあるので、これが気になっているのですが・・・。
DLLはCOMサーバで、unicodeプログラムになっています。
0164デフォルトの名無しさん
NGNG表示されないぞ
0165デフォルトの名無しさん
NGNG何のDLL使おうとしてるんだか知らんが、そのDLLがリンクしてるDLLがNT系固有なんじゃないか?
Dependency Walkerでも見ろ。
0167147
NGNGあ、IME2000固有のカナモード切換のこと?
だったら多分無理だよ。
(ごめん、キーボードのカナロックかと思った)
以前にMSのサポート技術情報ページで、
IME97かIME98あたりからAPIでの変更が不可能に
なったというのを読んだことがある。
016993
NGNGありがとうございます。
Stringで宣言していた時は、Chr(0)だのvbNullCharだので初期化してたのですが、
あちこちコードをいじり倒したので、今となってはよくわからなくなってしまいました。
今後の参考にさせて頂きます。
0170名無し@沢村
NGNGいろいろなボタンをクリックしたときに、そのボタンに応じたハンドルを取得できますか?
0171デフォルトの名無しさん
NGNGGetDlgItem
0172デフォルトの名無しさん
NGNGkeybd_event で何か入力させてみて、何が入力されたか調べる・・・とかいう最終手段もなきにしもあらず
0173名無し@沢村
NGNG0174デフォルトの名無しさん
NGNGサブクラス化したほうが早いんじゃない?
0175名無し@沢村
NGNGサンキュー、サブクラス化したらなったよ。
でもCallWindowProcをしたら1番目の引数がlong (__stdcall *)(void *,unsigned int,unsigned int,long)' から 'int (__stdcall *)(void)' に変換できません。(新しい機能 ; ヘルプを参照)とエラーが出たよ。
本に書いてあるようにしたのにどうして?
どうやって解決するの?
017692
NGNGありがとうございました。
サンプルを参考にWaitCommEventの最後の引数をNULLにしたら直りました。
理由は不明ですが・・
0177デフォルトの名無しさん
NGNGCallWindowProcのヘルプ嫁
STRICTを定義するのはデフォルトと思ってたがなあ・・・
0178177
NGNG0179デフォルトの名無しさん
NGNGWin32APIには一行ずつを読むAPIは無いので同じような関数を作るとすれば、
ReadFileで一文字ずつ読み込んでいくのが妥当ですよね?
それとも他に便利なAPIありますか?
0180sage
NGNG0181デフォルトの名無しさん
NGNGありがとうございます。参考にします。
0182デフォルトの名無しさん
NGNGおいおい、ReadFileで1文字ずつ読んだら
めちゃくちゃ時間かかると思うよ。
何のためにストリームがあると思ってんの?
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNGやばいね。
>>182
ReadFileってバッファリングしなかったっけ?
0185デフォルトの名無しさん
NGNGやって処理がバッファの終わりまで来たらまた読み込んでじゃ駄目なの?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG1文字ずつ読むんですか?→バッファに少しずつまとめて読め→メモリマップ使え
の流れ。
0188デフォルトの名無しさん
NGNGで実際メモリマップ最強ってことでええの?
0189デフォルトの名無しさん
NGNGだめ。少なくとも、windowsではローレベルI/O汁
windowsのメモリマップは直接マッピングしてくれずに勝手にキャッシュするから。
0190デフォルトの名無しさん
NGNG「バッファに少しずつまとめて読め」
ということね。FAQ認定
0191デフォルトの名無しさん
NGNGキャッシュされるとなにがまずい?
少なくともNT系ではマップした方が速いのだが。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGディスク>キャッシュ>マップされたメモリ となる。
キャッシュの分オーバーヘッドが掛かり、遅くなる。
0194デフォルトの名無しさん
NGNGまともな知識のある奴は一人もいないのかね。
ウィンドウズアプリでは標準出力のハンドルが割り当てられない。
GetFileType(GetStdHandle(STD_OUTPUT_HANDLE))してGetLastError()
を取ると、ERROR_INVAID_HANDLEが返ってくることからも分かる。
ランタイムのstdoutやcoutは存在するため、一見出力できるように思えるが、
バッファがフラッシュされたタイミングでエラーになる。
ただしリダイレクトされている場合は別だ。親プロセスが標準出力に
正しいハンドルを割り当てた状態をリダイレクトと呼ぶのだから、
出力できるのがあたりまえだ。
半日かけて、よく調べた。感動した。
0196151
NGNGさんの言う通りでした。
いつの間に設定がなくなったんでしょう。
XPでは始めは設定されてないのかな。
とにかく無事解決しました。
ありがとうございました。
0197デフォルトの名無しさん
NGNGPAGE_NOCACHEしても?
0198デフォルトの名無しさん
NGNG試してみたらちゃんとハンドルが返ってきましたが?
もちろんリダイレクトなんかしてませんが?
と思ってたらようやく原因が分かった。
エントリをmainにしていて/subsystem:windows /entry:mainCRTStartupで
リンクするとコンソール用のスタートアップが走るせいか標準出力の
ハンドルが準備される。
エントリをWinMainにしたら0(INVALID_HANDLE_VALUEじゃない。MSDNの嘘つき)
が返ってきてGetLastError()もERROR_INVALID_HANDLEになりますた。
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGことは可能でしょうか?
0202デフォルトの名無しさん
NGNGあとはなんとでも
0203デフォルトの名無しさん
NGNG作りたいんですが検索キーワードを教えて下さい
プラットフォームSDKが英語で嫌になりました
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGマウスメッセージとキーメッセージをフックしたら?
0206デフォルトの名無しさん
NGNGNC(非クライアント)関係をやれば出来ますか?
0207デフォルトの名無しさん
NGNG私の環境(Win98SE)では0x7FFFまでのようなのですが、
NT系ではどうなんでしょうか?
0208201
NGNGFindWindowでハンドルを得て、CaptionやIconの変更は出来たのですが,,
申し訳ありませんが、もう少しご助言いただけませんでしょうか?
0209デフォルトの名無しさん
NGNGFindWindowで得られるのは親ウィンドウのハンドル。
そのハンドルを元にGetDlgItemやFindWindowExや
GetWindow等を使って、対象のコントロールの
ウィンドウハンドルを取得。
そしてそれをShowWindowかSetWindowPosで非表示にする。
0210名無し@沢村
NGNGサブクラス化したらいいと教わったので、サブクラス化したところ、ちょっとうまういったんです^^;
違う処理についてはちょっとうまういったんですが、ボタンが押されたときも離されたときもじっとして動かない(見た目が)のです。
またボタンの上のフォントも作ったフォントではなく、普通のフォントが表示されるのですが、どうしたらいい?
0211デフォルトの名無しさん
NGNG意味がワカラン
ボタンを持つ主体は自分なのか他人なのか、
フック内でどんな処理を行っているのか
フォントを作った後にどうしているのか
これくらい書け
0212201
NGNG試行錯誤しながらやってみたのですがうまくいきません。
具体的にはMSOffice上のボタンを非表示にしたいのですが、もう少し
ご助言いただけないでしょうか。
現在
HWND thehwnd = FindWindow( "XLMAIN", NULL );
thehwnd = FindWindowEx( thehwnd, NULL, "Button", "ヘルプ(&H)" );
とやっていますが、thehwndにはNULLが入ってしまいます。
0213209
NGNGその前に、そのコントロールは間違いなくウィンドウなの?
Office系では単に親ウィンドウ内にコントロールの絵を
描画しているだけのことが多いよ。
具体的にはExcelのどの部分のボタンですか?
0214201
NGNGプレビュー画面の各ボタンです。
0215デフォルトの名無しさん
NGNGウインドウズプログラムではスレッドごとにカーネルとユーザーモードの
スタックを持っていますが、これはスレッドごとにメモリ上に実際に確保される
スタックの位置が違うと解釈していいのでしょうか?
0216209
NGNGExcel2000で確認してみたところ、
子ウィンドウの子ウィンドウ(孫)だから
HWND thehwnd = FindWindow( "XLMAIN", NULL );
thehwnd = FindWindowEx( thehwnd, NULL, "EXCELC", "" );
thehwnd = FindWindowEx( thehwnd, NULL, "Button", "ヘルプ(&H)" );
のような感じで取得できると思う。
0217デフォルトの名無しさん
NGNG> ウインドウズプログラムではスレッドごとにカーネルとユーザーモードの
> スタックを持っていますが、
こっちの真偽は、よく知らんが...
> これはスレッドごとにメモリ上に実際に確保される
> スタックの位置が違うと解釈していいのでしょうか?
これは、正しい。
0218201
NGNGありがとうございました!期待通りの操作ができました。
わかりやすい説明に確認までしていただきまして感謝しています。
あと、図々しいかと思いますが、もうひとつ。
EXCEL2000で確認とありましたが、それはどのように調べるものな
のでしょうか?
0219209
NGNGExcel2000の印刷プレビューの画面を確認したという意味です。
俺はVC++に付属している SPY++というツールで確認しました。
ただ、EnumChildWindows等を使えばツールがなくても
比較的簡単に調べられます。
0220名無し@沢村
NGNGサブクラス化したらいいと教わったので、サブクラス化したところ、ちょっとうまういったんです^^;
違う処理についてはちょっとうまういったんですが、ボタンが押されたときも離されたときもじっとして動かない(見た目が)のです。
またボタンの上のフォントも作ったフォントではなく、デフォルトのフォントが表示されるのですが、どうしたらいい?
フック内ではボタンが押されたときと、離されたときで違う処理だけ行なっています。
フォントはメインウインドウ内でつくった後なにもしていません。
0221デフォルトの名無しさん
NGNGオモロイ
0222215
NGNGわかったっす。ありがとー
0223名無し@沢村
NGNGコンボボックスをつくったのですよ。
そしてfor(i=0;i<100;i++)
SendMessage(hwnd,CB_ADDSTRING,2,(LPARAM)szbuffer[i]);
としたのですがコンボボックス内に何も字が表示されないのですよ。
本に書いてあるとおりにしたのに、どうしてでしょう?
どう考えてもわかりません…
0224デフォルトの名無しさん
NGNGwParamの2って何?
とりあえずダイアログエディタで、コンボボックスの矢印の部分をクリックして、
出てきた枠を下にぐ――――んと広げてみれ。
0225名無し@沢村
NGNGヌヒよ、ダイアログじゃねーよ、ヌヒよ。
0226名無し@沢村
NGNGコンボボックスをつくるとき高さを充分にとってやればよかったのね…。
でも矢印をクリックしないと字が出てこないのですが…。
つまり一番上のスペースに字が最初から出ていないのですが…。
よくソフトなんかでは一番上のスペースに字もが最初から字が出ていますが、あれはどうするの?
0227デフォルトの名無しさん
NGNGCB_SETCURSEL
0228デフォルトの名無しさん
NGNG具体的には、プリプロセッサーの処理の時点で NT 系だけに存在する関数を
#ifdef で条件コンパイルしたいんです。
関数でなら GetVersionEx() というものを使えばいいらしいんですが、
これだと条件コンパイルできませんし。よろしくお願いします。
0229デフォルトの名無しさん
NGNGもう一度頭の中を整理したほうがいいぞ
0230デフォルトの名無しさん
NGNGコンパイルしている環境のOSと、
動かすべき環境のOSは違うかもしれないんだが。
0231228
NGNGあっ、そういえば……ありがとうございました。
解決できたので吊ってきます。
0232名無し@沢村
NGNGありがとうございました。
CB_SETCURSELとしたところ、初めから字がコンボボックスに出ました!!
それからもうひとつ質問ですが、コンボボックスをつくるとき高さをだんだん低くしてやってみたのですが、
いくら低くしてもこれ以上低くならないというのが何かあるみたいなのです…。
よくソフトなんかでは、もっと低くてカッコいいコンボボックスを見かけるのですが、
よく見かけるソフト並みにコンボボックスの高さを低くするにはどうしたらいいの?
またそんな方法があるの?
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGconst int id = 123;
bool used[8][256];
for (int mod = 0; mod < 8; mod++){
for (int vk = 0; vk < 256; vk++){
used[mod][vk] = !::RegisterHotKey(hWnd, id, mod, vk);
::UnregisterHotKey(hWnd, id);
}
}
0235デフォルトの名無しさん
NGNGレンダリング結果を自然にするため、
文字のカーニングを行いたいのですが、
フォントから情報を取得する方法が分かりません。
参考になるサイトなど教えて下さい
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGInternetReadFileで読み込んでいるのですが、読み込み中は
ダイアログの何処をクリックしても反応がありません。
他に良い方法は無いでしょうか・・・
0238名無し@沢村
NGNGCB_SETITEMHEIGHTとすれば良かったのね!!
あと皆様方、コンボボックスにたくさんデータを入れたのですが、
データの一番下までスクロールすると、データの一番下の字のもっと下の部分に空白ができるのですが、この空白のなくす方法はないものでしょうか?
良くソフトなんかでは、データの一番下の字までで終わりになっていてカッコいいので、あんなふうにしたいのですが…?
0239デフォルトの名無しさん
NGNGCBS_NOINTEGRALHEIGHTを外すのだ外すのだ外すのだ
0240デフォルトの名無しさん
NGNGINTERNET_FLAG_ASYNCで開け。
またはスレッドを作る。
0241デフォルトの名無しさん
NGNGasync・・というと非同期ですか。
ちょいとやってみます、thx!
0242名無し@沢村
NGNGそれは{mciSendStringなんですが、{mciSendStringでopenとやってplayとやると、
演奏が終わったあと再びボタンを押しても演奏されないんです。
しかし停止ボタンで演奏途中で停止した場合は、もう一度演奏ボタンを押しても演奏されるんですね…^^;
私はこの事実に注目して演奏がひとりでに終わったあと再びボタンを押しても演奏されるようにする大発見をしたんです!!
それは皆様方、まず、{mciSendStringでcloseとやったあとopenとやってplayとやるといいんですよ!!
何故なら停止ボタンはmciSendStringのcloseから成り立っているからなんですねっ!
ちょっと邪道のような気もしますが何も問題は発生しないのでいいと思うんですが…。
皆様方はどう思われます?
いつも教わってばかりなので、たまには私が教えたのですが、いかがでしたでしょうか?
0243デフォルトの名無しさん
NGNGここに書き散らすよりも、ホームページにTipsとして書いたほうが
後の人のためだと思う。
0244デフォルトの名無しさん
NGNGいや、どう見てもネタだろ・・・
0245デフォルトの名無しさん
NGNGうるせえ黙れオナニーならホムペでやってろ
とやんわりと言ってるのだと思われ
0246デフォルトの名無しさん
NGNG一つだけ言わせてもらえれば、馴れ合いたいだけなら
どっか他所でやってくれ。
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG親ウィンドウを設定したあと子ウィンドウが閉じられるまで
親ウィンドウにフォーカスを移さなくするにはどうすればいいんですか
EnableWindow()ではなんか違うよう気がするんですが…
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGそのまま一生悩んでろ。
0252デフォルトの名無しさん
NGNGDialogBox()使ってるの?
Win95以降MFC使ってるからDialogBox()の動作よくしらへんけど
0253デフォルトの名無しさん
NGNGいいと思うんだがダメかね。
0254デフォルトの名無しさん
NGNGとしたときのメッセージボックスと
hWndParentの関係のようなものにしたいんですが
なんとかいっぱつでできるような方法はないでしょうか
0255デフォルトの名無しさん
NGNG自前でって書いてるからアプリケーションモーダルの
ふるまいをエミュレートしたいって解釈したんだけど
>>254
違うんだったらDialogBox()
つーか>>252は無視か? とっとと首くくって氏ね
0256デフォルトの名無しさん
NGNG親をEnableWindow(FALSE)してるが。
つか、何がどう違うんだよ。釣れた、とかいうのは勘弁な。
0257252
NGNG>自前でって書いてるからアプリケーションモーダルの
>ふるまいをエミュレートしたいって解釈したんだけど
書き込んでから248を読み直してきがついた。249が正解とオモタ
でも、どうやってダイアログを表示してるか書いてないんで
一応252の書き込みしててもいいかとオモタ
0258デフォルトの名無しさん
NGNG領域が画面内に収まるように位置が自動調整されるじゃないですか。
これを普通のウィンドウでやりたいんですが、位置を計算してくれる APIなど
ありますか?やっぱ、自分でしこしこ計算するしかないんですかね?
0260252
NGNGVisio2002をオートメーションで制御使用として、オートメーションで取得したHWNDを
EnableWindow(FALSE)したら、それ以降オートメーションでの操作ができなくなったけど
ちなみにVisio2000までのバージョンなら正常に動作します。
オートメーションの仕様に変更か何かありました?
スレ違いかもしれませんし、別に困ってもいないんでほんとはどうでもいいです。
もし知ってる人が答えてくれたら夜ぐっすり眠れます(いまでもぐっすりですが)。
0262デフォルトの名無しさん
NGNG249,256でいいと思うが253でもできる
というか、アプリケーションモーダルで意識のずれがある?
0263デフォルトの名無しさん
NGNGスレッドを使用すべきという事を聞いたことがあるんですが
本当なんでしょうか?
0264名無し@沢村
NGNGサブクラス化したらいいと教わったので、サブクラス化したところ、ちょっとうまういったんです^^;
違う処理については処理のようになったんですが、ボタンが押されたときにへこまないのです。
ボタンのプロシージャ内では、その処理についてだけ書いていますが、ボタンがへこむようにするには何か別なことも書かなくちゃいけないの?
ボタンが押されたときにへこむようにするにはどうすればいいのでしょう?
0265デフォルトの名無しさん
NGNGもとのウィンドウ関数を実行している?
0266デフォルトの名無しさん
NGNG0267名無し@沢村
NGNGはい、 return (CallWindowProc(lpfnProc[i],hwnd,uMsg,wParam,lParam));とすれば
残りの処理はもとのウインドウ関数がやってくれると本で読んだので、一応書いています。
それ以上のことはさっぱりわからないです…^^;
0268デフォルトの名無しさん
NGNGどこで聞きましたか?(void風)
以下俺の感想。
waveOutのコールバックが呼びだされるコンテキストって結構怪しかったと思う。
コールバックの中から呼び出せるAPIに限りがあったりするし。
↑こういうのをキモいと思うなら、別スレッドでEventをWaitForすると
スッキリするぜ、みたいな。
0269デフォルトの名無しさん
NGNG(1) WM_LBUTTONDOWNの処理をした後にも元のウィンドウ関数を呼ぶ
(2) ネタと思われないよう、ちゃんとした日本語を書く
0270248
NGNGGetParent()を繰り返して一番親にあたるウィンドウを探して
それをEnableWindow()で無効にしていたんですが
親ウィンドウを探す処理でミスがあって
別のウィンドウを無効にしていたようです
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNGプレビューを表示させようとして調べた結果(winshght32使用)
(親)XLMAIN->(子)XLDESK->(子)EXCEL7(キャプション=book1.xls)というウィンドウが
WM_SYSKEYDOWN Dispatched 12h 18d VK_MENU Scan 38h Alt Down
WM_SYSKEYDOWN Dispatched 46h 70d VK_F Scan 21h Alt Down
WM_SYSKEYUP Dispatched 46h 70d VK_F Scan 21h Alt Up
WM_KEYUP Dispatched 12h 18d VK_MENU Scan 38h Alt Up
上記のようなメッセージを受け取っていたので、次のようにコーディングしました。
HWND Hwnd = FindWindow( "XLMAIN", NULL )
Hwnd = FindWindowEx( Hwnd, NULL, "XLDESK", NULL );
Hwnd = FindWindowEx( Hwnd, NULL, "EXCEL7", "book1.xls";
PostMessage( Hwnd, WM_SYSKEYDOWN, VK_MENU, 0 );
PostMessage( Hwnd, WM_SYSKEYDOWN, 'f', 0 );
PostMessage( Hwnd, WM_SYSKEYUP, 'f', 0 );
PostMessage( Hwnd, WM_KEYUP, VK_MENU, 0 );
しかし、実行してみるとプレビューを表示できず、なぜか"6666"という文字が送信されてしまいます。
試行錯誤しながらやってみましたが、原因が私にはわかりません。
どなたか解決のためのヒントやアドバイスをいただけないでしょうか?
0273デフォルトの名無しさん
NGNGkeybd_event()使え
0274デフォルトの名無しさん
NGNGフォーカスの問題をどうするのよ?
0275デフォルトの名無しさん
NGNGフォーカス設定したいなら AttachThreadInput() でスレッドをアタッチしてから SetFocus() すればいい
0276デフォルトの名無しさん
NGNGオートメーション使う手もあるが
0277デフォルトの名無しさん
NGNGWin32APIのReadDirectoryChangesWはファイルの変更等を検知することが
できるらしいのですが、不正アクセスなど特殊な手法を用いることで、
この監視を逃れ、見事ファイルの改ざんを行うことが可能なのでしょうか?
皆様方よろしくお願いいたします。
0278デフォルトの名無しさん
NGNGkeybd_event() はフォーカスのあるウィンドウに対して送られる
>> AttachThreadInput() でスレッドをアタッチしてから SetFocus() すればいい
そんなら、本質問のようにメッセージを送って解決する方が簡単だね
0279デフォルトの名無しさん
NGNG解決してないんじゃないの?解決してるの?
どっちだよ
0280デフォルトの名無しさん
NGNG解決してないんじゃないかな。
> PostMessage( Hwnd, WM_SYSKEYUP, 'f', 0 );
これが意味不明だし。
たんに ALT+F でメニュー項目を選択させたいんだから
WM_KeyDown/Up でいいんじゃないか?
0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG現在ミュージックプレイヤーを作っているのですが
プレイヤーがすでに起動されている状態で
もういちどプレイヤーが起動したときに
もういちど起動された実行ファイルの引数(ファイル名)を
もともと起動していたほうのプログラムに渡し、
・多重起動の防止
・引数を渡してその引数が示す曲を再生させる
がしたいのですが
たいのですが
どうすればよいでしょう?
1日考えたり調べたりして
FindWindowをつかい同じ名前のウィンドウがあれば
SendMessageでファイル引数をchar*として渡す、
という方法でやったのですが
Win98ではうまくいってもWin2000だとうまくいきませんでした。
具体的には、文字がうまく渡されてないようで
表示させてみると変に表示されました。
方法が根本的に間違っているような気がしましたので質問させていただきました。
どうかよろしくおねがいします
0283デフォルトの名無しさん
NGNGメッセージは何を送ったの?
0284デフォルトの名無しさん
NGNG0285248
NGNG0286デフォルトの名無しさん
NGNGNT系では特別に設計されたメッセージ以外は
プロセス境界をまたいでポインタを渡せない。
WM_COPYDATA使え。
0287デフォルトの名無しさん
NGNG9x系だって渡せない
0288デフォルトの名無しさん
NGNGはずだが>>282では何の偶然か渡せてるみたいだな
まあ何の保証もないからどちらにせよWM_COPYDATAを
使うように書き換えたほうがいいな
0289デフォルトの名無しさん
NGNG>使うように書き換えたほうがいいな
どちらもプログラム可能なら苦労しないはず
いっそ一つにまとめれば
そうじゃないんでしょ?
0290デフォルトの名無しさん
NGNG自作のミュージックプレイヤー同士での通信だろ、これ。
0291282
NGNG"WM_COPYDATA"
を使ってさっそく書き換えてみたところ
2000と98で両方確かめましたがどっちもうまく行きました。
>>283-289さん
どうもありがとうございました、ほんとに助かりました。
0292デフォルトの名無しさん
NGNG> もともと起動していたほうのプログラムに渡し、
これだね。288 さんに賛成
0293デフォルトの名無しさん
NGNGちなみに 98 では何のメッセージを送って成功してたの?
0294デフォルトの名無しさん
NGNG0295282
NGNGuint wm_id = RegisterWindowMessage("アプリケーション固有の文字列");
って感じで取得したウィンドウメッセージIDを使ってました。
98でうまくいったのは偶然かもしれないですけどね。
0296デフォルトの名無しさん
NGNG回答ありがとう。
>98でうまくいったのは偶然かもしれないですけどね。
あり得ない、と思うけどねぇ。アドレス空間が別なんだから。
テキスト渡すだけなら、Width と Height がゼロの EDIT かスタティック
に WM_SETTEXT を送るのが簡単。親で通知メッセージを受け取って、その
変化を認識できる。WM_COPYDATA は、テキストに限らずどんなバイトブロック
でも送れるので、一度覚えてしまうと便利だね。
0297デフォルトの名無しさん
NGNG対象アプリの移動やサイズ変更時追従することは出来るようになりま
した。
そこで、使用者に外部アプリによる貼り付けとわからないように、対
象アプリのタイトルバーの真下に表示させたいのですが、ウィンドウ
のタイトルバーの高さはどのようにして得るのでしょうか?
0298297
NGNGGetSystemMetrics( SM_CYCAPTION )
でできました。
0299名無し@沢村
NGNGありがとうございました。
(1) WM_LBUTTONDOWNの処理をした後にも元のウィンドウ関数を呼ぶ
これでやってみたら、ちゃんとなりました。
もうひとつ質問ですが、オーナードローボタンに付けたビットマップの絵柄をボタンが押されたときに描きかえるにはどうしたらいいのですか?
またそのようなことは可能ですか?
0300デフォルトの名無しさん
NGNG元のウィンドウ関数を処理の<前に>呼んで実行しておく。そしてその後
WM_LBUTTONDOWN でビットマップをボタン表面に描く
0301デフォルトの名無しさん
NGNG普通にWM_DRAWITEMの処理の中でビットマップを切り替えればいいのでは。
ボタンが押されている状態かどうかは、BM_GETSTATEを送ればわかる。
0302263
NGNG265さん回答ありがとうございます。やはりマルチスレッド関係を
勉強しなければいけないみたいですね。
ちなみにこの話の元ねたは某SPCプレイヤーのReadmeからです。
0303デフォルトの名無しさん
NGNG上手くいきません。違うアイコンが表示されてしまいます。
// アイテムIDリストを取得
LPITEMIDLISTpidl;
::SHGetSpecialFolderLocation( NULL, CSIDL_DESKTOPDIRECTORY, &pidl );
// イメージリストを作成
HIMAGELIST himagelist;
SHFILEINFO fileinfo;
himagelist = (HIMAGELIST)::SHGetFileInfo( (LPCSTR)pIDList, FILE_ATTRIBUTE_DIRECTORY, &fileinfo, sizeof(SHFILEINFO),
SHGFI_PIDL|SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_SMALLICON|SHGFI_SYSICONINDEX );
m_ImageList.Attach( himagelist );
CTreeCtrl &ctrl = GetTreeCtrl();
ctrl.SetImageList( &m_ImageList, TVSIL_NORMAL );
// ツリービューのルートにデスクトップを追加
TVINSERTSTRUCT TvItem;
TvItem.hParent = ctrl.GetRootItem();
TvItem.hInsertAfter = TVI_ROOT;
TvItem.item.mask = TVIF_CHILDREN|TVIF_TEXT|TVIF_IMAGE;
TvItem.item.pszText = pLabel;
TvItem.item.iImage = fileinfo.iIcon;
ctrl.InsertItem(&TvItem);
こんな感じのコードですけど、どこが悪いのでしょうか?
0304デフォルトの名無しさん
NGNG> 某SPCプレイヤー
アレか...まあいいけど鵜呑みにするのはやめとき。
0305名無し@沢村
NGNGボリュームを上げたり下げたりする方法がわかりません…^^;
またテンポを上げたり下げたりする方法もわかりません。
よくホームページなどでmidiを聞くと、プレイヤーらしきものがホームページの左上についていて、
それを右クリックすると、ボリュームを上げたり下げたり、テンポを上げたり下げたりできるようになっているのですが、
あの機能はどうやって実現するのですか?
0306デフォルトの名無しさん
NGNGるにはどうすればよいのですか?
その時点で他のウィンドウの下にあればそのままの状態でそのウィン
ドウにフォーカスを移したいのですが。
0307デフォルトの名無しさん
NGNGそんな事ができるアプリを今まで見たことある?
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG::MidiOutShortMsg()
::MidiOutLongMsg()
::SetTimeEvent()
で直接制御すればなんでもできるけど、まぁむずいわな・・・
0310デフォルトの名無しさん
NGNG> CSIDL_DESKTOPDIRECTORY
シェルのネームスペースのルートなら
CSIDL_DESKTOP
0311デフォルトの名無しさん
NGNGPowerToysに入ってたXMouse
0312デフォルトの名無しさん
NGNGSetWindowPosでSWP_NOACTIVATEは付けないで
SWP_NOZORDERを付けるとか
0313デフォルトの名無しさん
NGNGそこら辺が良く分からんので漏れはわざわざプログラミングWindowsと
C#によるプログラミングWindowsを両方買ってしまったのだが。
0314デフォルトの名無しさん
NGNGOSの機能に直にアクセスしたくなったりしたら、
その都度必要なAPIをInterop使って呼び出せばいい。
0315デフォルトの名無しさん
NGNGCLR を使ってみれば分かるが、このライブラリはかなり良くできては
いる。その中だけでできることで済む場合は幸せになれる。ちょっと
こみいったことやカスタマイズをしようとするとすぐ限界が見えてくる。
Win アプリを作るなら、API の知識は絶対無駄にはならないと思うよ
0316デフォルトの名無しさん
NGNGるにはどうしたらよいですか?
0317デフォルトの名無しさん
NGNG例えばDLL側に下記のようなクラスがあるとして、
struct A
{
static smartptr< hoge > a;
};
アプリケーションからこの"a"にインスタンスを代入しました。
するとアプリケーション終了時にこの"a"のデストラクターでアクセス違反が
起きてしまうんですが、このような場合はどうすればいいのでしょうか?
0318デフォルトの名無しさん
NGNG0319317
NGNGどういう風に書こうか考えてたら原因がわかりました。
//a.dll
struct A
{
static smartptr< B > a;
};
struct B
{
.....
};
//b.dll
struct C :B
{
static C *createInstance();
};
//app.exe
smartptr< B > ref( C::createInstance() );
てな感じなんで、b.dllはLoadLibraryしてるものなんですが、
デストラクター呼ばれる前に、app終了時FreeLibraryしてるのが原因ですた!
0320デフォルトの名無しさん
NGNGならないというよりも、絶対に必要なものだよ。
0321デフォルトの名無しさん
NGNGそこまで要求されている人ってほとんど居ないと思う
0322デフォルトの名無しさん
NGNGそれはレベルの低いプログラマのはなし
「まともにプログラムを作るのであれば」という前提に注目
0323デフォルトの名無しさん
NGNG意味だと思われ
趣味ならまともに作るヒマがあるだろうけどねぇ・・・
0324デフォルトの名無しさん
NGNGとかいうヨタと同レベルだな
0325デフォルトの名無しさん
NGNGうふっ、今どき「機械語」なんていう?
0326デフォルトの名無しさん
NGNG必要ならやる。それだけ。
0327デフォルトの名無しさん
NGNG動かなかったらいくらかっこいい/高機能でも始まらんから。
で、そういうつぶしていくような作業にはどうしたっていろんな知識が必要でしょ。
APIなんてライブラリーを後ろから支えているわけだし。
0328デフォルトの名無しさん
NGNG思い込みの押し付けカッコワルイ
0329デフォルトの名無しさん
NGNGディレクトリかを判断するには、どのようにすればいいのでしょうか?宜しくお願いします。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG>参考
>MSDN Online
>http://www.microsoft.com/japan/msdn/default.asp
ここにAPIのリファレンスなんてあるんですか?
見つからないのですが。
0332デフォルトの名無しさん
NGNGこのまま無視されて沈んでゆくのかと思ったよ(ワラ
こちらもMSDNで確認しました。
どうもありがとう。
0333デフォルトの名無しさん
NGNG0334331
NGNG嘘ついてんじゃねーぞ、ゴラー!
0335本物の331
NGNG氏ね
0336デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/developer/library/default.asp
の、プラットフォームSDKドキュメント>プラットフォームSDKドキュメント(日本語)
ウィンドウ関連はユーザーインターフェースサービスのウィンドウイングとか
どこに何があるのかサパーリ見当が付かないのもあるので
がんばってほじくりかえせ カス
0337本物の331
NGNGありがとうございました!
0338名無し@沢村
NGNGwindowsにはボタンがありますよね?
ボタンなんですが、大きいボタンと小さいボタンをつくって、
小さいボタンを大きいボタンの上に重ねてつくり、
小さいボタンは押しても常に大きいボタンの上にある状態にしておくことは可能ですか?
また大きいボタンは小さいボタンの下に隠れている部分は押せずに、
見えている部分だけを押すようにすることはどうすればできますか?
0339デフォルトの名無しさん
NGNGそのセンスはどうかと思うが、小さいボタンの親を大きいボタンにすればできる。
0340デフォルトの名無しさん
NGNG出来ないものなのでしょうか。
ほかに何かいい方法があれば教えて欲しいです。
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGソースってどこにあるんでしょうか。
(開発環境はBC++5.5.1です)
0343デフォルトの名無しさん
NGNGあんなもんだと思うが、何が気に入らんのだ?
0345デフォルトの名無しさん
NGNG境界の上のほうや、下のほうにマウスで行くと斜めカーソルに変わって、ドラッグすると
一時的に子ウインドウの高さが変更されて汚くなるんです。
あと、スクロールバーが水平・垂直両方出ると、サイズ変更出来てしまう部分が出てしまったり。
そういうのを回避する方法とかってありますでしょうか?
0346デフォルトの名無しさん
NGNGありがとうございます。
ちょっと見てみます。
0347デフォルトの名無しさん
NGNGWM_NCHITTESTを適切に処理したらどうかね?
0348デフォルトの名無しさん
NGNGありがとうございます。
それもちょっと調べてみます。
0349名無し@沢村
NGNG>小さいボタンの親を大きいボタンにすればできる
う〜ん、それは私のレベルでは難しい…他に方法はないでしょうか?
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG早速ウインドウの作り方がわからずDOSのアプリケーションしか作れません。
Borland C++ Compilerに関数の 解説(Cライブラリのマニュアル?)
みたいものはないんでしょうか?
0352デフォルトの名無しさん
NGNG0353名無し@沢村
NGNGボタンをリージョンにして大きいボタンをポリゴンにして小さいボタンを四角にして並べて、
小さいボタンが大きいボタンの上にか乗っかってるように見せかけるという方法なら私のレベルでもできそうです…。
しかしいままでリージョンのボタンはひとつしか作ったことないですが、
リージョンのボタンをたくさんつくって並べることは可能ですか?
またちょんと押せますか?
この方法でよろしいですか?
0354デフォルトの名無しさん
NGNGサイズを取得したいのですが、どのようにすればよいのでしょうか?
どなたかご指導ください。
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNGWM_GETFONT -> GetObject
0357デフォルトの名無しさん
NGNGなぜSetParent使わないんだよ。
0359John ◆Re0z.4Is5E
NGNGアプリケーションが作りたいのに、
アセンブラの環境しかないのと似てる。
0360デフォルトの名無しさん
NGNG無理。
0362デフォルトの名無しさん
NGNG無理。ATL使ってもいいならAtlAfxWinInit()して
CreateWindow("AtlAxWin", "Shell.Explorer", ...)
でIEコンポが使えるけど。
0363デフォルトの名無しさん
NGNG実は(今は)VB6.0使いなのですが、勉強で
floppyのdumpをとりたい&FileSystemを介さずにかきこむrawrite.exe
の二つのプログラムをかきたいのです。
ところが、VB6.0のFileSystemObject、C言語のfopen(),fprint()など、
すべてWindowsのFileSystemObjectをつかってるわけですよね。
floppyのセクタに直接アクセスできるAPIはないでしょうか?
みなさま、かってなお願いですが、よろしく教えていただけないでしょうか?
0364デフォルトの名無しさん
NGNGそれで、スクロールバーをプログラムで一番下に移動させるために、
エディットボックス内の垂直スクロールバーのハンドルを得たいのですが、うまくいきません。
hChild = GetWindow(hEdit, GW_CHILD);
dwStyle = GetWindowLong(hChild, GWL_STYLE);
while(dwStyle & SBS_VERT == 0){
hChild = GetWindow(hChild, GW_HWNDNEXT);
dwStyle = GetWindowLong(hChild, GWL_STYLE);
}
GetScrollRange(hChild, SB_CTL, NULL, &iMaxPos);
SetScrollPos(hChild, SB_CTL, iMaxPos, TRUE);
こんな感じで作りました。
どなかたか教えてください。お願いします
0365デフォルトの名無しさん
NGNGWM_VSCROLL投げて、wParamにLOWORD(SB_BOTTOM)で良いんじゃない。
0366デフォルトの名無しさん
NGNGCreateFile, ReadFile
0367デフォルトの名無しさん
NGNGDeviceIoControl
0368デフォルトの名無しさん
NGNGEM_SETSELの方が簡単だと思うが。
0371デフォルトの名無しさん
NGNGrawrite.exeのソースを参考に、
ftp://ftp.jp.freebsd.org/pub/FreeBSD/tools/srcs/rawrite/rawrite.c
0372363
NGNG>366さん、367さん
書き忘れていたのですが、これはWindows2000でもつかえますか?
>371さん
以前、勉強に確認したのですが、
中でつかわれているBIOSをいじる関数が
たしかTurbo-Cのだったので、構成だけ参考にしたのです。
どうもありがとうございます。
0373デフォルトの名無しさん
NGNGhttp://ntrawrite.sourceforge.net/
0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNG> 書き忘れていたのですが、これはWindows2000でもつかえますか?
使える。Win9xでは使えないけど。
0377363
NGNG373さんには非常に感謝しております。
いろんなOSで参考になります。
VBでもAPIはつかえます。
今はVBしかもってないので、VBからAPIをつかうしかないのです。
376さんも情報ありがとうございました。
ちかごろ機械に近いところの勉強の必要性を痛感しておりまして、
いろいろとWebでさがしているのですが、FATの説明は海外の方がくわしかったですね。
私も集めた情報をもとにWebページをたちあげたいです。
この課題がおわったら、Formatとpartitionの設定プログラムを作ろうと
かんがえていますが、そのときも、もちろん自分でもしらべますが、
どうしてもわからないときはおしえてください。
それでは、ありがとうございました。
0378名無し@沢村
NGNG>なぜSetParent使わないんだよ。
小ウインドウと親ウインドウの関係だけでもややこしいのに、
そのまた子ウインドウをつくったら、ややこしすぎてフック関数をどう書けばいいか、
混乱してしまって、私の手に負えないからです…^^;
0379デフォルトの名無しさん
NGNGこれ読んだか?
http://www.vector.co.jp/soft/data/prog/se044198.html
0380デフォルトの名無しさん
NGNGNT系が >>366 で 9x系が >>367 だな。
0381デフォルトの名無しさん
NGNGって何さ。
0382名無し@沢村
NGNG0383363
NGNGそこも調べたのですが、
あらためてdownloadしてみて、勘違いしてたことがわかりました。
LFN_TUT.DOCではなく、LFN.TUTをよむのですね。
ちなみにわたしが参考にしたのは、
日本のものでは、
ttp://www.geocities.co.jp/SiliconValley/7773/fs/fat.html
ttp://homepage2.nifty.com/railway_pc/pc_saguru_fd.htm
海外のものでは、
ttp://www.systweak.com/fat32/fat12.htm
ttp://averstak.tripod.com/fatdox/fatintro.htm
では、そろそろこのスレの趣旨にもはんするので、
FAT話はこれでおわりにします。
0384デフォルトの名無しさん
NGNG>趣旨にもはんするので、
そうか?
本家のも見とけ
http://www.microsoft.com/hwdev/hardware/fatgen.asp
0385名無し@沢村
NGNG私は先日大きいボタンと小さいボタンをつくり、小さいボタンを大きいボタンの上に置いて、
ボタンを押してもそのままの状態で見える方法をここでお聞きしたんですよ。
そうしたら、小さいボタンを大きいボタンの子ウインドウにする以外方法はないとの答えでした。
しかし皆様方m私はとても簡単な方法を見つけたのですよ。
それは上になるボタンを初めにつくっておき、
下になるボタンをそのあとつくってそこのCreateWindowでWS_CLIPSIBLINGSを指定するだけでいいんですよ!!
そうしたら、どっちのボタンを押してもボタンの上下関係はそのままの状態になるんですよ。
いやあこんな簡単な方法があったなんて…!!
これで面倒な処理は一切なしにピアノの鍵盤がつくれました!!
皆様方、どうもありがとうございました♪
0386デフォルトの名無しさん
NGNG「解決しますた」しか書かないで消える奴多いからな。
0387デフォルトの名無しさん
NGNG用途が一番気になってたので、わかってよかった。
0388デフォルトの名無しさん
NGNGaccept で取得した socket から
IPアドレスを取得するにはどうすればいいのですか?
0389デフォルトの名無しさん
NGNG標準のボタンコントロールだと離した時に鳴る事になるのでは?
そこまで求めていないのかな?
0390デフォルトの名無しさん
NGNGgetpeername()
0391デフォルトの名無しさん
NGNGそりゃ実装によるだろ。
0392デフォルトの名無しさん
NGNGだれかZオーダー教えてやれよ。
0393388
NGNGレス thx です。
こんな感じでやったら OK ですた
sockaddr_in another_addr;
int len = sizeof(another_addr);
getpeername( s, (sockaddr*)&another_addr, &len );
ShowMessage(AnsiString(inet_ntoa(another_addr.sin_addr)) + "|" + AnsiString(ntohs(another_addr.sin_port)));
0394デフォルトの名無しさん
NGNGログをテキストファイルに出力する部分を別スレッド化したいのですが
具体的にどうして良いのか悩んでいます
一応考えついたのは、メインのスレッドでログをバッファへ溜めていって
出力スレッドはそれをクリティカルセッションで受け取って順次書き出すのかなぁという程度なんですが
それだと出力している間はバッファに書き込めなくなっちゃいますよね?
また、ログバッファに数値型を突っ込んだ場合に文字列に変換するような部分も
できれば別スレッド化したいのですが、これに関してはさっぱりアイデアが浮かびません・・・
何か検索ワードかヒントでも良いので教えて下さい
0395デフォルトの名無しさん
NGNG直後に、転送されたであろうファイルのフルパスをFindFirstFileしても、
その時点ではファイルが見つかりません。Sleep等で待機してみましたが
どうも関数を抜けた後でないとコピーが完了しないみたいなのです。
SHFileOperation処理の完了を待つにはどうしたらよいのでしょうか?
ハンドルは自分のウインドウで、フラグは
FOF_SILENT | FOF_NOCONFIRMMKDIRとしています。
よろしくお願いします。
0396395
NGNG今思ったのですが、ライトキャッシュされているのかも。
でも解決策がわからない・・・
0397デフォルトの名無しさん
NGNGさすがにファイルの存在・内容についてはキャッシュされていようと
一貫性は保たれてるはずだぞ。
ところで395の二行目の「直後」って、いったいどの時点なんだ?
4行目で関数を抜けた後とあるが、ということは抜ける前なのか?
0398395
NGNGint test(〜)
{
int result = ShFileOperation( 〜;
→私の言った直後はここです
}
CopyFile API でもだめでした・・・
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG……ありゃ、ほんとだ。
うちの環境でも再現できますた。
ちと驚き。
0401デフォルトの名無しさん
NGNG>>264-267 >>299-301 あたりだな。結局あれで解決したのか?
0402デフォルトの名無しさん
NGNGマルチスレッド相談室ではWin環境依存な話題はWin32APIスレに書けとあったのですが・・・
0403デフォルトの名無しさん
NGNG俺のWin98SEでは再現できなかった。
0404デフォルトの名無しさん
NGNG0405???
NGNG先月は21万、ネットで稼がせて頂きました�
半信半疑始めたサイトでまさか生活できるとは
思ってなかったから実感があんまりないけど
とにかくうれしい!!!
はっきりいってなめてました
初心者の私もできた
なせばなる�
諦めないこと�
お陰さまで
来月ハワイへいってきま〜す
http://plaza15.mbn.or.jp/~u_club/
0406デフォルトの名無しさん
NGNGFindFirstChangeNotificationでどうよ
0407名無し@沢村
NGNG>標準のボタンコントロールだと離した時に鳴る事になるのでは?
一応サブクラス化して押したときに鳴るようにしています。
で離したときにストリームに書き込むと…。
少し胸を張りたい気分です♪
0408デフォルトの名無しさん
NGNG>ログをテキストファイルに出力する部分を別スレッド化したいのですが
明確な理由が無ければしないほうがよい
>それだと出力している間はバッファに書き込めなくなっちゃいますよね?
クリティカルセクションを使っている場合は、その時点でバッファに
書き込もうとしたスレッドがスリープの状態になるはず、出力している
スレッドがリーブクリティカルセクションした時点でスリープ状態が
解除される。
そもそも、書き込めないようにするためクリティカルセクションを使う
>また、ログバッファに数値型を突っ込んだ場合に文字列に変換する
わるいが何が言いたいのかわからん
0409デフォルトの名無しさん
NGNG>明確な理由
ゲームエンジンのサブクラスなので、ファイルアクセスなどでイチイチ引っかかりたくないのです
そういう理由で
>バッファに書き込もうとしたスレッドがスリープの状態になる
のは困るのですが、うまい回避方法は無いのでしょうか
>>ログバッファに数値型を突っ込んだ場合に文字列に変換する
というのは、現在の実装だと
class ログ管理クラス
{
std::string ログバッファ;
template<class T> ログ管理クラス& operator <<(const T& arg)
{
std::ostringstream 型の違いを吸収してstd::stringにするための一時クラス
一時クラス << arg;
ログバッファ.append(一時クラス.str());
return (*this);
}
};
みたいな事やってるんです
で、operator <<()の部分がボトルネックになりそうだから
ここも別スレッド化できたらなぁという意味でございまする
0410デフォルトの名無しさん
NGNGそんなもんなるかよハゲ。
0411デフォルトの名無しさん
NGNGじゃあそっちはどうでもいいので
ファイルの書き込みを別スレッド化する方法を教えて下さい
もしかしてfopenのたんびに_beginthreadするだけですか?
0412デフォルトの名無しさん
NGNG0413名無し@沢村
NGNGそして本に書いてあるとおりにしたら、動かないのですよ…^^;
本に書いてあるというのは、次のようなことでした。
switch(LOWORD(wParam))
{
case SB_LINERIGHT:
hpos++;SetScrollPos(hScroll,SB_CTL,hpos,TRUE);Debug(hwnd,hpos);
break;
}
つまり、スクロールバーを動かしたとき、hposの値を増やして、それでスクロールバーの位置をセットするというものですが、
何故かスクロールバーは元の位置に戻ってしまうのですが…。
上のプログラムで何か欠けてる部分がありましたら、ご指導の程よろしくお願いいたします。
0414デフォルトの名無しさん
NGNGOutputDebugString 使っておけば?
0415デフォルトの名無しさん
NGNG> >バッファに書き込もうとしたスレッドがスリープの状態になる
> のは困るのですが、うまい回避方法は無いのでしょうか
FIFO とか、リングバッファって知ってるか ?
0416409=394
NGNGFIFOバッファは桁溢れしたら溢れた分を一時待避するようなバッファでしたっけ?
リングバッファはバッファの末尾がバッファの先頭に繋がってるバッファですよね
それを実装しろという事ですか?
バッファがクリティカルにロックされててpushできなかったら
どっかに待避しとけと
わかったようなわからないような・・・
0417デフォルトの名無しさん
NGNGデバグ用のログならこの程度でよいのでは?
書き込み側:
void Log(char* szFormat, ...)
{
char szMessage[MAX_MESSAGE_LEN];
va_list arglist;
va_start( arglist, szFormat );
vsprintf( szMessage, format, arglist );
va_end( arglist );
char* pszMsg = strdup(szMessage);
PostThreadMessage(idThread, MSG_LOG, 0, (LPARAM) pszMsg);
}
受け側スレッド:
FILE* fp=foprn(...);
BOOL bRet;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0 && bRet != -1)
{
switch(msg.message) {
case WM_LOG:
fprintf(fp, "%s", (char*) msg.lParam);
free((char*) msg.lParam);
break;
case WM_QUIT;
return 0;
}
}
0418デフォルトの名無しさん
NGNG> FIFOバッファは桁溢れしたら溢れた分を一時待避するようなバッファでしたっけ?
違う。ググルなりしてちゃんと勉強した方がいい。
ちなみに、リングバッファは FIFO を実現する手段の一つ。
0419デフォルトの名無しさん
NGNGhposをstatic変数にしる。
0420394
NGNG>>バッファに書き込もうとしたスレッドがスリープの状態になる
>のは困るのですが、うまい回避方法は無いのでしょうか
への回答が、つまりFIFOバッファを使えっていう事ですか?
>>417
なるほど、だいたい感じは掴めました
(ofstreamとstringで実装してるのでもうちょっとややこしそうだけど・・・)
0421名無し@沢村
NGNGあなた様、スクロールバーが動かなかった件、めでたく解決いたしました!!
というのもWM_COMMANDでスクロールバーのIDをcase スクロールバーのID:break;としたところ、
突然スクロールバーが動くようになったのであります。
もちろんcase スクロールバーのID:とbreak;の間には何も書いていません。
ただcase スクロールバーのID:とbreak;と書いただけで動くようになったのは実に不思議…?
わけわからん…?
まあしかし動くようになったのでめでたしめでたしであります。
>hposをstatic変数にしる。
それも一案かもしれませんが、またの機会に…。
とにかくあなた様ありがとうございました!!♪
0422デフォルトの名無しさん
NGNG”C:\......exe は有効な Win32 アプリケーションではありません.”
と,言われてしまいます.
大きな配列を定義すると,怒られます.
この計算のために2GBのメモリを積んだPCを使ったのですが
どう考えても2GBも使用されてないと思われます.
Win32アプリケーションにはメモリの制限が何かあるのでしょうか?
また,メモリ2GBをフルに一つのアプリケーションで使うにはどうすればいいのでしょうか?
0423デフォルトの名無しさん
NGNG確か静的には確保できる上限があった記憶。
メモリを動的に確保してみてください。
0424デフォルトの名無しさん
NGNG積んであるメモリを全部アプリで使う?
簡単だろ。OSの機能を全てアプリに入れてしまえばいい。
そうすれば全てのメモリはお前のものだ。
0425デフォルトの名無しさん
NGNG自分自身のアイコンを書き換えるのはリソース書き換え以外には
方法無いんでしょうか?
0426デフォルトの名無しさん
NGNG自分のアイコンだけを変えたいということ?
シェル拡張用DLL(アイコンハンドラ)を作ればできるかもしれないが...
普通はできないと思った方がいいな。
0427デフォルトの名無しさん
NGNGGetModuleFileNameで自分自身のフルパスを取得し、
DeleteFileをやってみましたが、アクセスを拒否されます。
自分自身を削除する実行ファイルを作るには、
どうしたらいいでしょうか?
0428デフォルトの名無しさん
NGNGムリでしょ。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG一般的なアンインストーラはどうやって
自分自身を消しているのでしょうか?
0431デフォルトの名無しさん
NGNG削除ツール専用の自分削除プロセスを立ち上げるんじゃないの?
それ自身はワケワカラントコロにインストールしておいて。
0432デフォルトの名無しさん
NGNG自分をTEMPフォルダ等にコピーして起動
元の自分自身を削除
WININIT.INI(9x系)かMoveFileEx(NT系)でTEMPの自分を消す
かな。
他にはバッチファイルを吐き出して実行とか
アンインストールはinfファイルで起動するとか
0433デフォルトの名無しさん
NGNG最新Windowsプログラミングテクニック
という本にそんな話題が載ってたなぁ
0434デフォルトの名無しさん
NGNGXPで試したところ、
MoveFileExで逝けました。ありがとうございます。
0435427
NGNG0436デフォルトの名無しさん
NGNG表示させるAPIってなんでしたっけ。
リモートデバッグとして使うように紹介されてた記憶があるのですが。
記憶違いですかね。
0437デフォルトの名無しさん
NGNGAPIは知らんけど、
NT系にはMessengerサービスが走ってるから、
net send でメッセージを送れる。
0438デフォルトの名無しさん
NGNGNetMessageBufferSendのこと?
0439436
NGNGかなり早いレスにびっくりです。
まだ、はっきりとわからないけど
NetMessageBufferSend
だと思います。
net send も遊んでみました。
どうも
ありがとうございました。
0440425
NGNG0441デフォルトの名無しさん
NGNG> む〜、DelphiのTIconとかどーなってるんだ(;´Д`)
Delphi でも TApplication のアイコンはリソース(*.res) となっていて
exe に取り込まれてる。>>425 の問題は、リソース書き換えればいいのでは?
もちろん、リソースには複数のアイコンをいれられるよ。エクスプローラに
表示されるのは最初のやつなのかな。
0442デフォルトの名無しさん
NGNG皆さんWinアプリを作成する場合にどのように作成していますか?
コンポーネント化とやらを行って拡張性の高いアプリケーションを
作成したくなったのですが、いまいち道が見えません。
現状の自分のレベルとしては
1:WinMainから始まるような通常のアプリケーションは作成できる。
2:C++はそれなりにわかる。
3:超単純な独自インターフェイスのCOMコンポーネントは一応作成できる。
4:ActiveXはよくわかっていない。
5:ATLはよくわかっていない。
6:.NETとやらはこれから勉強する。
VS.NETはほとんど触ってない、VC++6.0とUI違いすぎでいまいちわからんです(^^;)
0443442
NGNGとりあえず考えているのはMDIアプリ風で外側のフレームだけ通常のWinMainのexeにして
実装等はすべてコンポーネント化したいのです。
イメージ的にはMicrosoftWebBrowser(IWebBrowserとか持ってこれるやつ)
みたいにある程度コンポーネント単体でほぼ実装が完結されているような
ものを作成していきたいのです。
そこでこれからのどの道に進んでいけばよいのかわからなくなっています。
今考えているのは
1:ActiveXを自力で作成する勉強をはじめる。
既存のインターフェイス(IOleXXですかね?)から派生してC++でゴリゴリ書く。
2:ATLを勉強してActiveXを作成する。
3:.NETを勉強する。
4:その他?
0444442
NGNG上記4つの方法についていろいろ悩んでいます。
疑問1:ActiveXはもう時代遅れなのだろうか?
これからは.NETというものが主流?
疑問2:ActiveXを自力で作成するのは無意味?
勉強にはいいかもしれないけど、普通はATLで作成するもの?
疑問3:ATLはもう時代遅れなのだろうか?(.NET?)
疑問4:.NETとやらはちゃんと主流になるのか?
(なんかいまいち普及してない感じがしてますが)
疑問5:それいぜんにActiveX、ATL、.NETのどれも普及していない?
どのような道を進むべきか皆さんのご意見をご教授願います。
0445デフォルトの名無しさん
NGNG以下に、あおりでも荒らしでもなく、まじめに答えるつもりです。
是非、Delphi をお試しください。簡単な WebBrowser なら
人にもよりますが、入門して1週間で作れるようになります。
また、将来、来年 .NET にも対応する予定です。C#.NET への
移行も言語やライブラリの構造が似ているため簡単です。
Delphi と C++ と C# ユーザからのアドバイスです。
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG追加しますと、Delphi では API レベルの細かなカスタマイズも簡単ですし、
たとえば MDI にもプロパティーをひとつ変更することです容易に対応できます
し、タブコントロールなどのコンポーネントも豊富にありますし、Delphi 自体で
コンポネントを作成して拡張できますし、ActiveX の取り込みもできます。
0448デフォルトの名無しさん
NGNG部品を他のプログラムからも利用したい
→VB、ATL、MFC、etc…汎用を目指す
→ActiveX
→Borland開発環境に限定してOK
→VCLコンポーネント
→C#、VB.NET、etc…マネージド言語から使えればいい
→.NETコンポーネント
→静的リンクできればそれでいい
→単にC++のクラスとして作る
えとせとら
0449デフォルトの名無しさん
NGNG検索はかけましたが相応しくないかもしれません。その際はご容赦ください。
最近フルカラー640*480で、D3DもDirectDrawも使わないのに高速半透明をするゲームが増えてきました
半透明というとDIBで1ドットずつ計算くらいしか思いつかないのですが、
こんな方法ではろくなスピードがでません(実際作りました)
あのゲームたちはどのような方法を使っているのでしょうか
VRAMを直接いじる方法は存在しなかったと思いますが…。
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNGええ、もちろんです
CreateDIBSectionで関連づけて
ついでに透明度を256段階と決めて、1バイトでの混ぜ合わせテーブルをつくりました
120と64を、透明度128でまぜあわせたら92 などのテーブルです
3バイトの混ぜ合わせテーブルはつくるの不可能ですから…。
それを使ってforループでまわして書き換え
でもこれではそんなにスピードでないんですよ…
0452デフォルトの名無しさん
NGNGGDI+ ライブラリをつかってアルファブレンドしてるとか
0453442
NGNG>>445
>>447
Delphiに関してはまったく知識がないのですが、
どちらかというとコンポーネントを
「使う」のではなく「作る(再利用可能&汎用性あり)」方が主な目的です。
Delphiで作成したコンポーネントをVCに取り込むことは可能でしょうか?
>>448
>→VB、ATL、MFC、etc…汎用を目指す
目的としては汎用的なコンポーネントを目指したいなと考えています。
ActiveXが有力候補でしょうか?
ActiveXはやはりATLで作成するのが普通なのでしょうか?
>Borland開発環境に限定してOK
出来ればVC等MS系開発環境でも使用できる方がいいと考えています。
>→C#、VB.NET、etc…マネージド言語から使えればいい
現状マネージド言語(すいませんまだあまり理解していません)を使用している人が
自分の周りにいないので、普及度とかがよくわからないのですが・・・・
今後はその方向にむかっていくのでしょうか・・・
>→静的リンクできればそれでいい
一応動的なものを考えています。
0454デフォルトの名無しさん
NGNGそれはできません。ActiveX にすると良いのかも知れませんが面倒です。
Delphi のなかで使うのならラクチンですけど。
>> 出来ればVC等MS系開発環境でも使用できる方がいいと考えています。
こういう場合は、Delphi をおすすめいたしません。
しかし、言語や開発環境は道具です。良いものをなるべく容易に迅速に
つくれるのなら、道具にこだわるべきではないとも思うんですが。
0455デフォルトの名無しさん
NGNG> 今後はその方向にむかっていくのでしょうか・・・
これはいまのところ誰にもわからないのではないでしょうか。
もし、否定/肯定いずれでも断言する方がいたとしても
現状では信じない方が無難です。
0456デフォルトの名無しさん
NGNG一応DelphiでもActiveXは作れるので、その機能を用いて
ラッパーを一枚噛ませればできますけどね。
でも、素直にATLの方がいいかも(って僕はATL知りませんけれど)
作ったコンポーネントを、どういう風に活用するつもりですか?
それがわかれば絞れるかも。
0457デフォルトの名無しさん
NGNG単にお前がヘボなだけ
0458名無し@沢村
NGNG初歩的なところでつまずいているのでぜひ教えてください♪
それはmidiファイルに保存するとき、音色指定で、
32 の Guitar harmonics まではプレイヤーで聞いてみると音が出るのですが、
33 の Acoustic Bass 以降の音は出ないのですよ。
バイナリエディタで開いてみると、33 の Acoustic Bass 以降の音を指定した場合、
どうもファイルがこわれているようなのですよ…?
皆様方、これは一体どういうことなのでしょうか?
32 の Guitar harmonics までと33 の Acoustic Bass 以降とでは音色の指定の仕方が違うのでしょうか?
ちなみにMidiOutShortMessageでは同じように指定して同じように音が出るのですが…?
ぜひ教えてください!!
0459デフォルトの名無しさん
NGNGゲームは画像ファイルにアルファデータくっついてることが多いので
>>449が言ってるゲームもアルファ合成じゃないかと思います。
んで、以前アルファデータについて検索かけたとき
intelのパフォーマンスライブラリ(Image Processing Library)が引っかかりました。
http://www.intel.co.jp/jp/developer/software/products/perflib/ipl/index.htm
intelがMMX以降のPentium系CPUの実力を発揮させるために作ったライブラリのようです。
これ使ってみてはどうでしょう?
現在、本家英語サイトはIPPβ3.0に吸収されたようでIPLのページがありませんでした。
0460デフォルトの名無しさん
NGNGへぼいのでこの程度の方法しか思いつかないのです。
よろしかったらご教授をお願いいたします。
ループ部分をアセンブラで書くことによって、1.5倍程度の処理速度UPはできましたが、
それでもゲームでリアルタイムに使うのはきつかったです。
>>459
αデータつきの画像というと、DDSなどのD3D用画像が思いつきます。
でもとりあえずWin32APIにはαブレンディング合成の関数は存在しませんよね。
おもしろいライブラリを教えていただきありがとうございます。
Intel系PCのみの動作となっていますが、研究する価値はありそうですね。
近くまとまった休みがとれたら使用して報告させていただきます。
<->
自前で高速αブレンディング合成を作成された方、アルゴリズムをご存知の方、解説サイトを
ご存知の方がいらっしゃいましたらご一報くださると幸いです。
0461デフォルトの名無しさん
NGNG大変申し訳ありません。
GDIにAlphaBlend()という関数が存在するのですね。
Win98以降のみサポートだそうです。
抜き色転送もめんどうなBitBltくらいしかないので、そんなものはあるはずないと
決め付けておりました。
近く実験を行い報告させていただくことでおわびとさせていただこうと思います
スレ汚し失礼いたしました
0462デフォルトの名無しさん
NGNG結局内部ではCPUでシコシコやってんじゃないの?
俺もDIBで32ビット処理とか一応やってるけどMMX使うくらいしか思いつかないな。
アセンブラで組んでるとこにMMXまだ使ってないのなら適用してみれ。
実験するんなら事後報告よろしく>>461
0463デフォルトの名無しさん
NGNGメインスレッドからPostThreadMessageして
ワーカースレッドでGetMessageする場合
ワーカースレッドをコールバック関数にしたりする必要ありますか?
あとワーカースレッドにメッセージキューを実装しなければならない
というようなことがMSDNに書かれていたのですが
具体的にどういう事なんでしょうか?
0464デフォルトの名無しさん
NGNGDelphi氏ランなら
BorlandC++Builder使ったら?
言語がC++だから
簡単に入れると思うよ。
>DIBで重い言ってる
バックバッファとしてDIB作って
普通にCでソフトウエアレンダリングして
それをBitBltしてるだけでも、結構な速度が出ますよ。
そりゃSIMD使うともっと速くなるけど。
普通に640x480 8bit で、
画面全体を塗りつぶすだけ
for(i=0;i<(640*480);i++)p[i]=255; // わざと遅く書いた。
で
余裕で60fps切るようだったら、DIB生成かBitBltあたりに何か問題があると思う。
0465デフォルトの名無しさん
NGNG8bitならかなり速いです。
あらかじめ合成用のテーブル持てるし。
問題は16や32なわけでして
早く家に帰ってためしたいです。はい…
0466デフォルトの名無しさん
NGNG> 使ったことないから知らんけどAlphaBlend()つっても
> 結局内部ではCPUでシコシコやってんじゃないの?
アクセラレーションが有効ならドライバが直に実行するんでない?
0467名無し@沢村
NGNG初歩的なところでつまずいているのでぜひ教えてください♪
それはmidiファイルに保存するとき、音色指定で、
32 の Guitar harmonics まではプレイヤーで聞いてみると音が出るのですが、
33 の Acoustic Bass 以降の音は出ないのですよ。
バイナリエディタで開いてみると、33 の Acoustic Bass 以降の音を指定した場合、
どうもファイルがこわれているようなのですよ…?
皆様方、これは一体どういうことなのでしょうか?
32 の Guitar harmonics までと33 の Acoustic Bass 以降とでは音色の指定の仕方が違うのでしょうか?
ちなみにMidiOutShortMessageでは同じように指定して同じように音が出るのですが…?
ぜひ教えてください!!
0468デフォルトの名無しさん
NGNG音源はなに?
0469デフォルトの名無しさん
NGNG0470名無し@沢村
NGNG板違い ではありませんぞ。
素で音色をならすときは、WinAPIのMidiOutShortMessageを使ってますし、
ファイルに書き込むときは、同じくWinAPIのWrightFileを使ってますから…。
>>468
それが私は音源にうとく、音源が何かはわからないのですよ…。
ただファイルが壊れることと、音源とはあまり関係なさそうに思うのですが…。
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGCDの自動再生機能でhtmlを表示したいのですが、
「標準のブラウザ」で開くにはどうすればいいのでしょうか?
open=IEXPLORE.EXE ***
ではネスケ等に対応できません。
ShellExecute()させるだけの実行ファイルを作るといのが考えられますが。
ヨロシコ
0473デフォルトの名無しさん
NGNG試してみたいけど過去スレに実質WinMe/2000以降限定とか書いてあるから
俺の環境じゃ試せねー。
まあ実際問題としてOS限定するなら使いづらいAPIだな。少なくとも俺は使いたくない。
0474名無し@沢村
NGNGそう、わかった部分だけでとりあえずつくって、新しいことがわかるたびに機能をつけたす。
0475デフォルトの名無しさん
NGNG俺は必要になったら使うだろうなあ。
家のPC、2000とXPだし。
0476デフォルトの名無しさん
NGNGopen=rundll32.exe url.dll,FileProtocolHandler index.html
0478名無し@沢村
NGNG初歩的なところでつまずいているのでぜひ教えてください♪
それはmidiファイルに保存するとき、音色指定で、
32 の Guitar harmonics まではプレイヤーで聞いてみると音が出るのですが、
33 の Acoustic Bass 以降の音は出ないのですよ。
バイナリエディタで開いてみると、33 の Acoustic Bass 以降の音を指定した場合、
どうもファイルがこわれているようなのですよ…?
皆様方、これは一体どういうことなのでしょうか?
32 の Guitar harmonics までと33 の Acoustic Bass 以降とでは音色の指定の仕方が違うのでしょうか?
ちなみにMidiOutShortMessageでは同じように指定して同じように音が出るのですが…?
ぜひ教えてください!!
0479デフォルトの名無しさん
NGNG> 皆様方、これは一体どういうことなのでしょうか?
ファイルが壊れているのなら、MIDIうんぬんではなく
ファイル(またはメモリ)操作にバグがあるということでしょ。
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG素直にやねうらお氏のWebページか書籍を読むべし。
0482デフォルトの名無しさん
NGNGいいかげんにコピペやめれ
0483デフォルトの名無しさん
NGNGHDD,CD-ROM、リムーバブルなどです。
ボリューム名の取得ならわかるのですが。。。
0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNGいいのでしょうか?
長時間何も入力がなくても画像を提示し続けるプログラムを作りたいのですが。
SystemParametersInfo() の SPI_SETPOWEROFFACTIVE を試してみたら
正常終了したという返事が返ってくるにも拘わらず電源は切れてしまいます。
これはうちのマシンだけの現象なのでしょうか?
どなたか教えてください。環境はWindows98および2000です。
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNGWin98ならレジストリのHKEY_LOCAL_MACHINE\Enum辺りに記録してある。
あとSCSIならInquiryコマンド使うとか。
0488デフォルトの名無しさん
NGNGエクスプローラで表示されてるものと同じものが得たいならSHGetFileInfo()
0489デフォルトの名無しさん
NGNG例えば、winuser.hの以下の部分。
WINUSERAPI HWND WINAPI CreateWindowExA(…);
WINUSERAPI HWND WINAPI CreateWindowExW(…);
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif // !UNICODE
なぜ、#defineでやってしまうのでしょうか?こうすると
MyClass::CreateWindowEx(…);
などがまともにコンパイルされないではありませんか!
これをせめて
WINUSERAPI HWND WINAPI CreateWindowEx(…)
{
#ifdef UNICODE
return CreateWindowExW(…);
#else
return CreateWindowExA(…);
#endif // !UNICODE
}
等とやってくれればまだ使い物になると思うのですが、どうでしょう?
このようなヘッダがどこかに存在するということはないでしょうか?
0490デフォルトの名無しさん
NGNGとりあえず引数も正確に書いてみろや。
0491デフォルトの名無しさん
NGNGハア?
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG> ハア?
とか言ってる暇合ったら、>>490 の言うように CreateWindowExW() と CreateWindowExA() の引数の型をちゃんと書いてみなよ。
あんたの書いてる CreateWindowEx() の引数をどうすればいいか悩むと思うから。
0494デフォルトの名無しさん
NGNGハア?
WINUSERAPI HWND WINAPI CreateWindowEx(
#ifdef UNICODE
…
#else
…
#endif
)
{
…
}
0495デフォルトの名無しさん
NGNGハア?
WINUSERAPI HWND WINAPI CreateWindowEx(
DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName,
DWORD dwStyle, int X, int Y, int nWidth, int nHeight,
HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
{
…
}
0496デフォルトの名無しさん
NGNGlccやmingwのヘッダはそうなってるけど
それだと#define UNICODEして明示的にANSI版を呼び出したいとき
(あるいはその逆)ではまる罠
0497デフォルトの名無しさん
NGNG> (あるいはその逆)ではまる罠
CreateWindowExWかCreateWindowExAを呼べばいいだけ。
0498デフォルトの名無しさん
NGNGププッ、やっとわかったか。
で、あんたの方法だとラップ関数を経由するから、それが嫌だったんだろ。
0499デフォルトの名無しさん
NGNG実体はLibファイルにでも入れて、それを切り換える方がいいかも。
0500デフォルトの名無しさん
NGNG> ププッ、やっとわかったか。
( ´,_ゝ`) プッ
自分の勘違いは素直に認めた方がいいよ。
0501デフォルトの名無しさん
NGNG> 自分の勘違いは素直に認めた方がいいよ。
それ >>494 に言ってんの ?
>>489 で引数書かなかったのは、不問にしても、>>490 に対して「ハァ?」って返した時点で、勝負決まったと思うけどね。
慌てて、>>494 書いたかと思ったら、逆切れですか ?
0502494
NGNG省略した引数の部分を書いてみろと言われたので
書きましたが、それがどうかしました?
で、書いたはいいが、その後はどうなったんでしょう。
是非ともアドバイスを承りたいんですが。
0503489 ◆CPP8mJMMbA
NGNG>>492
そうなんですよ。せめて#defineじゃなければ名前空間を分けて衝突は避けられるんですけど。
>>494-495
私も最初は全てそのように書き換えようと考えました。それこそ全てのヘッダまで。
定数の#defineも含めて。ただ、そこまでの労力が…
かと言ってその場で必要なものだけ宣言しなおすのも癪でして(^^;
>>496さんが仰っている状況に関しては、私も>>497さんのような解決方法でよいと思います。
lccやmingwからヘッダだけ抜き出して他の環境で、ってのはアリなんでしょうか?
>>499
確かにヘッダに定義を入れるのは気持ち悪いところですが…
0504デフォルトの名無しさん
NGNG> 省略した引数の部分を書いてみろと言われたので
> 書きましたが、それがどうかしました?
で、>>491 はどうなったん ? 都合の悪いところは、無視ですか ?
> で、書いたはいいが、その後はどうなったんでしょう。
> 是非ともアドバイスを承りたいんですが。
>>498 で、デメリット書いてますが必死すぎて見えてないのね。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG反論できなくなった時の、逃げ口上...
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNGププッ、それしか書けないんならもうやめたら ? ちょっとカッコ悪いよ。
それとも、>>504 に対してなんか言うことある ?
0509494
NGNG491って何の話ですか? 私は494ですが491ではありません。
> >>498 で、デメリット書いてますが必死すぎて見えてないのね
↓これのことですかね。
> で、あんたの方法だとラップ関数を経由するから、それが嫌だったんだろ。
必死以前に、これは
省略した引数をすべて書いてみることと
何のつながりがあるんでしょう?
引数を書けと言った意味がまずわからないのですが。
それと、「ラップ関数を経由するから嫌」なんて
質問者さんはそんな事書いてませんよね。
勝手に妄想されたのでしょうか?
納得のいくアドバイスをお願いします。
0510デフォルトの名無しさん
NGNGえ?
0511デフォルトの名無しさん
NGNG0512494
NGNGあれ? 意味が伝わりにくかったでしょうか。
まずは「引数を省略せずに書いてみる」というアドバイスに
どういう狙いがあったのかを教えてください。お願いします。
ちなみに >>493では
> あんたの書いてる CreateWindowEx() の引数をどうすればいいか悩むと思うから。
とありますが、どの辺で悩んでいいのかわかりませんでした。
0513デフォルトの名無しさん
NGNGPen3 850MHz Win2kによる実験ができましたので、報告させていただきます。
世の中に計測ページは沢山ありますけどね(^^;
・24bitBMP
・1〜3はCreateDIBSectionで領域を確保。全て640*480
・4はmallocで領域を確保
・5はCreateCompatibleBitmapで領域確保
<1>
BitBltで背景を描画
テーブルを参照して半透明画像を重ねあわせ
透明色指定に基づき、1ドットずつ色を調べて指定されたものなら転送しない
(今回は指定しておいたものの、画像内にその色は一度もでてきません)
<2>
1の透明色指定できないバージョン(if文がない分だけ速い)
0514デフォルトの名無しさん
NGNG<3>
BitBltで背景を描画
画像重ね合わせのところをアセンブラで
テーブル参照ではなく、素直に計算する
<4>
memcpyで背景転送
画像重ね合わせのところをアセンブラで
テーブル参照ではなく、素直に計算する
<5>
BitBltで背景を描画
画像重ね合わせのところをAlphaBlendで
<1>21.085ms
<2>20.187ms
<3>13.417ms
<4>13.691ms
<5>速すぎ
何度やっても4のほうが3より遅い。
純粋にメモリー書きかえしかしていない4の方が早そうなものなんですが…。
0515デフォルトの名無しさん
NGNGかなり参考になりますね。
でもちょっと気になったことがひとつ。
やねうらお氏がさらりと
>16bpp(RGB555,565)の半透明(α3bit)でWORDテーブル持ってます。
>だもんで、半透明もバリバリ速いです。(16bppのときだけ^^;)
とおっしゃっているのですが、意図するところが読めないのです。
馬鹿な私は即座に
((1 + 65536) * 65536 / 2)通りのテーブルなんて持てるわけねぇ(;´Д`)
と思ってしまったのですが、やねうらお氏の言うテーブルとはどんなものなのでしょう。
目を通しても「テーブルを持っています」としか書かれていなかったので…。
思いつくものがあったら、教えていただけると嬉しいです。
0516デフォルトの名無しさん
NGNG> 491って何の話ですか? 私は494ですが491ではありません。
あっそ、まあどうとでも言えるから。違うって言うなら、一応そう思っとくよ。
> 引数を書けと言った意味がまずわからないのですが。
>>489 は、少なくとも CreateWindowExA() と CreateWindowExW() の引数の違いは考慮してないから、それを考慮しなよ。って言う意味だよ。
> それと、「ラップ関数を経由するから嫌」なんて
> 質問者さんはそんな事書いてませんよね。
だって気付いていさなそうだからね。
> 勝手に妄想されたのでしょうか?
妄想 ? 具体的なデメリットがわかってないの ?
0517デフォルトの名無しさん
NGNGいやだからLPTSTRとかがLPWSTRとかに展開されちゃっててはまるの
説明めんどくさいからどうでもいいや
0518494
NGNG> >>489 は、少なくとも CreateWindowExA() と CreateWindowExW()
の引数の違いは考慮
> してないから、それを考慮しなよ。って言う意味だよ。
考慮していないのでなく、重要でないから
省略しただけとかもしれませんよね。
まあ仮に考慮してなかったとしましょう。
アドバイスの通りそれを考慮して書いてみました。
で、結局どんな進展があったのでしょうか?
ラップ関数を経由する話とどうつながっていくのでしょう?
> 妄想 ? 具体的なデメリットがわかってないの ?
妄想と書いたのはラップ関数のデメリットの話ではなく、
そのような意図の質問ではないということです。
同じことを書きますが、
> で、あんたの方法だとラップ関数を経由するから、それが嫌だったんだろ。
質問者は名前の衝突等を気にしているのであって
「ラップ関数を経由するから、それが嫌」なんてことは
書いていませんね。妄想でしょうか?
0519デフォルトの名無しさん
NGNG> だって気付いていさなそうだからね。
お前、言ってることがハチャメチャだぞ
0520デフォルトの名無しさん
NGNG> 考慮していないのでなく、重要でないから
> 省略しただけとかもしれませんよね。
それがダメだって言ってるの。まだわからない ?
> で、結局どんな進展があったのでしょうか?
> ラップ関数を経由する話とどうつながっていくのでしょう?
一つヒントをあげよう。
引数が違うと言うことは、別の関数が必要と言うことだよ。
> 質問者は名前の衝突等を気にしているのであって
> 「ラップ関数を経由するから、それが嫌」なんてことは
> 書いていませんね。妄想でしょうか?
あんた、ヴァカじゃないの ?
衝突を気にするからと言って、>>489 みたいなこと (=ラップ関数を作る) やると、余計面倒だ (=デメリットがある) 。って言ってんだよ。
>>489 が書いてないのは、気付いてないからだと思うよ。
で、デメリットはわかったの ? それとも、>>494 みたいに書けば全て解決と思ってるの ?
0521デフォルトの名無しさん
NGNG0522489 ◆CPP8mJMMbA
NGNGあっ、確かに…もっと手前の方で#ifdefとtypedefを山ほどかまして何とかなりませんかねぇ…
他にもラップ関数を使った場合には、
・ヘッダ内に関数定義が入る
・関数呼び出しオーバーヘッドがかかる(インラインじゃだめかなぁ)
・引数の違う場合、違いの吸収が面倒くさい
って感じになるんでしょうか。(他にも思いついたら列挙お願いします)
このくらいの範囲ではデメリットを考えましたが、後はそれと名前の衝突を
天秤にかけるしかないですかね…
0523494
NGNG> 一つヒントをあげよう。
> 引数が違うと言うことは、別の関数が必要と言うことだよ。
実体が2つ必要になるが同じ関数名では実体を2つは
作れないということでしょうか?
が、それだと引数を書かせることとは関係がないので
外れですかね?
ちょっとわからないのでヒントでなく具体的に
教えていただけないでしょうか。
> で、デメリットはわかったの ?
> それとも、>>494 みたいに書けば全て解決と思ってるの ?
デメリットは承知しているつもりです。
が、何度も言ってるように、その話をしているわけではありません。
> >>489 が書いてないのは、気付いてないからだと思うよ。
そうですか。ということは、上で書かれた
> で、あんたの方法だとラップ関数を経由するから、それが嫌だったんだろ。
というのは妄想だったということでよろしいですね。
0524493
NGNG> 他にもラップ関数を使った場合には、
と言うか、CreateWindowExA() と CreateWindowExW() の引数が違うと言うことは、ラップ関数の引数も必然的に変える必要があると言うこと。
つまり、ラップ関数も二種類持つしかない。で、
> ・ヘッダ内に関数定義が入る
と言うのが一番問題だと思う。
CreateWindowEx() をグローバルにすると当然複数ファイルにインクルードされたら二重定義になるし、static にすると、実体を複数個持つこととなる。
CreateWindowEx() だけならまだいいかもしれないけど、他にも色々あるしね。
まあ、メモリーも安いからそれでもいいやって言う人もいるかもしれないけど、あまり誉められた設計じゃないよね。
ちなみに、もし CreateWindowExA() と CreateWindowExW() の引数が同一なら、その関数はライブラリに入れて、実行時に CreateWindowExA() か CreateWindowExW() に振り分けることもできる。
だから、引数が同一かどうかはかなり重要。
0525493
NGNG> 実体が2つ必要になるが同じ関数名では実体を2つは
> 作れないということでしょうか?
> が、それだと引数を書かせることとは関係がないので
> 外れですかね?
引数が一緒だったら、ラップ関数の実体は一つにする (=ライブラリに入れておく) ことができるよ。
そんなこともわからないの ?
0526489 ◆CPP8mJMMbA
NGNG「C++向けに#defineを極限まで減らしたヘッダ激しくキボンヌ( ゚ρ゚)」
とでも要望出してみるかなぁ…
無視されるだろうなぁ…MSだし…
0527デフォルトの名無しさん
NGNG自分で書くという発想は無いのですか ?
0528494
NGNG> 引数が一緒だったら、ラップ関数の実体は一つにする (=ライブラリに入れておく) ことができるよ。
すみませんが、意味がよくわかりません。
名前も引数も同じ関数の実体を1つにできるんでしょうか?
(ちなみに、私が書いた実体というのはライブラリ単位の
話ではありません)
0529リバーコントロール?
NGNGツールバー"ToolbarWindow32"(hwnd_tool)、ボタン"BUTTON"(hwnd_ok)、それぞれの為の帯を2本用意しました。
ボタンは帯のサイズで自動的にサイズ変更されます。
(帯サイズに合わせられる用にコードしておいたからです)
これはこのままでイイのですが(変えたくなったら帯サイズを変えるつもりです)、
ツールバーのサイズは自動的にサイズ変更されることはありません。
ということで、帯をツールバーのサイズにあわせようと思います。
で、試したソースの一部です
REBARBANDINFO rebarbandinfo = { 0 };
memset( &rebarbandinfo, 0x00, sizeof( REBARBANDINFO ) );
rebarbandinfo.cbSize = sizeof( REBARBANDINFO );
rebarbandinfo.fMask = RBBIM_STYLE | RBBIM_CHILD;
rebarbandinfo.fStyle = RBBS_BREAK | RBBS_GRIPPERALWAYS;
rebarbandinfo.hwndChild = hwnd_tool;
RebarBandCreateIndirect( -1, &rebarbandinfo );
// ↑RB_INSERTBAND を SendMessage しているだけの自作関数です
memset( &rebarbandinfo, 0x00, sizeof( REBARBANDINFO ) );
rebarbandinfo.cbSize = sizeof( REBARBANDINFO );
rebarbandinfo.fMask = RBBIM_STYLE | RBBIM_CHILD;
rebarbandinfo.fStyle = RBBS_BREAK | RBBS_GRIPPERALWAYS;
rebarbandinfo.hwndChild = hwnd_ok;
RebarBandCreateIndirect( -1, &rebarbandinfo );
// ↑RB_INSERTBAND を SendMessage しているだけの自作関数です
0530リバーコントロール?
NGNGこれではレバー帯が2本ともまったく表示されません。
どちらか片方の帯に マスク RBBIM_CHILDSIZE と rebarbandinfo.cyMinChild = xx を足すと2本とも表示されました。
しかし、ツールバー帯のサイズが合わなくて困ってます。
同様に両方に足した場合、帯のサイズはどちらも最初に指定した帯の方のサイズになってしまいます。
こっちは更に問題で、ボタンが帯のサイズと合ってくれません。
そこで質問です。
�@帯を2本用意したときに、サイズをそれぞれ別管理できますか?
�Aツールバーのサイズに合わせて帯サイズを変更する方法はありますか?
�Bツールバーボタンのサイズを得る方法はありますか?
0531デフォルトの名無しさん
NGNG>>524 は、見てくれてる ?
> 名前も引数も同じ関数の実体を1つにできるんでしょうか?
名前も引数も同じなら、実体は一つでいいでしょ ?
もちろん機能が違うから、内部で実行時に振り分ける必要があるけどね。
でも、実体が一つでいいということはライブラリに入れることができるから、>>524 に書いた「ヘッダ内に関数定義が入る弊害」を避けることができる。
また、lcc とかは、引数の型の定義変えることでヘッダファイル上は同一に見せてるけど、これも実体は一つにはできない。
更に、>>517 の問題もあるしね。
とにかく、>>526 もそうだけど、一度実装してみればいろいろわかっていいと思うよ。
マイクロソフトの技術者だってヴァカじゃないんだからさ。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG指定された座標のピクセルの RGB(赤、緑、青)値を取得します。
COLORREF GetPixel(
HDC hdc, // デバイスコンテキストのハンドル
int nXPos, // ピクセルの x 座標
int nYPos // ピクセルの y 座標
);
0535533
NGNG0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNGスレッドが実行している関数内部で一切メッセージにタッチしてなくても
WM_QUITが来ると勝手に閉じちゃったりするんですか?
ウィンドウプロシージャでESCが押されたか判断して終了するプログラムなんですが
ESCが押された時点でスレッドから応答が無くなるのか、ビジー状態でフリーズしてしまいます
コードの流れは以下のような感じ
_beginthreadex
CreateWindowEx
message loop
{
//WM_QUITが来たらbreak
do something
}
//ここでフリーズ(WaitForSingleObjectまで到達していないのに...)
いろいろ終了処理
WaitForSingleObject
CloseHandle
return 0;
0538デフォルトの名無しさん
NGNG> WM_QUITが来ると勝手に閉じちゃったりするんですか?
んなこたあない。
ところでこれは別スレッドでCreateWindowしてるの?
よくわからない。
0539デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/win/1021192107/
0540デフォルトの名無しさん
NGNGたぶん標準の機能では出来ない。
『Best of MSJ Vol.8 ワンポイントレッスン 最新プログラミングテクニック』の
1069p に解決策が載っている。
0541デフォルトの名無しさん
NGNG・この時は一番高いBarにあわせる(例:20px)
| bar1 | bar2
・この時はbar2は高さを変える(bar1:20px、bar2:16px)
| bar1
| bar2
0542デフォルトの名無しさん
NGNG別スレッドではメッセージキュー越しに文字列を受け取って
ファイルに書き出しているだけです
メインスレッド
_beginthreadex;
ウィンドウ作る;
メッセージループ開始
{
WM_QUITでbreak;
}
メッセージループから抜けた事を別スレッドに知らせる(PostThreadMessage);
ワーカースレッドへ終了メッセージを送る(PostThreadMessage);
WaitForSingleObjectしてから、終了処理;
お終い
ワーカースレッド
メッセージキューを作る;
終了メッセージが来るまでループ
{
文字列を受け取ってファイルへ書き出す(GetMessage);
}
_endthreadex;
お終い
こんな流れなんですが、メインスレッドのメッセージループを抜けたところで
ビジー状態から抜け出せなくなります
ところが、原因究明の為にデバッガでループ終了からずんずんトレースしていったら
なんと完走してしまいした・・・まったくもって意味不明です
0543542
NGNG思い切って直接起動したら完走しました・・・
デバッガのバグなんですかね?
0544デフォルトの名無しさん
NGNG99%プログラムのバグ。
0545542
NGNGつまり「デバッガで起動した場合ハングアップしてしまうバグ」を作り込んだということでしょうか・・・?
「実行に時間がかかりすぎるとハングアップしてしまうバグ」かな
初心者がマルチスレッド関係いじくると良くあるバグなんでしょうか?
0546デフォルトの名無しさん
NGNGほかのスレッドが終わるまで待ったほうがいいような
気がせんでもない。
なんとなくだけど。
0547デフォルトの名無しさん
NGNG関係ないけど_endthreadexは使わないほうがいいかも...
少なくともC++で使うとデストラクタが実行されないし
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGなんのデストラクタ?
そして、何を代わりに使うんだ?
0550542
NGNGワーカースレッド内では何もnewしてない(何もインスタンス化してない)のですが
それでもマズいんでしょうか?
>>548
メインスレッドが終了するというのは
AとBどっちの事でしょうか・・・
ウィンドウはWinMainで作られた1つのみで、ワーカースレッドはどのウィンドウにも属さず
ウィンドウプロシージャでは、ESCを検出してWM_CLOSEをPOSTしています
int APIENTRY WinMain(略)
{
_beginthreadex略;
CreateWindow略
while(GetMessage略) {
} // A→ウィンドウが破棄されてWM_QUITがPOSTされ、メッセージループから抜けた
return static_cast<int>(msg.wParam);
} // B→WinMainから抜けた
0551デフォルトの名無しさん
NGNG作成したオブジェクト。
例外を投げてmainでcatchする。
0552デフォルトの名無しさん
NGNGもちろんBのことだが
0553542
NGNG自分のプログラムは「デバッガでStep実行すると」AのところでRUNNINGから復帰しなくなります・・・
AでBREAKして、そこからTraceでずんずん中に入っていくと無事完走します・・・
0554名無し@沢村
NGNGAPIのmidioutShortmessageで0x90C07Fを指定すると音が鳴り、
0x80C07Fかまたは0x90C000を指定すると音が止まるのはわかるのですが、
同時に二つの音を鳴らすときはどうするのですか?つまり和音ですね。
ぜひ教えてください!!
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG同意。ステップ入力できるMIDIシーケンスソフトでも使ってもうちょっとMIDIのこと勉強した方がいいと思われ。
0557デフォルトの名無しさん
NGNGVRAMと普通のRAMの違いとか?
ビデオカードの種類やVRAMの容量で結果変わるんじゃない?
0558デフォルトの名無しさん
NGNGhttp://www.pluto.dti.ne.jp/~daiki/Midi/Midi.html
ここ読みゃぁじゅうぶんだべ
0559デフォルトの名無しさん
NGNGできるならそれは何というAPIでしょうか?
0560デフォルトの名無しさん
NGNGWinInetのほげほげCacheEntryがキャッシュだけでなくて
履歴やCookieも扱うんですね。
0561駆け出しの名無し
NGNGなかったので、教えて下さい。
APIを使ってプログラムを作るとき、ウィンドウクラスを定義した後、
登録(RegisterClass(Ex)関数)して生成(CreateWindow(Ex)関数)しますよね。
そのとき、インスタンスハンドルをWNDCLASS(EX)構造体のメンバhInstanceと
CreateWindow(Ex)関数の引数で使用しますけど、なぜこの両方で指定しなければ
ならないのでしょうか。WNDCLASS(EX)構造体のメンバhInstanceとCreateWindow(Ex)関数
の引数で指定するインスタンスハンドルの違いは何?両方とも同じ目的で使われる
のであればどちらか一方で指定するだけで十分だと思うのですが…
インスタンスハンドルの意味は
http://www.kab-studio.com/Programing/Dictionary/Words.html#Instance
が最も詳しかったです。
どうぞよろしくお願いします。モウ、オレヒトリデハ ゲンカイポ...
0562デフォルトの名無しさん
NGNGWinNT では 0 で無視してるみたいだし よくわからんが・・
0563駆け出しの名無し(=561)
NGNG・WNDCLASS(EX)構造体のメンバhInstanceにNULLを代入
RegisterClass(Ex)関数実行時に失敗
・WNDCLASS(EX)構造体のメンバhInstanceに正しい値(WinMain()関数の最初の引数)
を代入し、CreateWindow(Ex)関数でインスタンスハンドルにNULLを代入
ShowWindow(Ex)で表示可能 (@_@)?!!!
という実験結果ですた…
# >>561でageたんで今度はsageで
0564駆け出しの名無し(=561)
NGNG>>562
それはいわゆるhPrevInstanceのことでしょうか?あれはWin9Xでも常にNULLになる
って本に載ってました。
0565デフォルトの名無しさん
NGNGWin95ではそうなります WinNTは、ってことだから・・
もしかしてNTでもダメなんですかね
0566デフォルトの名無しさん
NGNGhttp://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_createwindowex.htm
ここの hInstance の解説で、「無視されます」ってあるでしょ
たぶん NT はプロセス管理をシステムで完全にコントロールしてるけど
9x は不完全というか、ごちゃまぜというかいっしょくたというか(w
そんなんで hInstance が必要なんじゃないのかなぁ・・ってことです
思っただけなので信憑性ない スマ
詳しい人がレスくれるといいね
0568駆け出しの名無し(=561)
NGNGあー、それ僕も読みました。他にRegisterClassEx関数
http://www.microsoft.com/japan/developer/library/jpuipf/_win32_registerclassex.htm
の説明も…。しかしWNDCLASS(EX)に関する記述は結局見つけられなくてmicrosoft.comの
サイトから探すのはあきらめますた…。
0569デフォルトの名無しさん
NGNG英語版ならあるよ。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/WindowClasses/WindowClassReference/WindowClassStructures/WNDCLASSEX.asp
少なくともリソースIDを指定しないといけない時は
インスタンスハンドルも不可欠だね。
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGSetTimer/KillTimerを使ったところ、精度が悪いのはまだしも、
COMオブジェクトのメソッドを呼び出している中でさらにタイマー処理が呼び出される
事が有り、困っています。
それではと、マルチスレッド化したところCOMオブジェクトが対応していないため(?)
クラッシュしてしまいます。
何か、良い解決方法は無いでしょうか?
おながいします。
0572デフォルトの名無しさん
NGNGあるいはちゃんと再入のチェックをするとか。
0573571
NGNGCOMよく知らん不束者ですが、
マルチスレッドで何とかするのは無理なもんでしょうか?
0574
NGNG別スレッドからインタフェイスを呼ぶのなら、
CoMarshalInterThreadInterfaceInStream と
CoGetInterfaceAndReleaseStream で
インタフェイスをマーシャルしてあげれば良いんだよ。
ex.
IStream* g_pStm;
// main thread
IYourInterface pYourInterface <- これにinterface取得済み;
CoMarshalInterThreadInterfaceInStream(IID_IYourInterface,
pYourInterface, &g_pStm);
..
// worker thread
IYourInterface pYourInterface;
CoGetInterfaceAndReleaseStream(g_pStm,
IID_IYourInterface,
(LPVOID*)&pYourInterface);
pYourInterface->DoWhatEverYouLike();
worker thread でも CoInit するのを忘れずに。
0575571
NGNGあんが�d。
試してみます。
>worker thread でも CoInit するのを忘れずに。
全然 頭に有りませんでした。
0576駆け出しの名無し(=561)
NGNGありがとうございます!
該当個所は
Handle to the instance that contains the window procedure for the class.
となっていますね。日本語訳するなら、
ウィンドウクラスを制御するウィンドウプロシージャを含むインスタンス
へのハンドル
ってところでしょうか。
一方、CreateWindow(Ex)関数については、>>566のURLにもありますように、
ウィンドウに関連付けられたモジュールのインスタンスハンドル
となっています。この「ウィンドウに関連付けられた」ってどういう意味
でしょう?原文(英語版)では"... associated with ..."となってます…。
Win9Xと違い、WinNTでは無視されるようですが、その理由なども教えていただけ
ればと思います。
よろしくお願いします
0577571
NGNGCoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
をスレッドの最初でやったら動きました!
とりあえず、これでやってみます。
CoInitializeEx(NULL, COINIT_MULTITHREADED);
では、やっぱりクラッシュしますた。
因みに、SetTimer(NULLウィンドウハンドル指定)よりtimeSetEventの方が
パラメータを渡せるし、精度も良いのでつかってみたところ、timeSetEventは
別のスレッドを使用しており、やっぱりクラッシュしますた。
0578デフォルトの名無しさん
NGNG判断できるけど、カメラがついているかどうか判断する方法って無いでしょうか?
0579デフォルトの名無しさん
NGNGそうでないのかを判別するにはどうしたら良いのでしょうか?
理想では、こんな感じのがあれば良いのですが…
if( IsDrag()) {
ドラッグ中
} else {
それ以外
}
よろしくお願いします。
0580デフォルトの名無しさん
NGNGカメラというデバイスについて特に言及したプロトコルが無いので無理
デジタルスチールカメラとか限定していけばどっかに規格があるかもしれんが
それでもUSB接続なのか独自なPCIカード経由なのかシリアルポート経由なのか(あるのか?w)
その辺が曖昧だったら無理
「○○社の○○というカメラが接続されているかどうか」は判断できる
0581デフォルトの名無しさん
NGNG取得するにはどうしたらよいでしょうか?
0582デフォルトの名無しさん
NGNGVB触ったことも無いけど
NetUserGetInfo()
WinMain()で、return に MSG.wParam を返せと書いてあるのですが、
warning C4244: 'return' : 'WPARAM' から 'int' に変換しました。データが失われているかもしれません。
と怒られてしまいます。
何が悪いのでしょうか...
0583デフォルトの名無しさん
NGNGWPARAM は unsigned だからでは?(見当違いだったらスマソ)
0584582
NGNG正 > MSDNに、WinMain()ではreturn に MSG.wParam を返せと書いてあるのですが、
0585582
NGNGそうなんですが、MSDNを見ると
> 関数が WM_QUIT メッセージを受け取って正常に終了する場合は、メッセージの wParam パラメータに格納されている終了コードを返してください。関数がメッセージループに入る前に終了する場合は、0 を返してください。
って書いてあるんですよ...
プログラミングWindowsでもそうなっていますし
0586583
NGNG__w64 unsigned int ですた。64ビットかな?
ちとかっこ悪いですが、return (__w64 unsigned int) 0 ってやってみては?
0587583
NGNGreturn (WPARAM) 0; ってやったらいいじゃん…。
0588デフォルトの名無しさん
NGNGOPENFILENAME ofn;
memset(&ofn,0,sizeof(OPENFILENAME));
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.lpstrFile=file;
ofn.hwndOwner=hWnd;
ofn.nMaxFile=MAX_PATH;
ofn.lpstrTitle="ファイルの保存";
ofn.lpstrFilter="files\0*.*\0\0";
if(GetSaveFileName(&ofn)!=0){
// ほげほげ
}
r=CommDlgExtendedError();
でr=0x02になってしまいます。
ちょっと探したところ時々ある現象のようなのですが
回避方法が見つからないです。
ご存じの方教えてください。
0589583
NGNG0590デフォルトの名無しさん
NGNGCDERR_INITIALIZATION = 0x0002
初期化の際にコモンダイアログボックス関数が失敗しました。たとえば、メモリ不足の場合に発生します。
0591デフォルトの名無しさん
NGNG*file = '\0';
も入れなきゃ。
0592デフォルトの名無しさん
NGNGあと、MAX_PATHは260だったと思われ。
fileを大きくした方が・・・
0593デフォルトの名無しさん
NGNGそれをキャストしてしまっても本当にいいのかって事です。
0594デフォルトの名無しさん
NGNG問題なし。
0596デフォルトの名無しさん
NGNGRuby で書いた壁紙変更スクリプトを
cygwin の cron で定期実行させたところ壁紙が変更されない。
cron がサービスとして動いているので、壁紙変更スクリプトが
LocalSystem のユーザコンテキストで実行されるのが問題っぽい。
平たく言えば、サービスとして動く壁紙チェンジャーは作成可能か、かな。
何か方法知っていたら教えてくれくれ。
壁紙変更は SystemParametersInfo を使ったよくある方法。
コマンドラインから実行した場合には問題なく変更される。
0597デフォルトの名無しさん
NGNGこいつはデスクトップにアクセスできるのか?
0598588
NGNGchar []のサイズとかnMaxFileとかいじって解決しマスタ。
0599デフォルトの名無しさん
NGNG私も>>546に同感。
ちなみにMFCアプリの場合はメインスレッドのメッセージループが
先に終わっちゃってるとASSERT出たと思います。
APIのレベルでもなにかあるんじゃないですかね。
メッセージループがWM_QUITを受け取った後で複雑な処理を
していることがなんかまずいのかも、かも、かも。
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGCreateProcessAsUser
LoadUserProfile
つーかCygwinのcronには特定ユーザーのアカウントで
プログラム実行する機能ないの?
タスクスケジューラにさえあるんだけど
0602デフォルトの名無しさん
NGNGメンバ変数はint x, yとビットマップとして
ビットマップのメンバ変数は型をどうしたらいいでしょうか?
ファイル名にしておいて描画のたびに
読み込むのはつらいとおもうのです
HBITMAP型にすればよいのでしょうか(コンストラクタでLoadBitmapで初期化)?あと このビットマップは複数のインスタンスから
使われると想定しています
0603デフォルトの名無しさん
NGNG//
// Device Independent Bitmap
//
#ifndef __yaneDIBitmap_h__
#define __yaneDIBitmap_h__
// DIBitmapはGDIと同じく、下位からR,G,B,α
class CDIBitmap {
public:
LRESULT Load(string szFileName,int nBpp=24);
LRESULT Load(HDC hDC,LPRECT lpRect,int nBpp=24);
LRESULT Save(string szFileName,LPRECT lpRect=NULL);
LRESULT CreateSurface(int nSizeX,int nSizeY,int nBpp=24);
LRESULT Release();
// LoadBitmap/CreateSurface以降、いつでもDCの取得は可能
HDC GetDC() { return m_hDC; }
HBITMAP GetHBITMAP() { return m_hBitmap; }
LRESULT GetSize(LONG& x,LONG& y);
BYTE* GetPtr() { return (BYTE*)m_lpdwSrc; }
CDIBitmap();
virtual ~CDIBitmap();
protected:
DWORD m_lpdwSrc; // ソースバッファ
LONG m_nSizeX;
LONG m_nSizeY;
int m_nBpp;
HBITMAP m_hBitmap;
HDC m_hDC;
};
#endif
0605デフォルトの名無しさん
NGNG知るにはどうすれば良いでしょうか?
それ用のAPIがあるでしょうか?
0606デフォルトの名無しさん
NGNG俺、前に同じ質問したことあるけど、「実際に書き込みでOpenしてみれ」
って言われたんで、そうしてる。
0607デフォルトの名無しさん
NGNGもし知ってる方がいらっしゃいましたらお教え願えませんでしょうか?
一度ビットマップをCreateFile() ReadFile()で読み込み
ファイルハンドルを閉じ
読み込んだデータに加工をして保存をしようとすると
なぜかCドライブ直下に保存されます。
そしてこれがまた変なところで
読み込んだビットマップの名前をプログラム内で直接書き込んで指定してやると
カレントディレクトリに新しいファイルが生成されるのですが
コマンドライン引数(アイコンにドラッグアンドドロップ)で
ファイル名を指定すると
Cドライブ直下に新しいファイルが生成されてしまいます。
指定しているのは読み込むファイル名であって、書き出すファイル名は
test32.bmpなど、固定です。
わかりやすく言うと
自作関数(といいますかクラスになっています)
LoadBMP("test.bmp")
で読み込むとカレントディレクトリにファイルが出力され
LoadBMP(lpCmdLine); //lpCmdLineはコマンドライン引数
だとCドライブ直下にファイルが出力されます。
このクラスでは、必ずファイルハンドルはCloseHandle()で破棄しています。
保存をするのはまた別クラスで、メモリに入ったデータだけを移動させています
クラス間にはなんの依存もありません
いったいなんなのでしょうか……
0608607
NGNGさらに調べてみたところ、なんでかどこかでカレントディレクトリが
C:\になっていました。
GetCurrentDirectory()
を使って2箇所で見てみたのですが、最初に実行(プログラムが開始してからすぐ)
は正常なカレントディレクトリでしたが、2度目(ファイル保存寸前)
ではC:\でした。
カレントディレクトリが変わってしまうことというのはありえるのでしょうか?
0609607
NGNGコマンドライン引数を指定するとc:\になるみたいです
謎です……
0610デフォルトの名無しさん
NGNGコモンダイアログとか使ってるんじゃないの?
0611デフォルトの名無しさん
NGNG> コマンドライン引数を指定するとc:\になるみたいです
カレントディレクトリが途中で変わるというのが嘘?
だったら起動時からカレントが違ってるだけでは?
何が不思議なのかわからん。
0612579
NGNGええっと、ドラッグ中なのか、そうでないかの判定は
難しいのでしょうか?それとも、超簡単なので
「そんな厨房の質問は無視だ( ´Д`)σ)Д`)」
って感じなのでしょうか?
ヒントでも教えて貰えるとありがたいのですが…。
0613デフォルトの名無しさん
NGNGIDropTargetを実装してRegisterDragDropするのでは不足か?
0614デフォルトの名無しさん
NGNGイベントドリブンという発想が出来ない素人なんだろ
0615デフォルトの名無しさん
NGNGシステム全体の話?
それとも自分自身のプロセスの話?
0616579
NGNGDragAcceptFilesやDragQueryFile等のAPIや
WM_DROPFILESみたいなメッセージがあると思って
OLEは全然思いつきませんでした。なるほど。OLEですね。
ありがとうございました。これで試してみます。
>>614
イベントドリブンは理解してますが…
何故、そういう発想に………煽り………ですか?
流石、2chですね。あ、レスは不要です。問題解決したので。
>>615
自分自身です。ウィンドウにドラッグした場合等に
自前でキャレット表示等をしているアプリケーションの
真似事をしたかったのです。
0617デフォルトの名無しさん
NGNGどうすればいいのれすか?
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGDNSサーバ、デフォルトゲートウェイなどの情報を取得したいです。
さくっと出来る関数なんぞを教えてください。
0621デフォルトの名無しさん
NGNGWSA系。
0622デフォルトの名無しさん
NGNGShelExecuteでcommand.comを使って、
ipconfigの出力をファイルにリダイレクトとか言ってみるテスト
0623
NGNGどっかでも答えたような気がするけど、
素の Win95 サポートする必要があるなら SNMP API で MIB でオブジェクト指定して取り出せる。
iphelper.dll が使えるなら GetNetworkParams とかそのへんの IP Helper API でアレコレする。
0624デフォルトの名無しさん
NGNG0625620
NGNGいろいろと調べてみましたが、簡単&綺麗な方法はないようですね…
さすがにShellExecuteはいかがなものかと…
ユーザに入力させることにします
>>623
vbスレの奴は私宛だったんでしょうか…
>SNMP API で MIB でオブジェクト指定して
その当たりの知識が全くないので、時間とかを考えて、今回は使わないことにしました
情報ありがとうございます
0626アフォルトの名無しさん
NGNGShellExecute() はさすがにアレだが、それでも 「簡単」 に済ませるために
処理を外部コマンドに任せて、その出力を拾うのはよくある手法だぞ。
その場合は CreatePipe() + CreateProcess() を使う。
何を敬遠する?
0627デフォルトの名無しさん
NGNGWindowsだとコマンド出力がローカライズされているという罠があったり
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNGAPIってなんですか?
0630デフォルトの名無しさん
NGNGシステムの機能を呼び出すための方法のこと。
0631デフォルトの名無しさん
NGNG>>606の回答のようにRegOpenKeyExでKEY_ALL_ACCESSを指定して
HKEY_CLASSES_ROOTを開いたところ、書き込み権限が無いにも関わらず
RegOpenKeyExが失敗しませんでした。
書き込み権限が無いときはレジストリオープンに失敗して欲しいのですが、
どうすればよいでしょうか?
0632デフォルトの名無しさん
NGNGスクリプト教えてあげて
0633デフォルトの名無しさん
NGNGPlatformSDKにIpConfigのサンプルコードがなかったけ?あったか自信はないけど探してみたら!
0634デフォルトの名無しさん
NGNGごめん。俺も最初、素直に RegOpenKeyExで実装して、うまくいかなくて
下みたいにしたんだった。Openではなく、サブキー"*"(普通、すでに存在
している)を Createするという考え方。
HKEY hKey;
if(RegCreateKeyEx( HKEY_CLASSES_ROOT, "*", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, NULL ) == ERROR_SUCCESS )
書きこみ権あり
else
書きこみ権なし
0635デフォルトの名無しさん
NGNGあ、あと ERROR_SUCCESS になったら、RegCloseKey(hKey) を忘れずに。
過去スレ見たら
http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
の 973,974,976 にあった。
0636デフォルトの名無しさん
NGNGHKEY_CURRENT_USER\Software\Classes\* が存在していたらどうしますか
というかRegOpenKeyExが失敗しないのも
HKEY_CURRENT_USER\Software\Classes が統合されてる関係のような気がする
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGそれが開けちゃうという話ではないの
0639デフォルトの名無しさん
NGNG前スレ読ませてもらったけど俺はOpen(KEY_WRITE)でやってて、
うまくいってるよ。
0640デフォルトの名無しさん
NGNG明示的にHKEY_CLASSES_ROOTを開いてもHKEY_CURRENT_USER\Software\Classes
を開いたことになる??マジで?
>>639
OSとどのユーザーグループで確認したのかと、実際の引数を求む。
0641デフォルトの名無しさん
NGNG// HKEY_CLASSES_ROOTに書き込み権限がある場合はTRUE、無ければFALSEを返す
BOOL IsWriteReg(void)
{
LONG lRes;
HKEY hKey;
TCHAR szKey[] = _T("*");
DWORD dwDisposition;
// レジストリオープン
lRes = RegCreateKeyEx(
HKEY_CLASSES_ROOT, szKey, 0, NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition
);
// レジストリオープン失敗
if(lRes != ERROR_SUCCESS)
return FALSE;
// HKEY_CLASSES_ROOT\* を新規作成した場合は削除
if(dwDisposition == REG_CREATED_NEW_KEY)
RegDeleteKey(HKEY_CLASSES_ROOT, szKey);
// レジストリクローズ
RegCloseKey(hKey);
return TRUE;
}
0642アフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/en-us/sysinfo/base/merged_view_of_hkey_classes_root.asp
>>642
9xはそもそも書き込み権限がなくて失敗すること自体ないだろ
0644デフォルトの名無しさん
NGNGHKEY_LOCAL_MACHINE\Software\Classes
をKEY_ALL_ACCESSで開いて判定すればいいのではないかと思うわけだが
誰か実験してちょ(他力本願
0645639
NGNG> OSとどのユーザーグループで確認したのかと、実際の引数を求む。
今手元に環境が無いのだけれど、WinXP Professional。
それと確かWin2Kでも確認したと思う。
管理者権限では成功し、
制限ユーザー(今は詳細は確認できない)では失敗することを確認。
HKEY hKey;
RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID", 0, KEY_WRITE, &hKey);
>>636
HKEY_LOCAL_MACHINE\Software\Classesの間違いでないの?
>>642
俺の手元のWin98には一応あるよ。
中身は特殊フォルダの(ユーザー毎の)アイコン文字列くらいだけど。
0646デフォルトの名無しさん
NGNG> HKEY_LOCAL_MACHINE\Software\Classesの間違いでないの?
だから>>643を見てよ
0647639
NGNGごめん。645を書いた時はまだ643を見てなかったので。
でも、そのリンク先によると、やはり
HKEY_LOCAL_MACHINE\Software\Classesのように思えますが。
HKEY_CURRENT_USERが有効になるのは、RegOpenUserClassesRoot
を使って開いた時だけじゃないの?
0648639
NGNGまた暇な時にじっくり読んでみます。
0649デフォルトの名無しさん
NGNGRegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Classes", 0, KEY_ALL_ACCESS, &hKey);
でできた。
0650デフォルトの名無しさん
NGNGWM_MENURBUTTONUP 受信時に InsertMenu() 等をしても表示が乱れるだけで更新が反映されないのですが。
0651デフォルトの名無しさん
NGNGBOOL IsWriteReg(void)
{
LONG lRes;
HKEY hKey;
OSVERSIONINFO vi;
// NT系以外の場合TRUEを返す
vi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&vi);
if(vi.dwPlatformId != VER_PLATFORM_WIN32_NT)
return TRUE;
// レジストリオープン
lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Classes", 0, KEY_ALL_ACCESS, &hKey);
// レジストリオープン失敗
if(lRes != ERROR_SUCCESS)
return FALSE;
// レジストリクローズ
RegCloseKey(hKey);
return TRUE;
}
0652デフォルトの名無しさん
NGNG9xでHKEY_LOCAL_MACHINE\Software\Classes開くと失敗するの?
失敗しないんならプラットフォームの判定は不要だと思うんだが
0653デフォルトの名無しさん
NGNG判定を誤るからむしろ有害
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG果てしなくどうでもいいことだが
0656デフォルトの名無しさん
NGNG互換モードだとGetVersionExが違う値になるん?
0657デフォルトの名無しさん
NGNGというかGetVersionExを違う値にするための機能が互換モードですが
(ほかにもAPIの動作が微妙に変わるけど)
0658デフォルトの名無しさん
NGNG英語でもいいので、しっていたらおしえてください。
0659デフォルトの名無しさん
NGNG>>1に載ってる
猫でも分かるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0660デフォルトの名無しさん
NGNGメッセージループのスレッド以外で使えるかどうかだけなのでしょうか?
あと、::GetKeyboardState()もメッセージループのスレッドでしか
使えないんですかね、やっぱり。
0661デフォルトの名無しさん
NGNGGetKeyState 今処理中のメッセージを受け取った時点で押されていたキー
GetAsyncKeyState 今まさに押されているキー
WM_KEYDOWNの処理の中で10秒くらいSleepを入れて試してみれば違いがわかる(非推奨)
0662デフォルトの名無しさん
NGNGと、いうことは::GetKeyState()をメッセージ処理後に
呼び出した場合は、最後に処理されたメッセージ取得時の
キー状態を取得するってことですね。
0663デフォルトの名無しさん
NGNGリソースエディタを使わないで
テキストデータで書きたいんですが
詳しくのってるところしりませんか?
0664デフォルトの名無しさん
NGNGMSDN
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNGもれは猫でも〜のソース見てたら大体分かったけど・・・。
0667デフォルトの名無しさん
NGNG激同
0668デフォルトの名無しさん
NGNGプログラミングWindows第5版
http://www.ascii.co.jp/pb/msp/36001/36001.htm
には載ってないのかな?
# ごめん、オレはこの本読んだことないんで分からん…。
それに構文の説明が載ってるけど、p540にはドキュメントを読むように書いてある。
0670デフォルトの名無しさん
NGNG作成する CompatibleBitmap は、クライアントサイズに合わせて作っていて、
ウィンドウサイズが変更されたときに、Bitmap のサイズも変更しようと思っ
ています。。
CompatibleBitmap には、サイズ変更をするような関数は見当たらないので、
新しい CompatibleBitmap を作成して、それにサイズ変更前のデータを必要
なだけコピーしたいのですが、デバイスコンテキストから、デバイスコンテ
キストへコピーする BitBlt は、あっても、Bitmapから、Bitmapにデータを
コピーするAPIが見つかりません。
何とか、いい方法は、ございませんか?
0671デフォルトの名無しさん
NGNG描画用の仮想ウィンドウ?
CreateCompatibleDC()でデバイスコンテキストをもう1つ作って、新しく作ったビットマップをSelectObject()すれば、デバイスコンテキストが2つできるので、BitBlt()が使える。
あと、最初からビットマップをスクリーンと同じ大きさでつくっておいて、使うときに必要な部分だけコピーする方法もある。
0672デフォルトの名無しさん
NGNGとりあえず、スクリーンと同じ大きさで作る方法を試してみたいと思います。
ありがとうございました。
0673デフォルトの名無しさん
NGNGあとは、
リソースエディタの吐いたリソーススクリプトを読めば、
大体分かると思うけど・・・。
0674579
NGNG便乗質問だけど、漏れもデスクトップサイズと同じビットマップを確保してるけど
それだと、1600x1200x2画面とかだと、やたらとメモリ食うし…。
可変サイズのウィンドウに描画用の仮想ビットマップを確保する場合、
もうちょっと、メモリを食わずに、そこそこのスピードの方法って無いんでしょうか?
0675デフォルトの名無しさん
NGNG負荷が気になるならWM_PAINTでもいいかもネ
0676デフォルトの名無しさん
NGNGWM_NCCALCSIZE
等をうまく使えば、変更前と変更後のクライアント領域のサイズから、
効率的に、再描画を指定できそうな気がするんだけど、このメッセージ
の処理を、どうやってやるのか、よくわからない(^^;
0677デフォルトの名無しさん
NGNGMSComm は Visual Basic のコマンドなんですか?
デジタルボルトメーターを制御したいんですが。
どなたか教えてください。 お願いします。m(__)m
0678デフォルトの名無しさん
NGNGCreatefileでCOM開けたと記憶。
0679デフォルトの名無しさん
NGNGありがとうございます。
ちょっと調べてみます。
0680デフォルトの名無しさん
NGNG小さな仮想ウィンドウを作るとか。
ウィンドウの大きさが1600×1200だとしたら、仮想ウインドウは800×600を確保。
ウィンドウのマッピングモードを800×600に変更して仮想ウィンドウからコピー。
処理するデータが1/4で済むので、かなり早くなるよ。
ただし、画質が荒くなるので使える場所は限定されるね。
0681デフォルトの名無しさん
NGNGオートクリックツールを作ろうと思っているのですが
SendMessage(Target_hWnd, WM_MOUSEMOVE, 0, cp.x + (cp.y<<16));
SendMessage(Target_hWnd, WM_SETCURSOR, (unsigned int)Target_hWnd, HTCLIENT + (WM_LBUTTONDOWN<<16));
SendMessage(Target_hWnd, WM_LBUTTONDOWN, MK_LBUTTON, cp.x + (cp.y<<16));
SendMessage(Target_hWnd, WM_SETCURSOR, (unsigned int)Target_hWnd, HTCLIENT + (WM_LBUTTONUP<<16));
SendMessage(Target_hWnd, WM_LBUTTONUP, 0, cp.x + (cp.y<<16));
これではうまくいかないようです。
他にどんなメッセージを送ればよろしいのでしょうか。
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG質問:
???.ilk (増分(インクリメント)リンクファイル?)
が生成される位置を指定するにはどうすれば?
/ilk:"????/" は通らない。
/incremental:"????/" は通らない。
0686デフォルトの名無しさん
NGNGWindows 95 を見捨てるのか
0687デフォルトの名無しさん
NGNGいまさら、95なんか気にするな。
0689デフォルトの名無しさん
NGNG漏れの会社 PC が Windows 95 なんだYO!!!
とか言ってみる。
>>688
一体何がしたいの?
その前にコンパイラ/リンカオプションは調べた?
そこに無ければ諦めなさい。以上。
0690デフォルトの名無しさん
NGNGだから「ターゲットによっては」って言ってるじゃんよ
0691686=689
NGNGだから、その 「ターゲットによっては」 ってのが既に Windows 95 を見捨てる
って事だろ。
マウスに関して、SendInput() だけにできて mouse_event() にできない事って
どんなこと?
まあ、SDK が新しくなって mouse_event() のドキュメントが無くなったという事
になったら仕方ないけど。
0692デフォルトの名無しさん
NGNGSendMessage(hWnd,(WPARAM)2,(LPARAM)MAKELPARAM(now.w,now.h));
を送ったんですが、最大化されません。
まだ何かやることってあるんですか?
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG( `Д) <ShowWindow()
/(ヘ つ )ヘ
0695デフォルトの名無しさん
NGNG間違えた。ShowWindows って...
0696デフォルトの名無しさん
NGNGクライアントが最初からWin98以上を指定してきたとかそういう状況を想定してた。
> SendInput() だけにできて mouse_event() にできない事
途中で割り込まれずに連続したイベントの送信を保証すること
0698デフォルトの名無しさん
NGNG( `Д) <どうしてもSendMessageしたいなら、WM_SYSCOMMANDでできるかも。
/(ヘ つ )ヘ
0699デフォルトの名無しさん
NGNG0700691
NGNGああ了解、特定業務にしか使わなければ OS 限定で問題無いな。
漏れが浅かった。
しかし、mouse_event() でイベント送信順に困ったこと無いぞ。
構造体用意するのも面倒だしな・・・。
ところで、683-684 が 681 へのレスだと言う事に質問者は気付いてるのだろーか。
0701名無しさん
NGNGicce.dwSize = sizeof(icce);
icce.dwICC = ICC_USEREX_CLASSES | ICC_WIN95_CLASSES | ICC_TREEVIEW_CLASSES;
::InitCommonControlsEx(&icce);
(略)
RECT rc;
GetClientRect(hWndParent, &rc);
HWND hCombo = CreateWindowEx(0, WC_COMBOBOXEX, NULL,
WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,
rc.left, rc.top, rc.right - rc.left, rc.bottom - rc. top,
m_hWnd, NULL, _Module.m_hInst, NULL);
このコードでコンボボックスを作ったんだけど、
ドロップダウンリストが表示されないんですよね。
通常は、「▼」を押すとリストが表示され、
リスト以外の部分をクリックすると、リストが非表示になる処理が行われ、
もう一度同じ場所をクリックしないと、その場所にフォーカスが移りませんよね。
ところが、「▼」を押してもリストが表示されず、さらに他の部分をクリックしても
一回目はそこにフォーカスが移らない。
VC++6.0 SP5 Windows 2000 SP3です。
0702デフォルトの名無しさん
NGNG了解。わざわざ報告どうもです。
0703デフォルトの名無しさん
NGNGワロタ
0704701
NGNG701のようになるのはなぜでしょう?
0705デフォルトの名無しさん
NGNGワロタ
0706デフォルトの名無しさん
NGNG( `Д) <rc.bottom - rc. topが小さすぎない?
/(ヘ つ )ヘ これはリストの高さになるよ。
0707デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG( ・∀・)< モノをしまう必要はない
( ) \_______
| ⊃| アヒャ
(__)_)
0711127
NGNGデスクトップ上のInterNet Exploerのアイコンを消去する時は、
インターネットのプロパティの詳細設定内の
「デスクトップにInterNet Exploerを表示する」のチェックを外すと
画面上から消え去ります。
で、上記と同じコトをプログラム上で行いたいのですが方法が判りません。
ご存知の方がいましたらよろしくお願いします。<(_ _)>
ちなみに...
チェックのあり/なしでレジストリのDiffを採って見ましたがBlank以外の差はありませんでした
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG0714711
NGNG初回起動時にアイコンがデスクトップ上にあるのが嫌なんですと。
で、初回起動時の他のアイコンは消せたんですけど、
IE(だけだったかな?)が消せなくて...
0715デフォルトの名無しさん
NGNG設定変更ツールでないものが勝手にユーザーの設定をいじるな
0716デフォルトの名無しさん
NGNG準ウイルスのようなモノを作りたいんだと思われ。
0717デフォルトの名無しさん
NGNG0718711
NGNG自分で直接設定を変更出来るんなら、こんなモン作ろうとしないです。
0719デフォルトの名無しさん
NGNG自分でやり方書いてるだろ。↓これは違うのか?
> インターネットのプロパティの詳細設定内の
> 「デスクトップにInterNet Exploerを表示する」のチェックを外すと
どういうプログラム作ってるのかちゃんと書けよ。
ウィルスじゃないんなら
0720711
NGNG>>715サソが言ってる「設定変更ツール」ですな。
ただ、「設定変更ツール」って名乗るのも躊躇う機能しか持ち合わせていませんが...
変更方法を知りませんか?知ってたら教えて下さい<(__)>
0721デフォルトの名無しさん
NGNG仮想画面(メモリDC) → 実画面 と
BitBlt()より高速にコピーする方法は無いでしょうか。
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNGcreatedibits
0724デフォルトの名無しさん
NGNGWinGつかう。
0725デフォルトの名無しさん
NGNGDirect3D
0726デフォルトの名無しさん
NGNG最近のWindows系マシンですと、
windows、winnt、program filesなどのフォルダが最初
不可視になっていて、ここをクリックして表示して下さい
みたいな風になっていると思うのですが、ああいうのって
他のフォルダでも同じような処理ができるAPIとかあるんでしょうか?
ただのsetattributeでhiddenやsystemにしてもああいった挙動は
実現できないですよね?
また、できないならできないでシステムフォルダだけでも実現している
APIの名前だけでも教えてください。お願いします。
0727デフォルトの名無しさん
NGNGJScriptとフォルダをWeb形式でって言うのとの合わせ技。
なんでVBScript使わないんだろうね?(藁
0728デフォルトの名無しさん
NGNGJScriptはMSのものですがなにか?
0729デフォルトの名無しさん
NGNGせっかく対抗馬のVBS作ったんだからわざわざJavaScriptもどき使うこともあるまいて。
0732デフォルトの名無しさん
NGNG遅レスですまんが、↓のスレで聞けばいいと思うよ。
http://pc3.2ch.net/test/read.cgi/win/1011536679/
0733デフォルトの名無しさん
NGNGたとえば、"Terminal"だったら 4,6,10,14,17 というリストです。
0734デフォルトの名無しさん
NGNG以下の方法を試してみましたがだめでした。
1. GetWindowDCやGetDCで取得したDCをsrcとしてBitBlt -> 前面にある矩形領域のビットマップがBitBltされる
2. WM_PRINT, WM_PRINTCLIENTを送る。 -> WM_PRINTをサポートしていないらしく何も得られない。
0735734
NGNG>WM_PRINTをサポートしていないらしく何も得られない。
メッセージハンドラが実装されていないらしい、ということです。
今起動しているアプリケーションのサムネイルを表示してみたいと思っています。
0736デフォルトの名無しさん
NGNGそうでなければWM_PAINTで描画するまで前面のウィンドウに隠された部分は
どこにも存在しないので不可能
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGウィンドウの描画を完全に横取りする方法ってどなたかご存じでしょうか?
http://research.microsoft.com/ui/TaskGallery/index.htm
ここを見ると
http://research.microsoft.com/ui/TaskGallery/pages/technology.htm
Windows Redirectorというものがあるのですけど、これってデバイスドライバレベル
で実現するものなのでしょうか。
0739デフォルトの名無しさん
NGNGttp://www.ksky.ne.jp/~seahorse/
特別なドライバは使っていない模様です。
ソースもあるし,勉強になりますよ。まじで。
0740デフォルトの名無しさん
NGNGTClockのソース exe\pagecolor.c にそれっぽい処理が書いてあるので参考になるかと。
でも、一覧される数字が微妙に違いますね。丸め誤差か何か?
0741740
NGNGWin2000では、フックを使ってプロセスに忍び込ませた後、GetCommandLine()を
使って取得できたのですが、Win95ではうまくいきませんでした。
0742デフォルトの名無しさん
NGNG紹介ありがとうございます。
アニメーションまでして非常によくできていると思います。
ただ、やろうとしていることは立体化している時にも
ちゃんとウィンドウの内容が更新されるというものを実現したいのです。
WinXPのVisualStyle機能より下のレイヤーじゃないと駄目なのでしょうかね。
0743740
NGNG補足です。うまくいかなかったというのは、GetCommandLine()で取得できた値が、
取得したいプロセスのものではなくて、自分自身のものが返ってきてしまいました。
0744デフォルトの名無しさん
NGNGフックはちゃんと DLL からやったよな?
あと、GetCommandLine() の値はどうやって自アプリに送ってる?
0745741
NGNGレス感謝です。フックDLL内のフックプロシージャ内でGetCommandLine()を呼んでます。
値は #pragma data_seg() で作成した共有領域を介して実行ファイルに渡してます。
フックプロシージャ内のGetCommandLine()の値をファイルに書き出しましたら、
侵入先プロセスの値ではなく実行ファイルのものが返ってしまってました。
0746デフォルトの名無しさん
NGNG#pragma data_seg() は当然 DLL 内部だよね?
別プロセスと間違えて自分のプロセスを捕まえてるという事は無い?
あ、フックの種類は WH_CALLWNDPROC?
今 MSDN 見て気付いたんだけど、「WH_CALLWNDPROC フックを呼び出すのは、
メッセージを受け取ったスレッドではなく、SendMessage を呼び出したスレッド
のコンテキストです。」 だそうな。
0747746
NGNGNT4 以降はメッセージを受け取ったスレッドのコンテキストみたいだ。
0748746
NGNG0749デフォルトの名無しさん
NGNG何が必要ですか?
0750デフォルトの名無しさん
NGNGコンパイルするにはどうするんですか?
0751デフォルトの名無しさん
NGNGWindows 対応の C/C++ コンパイラ
API そのものについては >>1 の参考リンクを見れ。
0752デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
Win32 API のソースなんてものがどこにある?
それとも、Win32 API を呼び出してるプログラムの事か?
0753751
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1035623265/2
0754デフォルトの名無しさん
NGNG> Win32 API のソースなんてものがどこにある?
当然、MS には、あると思うよ。
>>750 のところにもあるのかなぁ...、飴玉あげるからおじさんにちょっと見せてくんない ?
0755デフォルトの名無しさん
NGNGtest.cとかいう名前で保存したら・・・
0756デフォルトの名無しさん
NGNGdel test.c
0757デフォルトの名無しさん
NGNGそんくらいわかってっから
最近知ったんでつか?
0758デフォルトの名無しさん
NGNGかれこれ8年前だな。覚えたのは。
最近はrmの方がよく使うわ。
0759デフォルトの名無しさん
NGNGちょっとだけよ。
http://www.microsoft.com/windows/embedded/ce.net/previous/downloads/source/default.asp
0760デフォルトの名無しさん
NGNGおまえだれよ?
いつものモー板にかえりなさい
しっし
0761741
NGNG#pragma data_seg() はDLL内部で行ってます。捕まえてるプロセスはファイル名を
見てから行っているので、その点の問題無いです。
フックの種類なのですが WH_CALLWNDPROC を使ってまして、現状のプログラムが
Win2000では問題なく動いていて、Win95ではうまくいかないことから、まさに 746-747 が原因
そのもののように感じました。これからWH_GETMESSAGEで試してみて、改めて報告します。
0762デフォルトの名無しさん
NGNGcopy nul test.c
copy con test.c
0763734
NGNGありがとうございます。
最終的にはまさに>>738のようなことをしたくて、
ビットマップ(をSelectObjectしたDC)にウィンドウを描画->
そいつをテクスチャとしてトライアングルに貼り付ける
と考えていたのですが、layered window を使えばそのようなことができるのでしょうか。
自分で調べた限りはできそうにありませんでした。
できるのであれば教えてください。
とりあえず>>739を参考にしてみたいと思います。
0764741
NGNGWH_GETMESSAGE で試してみましたところ、無事他のプロセスのコマンドラインを取得できました。
Win9xとWinNT系が別物ということとMSDNの原書を読むことの重要性を改めて感じました。
ありがとうございました。
0765746
NGNG0766デフォルトの名無しさん
NGNGわからないことは調べる。素晴らしい姿勢だと思われ。
0767765
NGNG0768デフォルトの名無しさん
NGNG要は結果よ。
MSDN丸暗記して文句だけ言ってるライブラリ厨とMSDNが素早く引けて良いものが作れる人。
どっちが死んだ方が良いかは明白。
0769デフォルトの名無しさん
NGNGいつのまにかupdateされてる場合もあるんで
どんなのがあるか、だけは覚えとく価値はあるけど
詳細までは覚える意味はあんまりないと思う
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNGNT:NtQuerySystemInformation
9x:registry
(´-`).。oO(最近、代行googlerになってるな・・・)
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG特別な理由がない限りPDHのほうがいいのでは
0775デフォルトの名無しさん
NGNGGoogleが自然言語処理できるようになるまでの我慢です!
0776デフォルトの名無しさん
NGNGあとは検索ワードの入力UIを掲示板風にして
あたかも親切な回答者が答えてくれているかのような
人工無能を実装すれば完璧
0777デフォルトの名無しさん
NGNGIEのキャッシュ消せるようになりましたか?
winAPIを使ったキャッシュのクリアのようなのですか...
Delphiでは IEのキャッシュ消すのに以下のようなコンポーネントがあるのです。
http://www.euromind.com/iedelphi/iecache.htm
ところが、実際に組んで見るとキャッシュや履歴の情報を取得・消す操作などが一見
できているようなのですが、実際のIEの履歴を見ると反映されません。
ソースを調べると単にAPI呼び出しをカプセル化したものなので、原因があるとすれば
その先にあると推測されます。
当方、win2000 IE6です。
これも、推測ですがこのコンポーネントの最終バージョンが2001年10月なので単にIE6で動作しなくなったのでしょうか?
ヤフーの掲示板(英語)などでも他の方が触れられているのですが、私は満足な回答を掲示板の中に見つけることができませんでした。
何方かこのへんの経緯をご存知の方いませんでしょうか?
0778771
NGNGすいません、意味がわかりません。
環境は98SEなんですが、
>NT:NtQuerySystemInformation
>9x:registry
これはレジストリ見ろ、ってことでしょうか?
0779デフォルトの名無しさん
NGNG消えないのですが、何のメッセージで何の関数使ったらよいでしょうか?
0780デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNGTrackPopupMenu() じゃダメ?
0783デフォルトの名無しさん
NGNG0784779
NGNG0785デフォルトの名無しさん
NGNGメニューを表示した後に、PostMessage(hWnd, WM_NULL, 0L, 0L); これ。
理由は MSDNに書いてあったよーな気が。
0786779
NGNGやってみます
0787デフォルトの名無しさん
NGNG0788779
NGNGcase WM_TRAYICONMESSAGE:
switch(lp)
{
case WM_RBUTTONDOWN:
POINT pnt;
GetCursorPos(&pnt);
TrackPopupMenuEx(
GetSubMenu(LoadMenu(0,MAKEINTRESOURCE(IDR_POPUP)),0),
TPM_VERTICAL,pnt.x,pnt.y,hWnd,NULL);
PostMessage(hWnd,WM_NULL,0,0L);
break;
・・・
うまくいきませんでした(つ_ ;)
MSDNが古いのか、>>785さんのは載ってなかったです
SetForegroundMessageもありませんでした
動作環境はwin2000+VC6.0です
0789デフォルトの名無しさん
NGNGPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
も追加してみて。
0791デフォルトの名無しさん
NGNGのことだろう、たぶん。
これは TrackPopupMenu の前。
0792デフォルトの名無しさん
NGNGTrackPopupmenu の前に SetForegroundWindow( hWnd )を入れるのだ。
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q135788&
0794デフォルトの名無しさん
NGNGできるならどうやってやりますか?
0795デフォルトの名無しさん
NGNGGetDIBits
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNGうおおおおおおおおおおおおおおおおおおおおおおおおおおおっつつつt
激しくありがとおおおおおおおおおおおおおおお!!!
0799デフォルトの名無しさん
NGNGbaka baka
0800泣くよ?
NGNGあたりでpbmiのbmiColorsに入るかと思えば入りませんでした。
詳しい方法キボンヌです。
0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGもしくはSDKからCHtmlViewを使用する方法って無いですかね?
0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNGどうしてそんなことしなくちゃいけないわけ?
HTML解析して自分で表示させるの作ればいいだけじゃないか。
それをすればプログラム技術もHTMLの仕様にも強くなれるぞ。
0806デフォルトの名無しさん
NGNG802はMFCを使わずにCHtmlViewを使う方法を探してると見た
0807デフォルトの名無しさん
NGNGCSSわ〜?
Scriptわ〜?
0808デフォルトの名無しさん
NGNGCHtmlView自体がすでにMFCなのでは?
0809デフォルトの名無しさん
NGNGBC++5.5.1で作ってるんですが、mshtml.hというのもちょっと気になるけど
全然関係ないですかね?
0810デフォルトの名無しさん
NGNG例えば User32.dll 使わずに CreateWindow() を呼べないかっていうくらい
支離滅裂でないか?
0811デフォルトの名無しさん
NGNG一発ネタ(TrayTest.lzh)
タスクトレイの黄色と紫のチェックのアイコンを
右クリック->exitで元に戻るから大丈夫
まぁ、抜け道は死ぬほどありますが・・・
0812811
NGNG0813デフォルトの名無しさん
NGNGダイアログにWebBrowserコントロール貼り付けるんじゃだめ?
0814デフォルトの名無しさん
NGNGマジレスするとDDBにパレットはありません。
DIBセクションならGetDIBColorTable()で取って
論理パレットに変換。
0815デフォルトの名無しさん
NGNGそのWebBrowserコントロールはMFCなしで動くんか?
つーかそもそも貼り付けられるのか?
0816デフォルトの名無しさん
NGNG「このブリーフケースやフォトアルバムへのアクセスはご利用できなくなっております。」
0818デフォルトの名無しさん
NGNGMFCなしでも当然動くよ。
が、SDKだったのか。それはよく判らん。。
漏れはATLで作ったWindowsに貼り付けてるんだが。
0819818
NGNGCAxDialogImpl
0820デフォルトの名無しさん
NGNG面白いけどでも、Ctrl + Esc or Win キーは逃げられない罠
それに、このスレで晒すのに何の意味があるの?
0822デフォルトの名無しさん
NGNGスピーカーから出る全ての音を録音できるデバイスの入力を選択するには、どうしたらよいのでしょう?
// 入力デスティネーションライン情報取得
MIXERTLINE mxl;
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
mixerGetLineInfo((HMIXEROBJ)hMix, &mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);
// コントロール取得
MIXERLINECONTROLS mxlc;
MIXERCONTROL mxc;
…
mixerGetLineControls((HMIXEROBJ)hMux, &mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE);
// 入力ソース情報取得
MIXERCONTROLDETAILS mxcd;
…
mixerGetControlDetails((HMIXEROBJ)hMux, &mxcd, MIXER_GETCONTROLDETAILSF_LISTTEXT);
mixerGetControlDetails((HMIXEROBJ)hMux, &mxcd, MIXER_GETCONTROLDETAILSF_VALUE);
で、MIXER_GETCONTROLDETAILSF_LISTTEXTで取得した構造体の
dwParam1がラインID, dwParam2がコンポーネントタイプになっているようなので、
dwParam2がMIXERLINE_COMPONENTTYPE_SRC_MICROPHONEになっているインデックスを探し、
MIXER_GETCONTROLDETAILSF_VALUEで取得した配列の該当のインデックスの値を変更して
mixerSetControlDetailsという手順でマイクを録音デバイスとして選択できました。
要するに入力デバイスでコンポーネントタイプを頼りにマイクを判断しています。
ところが全ての音を録音するデバイスは、サウンドカードというかドライバーによってコンポーネントタイプが
「ANALOG」だったり「UNDEFINED」だったりするし、名前も「ステレオミキサー」、「 What U Hear」など様々です。
何か判断する基準というか、こんな方法で(ある程度にしろ)判断できるという方法はないでしょうか?
教えて君で申し訳ない。
0823デフォルトの名無しさん
NGNG何か、それっぽいことやってるサンプル付き
ttp://www.nitoyon.com/vc/tips/ie_component.htm
0825デフォルトの名無しさん
NGNGそれを起動するとOKボタンのほうにフォーカスが行っています。
起動して即座にエディットボックスから文字を入力したいので、
起動直後にカーソルをエディットボックスのほうに移動したいんですが、
そんなAPIあったら教えていただけないでしょうか?
0826デフォルトの名無しさん
NGNGSetFocus
0827デフォルトの名無しさん
NGNG0828卍曹操卍 ◆ruManjiTBY
NGNGwhile (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
0829デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNG0831卍曹操卍 ◆ruManjiTBY
NGNGwhile (GetMessage(&msg, NULL, 0, 0)) {
if (GetMessage(&msg, NULL, 0, 0) == -1)
BEGIN
ああん、抜けちゃう抜けちゃう処理;
END
TranslateMessage(&msg);
DispatchMessage(&msg);
}
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNGタブオーダーちゃんと設定してください、おながいします。
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG単にリソースファイルで定義された順がタブオーダー
0836デフォルトの名無しさん
NGNGデフォルトのアイテムにキーボードフォーカスを与えるかどうかを
WM_INITDIALOGの戻り値で指定できるけど
アイテムの指定はできないね
0837デフォルトの名無しさん
NGNGデフォルト以外に与えたいときは
SetFocusしてFALSEを返すってことだから。
でもデフォルトがフォーカスを与えたいアイテムになるよう
タブオーダを設定してほしいね。
0838デフォルトの名無しさん
NGNGそれは、ダメだろう。
GetMessage は、メッセージキューからメッセージを取り出す関数だぞ。
0839デフォルトの名無しさん
NGNGこりゃまたバカ全開だな。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGBEGIN、END ってあたりがそもそもおかしい。
0842デフォルトの名無しさん
NGNGそれを言い出したら識別子に日本語を使ってるのがおかしい。
0843デフォルトの名無しさん
NGNGまあ何にしろ 831 は・・・
0844デフォルトの名無しさん
NGNG枠もタイトルバ-も持たないウインドウを作成したいのですが
CreateWindowExでdwExStyleとdwStyleに0を指定しても
枠とタイトルバ-が付いてしまうんです。
hWnd_Mem = CreateWindowEx(0,Name_Mem,NULL,0,Left,Top,Width,Height,NULL,NULL,hInst,NULL);
Name_Memが指すウインドウクラスのStyleも0にしています。
どこか違っている所があるのでしょうか?
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNGだからWS_POPUPを指定しろ
0848デフォルトの名無しさん
NGNG出来ました。有難う御座います。
VBのFormに似せたclassを作ろう思っているのですが
ウィンドウスタイルだけで覚える所有りすぎです・・
次はSetWindowLongに挑戦してみます。
0849アルファボンド
NGNGOSはWindows2000です。
DocumentPropertiesはローカル変数のDEVMODEを設定してくれるだけですよね?
苦し紛れにレジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\<プリンタ名>\Default DevMode
を、DEVMODEWと仮定して変更してみたんですが、Windowsを再起動しないと反映
されません。
SHChangeNotify(SHCNE_UPDATEITEM, SHCNF_PRINTER, "<プリンタ名>", NULL);
してみましたが関係ないみたいです。
誰かご存知ありませんか?
0850デフォルトの名無しさん
NGNGFind -> Load -> LockResourceの戻り値のポインタを使えばいいんですよね?
0851デフォルトの名無しさん
NGNG最大化ボタンを無効化したのですが、
タスクバーを右クリックすると最大化が可能なのです。
無効化する方法知っていらっしゃる方いませんでしょうか
0852デフォルトの名無しさん
NGNGリソースエディタのスタイルでチェックを外せば、
最大化は出てこないはずだけど・・・
0853デフォルトの名無しさん
NGNG今やってみたら選べなくなってました。
学校でコンパイルしたときは確かに選べた(最大化したのも見た)のに…。
フォルダごとコピったものだから中身も変わってないはずなんですが
お騒がせしました
0854デフォルトの名無しさん
NGNGSetWindowPos(hWndDlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
とプロシージャ関数内に書き込んでそのプログラムでメッセージボックスを開くと
開いたメッセージボックスが操作不能になってしまいます。
これは、ダイアログが常に手前に表示されているからなんでしょうか?
常に手前を解除してからメッセージボックスを表示させたらうまくいくのかと思ったんですが
解除の方法がわからなくて。どうしたらよいでしょう。
0855デフォルトの名無しさん
NGNGとプロシージャ関数内に書き込んでそのプログラムでメッセージボックスを開くと
?
0856354
NGNGに設定したダイアログベースのプログラムからメッセージボックスを表示させると
メッセージボックスが操作不能になる、ということなんですが。変?
0857854
NGNG0858デフォルトの名無しさん
NGNG試したことないけど、メッセージボックスも常に手前表示
にすればいいんじゃないの?
MessageBoxのパラメータで指定できたはず。
または、ダイアログ側を解除するなら
SetWindowPos(hWndDlg, NULL, 0, 0, 0, 0,
SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER);
0859858
NGNGSetWindowPos(hWndDlg, HWND_NOTOPMOST, 0, 0, 0, 0,
SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE);
0860デフォルトの名無しさん
NGNGかけるソフトをVC++で作ろうと思っているのですが、FATやらなんらや
で良くわかりません。大まかで良いのでアドバイスをいただきたいです。
環境はWin2000のVC++6.0です。
よろしくお願いします
C++相談室から勧められて来ました。マルチじゃありません。
0861デフォルトの名無しさん
NGNGまずファイルシステムの勉強。
それとそれをいじるプログラムをいくつか書いてみる。
話はそれからだ。
0862デフォルトの名無しさん
NGNGAbsoluteWrite
AbsoluteRead
0863デフォルトの名無しさん
NGNGWizardで楽勝!
0864デフォルトの名無しさん
NGNGTopMostのウィンドウをオーナーに持つダイアログもTopMostに
なるんじゃないの? ちゃんとオーナー指定してる?
0865854
NGNGSetWindowPosをプロシージャの真下に書いていたのが問題でした。
WM_INITDIALOG内に書いたら普通に動きました。
0866デフォルトの名無しさん
NGNG>プロシージャの真下
自分言語がお好きなお方で。
0867デフォルトの名無しさん
NGNGクリップボードの「貼り付け」の指示を送りたいんだけど、
・後ろのウインドウのウインドウハンドルを取得
・そのウインドウハンドル宛にWM_PASTEをSendMessage
でいけるのかな?さっき適当にやってみたらダメだったんだけど・・・。
0868デフォルトの名無しさん
NGNGhttp://www.charlesriver.com/titles/lowpolygon.html
0869デフォルトの名無しさん
NGNGHWND omancho;
omancho=FindWindow(NULL,"無題 - メモ帳");
omancho=FindWindowEx(hwndnp,NULL,"Edit",NULL);
PostMessage(omancho,WM_PASTE,NULL,NULL);
0870デフォルトの名無しさん
NGNGタイトルで並べ替えるにはどうしたらよいのでしょうか。
ご存じの方いらっしゃいましたらどうか御教授ください。
0871デフォルトの名無しさん
NGNG↓
RemoveMenu()
↓
並べ替え
↓
InsertMenu()
↓
DrawMenuBar()
↓
(゚д゚)ウマ- ・・・かどうかは試してないから知らん
0872デフォルトの名無しさん
NGNG左上のアイコンを独自の巨大な物にして、
さらにメニューが隠れるのを防ぐために右にずらしたいのですが、、、
前者はWM_NCPAINTを乗っ取ることにしても、後者の実現方法が分かりません。
ちょっと上手く説明できなくて申し訳ないですが、どなたかお願いします。
0873デフォルトの名無しさん
NGNG想像だけど、あれはタイトル無しのウィンドウに根性で全部描画してるんじゃないの?
0874デフォルトの名無しさん
NGNG先頭にタイトルが空白のメニューを入れて、DISABLEDにしといたらどうか?
試してないけど。
0875デフォルトの名無しさん
NGNGその通り。なんちゃらhittestとか乗っ取って移動とかさせてる模様。
0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNG場所だけ確保してるのね。
NCPaint とかで独自に描画してる
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG漏れは画面のデザインでグラデーションなしにしてるのに、
こいつだけグラデーションになってるな。
0880デフォルトの名無しさん
NGNGMSは言ってるね
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGありがとうございます。残念ながら上手くいきませんでした。
メニューの表示がぐちゃぐちゃになってしまいました。
ウィンドウズのスタートメニューでできているのですから何らかの方法はあると思うのですが。
0883871
NGNG実は漏れ、動的メニュー使ったこと無くて、適当言ってたよ。スマン。
でもあれくらいなら MSDN 検索ですぐ出てくるから。
スタートメニューはメニューポップアップじゃなくて、独自のウィンドウ
じゃないのか?
ファイルやショートカットのドラッグ&ドロップもできるし。
0884デフォルトの名無しさん
NGNGそうなんですか、どうもでした。
全部自前だとめんどくさいですね(汗
メニューの位置ですが、空白メニューだと
フォントのサイズに左右されると思うのですが
システムの設定でフォントのサイズを変更しても
綺麗な位置に描画されているみたいでした。
メニューも根性で描画しているのでしょうか
それだとさすがに諦める気になります。
0885871
NGNGstruct MenuItem { MENUITEMINFO mi; char name[256]; };
int CompareMenuItemA(const void *elem1, const void *elem2)
{
return strcmp((*(MenuItem**)elem1)->name, (*(MenuItem**)elem2)->name);
}
int CompareMenuItemD(const void *elem1, const void *elem2)
{
return strcmp((*(MenuItem**)elem2)->name, (*(MenuItem**)elem1)->name);
}
void ProcessMenu(HWND hWnd)
{
static BOOL ToAscend = false; int i;
HMENU hMenu = GetSubMenu(GetMenu(hWnd), 0); int MenuCnt = GetMenuItemCount(hMenu);
MenuItem *Items = (MenuItem*)malloc(MenuCnt * sizeof(MenuItem)), **ItemIdx = (MenuItem**)malloc(MenuCnt * sizeof(MenuItem*));
for(i = 0; i < MenuCnt; i++)
{
memset(&Items[i], 0x00, sizeof(Items[i]));
Items[i].mi.cbSize = sizeof(Items[i].mi);
Items[i].mi.fMask = MIIM_CHECKMARKS | MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_SUBMENU | MIIM_TYPE;
Items[i].mi.dwTypeData = Items[i].name;
GetMenuItemInfo(hMenu, i, TRUE, &Items[i].mi);
GetMenuString(hMenu, i, Items[i].name, sizeof(Items[i].name), MF_BYPOSITION);
ItemIdx[i] = &Items[i];
}
if(ToAscend = !ToAscend) qsort(ItemIdx, MenuCnt, sizeof(*ItemIdx), CompareMenuItemD);
else qsort(ItemIdx, MenuCnt, sizeof(*ItemIdx), CompareMenuItemA);
for(i = MenuCnt; i > 0; i--) RemoveMenu(hMenu, i - 1, MF_BYPOSITION);
for(i = 0; i < MenuCnt; i++) InsertMenuItem(hMenu, i, TRUE, &ItemIdx[i]->mi);
DrawMenuBar(hWnd);
free(Items); free(ItemIdx);
}
0886デフォルトの名無しさん
NGNGオーナー描画にして、WM_MEASUREITEMで適切な幅を返してやるってのは?
0887デフォルトの名無しさん
NGNGListBoxや、ActiveXコントロールのMicrosoft ListViewというものなら挿入
できるみたいなのですが。SysListView32の挿入の仕方がわかりません。
あと、ActiveXコントロールのListViewというのはSysListView32に比べて
どういう利点があるのですか?
0888デフォルトの名無しさん
NGNGスレ違い。
0889デフォルトの名無しさん
NGNGすみませんでした。別のスレで質問します。
0890デフォルトの名無しさん
NGNG確かに微妙に違うが、他に適切なスレは無いだろ・・・
>>887
普通にリストビュー挿入出来ないか?
つか、開発環境とバージョンを書きなさい
0891デフォルトの名無しさん
NGNG自分で%windir%を置き換えるしかないでしょうか。
0892デフォルトの名無しさん
NGNG× c:\windows\hogehoge
○ c:\windows\hoge
0893デフォルトの名無しさん
NGNG> 確かに微妙に違うが、他に適切なスレは無いだろ・・・
アホですか?リソースエディタの使い方の質問だぞ?
その開発環境のスレで訊けばいい話。
仮に開発環境スレを探して見つからなかったというなら
質問にその旨を明記してるはず。というか明記すべき。
>>891
ExpandEnvironmentStrings
0894888
NGNGおっしゃる通り普通に出来ました。
大きいアイコンの表示になっていたので気付かなかっただけでした。
どうもありがとうございます。
>>893
単にスレ違いだと気付いてなかっただけです。すみません。
0895デフォルトの名無しさん
NGNGGetCursorPos
ScreenToClient
ChildWindowFromPointEx
を使ってカーソル位置のハンドルを取得することはできたのですが
もっとシンプルな方法ありませんか?
0896デフォルトの名無しさん
NGNGGetCursorPos()
WindowFromPoint()
0897895
NGNGありがとうございました
0898895
NGNGありがとうございました。
0899デフォルトの名無しさん
NGNGどのタイミングでサイズの取得・復元を行えばよいのでしょう?
フック関数には WM_DESTROY が送られてこないようだし、
CDN_INITDONE 受信時にダイアログのサイズを変更すると
プレースバーの表示がおかしくなってしまいます。
どなたか良きアドバイスをお願いします。
0900デフォルトの名無しさん
NGNGありがとうございます。あいかわらず苦戦中です。
最初のポップアップメニューの WM_MENURBUTTONUP 内で2つ目のポップアップメニューを表示し
2つ目のポップアップメニューで [並び替え] を選択したときに
1つ目のポップアップメニューを表示状態のまま整列して再描画させたかったのですが
表示中のポップアップメニューにはどうも DrawMenuBar() が通用しないようです。
ウィンドウズのスタートメニューをもう少しとよく調べてみます。
どうもありがとうございました。
そこで追加質問なのですが
ウィンドウズのスタートメニューのように非アクティブになると消えてしまうウィンドウは
どうやって spy しいたらよいのでしょうか?
0901デフォルトの名無しさん
NGNGリストビューウィンドウにファイルリストを表示してあり、ファイル名をクリックで
WM_NOTIFYを処理し、エディットウィンドウに内容表示しています。(これはできた)
case WM_NOTIFY:
lpnmhdr = (LPNMHDR)lp;
if (lpnmhdr->code == NM_CLICK )...
さてリストをカーソルで移動しただけで(選択状態で)エディットウィンドウに
表示したいんだけど、選択項目が変わった時のメッセージ?などがわからず進めません。
よろしくおねがいします。
0902デフォルトの名無しさん
NGNGMicrosoft Control Spyを持っておくと便利
0903デフォルトの名無しさん
NGNG特定のキー入力を無効にする様なツールを作っています。
しかし、WH_GETMESSAGEでフックした場合はキー入力を無効に
出来ませんし、WH_KEYBOARDでフックした場合は、無効にはできたのですが、
今度はどのアプリでキーが入力されたのかを知る手段がありません。
WH_MOUSEの、MOUSEHOOKSTRUCTのメンバhwndの様に、
キーボードフックで、入力先のHWNDを取得する方法は無いのでしょうか?
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNGGetForegroundWindow()
GetWindowLong()
0907デフォルトの名無しさん
NGNG通信ゲーを作っていて、プレイヤーではなく、PCを識別する方法を探しています。
同じPCからのアクセスは弾きたいということです。
そこで例えばHDDのIDや、OSWindowsのIDなどを取得する方法はありますでしょうか。
(ID自体あるのか知りませんが…)
一番最初にネットワークカードのマックアドレスを思いついたのですが、
複数枚刺しているのも珍しくないですし
・関連質問(ちょっとスレ違い?)
Winsockで繋いだとき、相手のマックアドレスを取得できますが、
ルーターをかましている場合ルーターのマックアドレスですよね…?
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG否定だらけだから最初に謝る。すまん。
HDD は、RAID なんかされてると ID なんていくらでも偽造可能。
Windows はプロダクト No. があるけど、これはいくらでもピーコ可能。
PentiumIII では CPU ごとにシリアル番号振られてるけど、通常は BIOS で
使用不可に設定されてる。
ネットワークカードの MAC アドレスは、複数挿しのでも最初の番号を取ればいいだけ
だけど、大抵のカードで任意の MAC アドレスが設定可能。
ルータをはさんでれば当然その MAC アドレス。
単に、同じ PC で 2つ以上同じプログラムを起動されたくない、という話なら、
そのプログラムに CreateMutex() 仕込んで重複起動を防止すればいい。
0910デフォルトの名無しさん
NGNG907 は、HTTP とは一言も言っていないと思うぞ。
0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNGルーター通してる場合はどうするよ? サポート対象外?
0913デフォルトの名無しさん
NGNG>だけど、大抵のカードで任意の MAC アドレスが設定可能。
メーカーでもないのにそんなん手軽にできんの?
0914デフォルトの名無しさん
NGNGドライバの設定で簡単に変更できるのが結構あるよ。
ルータもね。
0915デフォルトの名無しさん
NGNGやはり識別は難しいですね。マックアドレスまで偽造可能とは参りました
CreateMutexなどの多重起動防止は、意外とさっくり回避できる上、
たしかXPで別ユーザーで起動するのは防げないとか聞いたことがあります。
>Windows はプロダクト No. があるけど、これはいくらでもピーコ可能。
これがちょっと気になります。
つまりピーコしたWindowsをインストしてる同士だとNo.が重なるということでしょうか。
OSをピーコしてる人なんぞ無視したいところですが
0916デフォルトの名無しさん
NGNG別に書き換え可能でも問題ないんじゃないか?
起動時だけでなく時々取得し直せば?
0917デフォルトの名無しさん
NGNG初歩的質問ですが、よろしくお願いします。
スレッドBからスレッドA(WinMain・プロシージャ含む)に文字列を渡す、
といった状況なのですが、
const char *型は、ポインタではなくポインタの指す対象が定数になるという?
記述をMSDNで読み、最近知りました(初歩だとは思うのですが)。
ただ、不思議に思ったのですが、スレッドBの関数hogeがLPCTSTR型で受け取った
文字列ポインタlpctstr_Hoge(hoge()を呼んだ関数が、char型配列(const宣言でもstatic宣言でも
ない)で宣言した文字列をLPCTSTR型にキャストしてhoge()に渡したもの)を
PostMessage(hwnd, WM_HOGE, (WPARAM)lpcstr, 0)でスレッドAのウインドウプロシージャに
渡すと、対象の文字列の内容が破棄されておらず、内容が保持されていました。
私としては、PostMessageした側(hoge())が終了しているだろうから文字列の内容は
破棄されていると思っていたのですが、これは一体どういうことなのでしょうか??
hoge()を呼んだ関数のchar配列が定数になっているのなら、次に同じ処理を行ったとき
どうなるのでしょうか。かなりバカな質問だと思うのですが、理解するヒントが頂ければ
幸いに思います。よろしくお願いします
0918917
NGNG○PostMessage(hwnd, WM_HOGE, (WPARAM)lpctstr_Hoge, 0)
0919デフォルトの名無しさん
NGNGCreateMutexでの多重起動防止の回避ってどうやるんでしょうか。
興味があります。
XPなどで別ユーザーでの多重起動防止は、CreateMutexに使う文字列に Global\
を前置すれば、可能なはず。
0921デフォルトの名無しさん
NGNG説明が要領を得ないからよくわからんが、問題はちゃんと切り分けろ。
型が const か否かと、その実体が破棄されるか否かは全く別の話だ。
で、メッセージループを持つスレッド A が PostMessage() のメッセージを
受けた時点で、「hoge() を呼んだ関数」 はまだ生きてるの?
焦点はそこ。
hoge() そのものが終了しているかどうかは全く関係無い。
void foo()
{
char str[] = "abcde";
DoSomething1();
hoge((LPCTSTR)str);
DoSomething2();
}
str がいつ破棄されるのか考えてみたら?
ちなみに、スレッド A がメッセージを受理してる時点で foo() までも終了
しているなら、間違い無く破棄されている。
スタックに残骸が残っていて、破棄されてないように見えてるだけかも知れない。
0922デフォルトの名無しさん
NGNGすみません、そうでした。
タイミング的には確実に、hoge()を呼んだ関数は終了しているはずで、
プロシージャを1秒Sleep()させても、同じく内容が残っていました。
0923デフォルトの名無しさん
NGNGだったら、コレじゃないの?
> ちなみに、スレッド A がメッセージを受理してる時点で foo() までも終了
> しているなら、間違い無く破棄されている。
> スタックに残骸が残っていて、破棄されてないように見えてるだけかも知れない。
SendMessage() じゃダメなの?
0924917
NGNGその方がよさげなのですが、どうなるか試すつもりでPostにしてみました。
すみません、言われる通り説明不足でしたので追記させて下さい、
>>921さんが書いてくださった例のように、strはconstとかでないchar配列で、
foo()からhoge()にLPCTSTR型にキャストして渡したのですが、
LPCTSTR型にキャストしたことによって残った、というのは有り得ない話でしょうか、
LPCTSTR型はconst char *型に近いようなものだと覚えていますが、
const修飾子のことがよくわかっていないもので・・・
他にも色々試してみることにします。
0925デフォルトの名無しさん
NGNGあり得ないって。
912 にちゃんと書いてあるでしょ。
> 型が const か否かと、その実体が破棄されるか否かは全く別の話だ。
const は、プログラムの上から値を変更できないっていう制限の話。
実体が破棄されるか否かは、変数のスコープの話。
0926917
NGNGなるほど、やっと理解できました。
長々とお付き合い頂いてありがとうございます。
スタックに残っているというだけなら、念のため、
SendMessage()に書き換えておこうと思います。
ありがとうございました。
0927デフォルトの名無しさん
NGNG↓
MINMAXINFO設定(A)
↓
ユーザによるウィンドウサイズの変更
↓
MINMAXINFO更新(B)
サイズ変更中は(A)の設定が使われるようですが、こういう仕様ですか?
またトラッキング中に(B)の設定を逐一反映させたいのですが、できませんか?
0928デフォルトの名無しさん
NGNGアンチエイリアスをかけてくれるようなAPI、
あるいはペンの設定などがあれば教えてください。
0929デフォルトの名無しさん
NGNGWM_SIZING
0930デフォルトの名無しさん
NGNGMSDN
0931デフォルトの名無しさん
NGNGポップアップで通知するのってどうやってやるの?
0932デフォルトの名無しさん
NGNG私がやろうとしていることは、送信時にRTSをLowにて送信し
送信が完了するとRTSをHighにするといったものです。
DWORD rcnt;
EscapeCommFunction( RsHandle, CLRRTS );
WriteFile( RsHandle, Buffer.c_str( ), (DWORD)Buffer.Length( ), &rcnt, NULL );
EscapeCommFunction( RsHandle, SETRTS );
これだとデータが全て送信される前にRTSがHighになってしまって
WriteFileは送信バッファーに入れるだけで、実際にデータを
吐き出していない感じです。
これをデータが全て吐き出されてからRTSをHighにするには
どうしたらいいのでしょうか?よろしくお願いします。
0934デフォルトの名無しさん
NGNGシリアル通信のサンプル↓
http://msdn.microsoft.com/library/en-us/vcsample98/html/vcsmpserialsampleforcommunicationsdemonstration.asp
0935デフォルトの名無しさん
NGNGシリアル通信の送信バッファって、
デフォルトは0だった気がするのだが・・・。
とりあえず、WriteFileの戻り値と、
書き込んだバイト数をチェックしてみたら?
0937デフォルトの名無しさん
NGNGそれって、単に何かミスって関数失敗してるんでないの?
GetLastError()してみた?
0938932
NGNGいえ、送信する関数は>>932の通りで実際にデータは送信されています。
しかしながらWriteFile後にEscapeCommFunction( RsHandle, SETRTS ); を行ったら
実際にデータが吐き出される前にRTSがHighになってる感じがします。
因みにボーレート9600で6バイト送信していますが、これだと最低6msはRTSが
Lowにならなければいけないはずなのに、なってくれないんですよ・・
0939デフォルトの名無しさん
NGNG漏れは使ったことないが、
WaitCommEventのEV_TXEMPTYでどうよ
0942デフォルトの名無しさん
NGNG多重起動防止は実によくあるトピックなのでMSDNでもWebでも
多くの情報があります。検索してみてください。
「複数起動の防止」とか「二重起動防止」とか微妙に表現を変えると吉。
要注意なのは、OpenMutexの結果をチェックしてCreateMutexする
コードは間違ってるってこと。
#なんであんなコードが出回ってるんだろ。
0943デフォルトの名無しさん
NGNG漏れはCreateMutexしてGetLastErrorで見てるけど、
OpenMutexはどうダメなの?
0944919
NGNG多重起動防止の方法については知っていますが、
これを回避する方法というのに興味があったのです。
多重起動防止にMutexを使った場合、回避は相当に
大変だと思うんですが。
0945デフォルトの名無しさん
NGNG可能性としては低いけど、OpenMutex() と CreateMutex() の間で他の
コンテキストが CreateMutex() しちゃう可能性があるから、チェックとして
成り立たないって事だろ。
同じルーチンを複数のスレッドが通る時なんか特に。
>>944
一体何が大変だと思うの?
CreateMutex() 実行して、すでにミューテックスが作られているなら即終了
で何か問題あるの?
0946945
NGNG「回避の方法」 ね。
それは漏れも知りたい。
0947デフォルトの名無しさん
NGNGtimeGetTime() ってどのくらいはかれるんでしょうか?一時間とかいけるのでしょうか?
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG一部のWin95環境で問題があるらしい
http://clearbrain.khsoft.gr.jp/any/history2001.htm
の2001/07/11
でもほとんどの人はそんな深い考えなんてなくて
競合条件という言葉すら知らないに1000Mutex
0951デフォルトの名無しさん
NGNGという事は、CreageMutex(FALSE) でミューテックス作成したのち、
WaitForSingleObject(0) が WAIT_TIMEOUT になるかどうかを調べ
たほうがいいのか?
0952デフォルトの名無しさん
NGNG計算された物なんでしょうか?
dwStyleをキャストしてSetWindowLongで渡すと暴走に近い予期せぬ動きを
してしまいます。
DWORD hoge=(DWORD)(GetWindowLong(hWnd,GWL_STYLE))|WS_CAPTION;
等とするとhogeはSetWindowLongで使える有効値になるようなのですが
dwStyleそのものを渡す事は出来ないのでしょうか?
0953デフォルトの名無しさん
NGNGなるほど。それなら完璧だ。
最初に作成したプロセスがそのまま所有権を持つ必要はないから
作成と所有権の取得はatomicでなくても問題ないな。
0954デフォルトの名無しさん
NGNG何が問題になってるのかわからないけど、SetWindowLong() ではちゃんと
GWL_STYLE を指定してる?
0955デフォルトの名無しさん
NGNGGWL_STYLE指定しています。
具体的には
SetWindowLong(hWnd,GWL_STYLE,(LONG)dwStyle);
が上手くいかないのです。
0956デフォルトの名無しさん
NGNG「hWnd パラメータで指定したウィンドウが呼び出し側のスレッドと同じプロセスに
属していない場合、SetWindowLong 関数は失敗します。」ってのは?
0957デフォルトの名無しさん
NGNGそのへんは問題無いと思います。
DWORD hoge=(DWORD)(GetWindowLong(hWnd,GWL_STYLE))|WS_CAPTION;
SetWindowLong(hWnd,GWL_STYLE,hoge);
このようにすれば反映されるんで・・・
これdwStyleの各定数を有効に変更された物と無効に変更された物とで
いちいち論理演算してやらないとだめって事ですよね?
それは面倒なのでdwStyleの値そのものが使えないかと思いましで
0958デフォルトの名無しさん
NGNG「dwStyleの値そのもの」ってdwStyleに何もセットしないでSetWindowLongに渡すってこと?
0959957
NGNGしたい物 ○
です。
あれ?これってもしかして激しくスレ違いの予感??
APIの問題じゃなくて論理演算の問題かな?
0960gn355my0
NGNG> DWORD hoge=(DWORD)(GetWindowLong(hWnd,GWL_STYLE))|WS_CAPTION;
> SetWindowLong(hWnd,GWL_STYLE,hoge);
> このようにすれば反映されるんで・・・
今はどーやってんの?
0961デフォルトの名無しさん
NGNGDWORD dwStyle;
SetWindowLong(hWnd, GWL_STYLE, (LONG)dwStyle);
ってやってるように聞こえる。
0963957
NGNGSetWindowLong(hWnd,GWL_STYLE,(LONG)dwStyle);
ていうふうにやりたいんですけど・・
0964デフォルトの名無しさん
NGNGそれだとCreateWindowに渡したスタイルが入ってないんじゃないの?
0965デフォルトの名無しさん
NGNGCreateWindowにはどんなスタイルの組み合わせを渡してるのさ?
0966957
NGNG0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNGじゃあ
DWORD dwStyle = WS_POPUP | WS_CAPTION | WS_SYSMENU;
SetWindowLong(hWnd, GWL_STYLE, (LONG)dwStyle);
では?
というか、いちいちCreateWindowに何スタイルを渡しているか調べなくてもいいように
GetWindowLong(hWnd, GWL_STYLE)で既存のスタイルを取得するんだけど・・・
0969デフォルトの名無しさん
NGNG漏れのホストでは無理だ。
0970デフォルトの名無しさん
NGNGWin32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893/
0971デフォルトの名無しさん
NGNG乙アリ
0972957
NGNGCreateWindowのdwStyleとGetWindowLongの戻り値とでは
スタイル=0の場合の初期値が違うようなのでこの戻り値は
使わなくてはいけないようです。
DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);
DWORD dwNewStyle = (dwStyle & ~dwRemove) | dwAdd;
SetWindowLong(hWnd, GWL_STYLE, dwNewStyle);
ていう感じにするしかないようです。
レスくれた方有難う御座いました。
0973942
NGNG激しく鬱。
…逝ってくる。
0975デフォルトの名無しさん
NGNG多重起動防止の回避?多重起動防止をしなけりゃいいんじゃねぇ?
それとも、多重起動防止策が施されたアプリを多重起動したいってことか?
→そんなことしてどうなる?
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGランタイムDLLのエントリー関数で初期化されるから_beginthreadexつかう
必要性を感じないんだが。
0979デフォルトの名無しさん
NGNGただその理由は、「ランタイムDLLのエントリー関数で初期化されるから」
ではない。
というか、何がエントリー関数で初期化されるといいたんだ?
0980デフォルトの名無しさん
NGNGDWORD WINAPI TestFunc(LPVOID ThreadData)
{
ThreadInfo &Info = *(ThreadInfo *)ThreadData;
std::string RetStr("result: "); const char *sep = ",";
char IDBuf[64]; sprintf(IDBuf, "Thread 0x%08X Info", GetCurrentThreadId());
WaitForSingleObject(Info.hMutex, INFINITE); Sleep(100); char *s = strtok(Info.TestStr, sep); ReleaseMutex(Info.hMutex);
while(s) {
RetStr += s; RetStr += " - ";
WaitForSingleObject(Info.hMutex, INFINITE); Sleep(100); s = strtok(NULL, sep); ReleaseMutex(Info.hMutex);
}
MessageBox(NULL, RetStr.c_str(), IDBuf, MB_OK);
return 0;
}
int main()
{
DWORD Thread1ID, Thread2ID; HANDLE hMutex = CreateMutex(NULL, TRUE, NULL);
ThreadInfo Info1 = { hMutex, "ab,cd,ef,gh" }, Info2 = { hMutex, "12,34,56,78" };
HANDLE hThread1 = CreateThread(NULL, 0, TestFunc, &Info1, 0, &Thread1ID);
HANDLE hThread2 = CreateThread(NULL, 0, TestFunc, &Info2, 0, &Thread2ID);
ReleaseMutex(hMutex);
WaitForSingleObject(hThread1, INFINITE); WaitForSingleObject(hThread2, INFINITE);
return 0;
}
0981980
NGNGstruct ThreadInfo { HANDLE hMutex; char TestStr[12]; };
_beginthreadex() って要らないの?
0982デフォルトの名無しさん
NGNGニュアンスがよく分からんが、プロセス注入→ReseaseMutexなんてどうっすか?
0983デフォルトの名無しさん
NGNG「プロセス注入」 って何?
0984デフォルトの名無しさん
NGNG多分そーゆー問題じゃないと思うけど、とりあえず。
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG> というか、何がエントリー関数で初期化されるといいたんだ?
CRT_INITとか呼ばれてるんだが…
以前、_beginthreadexつかってたら、CRT_INITがスレッド作るたびに2回呼ばれてて、
それ以来、CreateThread使ってる。
0987デフォルトの名無しさん
NGNG名前を指定してCreateMutexしなきゃ
0988デフォルトの名無しさん
NGNG名前付きミューテックスと名前無しミューテックスとで、何か動作が変わるの?
0989デフォルトの名無しさん
NGNGその先のはなし。
CRT_INITは、DLL_THREAD_ATTACH時には、
ホトンド何もしないで帰るはずだが。
0990デフォルトの名無しさん
NGNGEscapeCommFunction
を使っているアプリを作ったのですが、どうもWin2000では
動作していないように思えます。
Win2000でこれらのAPIを動かすにはどうすればいいのでしょうか?
0991デフォルトの名無しさん
NGNGすまん、一般用語だと思い込んでたが、ググッても全然引っかからなかった。
SetWindowsHookEx等使って、他のプロセス上で独自の実行コードを走らすテクのことを言いたかった。
0992デフォルトの名無しさん
NGNG忠告ありがとう。これからは気をつけるよ。
0993デフォルトの名無しさん
NGNGもう寿命ないから次スレ逝ってね。
http://pc3.2ch.net/test/read.cgi/tech/1036654893/l50
>>991
「フックでコンテキスト取る」 みたいな言いまわしがわすりやすいと思う。
っていうか 「注入」 という言葉で表現するような処理内容じゃないぞ。
「侵入」 のがまだいいと思う。
0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG高校生のときの話なんだけど、25歳の女の先生がいたわけ。
俺のクラスの副担任で、
0997デフォルトの名無しさん
NGNG俺のクラスがやんなきゃならないのさ。
んで、いつものようにその教室の掃除当番だったので行った。
でも他の奴はみんなさぼって行ったのは俺だけだったのよ。
当時の俺は、
0998デフォルトの名無しさん
NGNGで、そうなるとその教室には俺とその25歳の先生しかいなくなるわけだ。
人があまりいない放課後によ。
その先生、特別美人てわけじゃないんだけど、小柄でかわいい系の人だった。
んで、掃除も終わりかけてさぁ帰ろうかってところで、
0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。