違法コピーソフト屋を晒すスレ
■ このスレッドは過去ログ倉庫に格納されています
0001
02/11/17 16:14ID:oq2pKPqj社会からの鉄槌を下そう。
顔写真画像付きならなお良し!
0153デフォルトの名無しさん
NGNG>ガシガシ使役しているアプリってどうやっているんだろうか。
そんなアプリ、ないと思う……。
モーダルの意味わかってんのかな。
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGひらめいたのはそれか?wwww
10ヶ月の漏れがいうのもなんだが
ポインタを使えよ。
0156デフォルトの名無しさん
NGNGボタンのプロパティにある「標準のボタン」を動的に変更したいのですが、
m_mybutton.SetButtonStyle(BS_DEFPUSHBUTTON,TRUE);
のように書いても他のコントロールにフォーカスが移ると、
元に戻ってしまいます。
これは、どうやるものでしょうか?
0157デフォルトの名無しさん
NGNGどこにメンバ変数って書いてんだよ
0158デフォルトの名無しさん
NGNG変更前のボタンにBS_DEFPUSHBUTTONが残ってるんじゃないか?
そいつを外したらどう?
0159デフォルトの名無しさん
NGNGレスありがとうございます。
う〜む。他に標準のボタンが無くてもダメでした。
しかし、
複数ボタンがあって、最後に押したボタンが標準のボタンになるように
しようと思っているので、ボタンが押されたときに、SetButtonStyleを
実行していたのですが、
他のハンドラ(他のコントロールにフォーカスが移ったときとか)で実行すると
うまく動きました。
どうも、ボタンのクリックで自分自身を変えるときだとダメっぽいです。
なんででしょう?
0160184
NGNGリソースエディタのプロパティで設定してある状態に戻ってしまうだけみたいです。
その前に、SetButtonStyleで変更したものがすべて元に戻るようです...
0162デフォルトの名無しさん
NGNGMFCでどうやるのかは知らん
0163デフォルトの名無しさん
NGNG久々にワラタw
0164184
NGNGありがとうございます。
::SendMessage(this->GetSafeHwnd(), DM_SETDEFID, IDC_MYBUTTON, 0L);
のような感じでうまくいくみたいです。
0165デフォルトの名無しさん
NGNG10ヶ月たってやっとポインタを覚えたのでポインタ言いたいだけちゃうんかと
0166183
NGNGダイアログとビューでやりとりするんだから
メンバ変数にウィンドウのハンドル・ポインタでも保持しないと無理だろうが。
ビューとダイアログが1対1で対応してるとは限らんだろ。
それともお前はグローバル変数を使うのか?www
>>191
わからないなら黙ってろ。
0167デフォルトの名無しさん
NGNGポカーン・・・・・・だからそのハンドル使って>>182すれって言ってんだろ。
それにViewへのポインタならAfxGetMainWnd()->GetActiveView()で取れるからダイアログにわざわざViewのポインタを渡さなくても良い。
おまえに説明すると二度手間ってことがわかった。さすが10ヶ月。
0168デフォルトの名無しさん
NGNGおまえ>>172と同レベルだな。
基本からやり直して来い。
0169183
NGNG>AfxGetMainWnd()->GetActiveView()
複数のフレームウィンドウがある場合を考慮に入れないのか?
っちうか、汎用性の高いビュークラスを作ったことないんだろうね。
いずれにしてもビューのポインタを渡した方が安全。
0170デフォルトの名無しさん
NGNG>メインとなるウィンドウA(MFC, SDI)からモーダルダイアログBを作成。
どこに複数あるのか問いたい。
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNG独自Viewのポインタ変数をダイアログに持たせるどこが汎用的なんだ?
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGおまえ10ヶ月たってやっと汎用性って言葉覚えたから汎用性って言いたいだけちゃうんかと
0176183
NGNG>>197を再読。
>>201
>AfxGetMainWnd()->GetActiveView()
で取得したポインタが目的のビュー(ドキュメント)とは
限らない。
0177デフォルトの名無しさん
NGNG仮にウィンドウもビューも複数あったとして、ダイアログはポインタをどう使うんだ?
まさか直接メンバ関数呼ぶわけじゃないよな。汎用性低いもんな。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGフレームウィンドウが複数あってもウィンドウのビューのポインタが取れるから問題ないだろ。
そのビューからダイアログ出してんだから。
0180デフォルトの名無しさん
NGNGクラス間の依存関係を無くしてダイアログとViewを使いまわしできるように
するというなら、ハンドルを渡してSendMessageでメッセージを送るのが一番だと思うが。
つまり>>182。
>>183はどう見ても駄レスだろう。
0181デフォルトの名無しさん
NGNGところでどのポインタをどういう風に使うんだ。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG本当に汎用性って言ってみたかっただけらしいな。
0184デフォルトの名無しさん
NGNGこれだと、他のエディットボックスに文字を打ち込もうとすると打ち込んだ文字も消えてしまいます。
どうすれば、打ち込んだ文字が消えずにすむのでしょうか?
もしくはエディットボックス1のみを更新する方法はあるのでしょうか?
0185デフォルトの名無しさん
NGNGUpdateDataじゃなくてSetWindowText使え
0186デフォルトの名無しさん
NGNG10ヶ月もやっててそのレベルじゃ完全にVBに戻ったほうがいいぞ
煽りじゃないマジレスだ
VBやってたころは「俺はできる」と思ってたんだろ?
0187江東支店
NGNG0188183
NGNG誰もVC++使い出して10ヶ月なんて言ってないだろ。
MFCを使い出してから10ヶ月って事だよ。
VC++なら5年くらい前からやってんだよ。バーヤ、バーヤ。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGそれじゃなおさらヤバイだろ。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGありがとうございました。できました!
0194デフォルトの名無しさん
NGNGアハハ・・・(´▽`;)
0195デフォルトの名無しさん
NGNG(CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
に渡すnIDEventの値は0以外のタイマ識別子を指定する、とヘルプには載っていますが、
一部の書籍などでは、0を指定すると未使用のタイマ識別子が返される、とあります。
特に普通にOnTimer()を使用するなら、はじめから0を指定して、あとでKillTimerするときは、
返された値を使うのが簡単なように思うのですが、この考えっていけないのでしょうか?
VC++6.0(SP5)、OSはWin2000もしくはXPです。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG「正常終了した場合は、新しいタイマのタイマ識別子を返します。」
ってなってるけど、SetTimer(1,500,NULL)とかって指定しても、
戻値が2とか3とかもありえるってことでしょ?
だったら、はじめから0を指定して、戻値をUINTで保存しておいて、
いらなくなったらKillTimer()したほうが合理的に感じるけど。
タイマーひとつ使うとき限定だけど。
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNG荒らしか。つぎ!!
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG>If the function succeeds and the hWnd parameter is NULL,
>the return value is an integer identifying the new timer.
これのことか?::SetTimerの英語版MSDNだけど。
これによればタイマIDに0じゃなくて、ウィンドウハンドルにNULLを渡せば、
ってことになるけど。
0203デフォルトの名無しさん
NGNGKillTimer(1)
の方が余程楽だとおもうんだが・・・
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGSetTimer(1〜で1以外の値が生成されて返ってきたら、KillTimer(1)は失敗する。
SetTimerの戻値は保存するべきでしょ。普通。
0207デフォルトの名無しさん
NGNGSetTimerって仕様が変わったの?
今、SetTimer(0, ...)ってやったら1が返ってきた。
これは古い仕様?
0208デフォルトの名無しさん
NGNG0以外の値を指定しなさいってなってるよね。
これってもしかして裏技?
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG0を渡しても大丈夫と言う事実には目をつむれと・・・
0213デフォルトの名無しさん
NGNG明日、ちり紙交換屋が大繁盛(w
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG例えば100000なんて指定しても動作保証されるのかな?
0216デフォルトの名無しさん
NGNG1を渡して駄目なら2。
2を渡して駄目なら3。
3を渡して駄目なら4。
:
:
:
SetTimer()をやるたびにこんなロジック組めないよ。
大体IDの上限値が明示されて無いし。
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG0が返ってきたら失敗。
0219デフォルトの名無しさん
NGNGこれに限らず関数使うのに戻り値のチェックやるのは当然だと思うが・・・
つか上限っていうかUINTの範囲だろ
0220デフォルトの名無しさん
NGNGつむらなくてもいいがもし動かなくても文句も言うなってこった
0221デフォルトの名無しさん
NGNGだからといって1と決めうちしちゃっていいものなの?
(まあほとんど99.9%ぐらいは成功するだろうが。)
UINTの範囲だと、IDの管理自体をコーディングでやらんといけないわけよね。
0222デフォルトの名無しさん
NGNGパラメータがUINTでも2バイトまでしか許容して無いのもあるし。
しかし、SetTimerのIDはUINT_PTRだから、ハンドルやポインタなどの一意の識別氏を使用してタイマーを作成することも考慮されているだろう。
SetTimerが失敗する状況はわからないが、IDが不正ということは無いだろうから一度失敗したからIDを変えてもう一度ためすというのは不毛だと思う。
0223デフォルトの名無しさん
NGNG言うことでおしまいでいいですか?
0224デフォルトの名無しさん
NGNGいや別に再度試すかどうかはそのプログラムの仕様によるだろ。
0225デフォルトの名無しさん
NGNG将来の拡張性を考慮して?
0226デフォルトの名無しさん
NGNGm_TimerID = SetTimer( 1, ...);
if( m_TimerID != NULL)
{
KillTimer(m_TimerID);
}
で宜しいか?
0227デフォルトの名無しさん
NGNGよろしいってば。
0228デフォルトの名無しさん
NGNG動いてるのは偶然と言うかたまたまということだ。
0229デフォルトの名無しさん
NGNGおまえさっきから茶々入ればかりだな
0230デフォルトの名無しさん
NGNGSetTimer( 1,...);
ってことはCWnd::SetTimerだと思うが、
このメソッドはHWNDを渡すから戻り値はタイマーIDじゃない
0231デフォルトの名無しさん
NGNGでも、なんか釈然としないよな。
SetTimer()の戻値が必ずしも1と言うことでなければ、
最初から1なんて指定しないで、システムに勝手にIDふってくれ、
戻値であとで殺すから、という使い方にしたい。
だったら0のほうが俺は好き。
0232デフォルトの名無しさん
NGNG・・・・え?何言ってんの?
0233デフォルトの名無しさん
NGNG関数が成功すると、新しいタイマー ID が返ります。関数がタイマーの作成に失敗すると、0 が返ります。
って書いてあるよ。
0234デフォルトの名無しさん
NGNGCWnd::SetTimer(1,1000,NULL);
の戻値は1でした。タイマーIDがそのまま返ってきた・・・
0235258
NGNGMSDNより
> If the function succeeds and the hWnd parameter is not NULL, then the return value is a nonzero integer. An application can pass the value of the nIDEvent parameter to the KillTimer function to destroy the timer.
この関数が成功すると、hWndがNULLでないときは非0が返ります。
アプリケーションはnIDEventに渡した値を使ってKillTimerを呼び出してタイマーを削除することが出来ます。
0236デフォルトの名無しさん
NGNGまぁIDに0を渡してもエラーにならないのは釈然としないが、
ドキュメントに明記してある以上、0以外のUINTを渡して、
戻り値を保存してそれを識別用に使うのが、動作的にも
ドキュメント的にも確実だろう。
0237デフォルトの名無しさん
NGNGそりゃもうわかりきってるんだってば。
今話してるのは、0を渡しても1(成功値)が返ってくることの謎と、
1を渡しても1以外の値が返ってくる可能性はあるのかってことだ。
0238デフォルトの名無しさん
NGNGその非0がタイマーIDなんじゃないのかしら。
それってCWnd::SetTimer()じゃなくて::SetTimer()1の説明かと。
0239258
NGNGうん、そうだけど。
MFCのソースは
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse,
void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD))
{ ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse,
lpfnTimer); }
なんだよねぇ。
どっちのドキュメントも正しいとしたら、思いっきりアンドキュメントな動作を利用してくれちゃってる、なんかムカつく。
0240デフォルトの名無しさん
NGNGの「新しいタイマー ID が返ります。」の正確な意味が知りたい。
0241183(本物)
NGNGお前全然わかってねぇな。どのビューから呼び出したって
>AfxGetMainWnd()->GetActiveView()
で取れるポインタじゃ同じビューしか操作できねーだろうが。
複数のフレームに同じビューがあり違うドキュメントを表示すること
だってあるだろ?ちったぁ考えろ。
>>209
ポインタ使ってPostMessageでもSendMessageでもすればいいじゃないか。
>>216 != 183
騙りまでして、必死だなwww
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNGはい、バカが醜態晒しに来た。
>ポインタ使ってPostMessageでもSendMessageでもすればいいじゃないか。
これじゃ>>182の通りだろ。だから>>183は駄レスだって言われんの。
0244デフォルトの名無しさん
NGNGWINUSERAPI
UINT
WINAPI
SetTimer(
HWND hWnd ,
UINT nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc);
となっている。
0245デフォルトの名無しさん
NGNG放置よろしこ
0246デフォルトの名無しさん
NGNGおい、汎用性はどこ行った?(苦笑
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGUINT m_TimerID=SetTimer(1, ...);
if(m_TimerID)
{
KillTimer(m_TimerID);
}
でいっとくかな・・・
テスト十分にして問題なければ、これでいいでしょ。
0250デフォルトの名無しさん
NGNGその前に>>183を説明してみ。
0251デフォルトの名無しさん
NGNGオレもそう思った(w
0252デフォルトの名無しさん
NGNGインシデントを消費するに値する問題かどうか悩む〜。
■ このスレッドは過去ログ倉庫に格納されています