883 :
デフォルトの名無しさん:
VC++三日目の初心者です、APIとMFCの違いも感覚でしか理解していません
いくらでもたたいてくれて結構です
画像を加工して保存がしたいのですが
HDCで保持するのとDIBデータを扱う2つがあるのですが
この2つについての、違いをご教授願いたいのです。
884 :
デフォルトの名無しさん:04/09/15 22:26:04
>>883 DIB も DDB も HDC で管理する点では同じだ。
読み込みは LoadImage でできるが、書き込みは自分で関数書くことになる。
詳しく説明しようとすると、ここにまんまソース晒すことになるんでやめとくが、
キーワード出しとくから、がんばってみな。
BMP形式のファイルは先頭から
BITMAPFILEHEADER 構造体
BITMAPINFOHEADER 構造体
色値の配列(型は色数によって異なる)
という形式になっている。
ファイルの取り扱いはAPIならCreateFile、MFCならSerializeかCFileだ。
>>880を要約すると
CreateWindowExにWS_EX_TOOLWINDOWを渡すのは、
外部から操作するのには使えなさそうだから、別の方法を教えてください
ということです。お願いします。
HideWindow?
>>885 SetWindowLongで出来るのかどうかオレにはわからない。
あとはアレだな、最小化アイコン専用のウィンドウを
つくって、本物ウィンドウと連携させるとか。
プロセスを終了することなく親ウィンドウを閉じて作り直すこのって
どうゆう手順になりますか?
889 :
デフォルトの名無しさん:04/09/15 23:55:54
>>888 そういうことが出来る造りにしておく。
他プロセスのウィンドウの話なら、基本的に無理。
>>889 最初に開いたウィンドウのことです。
>>890 自プロセスでやるならどういった準備が必要になるのでしょうか?
892 :
デフォルトの名無しさん:04/09/16 00:08:15
>>891 つまり、あなたのアプリではあらゆるウインドウが全て
WM_DESTROY に対して PostQuitMessage を発行するわけか
>>882 Googleだけが調べる方法じゃないでしょ。
WS_EX_CLIENTEDGEが定義されているヘッダファイルから、なんとかFLATを
GREPするとか。
894 :
デフォルトの名無しさん:04/09/16 02:33:22
アプリの多重起動を防ぐ為にCreateMutexするところまではわかったんですが
Mutexの名前をシステム内で一意にする方法はありますか?
適当な名前を引数にすると他のアプリと衝突しそうな気がするんですが・・
GUID使うとかは?
>>895 みんながそうしているならそれでいいんだがね
exeへのフルパス
リストビューについてなんですが、
もしかして隠しカラムを設定できますか?
MSDN見ても書いてないから無理なのかなぁ
LVCOLUMNのcxに0設定して擬似的にするしかありませんね?
むかつく
空から星が落ちてきて直撃しそうで怖いんですがどうしましょう?
っていう質問と似てるな。
゚・(つд`)・゚・
とりあえず日本語(全角文字)使っとけ、くそども。
「ぬるぽ....」でもなんでもOK。バックスラッシュ以外はすべてOK。
Windowsは内部的には文字列リソースをUnicodeで持つので、
海外のアプリと衝突することはかなり回避できるはずだ。
>Windowsは内部的には文字列リソースをUnicodeで持つので、
これと
>海外のアプリと衝突することはかなり回避できるはずだ。
これは何の関係があるの?
というかほんとに適当に16文字くらい使えば衝突しないと思うけど。
何を指定したって確率の問題じゃないですかー。
完全に回避することができない。たんなる確率の問題だから、星の直撃の心配
と同じ。偶然の一致を避けるような工夫をできるだけするしかない。ながーい文字列
とか、exe のフルパスもかなりいい感じだと思うけどな
でも、exeのフルパスだとコピーされたら多重起動ができる。
抜け道が簡単に出来ちゃうからダメだと思うよ。
大型アプリなら問題ないかもしれないけど…
>>907 セキュリティーに関連するような大事なハンドルを
デフォルトSID(=NULL)で作成する時点で駄目駄目でしょ。
親プロセスが全ての重要ハンドルを作成し、
明確に子プロセス以外アクセスできないようにするのが普通だと思う。
>>908 Mutex作る時に使うオブジェクトの名前が違う事になるから、
違うハンドルを作ってしまうって事では?
これについてはセキュリティ関係ないのでは…?
>でも、exeのフルパスだとコピーされたら多重起動ができる。
そうだね。VBのだとそういう振る舞いをするんだそうだ。
lihvwdghwelkihvwrhweruhakjabhojwejjw
こういう文字列を使った場合、偶然に一致するアプリがあるかも、って心配は
まぁ、したけりゃしてもいいけどな。
ユニークかどうかはほかが同じことしてないかどうかに関係する
悪意を持って多重起動の判断を混乱させようとしているのでない限り
「GUIDに見える(けどuuidgenで生成したものではない)文字列」とか
「他のexeのフルパスに見える文字列」
をわざわざ使うとは思えないんだけど
悪意か善意かは問題ではない。ある演算なり、一定の規則(フルパスやGUIDもこれに入る)
を採用して文字列を取得した場合と、まったくでたらめな文字列の場合、一致する確率が
どっちが低いか、を考えるべき。exe のフルパスの場合は、異なるアプリ間で偶然一致する
のは考えづらいけど、他のディレクトリにコピーされた同じexeが二重起動される。これは
かなり現実的な問題ではある。
そもそもなんで多重起動を抑止したいのかって理由にもよるだろ。
二重起動を抑止したい理由と、名前付き Mutex の名前がユニークかどうかは関係ない
>>892 PostQuitMessageをスローしないだけで済むのですね(^^;
どうもでした。
>>914 本当にまったくでたらめじゃ確かに一致しない確率は最高だろうけど
自分の別インスタンスとも一致しないから多重起動の判定に使えない。
最低でも多重起動のチェックができる程度の何らかの規則は
導入しなくてはならない。問題はその規則が(他の規則を採用している
かもしれない文字列も含めて)偶然一致する可能性をどれだけ
減らせるか。
>自分の別インスタンスとも一致しないから多重起動の判定に使えない。
何いってるの?
>>918はGUIDを毎回生成するとでも勘違いしてるんじゃないのか
IHTMLDocument等のHTMLに関わる
インターフェイスを使用しています。
現段階では、ActiveXのWebBrowserから
IHTMLDocumentを取得しているのですが、
ブラウザを介さず、
URLまたはHTMLテキストから
直接IHTMLDocumentを
取得したいのですが、
そのあたりの方法があれば教えて下さい。
簡単なのは WinInet のAPI使うのだな。ググルといっぱいサンプルが見つかるはず。
>直接IHTMLDocumentを取得したいのですが、
あっ、勘違い、すまん
925 :
デフォルトの名無しさん:04/09/16 15:13:23
SetTimerで、引数のID所で0、又は既に使われているIDを指定すると、
戻り値で空いているIDが返ってきて、それを使うという事を出来るのでしょうか。
どこをどう読めばそうゆう解釈が
>>926 ありがとうございます。やっぱできないのですね。
その方法が使えれば、IDをEnumなどに定義しておかなくても、
ちょこっと使いたいときに楽かなと思いまして。
>>893 うそ教えるな。問題のスタイルはCCS_*だから、標準的なスタイルには用意されてなくて
自前で描画するしかない。
>>922 mfc スレでちょっと前に (レス720前後) 同じ質問にと答えた記憶あるんだけど、
あれじゃあうまくいかなかった?
ローカルにあるプロセス間で通信をするのに今はソケットを使っているのですが
帯域がボトルネックになっているので改善方法を探しています。
名前つきパイプやメモリマップドファイルを使うことでパフォーマンスの向上は
のぞめますか?ストリームのようにデータを転送するのでメモリマップドファイル
にする場合は何かの方法で同期を取る必要があると思います。
そのままにしておいた方が、ポテンシャル高くて後々おいしいような。
ボトルネックになってるんだったらしゃーないような。
でも、プロセス巻通信がそんなに頻繁に起こるならいっそプロセス統合した方がよくないか?
.NET Framework 1.1を使うアプリを公開したいのですが、
.NETのCLRがインストールされているか調べるにはどうしたらいいですか?
>>933 漏れは VS .Net のウィザードで作ったインストーラプロジェクトの
インストーラでチェックしてるけど、API でチェックしたいってこと?
レジストリを見るんじゃないの
937 :
デフォルトの名無しさん:04/09/17 13:01:15
VC++6.0を使っています。
iphlpapi.hをインクルードしたいのですが
このファイルが無いようです。
どこから拾ってくればよいでしょうか?
>>934 レジストリ見るプログラムは何で作るの?
CLRに対応してるか確認するプログラムは
CLRを使う.NETじゃ書けないってことなのかな.
.NETって面倒だね.
…( ゚Д゚)ポカーン
駐在型ソフトだと、タスクバーから表示を消して、タスクトレイにアイコンを表示していますよね?
これをするにはどうしたら良いですか?
駐在型?
ウインドウを消してタスクトレイにアイコンを登録する。
そのウィンドウの消し方教えてくださいよー ヽ(`Д´)ノ ウワワーン
DestroyWindow
ShowWindow
ウインドウ非表示の方法ぐらい
知っててくださいよー ヽ(`Д´)ノ ウワワーン
スタートボタンで終了したり、ShowWindow でウィンドウを消したりさせるマイクロソフトが悪い
馬鹿は何でもMSのせいにするからなぁ w
なんでもすぐ人のせいにするのは無能の典型
>>950 勧告陣に言ってくださいw
次スレ〜たてて
難民のあれか・・・。
どこかにミラーが残ってないかな?
part15のログなら1000まで持ってるが
part16のログなら1000まで持ってるが
( ´_ゝ`)フーン
part22のログなら1002まで持ってるが
958 :
デフォルトの名無しさん:04/09/18 14:38:02
ウィンドウのどの位置にマウスポインタがあるか調べる方法を教えてください。
調べると、GetCursorPosをして、ClientToScreenで変換するとあったのですが、
ウィンドウの位置でなく、ディスプレイの位置のなのか、正しく調べられません。
>>958 そこはClientToScreenじゃなくてScreenToClientじゃないか。
>>959 ホントだ。逆の方を使っていました。
ありがとうございました。
961 :
デフォルトの名無しさん:04/09/18 15:07:52
自分がつくったステータスバー(CreateStatusBarで作成)は、マウスを
うえにのせてもなにもメッセージをうけとったり、送信したりしないのに、
そのへんのアプリケーションのステータスバーはwm_nchittestを送信した
あとにいろいろやっています。それもどのアプリも大体共通した動作。
(メッセージのやりとりはspy++で見ました)
自分がつくったステータスバーにおいてもこれを実現するためには何を
すればいいのでしょうか?
962 :
933:04/09/18 16:12:05
933です。
%windir%\system32\mscoree.dllのバージョンが1.1以上だったら
.NET Framework1.1がインストールされているされていると考えてよいのでしょうか。
Win32APIな話題からそれていますが、ほかの環境ではどうなのか知りたいのでお願いします。(当方WinXPSP2)
パート15と16持ってる人いる?
うpってもらえれば、
>>1のテンプレに追加して書いたり
そのファイルだけコピーされてたらどうすんの?
>>964 両方あるけど、Janeのログだから手を加えないとだめだよね?
>>964 うぷろだにうぷっただけじゃすぐ消えちゃうよ
971 :
ほんたま:04/09/18 19:33:36
WideCharToMultiByteを使って、unicodeをsift-jisに変えると、漢字などはちゃんと変換されるんですが、半角英数を変換すると文字化けするんですが…?
みなみなさまがた〜教えてくだされ〜♪
沢村の新コテか
文字化けするんですが…?
ってのはどこが質問なのかな
まあ、普通はそんなことにならないので答えようも無いが。
974 :
ろろ:04/09/18 20:34:31
>>971さん
WideCharToMultiByte のオプションがまずいのではないかな?
どんなふうに呼び出しているの?
プッシュボタンコントロールの外観を、
テキストではなくBMPにすることはできますでしょうか?
出来ます。
>>976 ありがとうございました。頑張ってみます。
978 :
ほんたま:04/09/19 02:11:11
>>975 おみゃ〜よ、オナードローボタンにすればいいよ。
つくりかたは「猫でも…」に書いてあるよ。自分じわかる?
>>974 WideCharToMultiByte(CP_ACP,0,(unsigned short *)pctext,tempsize2,temptext,tpsize2-1,NULL,NULL);
というふうに呼び出しています。
pctextとtemptextはchar型の文字列です。
まずファイルのunicode文字をpctextに1字1字バイナリコピーします。
半角英数の「OK」なら「4F 00 6B 00」というのがその値です。
この時点で、pctextの内容を画面に表示してみると、unicode文字なのにすでに「ok」と表示されます。
でもこれを上のapiを使ってsift-jisに変換してからtemptextを表示すると、何故か「?」と文字化けして表示されるのです。
漢字や半角カタカナを変換する場合はまったく問題ないのですが…?
S-JISのコードページはCP_ACP?
そうですか。
自己解決しました。
982 :
ほんたま:04/09/19 02:38:58
「ok大下容子」という文字列の場合、
変換前のunicode文字列を表示すると「ok'Y・Nケ[P[」になり、
変換後のsift-jisを表示すると「?大下容子」になります。
つまり半角英数は変換前のほうがちゃんと表示され、漢字は変換後にちゃんと表示されます…?
みなみなさまがた〜教えて〜♪
だから、普通はそんなことにならないから。
というわけで、終了
>>978 tmpsize2, tpsize2 とかの実際の値はどーなってる?
WideCharToMutiByte() の返り値は?
日本語 Windows なら CP_ACP で問題はないです。
985 :
ほんたま:04/09/19 02:59:54
勘違いでした。
エヘ♥
他のアプリのボタンを押したいのですが
ツールバーの中にあるボタンのウィンドウハンドルはどうやったら取得できますか?
wchar_t unitext[] = L"ok大下容子";
std::vector<char> tmp;
tmp.resize(::WideCharToMultiByte(CP_ACP, 0, unitext, -1, NULL, 0, NULL, NULL));
::WideCharToMultiByte(CP_ACP, 0, unitext, -1, &tmp[0], tmp.size(), NULL, NULL);
もんだいねぇけど。
ないですか
座標で押すのかな
位置が変わったりしないんだろうか
あります
>>989 座標からアイテムの情報が分かるから、
それを拾ってツールバーの親にメッセージを投げてやればいい。
thx
そのやりかたであたってみます
どうやってテキストを表示していますか?UTF-16LEだと最初の1オクテットには
oとkが含まれているので0x00を無視するような方法で出力してればokって文字列が
最初に見える。
そうじゃないのに「ok'Y・Nケ[P[」っていうのが見えるならファイル読み込みの部分
で「4F 00 6B 00」を「4F 6B」にしちゃってる。
wifstreamを使ってないとか
ifstreamでバイナリモードにせずに読んでるとか
そんなとこじゃないの
しかし沢村は相変わらずのズレっぷりだな
次スレまだ〜?
まだ
埋めちゃうよ?
だめ
1000
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。