■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build37
751
名前:
デフォルトの名無しさん
:2005/12/03(土) 01:34:24
>>745
snprintf()ならば、十分にスレテーマに沿ってる。
なぜならgccとVCとでは、snprintf()でバッファサイズを埋め尽くした時の振る舞いが違うので。
この辺もちゃんと押さえておかないと、軽くヤバイ。
752
名前:
デフォルトの名無しさん
:2005/12/03(土) 01:39:28
落ち着け馬鹿ども
753
名前:
デフォルトの名無しさん
:2005/12/03(土) 01:52:17
>>751
C標準ライブラリの実装依存の話と、スレタイのWin32APIとどんな関係が?
754
名前:
デフォルトの名無しさん
:2005/12/03(土) 01:53:50
はいそこいちいち釣られない
755
名前:
デフォルトの名無しさん
:2005/12/03(土) 01:57:58
>>748
もう少し、未来を予測する能力を培ったらどうだろうか。
バッファサイズがのちのち変更される可能性については考えないのか?
ソースコードが別プロジェクトにコピペされる可能性については考えないのか?
バッファサイズを指定していたマクロなり定数なりの文字列でgrepしただけでは、
修正すべき場所を追跡できない。それがprintf()系フォーマット引数クオリティ。
>>748
、君は職業PGに向いていないと思う。
もし今、職業PGなのであれば、迷惑をかける前に転職してほしい。
趣味PGなのであれば、これ以上はキツク言わないよ。思う存分、使ってくれ。
756
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:13:28
共同開発をしたことのない初心者が調子に乗って煽ってただけか。
お前ら、初心者の相手して暇だな。
757
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:18:50
他人の尻馬に乗らない
758
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:23:11
アフォばっか
759
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:25:41
sprintf (buffer,"%.*s",sizeof(buffer)-1,string);
760
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:32:49
>>759
lstrcpyn(buffer, string, sizeof(buffer));
で済むことに何故sprintf()を使う。
もっと現実的なsprintf()の使用例で考えてみろ。
761
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:42:24
#define CONSTANT "editing data"
sprintf (buffer, "%.*s" CONSTANT, sizeof(buffer)-1-(sizeof(CONSTANT)-1),string);
762
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:43:30
CreateFile関数が失敗した時の原因が共有違反だったか調べる方法はありませんか?
共有違反だったら他のプロセスがハンドルを開放するのを待って、
共有違反でなかったらreturnさせたいのですが。
763
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:44:45
面白いアイディアだが、遠慮なく却下させてもらう。
sizeof()に依存している時点で死亡決定。
理由はわかるな?
764
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:48:35
>>748
を援護する
がんがれ
765
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:49:04
>>761
フォーマット文字列を変更した時の気の使いようは並じゃないな。
で、毎度毎度そんな誤りやすい計算をやるのか。
却下だ、却下。
実際そうしたことが面倒で誤りやすいからバッファオーバーフローのバグが
生じてきた「現実」があるのだとなぜ分からないのか。
単に「出来る出来ない」の話じゃないんだよ。それだけでいいんなら全部
アセンブラで書けっての。
766
名前:
デフォルトの名無しさん
:2005/12/03(土) 02:50:22
>>763
lstrcpyn(buffer, string, sizeof(buffer));
こいつも脂肪
767
名前:
デフォルトの名無しさん
:2005/12/03(土) 03:06:38
sizeofって使っちゃダメなの?
768
名前:
デフォルトの名無しさん
:2005/12/03(土) 03:19:59
ソースコードをいずれコピペするであろう時のことを常に念頭に置くことだ。
bufferの部分がポインタだったとしてもちゃんと動いて欲しいのが人情。
UNICODEビルドしたときにクラッシュして欲しくないのも人情。
769
名前:
デフォルトの名無しさん
:2005/12/03(土) 04:02:16
「明日の自分は赤の他人」、この心がけ大事。
特にハイテンションでコード書いてしまった次の日とか。
770
名前:
デフォルトの名無しさん
:2005/12/03(土) 04:04:22
特にハイテンションでレス書いてしまった次の日とか。
771
名前:
デフォルトの名無しさん
:2005/12/03(土) 04:16:49
>>770
ワロタw
「多い日も安心、次の日も安心」だよな、基本は。
772
名前:
デフォルトの名無しさん
:2005/12/03(土) 04:51:37
sizeofが駄目となるとstrlen使えってことなのか?
773
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:00:50
>>772
もうネタは投下しなくていい。お前はよくがんばった。
だが、いかんせん可燃性に乏しいようだ。あきらめろ。
774
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:06:28
分かってる奴は説明省略しすぎるし、
分かってない奴は自分で調べようともしないし、
ほんと質問スレとしては最悪だな。
・sprintf()に限らず、printf()系のフォーマットの幅指定は、
あくまで最低限確保される幅の指定であって、最大限じゃあない。
よって指定幅を超えた書き込みをすれば、指定幅を超えて書き込むので
バッファオーバーフローしうる。回避方法はないのでsnprintf()系を使うべき。
参考:
>>715
>>729
>>735
>>745
・sizeofは型及び変数のサイズ(バイト数)を返す。
文字列の長さを返すわけじゃないし、配列の要素数を返すわけでもない。
変数が配列なら配列サイズ(not 要素数)を返すが、ポインタならポインタのサイズを返す。
「ポインタと配列は全くことなるもの」という実例の1つだな。
参考:
>>763
>>766
>>768
775
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:12:13
>>774
>・sprintf()に限らず、printf()系のフォーマットの幅指定は、
>あくまで最低限確保される幅の指定であって、最大限じゃあない。
%100sと%.100sの違いも知らない池沼が何かホザいてるようだな。
776
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:19:05
ああ、精度指定(ピリオドより後)って文字列にも効くのか。うっかりしてた。
>>774
の上半分は無視してくれ。
777
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:20:39
char *buffer = new char[128];
lstrcpyn(buffer, string, sizeof(buffer));
漏れこれではまったことあるな・・・
778
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:31:06
よん?
779
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:31:52
sprintf()は整数の場合は最大桁が予測可能だからオーバフローの心配をするまでもないのだが、
実数の場合は迂闊に%fを使うと1e300などと言う異常値が入ると300桁もの数値を吐き出しかねない。
以上を踏まえて注意を纏めてみる。
・最小幅指定はあくまでも入力が予測可能な場合にのみ意味がある。
#入力値が異常な場合、バッファオーバフローの危険が常に付き纏う。
・文字列→"%.*s", len, str などとして最大幅を制限する。
・整数値→INT_MAX(或いはその他)から桁数を計算できるのその分のバッファを用意する。
・実数値→%e/%gを精度指定とともに使うようにする。
そういう注意をした上でsprintf()を使うかCString::Format()などを使うかは強制されることではない。
まぁ、WinAPIスレだから仕方ないが世間知らずが多いよな。
780
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:40:59
やっと良スレになってきたな
781
名前:
デフォルトの名無しさん
:2005/12/03(土) 05:43:10
だよね(^o^)
782
名前:
デフォルトの名無しさん
:2005/12/03(土) 08:04:32
unsigned long
をwin32api風に書くとどうなるんですか?
UNSIGNEDは定義されてないみたいです
783
名前:
デフォルトの名無しさん
:2005/12/03(土) 08:39:38
DWORD
784
名前:
デフォルトの名無しさん
:2005/12/03(土) 08:40:35
ありがと
785
名前:
デフォルトの名無しさん
:2005/12/03(土) 08:41:57
DWORD < ULONG < ULONGLONG
786
名前:
デフォルトの名無しさん
:2005/12/03(土) 09:26:55
>>755
>もう少し、未来を予測する能力を培ったらどうだろうか。
おまえこそ気にしてもしょうがないようなとここだわってるじゃん。
>>720
についていってるのに「将来変更されたら〜」なんていつの話だよ。
将来変更される可能性なんていったって、お前の勝手な妄想だろ。
そんな一時保存的なバッファサイズだけに変更がかかったことなんて生涯を通して一度も無いよ。
お前の未来予測は当たる確率が低すぎて意味がねぇんだよw
787
名前:
デフォルトの名無しさん
:2005/12/03(土) 09:37:47
神崎タケノリは、姉歯秀次・創価学会員に
「そうはイカンザキー!!」といったのでしょうか。
ぜひTVで言ってください。
言わないのなら、誰か誇大広告でJAROに訴えてください。
大作が草加をゴミタメにした。
788
名前:
デフォルトの名無しさん
:2005/12/03(土) 09:46:17
>>785
俺はDWORDとULONG/ULONGLONGは別次元だと思っている。
DWORDLONGは自分では使わない。
789
名前:
デフォルトの名無しさん
:2005/12/03(土) 09:50:02
つか普通BYTE,WORD,DWORD,QWORD
790
名前:
デフォルトの名無しさん
:2005/12/03(土) 10:17:05
なぜWinAPIにはQWORDがないのかわからない。
DWORD64の前にQWORD作れよ。
791
名前:
デフォルトの名無しさん
:2005/12/03(土) 10:40:44
UINT64とかでいいのに…
792
名前:
デフォルトの名無しさん
:2005/12/03(土) 10:53:39
ULARGE_INTEGER
793
名前:
デフォルトの名無しさん
:2005/12/03(土) 11:30:44
>>762
GetLastError()でERROR_SHARING_VIOLATIONが返ってくれば共有違反
794
名前:
デフォルトの名無しさん
:2005/12/03(土) 11:36:17
>>786
>そんな一時保存的なバッファサイズだけに変更がかかったことなんて生涯を通して一度も無いよ。
あきれ果てた上司PGがお前をプロジェクトから外したからだ。
代わりにソースコードの後継を任されたほかのPGが大変だったわけだ。
すぐにプロジェクトから外されるお前は、未来を予想する必要がなかった。
そういう意味ではお前の言っていることは間違ってないから、安心しろ。
795
名前:
デフォルトの名無しさん
:2005/12/03(土) 11:47:46
ネタがないからって変なケンカはやめろヽ(`Д´)ノ
796
名前:
デフォルトの名無しさん
:2005/12/03(土) 11:50:14
全ては使用禁止でFAが出ている関数を使い続けようとするモグリのせいだ。
797
名前:
デフォルトの名無しさん
:2005/12/03(土) 11:56:44
>>763
extern char *buffer;
こんなアホなコード書いてる訳かw
798
名前:
デフォルトの名無しさん
:2005/12/03(土) 12:13:00
MSDNのサンプルソースで大量に用いられるsizeof演算子。
PMの判断によって開発の最前線から外された窓際PGがサンプル作成を担当している。
const定数を使わずdefine定数を使ってバッファサイズを指定するところがさすが窓際。
799
名前:
デフォルトの名無しさん
:2005/12/03(土) 13:07:33
なんつーか、CとC++の区別がつかないおこちゃまが紛れているようだが。
800
名前:
デフォルトの名無しさん
:2005/12/03(土) 13:15:04
>>794
実のところお前も汎用性をつけるだけつけておいて、
全くそんなことが起きたことがないってことでFAだろ?
お前の未来予測は役に立たねぇんだよ。
801
名前:
デフォルトの名無しさん
:2005/12/03(土) 13:28:07
sprintfの使い方を知らなくて「使えねー」って騒いでいるわけか
802
名前:
デフォルトの名無しさん
:2005/12/03(土) 13:45:24
sprintfってwindows.hで宣言されてないから嫌いですぅ
803
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:06:49
>>800
は、PGとしての適正を否定されたことがそんなにくやしかったのか?
UnixコミュニティやWindows開発チームが到達した結論を否定するだけあってアフォだな。
804
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:26:14
でもwsprintfは使える記述指定子が少ないから嫌いですお
805
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:30:38
>>800
ヒント: 備えあれば憂いなし
806
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:46:57
>>803
起こりもしないような不具合想定して、
いつも職場で大声で騒ぎたてる馬鹿が掲示板で元気だなぁwおいw
807
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:49:15
>>806
John Robbinsの本でも読んどけ
808
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:49:42
関係ないことでしか反論できなくなったら終わり
809
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:53:02
John Robbinsが関係ないという人がいるスレはここですかw
810
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:53:42
結局ここでも
「sprintfでバッファオーバーフロー」と言う奴はバカばっか(
>>774
)という実例が増えただけ
ちなみに
>>765
は、sprintfのフォーマット文字列が変更される可能性はあっても
Formatのフォーマット文字列が変更される可能性は無いと言ってます。
811
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:54:19
>>806
起こるんじゃあない。起こすんだ、人間自身が。
人間のスペックを信頼している時点でお前はPG失格。氏ね。
812
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:58:47
中には「是非sprintfを使え」という人も居るかもしれないけど
普通の人は
>>737
のように、「適材適所」ということを理解してるから。
盲目的に「sprintfは使えねえ」って言う奴はバカ
これだけは確実だけどね。
813
名前:
デフォルトの名無しさん
:2005/12/03(土) 14:59:37
「ヒューマンエラーしやすい手法をあえて使いこなしてこそ玄人」
という価値観ならば、C++は一切必要ないな、そいつには。
統合開発環境も必要ない。C言語さえ必要ない。アセンブラだけで十分だろ。
Win32API質問スレに来なくてもいいだろ、玄人なのだから。
814
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:04:07
>>812
まだ判ってないな。本物の馬鹿だろ、お前。
sprintf()がプロジェクトで使えるかどうかは、末端PGが個人判断してよいことではないのだ。
PMが一方的に使用禁止と末端PGに命令して、初めてプロジェクトの安定性が確保される。
お前の個人的判断なぞは全く重要ではない。
815
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:07:25
なんだ、「俺たち末端バカコーダにはsprintfは使いこなせない」と言いたかったんだ。
816
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:08:30
うん、俺もそう思うよ。
>>774
みたいに使いこなせないバカコーダー(ITドカタ)が
山ほどいるからね。
817
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:10:38
盲目的と陰口されようが顔色ひとつ変えずに、関数を使用禁止できるPMが優秀なPM。
使うメソッド・使うアルゴリズムを制限していくからこそ、管理が楽になる。
末端PGに自由裁量を与えているようなチームは、ダメなチームだ。
818
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:10:59
んー、sprintf使用禁止なプロジェクトってそんなに多いのかね?
一応CでもC++でも言語使用に定められた標準ライブラリに含まれるんだけど。
API以外使用禁止なんてところもあるんだろうな。
819
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:15:17
で、sprintfを使用禁止にしておきながら
「boost::formatを使え」とか、言ってるわけだよ。
大笑いだね。
標準ライブラリすらまともに使えない末端コーダーに
boostの使い方を先に覚えさせようとするわけだ。
ま、確かに便利だけどね。
820
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:16:36
>>818
>んー、sprintf使用禁止なプロジェクトってそんなに多いのかね?
多い。
標準ライブラリであることは安定性に関して何の保証にもならない。
標準ライブラリが保証するのは汎用性だけ。勘違いするな。
821
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:17:00
Lhasaは全部APIでやってるそうな。
822
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:19:39
はいはい、
「バカ」はsprintf使用禁止で良いよ。
「普通の人」は別にsprintf使っても、何の問題もないから。
もちろん、個人で何か作る場合も、複数で作る場合もね。
「末端職業プログラマ」のレベルは、実際酷いもんだし
バカが混じるプロジェクトで禁止するのも仕方ないかもね。
「バカの常識」を「一般人の常識」にはして欲しくないけど。
823
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:20:24
キャリアアップを目指すならsprintf()反対。
末端下請けで突き進むならsprintf()賛成。
お前らの人生観次第だ。好きな方を選べ。
824
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:22:43
>>822
バカかどうかじゃない。自分を過信するかしないかだ。
根本的に判ってないな、お前。
825
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:22:51
自分自身が末端であることを
>>774
みたいに証明してる人が沢山いるんだから
そりゃ必死になって
「sprintfを使うことの悪さ」を主張するわな。
「sprintfの悪さ」を主張しようとして、論破されちゃったもんだから。
826
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:23:55
Win32APIの質問マダー?
827
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:25:50
つまり、「明示的に禁止されているから」「バカが使い方を知らないから」以外に
「自分がsprintfを使うべきではない理由」は
何一つ挙げられないと。
828
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:29:47
>>819
「アセンブラすらまともに使えない末端コーダーに
C言語の使い方を先に覚えさせようとするわけだ。」
と言っているに等しいな。
そもそも何をもって「標準ライブラリをまともに使える」と見なすか決めるのはお前ではない。
俺がPMならお前をプロジェクトから外すだろう。標準ライブラリをまともに使えてないと感じるからだ。
829
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:31:02
このスレは釣られるバカが多くて楽しい ^^
830
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:31:22
だって、「バカが使い方を知らない」という以外に
「sprintfの悪い点」を出せないから。
出そうとして自分の無知をさらけだしてしまい
必死に論点をずらしてるだけだから。
831
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:32:48
(^o^)<YO!YO!チェケラッキョッ!
832
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:34:25
そりゃまあ、
>>774
みたいな奴がプロジェクトに入るとわかっていたら
どんなPMでも、「このプロジェクトはsprintf禁止」にするでしょ。間違いなく。
833
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:35:04
質問です!
バイナリエディタもどきを作成してみたいのですが
バイナリエディタにあるあのインターフェイスは
GDI関数でクライアント領域に直書きするものなのでしょうか?
それともエディットコントロール(orリッチエディット)で実装すべきでしょうか?
ご助言をお願いします!
834
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:35:22
>だって、「バカが使い方を知らない」という以外に 「sprintfの悪い点」を出せないから。
それだけで十分だ。それ以上の理由も必要ない。
「他人に合わせたくない」という孤高のPGはずっと下請けをやってもらうしかない。
実際、業界はそうなっている。
835
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:35:40
そんな事よりstdio.hのprintfに対応するWinAPIは何ですか
_printfとかあると思ったのですがないようです
836
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:42:33
だから、「sprintfの悪い点」を挙げろよ。
もちろん自分で使う上で。
末端コーダが、自分で何か作ろうなどという創造的なことをしないだろうというのは
分かるけどさ。
「自分みたいなバカが加わるプロジェクト」は大抵sprintf禁止なのはもうわかったよ。
バカがsprintfを使うのは良くないのは
>>774
で良くわかったから
普通の人が自分のプログラムでsprintfを使ってはいけない理由は?
837
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:43:33
>>835
ない。unixにもない。
_write()に対応するAPIならある。
GetStdHandle()
WriteFile()
838
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:43:48
スレ違いの話題で荒らすなぼけ
くだらん論争はCスレ言ってやってこいぼけ
839
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:46:07
>>836
思う存分、使えばいい。
>>755
で答えは出ている。
840
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:49:00
>>837
GetStdHandle+wsprintf+WriteFile使ってみるわ
841
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:49:24
「末端コーダーを目指す人はsprintf禁止」ということですね。
842
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:52:06
>>840
UNICODEビルドの場合はマルチバイトに変換してから出力する必要あり。要注意。
843
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:54:44
まだやってたんか('A`)
844
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:55:46
>>840
wsprintfを使う時はバッファサイズを1024以上取り、
なおかつ全体が1024以上にはならない程度の文字列にしないと。
しかも末端コーダーを目指す人は使わない方が良いらしいぞ。
845
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:56:01
>>842
Unicodeつかわね
あとWinapiでstrlenに対応する関数はどれですか。
846
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:57:34
>>845
sizeof
847
名前:
デフォルトの名無しさん
:2005/12/03(土) 15:58:18
lstrlen
848
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:00:55
ありがと
849
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:05:06
>>755
はもしかして
char buff[BUFFER_SIZE];
sprintf(buff, "%.200s", s);
みたいな使い方を想定してるのか?
明示的にdefineした定数の数字を想像して%.200なんて書く奴なんか居ないよ。
逆に
char buff[200];
の"200"という数字をgrepするというのなら、
defineやconstを使わないで200という重要な数字を生で書いているということだよな?
もちろん、ローカルのバッファならそれで充分だが
そんなのgrepして見つかっても書き直すわけ無いし。
逆に引数等でバッファサイズが与えられるなら、必ず.*を使うし
どう考えても「バッファサイズを変更する
>>755
の状況」が想像つかないね。
俺には。
850
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:12:44
>>849
入力側の予想されるサイズが変わった時のコストを考慮してないのは、何故だ?
わざと無視してるのか?
851
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:15:11
>>833
APIの質問でなく、機能の実装方法だからスレ違いな気もするが・・・
くだらない論議にうもれてしまいそうで、かわいそうなので、
どういう仕様のエディタを作るかによるが、GDI直書きがおすすめ。
(リッチでない)エディとコントロールは64K文字しか扱えないので、
バイナリエディタじゃ足らないでしょう。
リッチエディトで頑張ればそれなりの物は作れるが、バイナリエディタなりの
カーソルの動き等を実装しようとすると、かえって大変。
自分で全て制御・描画するほうが最初は手間がかかるが融通が利く。
852
名前:
833
:2005/12/03(土) 16:18:47
>>851
あ、ありがとうございます!
スレ違いでしたか、にもかかわらず答えていただいてありがとうございます!
直書きでやってみます!
853
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:23:51
>>850
ん、ちょっと真面目に議論しようよ。スレ違いだけど。
他との関連があるバッファだったら、
(例えば構造体のメンバとかで他と受け渡しするものなら)
defineなりsizeofなりを使って、バッファサイズを取得するでしょ?
つまり、"%.200"というリテラルを使うことはあり得ないわけ。
動的に確保したサイズを渡す場合にしても。
逆に、ローカル変数でのバッファだったら、その関数内で完結するわけでしょ?
その場合は、バッファの大きさが数字で直接書かれているだろうけど
そのバッファを使用するのがそもそも関数内だから
バッファサイズを変更したら、そのバッファを使っている部分(関数内)を一通り見て
影響がないか確認するのが常識じゃないの?
もちろん、「その程度のことすらまともに出来ない人間」が存在するのは確かだけど
「自分で作って自分で使う部分」なら問題にならないんじゃないの?
それに、例えば数字→文字列とか、ディレクトリ+ファイル名+拡張し→文字列
みたいなのは、ある程度上限があるから、
あらかじめ余裕をもって確保するべきだと思うし。
854
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:25:44
示し合わせて他所へ行けっての
855
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:32:18
>>849
は書式に関する深い知識と経験を用いて、
書式文字列をsprintf()で作ってからsprintf()を実行するから、なんら問題ないよ。
それができないお前らは(ry
856
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:35:48
>>852
VB使って、あの表示部分をユーザーコントロールとして作ってしまう、
もしくは、VCなら1個のクラスでまとめてしまうと楽
857
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:36:53
>>855
"%.*"って知ってるかい?
858
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:38:11
,,,,_
/,'3 `ァ <もうだめぽぉ
`ー-‐`
859
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:40:10
要するにだな、
>>755
が全ての答えだ。
>>755
の文意を理解できた人間は職業PGを続けていい。
>>755
の文意を理解できない人間は即刻職業PGをやめろ。
860
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:40:16
>>853
うざい
スレ違いだとわかっているなら他所へいけぼけ
そんな判断さえできんやつが屁理屈こねたところで
どうせロクなコードは書けん
わかったら消えろぼけ
861
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:42:29
>>755
の文意を理解できた人間は末端コーダーを続けていい。
>>755
の文意を理解できない人間は即刻末端コーダーをやめろ。
sprintfの悪いところは、末端コーダーが使いこなせないことだから。
862
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:48:33
要するにここまでの議論を読むと結論は、
糞PGの集団は、
>>755
に従えってことだね
863
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:54:04
>>862
結論はスレ違いウザイってことだろ?
864
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:54:28
職業PG=薩長軍
アマPG=彰義隊・新選組
派手なのはどっち?
強いのはどっち?
865
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:56:14
この手の標準?APIの使い方というか、危険、安全の議論をするスレは無いの?
無いんだったらここでいいじゃん。
866
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:56:16
お久しぶりです(^o^)
さっそくですがツールバーやメニューバーに視覚スタイルを適用する方法を教えてください(^o^)
他の掲示板にいったけど完全にスルーされたので戻ってきました^^
http://up.mugitya.com/img/Lv.1_up12444.jpg
メニューバー・ツールバーを作ってみたら、上の奴のようになってしまうのです。
下や真ん中の奴のように視覚スタイルを適用したいのですがどうすればよいのでしょうか?
DrawThemeBackgroundでできると思ったのですが、それらしい定数が見つかりません(分かりません)
何卒お願いいたします(^^)
867
名前:
デフォルトの名無しさん
:2005/12/03(土) 16:57:17
>>866
はコピペ荒らしなのでスルーするように
868
名前:
デフォルトの名無しさん
:2005/12/03(土) 17:00:17
>>865
APIじゃないs
869
名前:
デフォルトの名無しさん
:2005/12/03(土) 17:01:59
職業PG=前田利家
アマPG=前田慶次
ただし、漫画じゃなくて史実の方。
870
名前:
デフォルトの名無しさん
:2005/12/03(土) 17:03:24
↓ ここが適当なのかな… いちおうあげといたけど
セキュアなプログラムを作ろう パート1
http://pc8.2ch.net/test/read.cgi/tech/1113622199/
871
名前:
デフォルトの名無しさん
:2005/12/03(土) 18:45:24
sprintf()の利点って「標準である」ってだけだろ。
このスレで議論されてるようなWin32APIを利用するバリバリ環境依存
プログラムでわざわざ(_snprintf()ではなく)sprintf()を使う理由って
あるのか?
872
名前:
デフォルトの名無しさん
:2005/12/03(土) 18:47:18
MessageBox(NULL, "
>>1-1000
スレタイ嫁", "もちろん、オレモナー", 0);
873
名前:
デフォルトの名無しさん
:2005/12/03(土) 18:52:43
apiならwsprintf
874
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:04:54
vsprintf()は使うな、でFA?
875
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:19:29
引き継いだ香具師がアフォだったんだろ
876
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:22:31
>>806
お前みたいなやつが2000年問題を引き起こしたんだということがまだ分からんのか
877
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:26:11
くどい
878
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:26:13
2000年問題は空騒ぎにしか思えんな
879
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:29:13
>>834
最近のプログラムの品質が落ちたのはそのせいか
880
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:30:42
>>875
俺にとってはフクザツな書式指定と計算を使ってまで、わざわざsprintf()を使ってる
奴の方が余程アフォだな。
_snprintf()ならば、そのコードで「バッファオーバーフローが起きない」ことを
はるかに簡単・確実に保証できるのに。
無論C++なのにsprintf()使ってる奴は、「論外」な。
881
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:32:21
>>879
便利な道具があるのにそれを使わない奴は一生ハンドアセンブルしてろってこった。
ま、一方で「便利な道具」にプログラマがスポイルされたことは、否定しない。
882
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:32:22
スレの質が急激に低下しております
883
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:38:47
どうして適切なスレがあるのにここで続けようとするんだろう
884
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:39:28
>>851
64k制限って2k/XPあたりではなくなってるんじゃなかったっけ?
>>833
あわれだなぁ。もうちょっとタイミングいい時にくればいいのに。
885
名前:
デフォルトの名無しさん
:2005/12/03(土) 19:54:27
>>833
SPYか何かで、既存エディタが何使ってるか
調べてみればいいかも
886
名前:
デフォルトの名無しさん
:2005/12/03(土) 20:33:28
隔離されてることも気付かず議論してる様はすごく笑える。
887
名前:
デフォルトの名無しさん
:2005/12/03(土) 20:50:07
誰か
>>779
の検証、解説してくれ。
>>779
はsprintfを使うなと言ってるのか使ってもいいといってるのかどっちだ。
888
名前:
デフォルトの名無しさん
:2005/12/03(土) 20:50:56
sprintfの話は↓へ逝け
セキュアなプログラムを作ろう パート1
http://pc8.2ch.net/test/read.cgi/tech/1113622199/
889
名前:
デフォルトの名無しさん
:2005/12/03(土) 20:53:23
質問です
apiとmfcは同じようなものなのですか?理解が進んでいないので抽象的な質問しかできないですが、この2つの違いをご教授していただけたら幸いです
890
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:08:33
違います
Win32APIはWindowsのシステムが提供する機能を使うための関数インターフェース群
MFCはそれを使いやすくした「クラス群」
APIはCとかC++とか関係無いが、MFCはCじゃ使えない
891
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:12:28
>>889
MFCはAPIを使うクラスライブラリだからコーダーを目指さないsprintf使いには不要
とか回答するとスレ違いになるのか?
892
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:17:38
MFCならCString::Formatがほぼsprintf
893
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:17:50
sprintfの話は↓へ逝け
セキュアなプログラムを作ろう パート1
http://pc8.2ch.net/test/read.cgi/tech/1113622199/
894
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:18:54
sprintf厨 Uzeeeeeeeeeee
895
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:20:48
>>889
MFCは糞である事を覚えておいて損はないでしょう
896
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:23:33
VCL最強
897
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:41:39
リッチテキストっつえば、EM_FINDTEXTには
後方検索の機能がないんだけど
どっかに隠し機能としてでもあるんだろか?
今は、2進探索と組み合わせてなんとか実現してるんだけど
メガ級のテキストになると遅くて遅くて。
898
名前:
デフォルトの名無しさん
:2005/12/03(土) 21:56:03
Delphi厨だけど何か質問ある?
899
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:01:18
>>897
メモリマップ度ファイルと組み合わせて
900
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:10:21
>>755
みたいな人って職業PGなの?
こんな口調の書き込みは餓鬼がしてるものだと思ってたのだが。
901
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:15:21
それが参照している748のほうが餓鬼に見える。
902
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:21:38
あれ?ここ職業PGいたの?
903
名前:
流れを帰るな!変えろ!
:2005/12/03(土) 22:22:37
MessageBox関数が導入されたのはいつぐらい?
古いドキュメントが手元にあるんですがWindows3.1ぐらいから存在してることは確かですが…
904
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:24:48
まあMessageBoxが要Win98/2kあるいはIE4以上だったら救いようがないな。
ところで9xにもMessageBoxWがあるのはありがたい。
905
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:26:16
>>900
2chはおとながこどもに、こどもがおとなになるワンダーランドなのです
906
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:29:11
僕も子供になっておっぱいわしづかみして甘えたいよ ママー
907
名前:
755
:2005/12/03(土) 22:32:23
>>900
たまにはキレることもあるさ。
ついつい自分の体験がオーバラップしてしまったもんで。
やっかいなのは、「俺って玄人だから必要ない。」というタイプ。
こういうタイプを真っ先に開発から排除する必要がある。
こういうタイプが入るとえてしてソース管理がいい加減になる傾向に・・・。
バカが自分でわざわざ仕事増やしてるんだから、当然そうなるわけで。
908
名前:
デフォルトの名無しさん
:2005/12/03(土) 22:39:36
応援 どうもありがとうございます...・゚・。・゚゚・*:.。 .・゚・☆
./⌒丶、 , イ
(丶 `丶. __ __ .. , .イ ソ
ミ . `丶、 ヽ、 , ´ ,.-〜へヽ / 彡
ミ `丶、 ヽ、 \ /ヽヽヾ〈 __ ハ V 彡
乂ヽ ヽヽ ヽー\il i il ハ ! } ノ ,ィオ f-;〈 ソ あなたもあるぅ〜 翼があるぅ〜
( \ヽヽ ヾ ヽ ヽヽ V il 〉 ハ { __ i ツ
( \ ヽヽ ヽ ヽヽ V// //ソ ` ´ } シ 飛び立つのよぉ〜 空へと〜 ♪
\__ ヽ ( (.__ヽヽ }i ノ ノ イ ァrr‐く'
ゝ.__ (__ __ <r'< 〈 / /i|ー- 、
> .__ / トv ハ 〉 / リ ヽ
( __ _/ .| 〉V/ i〉 } 美しいわぁ〜 しあわせでしょ〜
ノ! |/ ヽ. リ ,'
// | |{ リ / 風にのり〜 虹をわたろぅ〜 ☆
从i l|`ヽ. |`ー -- ---く! /_
>-‐‐ } !. ,' } ノf i
>' イこ i ! ノ / 〉
,. --'´に.. l ヽ.___ < __ ___j i______
,.- ' ` ̄ヽ! ノ みなこ .
. / `ー─ -- -- -- ─ "´
909
名前:
デフォルトの名無しさん
:2005/12/03(土) 23:49:23
>>878
年末返上で必死に対策した香具師らにあやまれっ!
910
名前:
デフォルトの名無しさん
:2005/12/03(土) 23:51:17
>>900
自分がソースを追えない責任を関数に求めているだけだからスルーしろ
911
名前:
デフォルトの名無しさん
:2005/12/03(土) 23:53:30
「派遣」「使い捨て」「最底辺」「コーダー」「プライド」あたりがキーワード
912
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:07:16
>>853
でFAだと思う。俺。
sprintf使っちゃ駄目とか言ってる奴は
どう考えてもちょっとした不具合例に挙げておおげさに言いすぎだと思う。
913
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:11:09
議論はスレ違いなので、こっちでどうぞ。
C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc8.2ch.net/test/read.cgi/tech/1049790146/
914
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:12:40
>>753
snprintfってC標準ライブラリ?
915
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:20:06
>>912
>>774
や
>>855
が、「業界」のレベルなので
仕方がないのです。
本人には、自分が最底辺という自覚はありませんが。
916
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:21:54
scanf 最強!
917
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:24:39
漢なら gets !!
gets 最強伝説
918
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:25:49
sscanfは16進文字列から数字に直すときによく使った希ガス
919
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:31:07
>>916
すまんがscanfとはどんなAPIですか?
920
名前:
デフォルトの名無しさん
:2005/12/04(日) 01:32:38
バッファオーバフローノーケアな標準関数だけを使って
ノーバグでセキュアなプログラムを作るコンテストとかやったら
おもしろそうだ。
921
名前:
デフォルトの名無しさん
:2005/12/04(日) 02:09:59
scanfは書式が実行時でないと決まらんから
余計な変換手順も持ち込むんで
オブジェクトがばかでかくてカナ湾
922
名前:
デフォルトの名無しさん
:2005/12/04(日) 06:14:37
>>920
パンクラス、K-1のレベルだな。
923
名前:
デフォルトの名無しさん
:2005/12/04(日) 06:40:55
アプリケーションソフトってのはな、動作が重いほうがありがた味が増すんだよ。
勿体つけて処理した方が一般人は凄いことやってる錯覚に陥ってくれる。
お前らCプログラマがコードを高速化したところで、かえって一般人から軽んじられるんだよ。
924
名前:
デフォルトの名無しさん
:2005/12/04(日) 07:09:41
ヒドイアリサマデスネ
925
名前:
デフォルトの名無しさん
:2005/12/04(日) 07:14:32
>>923
そう思うのは本当の初心者だけ。
処理が単純なのにやたら重いソフトはMFCを必要以上に使ってるとかバレバレ。
ましてやそんな理由で無駄にSleepとか使ってわざと重くしたらすぐわかる。
926
名前:
デフォルトの名無しさん
:2005/12/04(日) 07:17:05
ヒドイアリサマデスネ
927
名前:
デフォルトの名無しさん
:2005/12/04(日) 07:36:20
>>923
あまりにひどいと自分で組んでフリー公開したくなる
928
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:02:12
LoadImage, SetPixel, GetPixelの
DIB版がありましたら教えてください。
929
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:07:12
やはり決め手はプログレスバーだな。
1つのファイルの処理進行状態で1つ、全体の処理の進行状態で1つの
2つは用意できるとユーザーも大喜びだ。
もちろん処理が一瞬で終わるからといって一瞬で終わってしまっては意味が無い。
意味もなく処理に時間をつかうんだ!
DirectXのシェーダ機能を無理やり使ってPCからキーン・・・という音を出せばGOOD!
930
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:12:35
プログレスバーは偉大だな。
ほんと、プログレスバー様様ですよ!
931
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:18:33
>>923
初心者は声を揃えて言います。
「ノー○ンは最強のセキュリティソフトだ!!」
932
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:25:05
>>928
CreateDIBSectionは?
933
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:35:42
以下は実話をTVで再現する番組で見たやつ
↓
ある優秀な鍵業者がいた。
彼は、鍵を閉じ込めてしまった客の緊急依頼に即座に駆けつけては
短時間で開錠するサービス熱心で真面目な男だった。
その鍵業者があまりに簡単に開錠するので、値切ったり金を払わずにすませようとする客が多かった。
ウンザリした鍵業者は仕事を止め、開錠の専門学校を設立することにしたのだった。
934
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:40:39
>>929-930
プログレスバーは控えめに小さく出して
画面真っ暗にしてディスプレイが鏡のようになるようにする。
「この待ち時間に身だしなみを整えてください。」
935
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:45:29
お前ら、バカばっかりだな。
客からすれば、業務ソフトとゲームソフトの違いなんてないんだよ。
遊園地のアトラクションで長時間乗ってたら料金が多くかかるだろ。
同じように鈍行列車に乗ったほうが料金が多くかかるものなのだと客を躾ければいいのさ。
新幹線?航空旅客機?
技術の無駄だな。
936
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:54:57
>>925
>処理が単純なのにやたら重いソフトはMFCを必要以上に使ってるとかバレバレ。
MFCさんをいじめるな!!
そんな奴はAPI直書きでもタコソースを書く。
937
名前:
デフォルトの名無しさん
:2005/12/04(日) 08:59:40
>>918
単に16進法文字列からなら数値にしたいだけならstrtol/strtoulなんかで十分だ。
938
名前:
デフォルトの名無しさん
:2005/12/04(日) 09:01:06
>>936
http://pc8.2ch.net/test/read.cgi/tech/1059196520/
939
名前:
デフォルトの名無しさん
:2005/12/04(日) 10:02:59
>>936
別にMFCが悪いとは言ってないが。
ただ使う場所を間違えると速度が遅くなるかと。
940
名前:
デフォルトの名無しさん
:2005/12/04(日) 10:05:49
全部VCLな漏れには関係ないさ(*´ω`*)
941
名前:
デフォルトの名無しさん
:2005/12/04(日) 10:13:34
>>939
使う場所間違えると遅いのは、STLやboostでも同じッスよ。
つか、ライブラリなるものは全てそうでしょ。
とりあえず、
MFCさんをいじめる人はボクが許さない!!
942
名前:
デフォルトの名無しさん
:2005/12/04(日) 10:17:35
MFCはスレ違い
うせろ
943
名前:
デフォルトの名無しさん
:2005/12/04(日) 10:19:37
>>936
タコソースってたこ焼きソースか?(藁
944
名前:
デフォルトの名無しさん
:2005/12/04(日) 10:33:56
>>932
ありがとうございます。
945
名前:
デフォルトの名無しさん
:2005/12/04(日) 12:54:24
あーあ、
>>943
のせいでスレが急に寒くなったな。
946
名前:
デフォルトの名無しさん
:2005/12/04(日) 13:03:38
423GJ
947
名前:
デフォルトの名無しさん
:2005/12/04(日) 13:31:45
プログラムから環境変数を設定したいんだけどどうすればいいですか
948
名前:
デフォルトの名無しさん
:2005/12/04(日) 13:37:36
石やーきいーもー おいもー
949
名前:
デフォルトの名無しさん
:2005/12/04(日) 13:44:06
>>947
SetEnvironmentVariable
950
名前:
デフォルトの名無しさん
:2005/12/04(日) 13:59:13
>>949
システム環境変数を設定したいのです。
951
名前:
デフォルトの名無しさん
:2005/12/04(日) 15:15:20
こんにちは、よろしくお願いいたします。
vc++でプログラムを作っていますが、
exeファイルの存在するフォルダに
datファイルを、おいて、参照あるいは、書き込みをしています。
datファイルのパスはGetCurrentDirectoryで収得して、
変更できないよう最初1度だけ読み取っています。
それで、違うフォルダーのテキストファイルにアクセスした場合、
そこのフォルダーで、どうも、datファイルを探している場合が、
ちょくちょくあります
そういうことは、皆様ありませんでしょうか。
952
名前:
デフォルトの名無しさん
:2005/12/04(日) 15:19:52
あなたの場合、日本語の勉強が先でしょう。
953
名前:
デフォルトの名無しさん
:2005/12/04(日) 15:22:11
関係あるかどうかわからんが
GetCurrentDirectoryが必ずしもexeのあるフォルダを指すとは限らんよ
954
名前:
デフォルトの名無しさん
:2005/12/04(日) 15:33:57
DOSさわったこと無いプログラマが増えてきたんかな。
955
名前:
デフォルトの名無しさん
:2005/12/04(日) 15:46:14
>>951
GetModuleFileName使えば?
956
名前:
デフォルトの名無しさん
:2005/12/04(日) 16:01:16
>>947
,954
PSPから環境変数領域のセグメントを調べて
直接書き換えればよい
ttp://www5c.biglobe.ne.jp/~ecb/assembler2/2_1.html
Windows上なら別プロセスに対しては意味が無くなるので
素直に
>>949
の SetEnvironmentVariable 等を使う方がよい
957
名前:
デフォルトの名無しさん
:2005/12/04(日) 16:08:12
>>956
WinNT系ならレジストリいじればいいはず。
Win9x系なら非公開APIを使ってシステムの環境変数領域を取得し、
メモリの内容を直接書き換える。
958
名前:
デフォルトの名無しさん
:2005/12/04(日) 16:09:09
>>929
>DirectXのシェーダ機能を無理やり使ってPCからキーン・・・という音を出せばGOOD!
おいおい、それ俺のNEC Lavie のノートPCだおwwwwwwっww
画面のスクロールするとキーンwww
959
名前:
デフォルトの名無しさん
:2005/12/04(日) 18:15:56
GetOpenFileNameへのコントロールの追加を「CreateWindowで」動的に、
行いたいのですが、次のようなHookProcではうまくいきません。
具体的には、ダイアログの描画が適切に行われず、画面が乱れます。
どうしたらよろしいでしょうか?
UINT_PTR CALLBACK OFNHookProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_INITDIALOG : {
MoveWindow(hdlg, 30, 17, 300, 22, FALSE);
CreateWindow("ComboBox", "", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_GROUP | WS_TABSTOP, 130, 0, 164, 100, hdlg, (HMENU)0x1000, Instance, 0);
return 0;
}
}
return 1;
}
960
名前:
デフォルトの名無しさん
:2005/12/04(日) 18:32:28
>>951
です
>>952
さんそうですね。日本語難しいです。
>>953
さん。
確かにexeを指すわけではないようなので、
一番最初の立ち上げにカレントフォルダを取得したらいいのかなと思っているのですが。
>>954
さんdirやcd なんかしかつかわなくて、
>>955
さんへ。
一度試したのですが、最初からうまくいかなくて、
どううまくいかないのか、よくわかりません。
ので、もう少し試してみます。
皆様いろいろありがとうございます。
961
名前:
デフォルトの名無しさん
:2005/12/04(日) 19:17:22
>>960
GetModuleFileName (GetModuleHandle(NULL),buff,sizeof(buff)-1);
こいつからdatファイルのパスを生成汁
962
名前:
デフォルトの名無しさん
:2005/12/04(日) 19:21:49
>>961
をもう少し丁寧に言うと
GetModuleFileNameで実行ファイルのパス取得
↓
PathRemoveFileSpecでファイル名部分を削除
↓
PathAppendでそれとdatファイル名をくっつける
↓
datファイルのパス完成
963
名前:
デフォルトの名無しさん
:2005/12/04(日) 22:16:05
>>962
駆け出しの頃に誰もが困惑した経験があるのが、バックスラッシュの切り出しだよな。
【初心者へのお題】
以下のフルパスからディレクトリ名とファイル名を分割せよ。
ただし、tchar.hとC標準関数を用いること。Win32APIは使用禁止。
C:\噂の真相\一覧表\赤十字.doc
964
名前:
デフォルトの名無しさん
:2005/12/04(日) 22:17:20
スレ違いだゴルァ
965
名前:
デフォルトの名無しさん
:2005/12/04(日) 22:20:49
今アプリケーションを作成していまして、検索ダイアログを
作ったのですが、いったん検索ダイアログを閉じてしまうと、
CFindReplaceDialogオブジェクトがNullになってしまうので
すが、どうにかして状態を残しておくことはできないでしょうか?
CFindReplaceDialogオブジェクトを残しておきたい理由としまして、
ダイアログを閉じても、F3ボタンで検索の続きができるように
したいのです。どなたか教えていただけないでしょうか?
966
名前:
デフォルトの名無しさん
:2005/12/04(日) 22:27:02
スレ違い
967
名前:
デフォルトの名無しさん
:2005/12/04(日) 22:29:51
>>965
こちらでどうぞ
http://pc8.2ch.net/test/read.cgi/tech/1131958904/
968
名前:
デフォルトの名無しさん
:2005/12/04(日) 23:39:26
何だったか忘れたけど日本語対応の
jstrrchrって関数がついてるコンパイラがあったなぁ
969
名前:
デフォルトの名無しさん
:2005/12/04(日) 23:48:31
そんなのはMSC/VCにもあるぞ。
970
名前:
デフォルトの名無しさん
:2005/12/05(月) 13:10:50
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1206.txt
の
//パレット(RGBQUAD構造体)の終わりの位置の取得
offSet = *(LPDWORD)(*buf + 10);
は、コメントの通り、ビットマップメモリの始めから、
パレットの終わりの位置を得る式だと思うんですけど、
(1,24ビットなら54+0、4ビットなら54+16*4、8ビットなら54+256*4)
なぜこの式でそれが得られるのでしょうか。
971
名前:
デフォルトの名無しさん
:2005/12/05(月) 13:26:22
>>970
BITMAPFILEHEADERのbfOffBitsパラメータを参照してるだけ
972
名前:
デフォルトの名無しさん
:2005/12/05(月) 13:30:25
>>970
bufが指す位置にはBITMAPFILEHEADERがある。
っていうか、そのプログラム合ってる?
offset=のところ、*が1個多くね?
973
名前:
デフォルトの名無しさん
:2005/12/05(月) 13:42:47
>>972
bufはLPBYTE*だからあってるよ。
974
名前:
970
:2005/12/05(月) 13:44:04
ありがとうございます。
>>971
なるほど。分かりました。
ビットマップファイルを作るときそこに値を入れますもんね。
>>972
VCとBCCで一応正しく動作しています。
DIB系のは、サイトに載っているのがグローバリー変数なので、
ローカル変数で出来るように意識したんですが、
記述としてよい書き方かは、良く分かりません。
975
名前:
970
:2005/12/05(月) 13:45:14
>>973
あってて良かったです。
976
名前:
デフォルトの名無しさん
:2005/12/05(月) 14:18:47
>>973
ウホ ほんとだ。よく見てなかった。
bufはLPBYTEだと思い込んでた。
977
名前:
959
:2005/12/05(月) 16:18:41
無理なんでしょうか
978
名前:
デフォルトの名無しさん
:2005/12/05(月) 16:47:43
スレッドの中から自分を Create したときの
ハンドルを取得したいと思い
スレッドの中で以下のようにしました
HANDLE hThreadFake = GetCurrentThread();
HANDLE hThreadReal;
DuplicateHandle(
hThreadProcess,
hThreadFake,
hThreadProcess,
&hThreadReal,
0,
FALSE,
0
);
このようにして得られる
ハンドル hThreadReal が
このスレッドのハンドルではなく
なぜか,次にスレッドを Create したときの
ハンドルになります.
なぜこのようになるのでしょうか?
979
名前:
デフォルトの名無しさん
:2005/12/05(月) 18:01:53
GetMessage()でユーザからのメッセージをmsgに格納し,
それをDispatchMessage()でウィンドウプロシージャに渡す事は解りましたが。
例えばウィンドウA,Bを作成し、ウィンドウAへのメッセージとウィンドウBへのメッセージも
このメッセージループで取得されますよね?そしてDispatchMessageで適当なウィンドウプロシージャへ
送出するのですが。
この送出先というのは、DispatchMessageがMSG構造体のメンバHWND hwndから判断してるのでしょうか?
980
名前:
デフォルトの名無しさん
:2005/12/05(月) 19:13:52
>>978
レスが1000件に到達したから
981
名前:
デフォルトの名無しさん
:2005/12/05(月) 19:16:25
>>979
それは違う
そこに来るのは自分宛のMsgのみ
DispatchMessageで回ってくるMsgとは別に
Windows自身がMsgキューを持っている
そちらにはどのWindowsへ送るMsgかのハンドルを持っている
982
名前:
デフォルトの名無しさん
:2005/12/05(月) 19:57:06
>>981
??????????
別々のウィンドウでも同じアプリケーションのものなら単一のメッセージループですが?(一部除く)
>>979
のウィンドウA、Bもそういうことだろ?
983
名前:
デフォルトの名無しさん
:2005/12/05(月) 21:00:00
>>959
なんでそんなめんどくさいことしてんの?
lpTemplateNameじゃ駄目なん?
984
名前:
デフォルトの名無しさん
:2005/12/05(月) 22:09:48
>>962
さん丁寧に教えていただきありがとうございます。
その通りにするとちゃんとできました。
>>963
さん
char *Getdictory(){
char moji[] = "C:\噂の真相\一覧表\赤十字.doc";
int mojicount = strlen(moji);
char damy[mojicount+1];
int i,j;
for(i=0;i<strlen(moji);i++){
if(moji[mojicount-i]=='\\') break;
}
for(j = 0;j<i;j++){
damy[j] = moji[j];
}
damy[++j]='\0';
return damy;
}
こんな感じでしょうか。コンパイラーは通してないですが、
場違いですみません。
985
名前:
デフォルトの名無しさん
:2005/12/05(月) 22:13:49
>>984
訂正
for(j = 0;j<i;j++){
ここちがう。
for(j = 0;j<mjicount-i;j++){
まちがいだらけかも。
986
名前:
デフォルトの名無しさん
:2005/12/05(月) 22:34:28
>>982
>同じアプリケーション
同じスレッドでしょ
>>984
IsDBCSLeadByte, CharNext あるいは mbcs 対応の crt 関数使わないと
'\\' を正確に判断できないよ
987
名前:
デフォルトの名無しさん
:2005/12/05(月) 22:39:33
その前に
int mojicount = strlen(moji);
char damy[mojicount+1];
なんだよこれ
初心者スレ行け
988
名前:
デフォルトの名無しさん
:2005/12/05(月) 22:44:19
元のコードを結構修正することになるけど、CharNextのほうが986のより楽。
>>987
C99という可能性はまだ消えていない。
989
名前:
デフォルトの名無しさん
:2005/12/05(月) 22:44:56
>>987
確かに。
スペルはdamyじゃなくてdummyだわな。
話にならん。
990
名前:
デフォルトの名無しさん
:2005/12/05(月) 22:53:55
WM_MOUSEMOVEメッセージについてなんですけど、
マウスカーソルがスタティックテキスト(含むグループボックス)の子ウィンドウ上の時にはメッセージ来るようなんですが、
他の子ウィンドウ(エディットコントロールやチェックボックスなど)上だとメッセージが来ないようなのです。
うまくスタティック以外のウィンドウ上でのマウスカーソルの動きをキャッチする方法はないのでしょうか。
991
名前:
デフォルトの名無しさん
:2005/12/05(月) 23:19:06
>>987
allocaだ
992
名前:
959
:2005/12/05(月) 23:57:31
>>983
任意のhWndを持つウィンドウの追加が動的に行えればそれでも
構いません。ただし、.resファイルなどは一切使用しないことが
条件なのです。どうすればいいでしょうか?
993
名前:
デフォルトの名無しさん
:2005/12/06(火) 01:01:40
次
Win32API質問箱 Build38
http://pc8.2ch.net/test/read.cgi/tech/1133798345/
994
名前:
デフォルトの名無しさん
:2005/12/06(火) 01:04:01
Z
995
名前:
デフォルトの名無しさん
:2005/12/06(火) 01:12:23
1000なら元カノをレイープ
996
名前:
デフォルトの名無しさん
:2005/12/06(火) 01:40:29
>>995
犯罪予告すると、かなりの確率で警察のお世話になるよ。
997
名前:
デフォルトの名無しさん
:2005/12/06(火) 01:43:28
大丈夫、元カノはくたびれた南極ちゃんだから
998
名前:
デフォルトの名無しさん
:2005/12/06(火) 02:01:13
1000
999
名前:
デフォルトの名無しさん
:2005/12/06(火) 02:02:03
1000
1000
名前:
デフォルトの名無しさん
:2005/12/06(火) 02:02:17
1000
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.