■MFC相談室 mfc19d.d ..
357:デフォルトの名無しさん
08/07/29 21:34:16
>>341
ありがとうございます。
その方法で行の高さはかえれるようになりましたが、ヘッダの高さが変えられません。
どうすればいいでしょうか?
358:337
08/08/02 00:30:06
>>338
OnCreate内でも子コントロールを操作して問題無いからどちらも子コントロール初期化終わってる希ガス
359:デフォルトの名無しさん
08/08/02 14:06:49
>>357
ヘッダは別コントロールだから、そっちで何とかするしかないかも
360:デフォルトの名無しさん
08/08/02 20:22:34
>>358
DDXとか初期化されて無いでしょ?
361:337
08/08/03 23:56:56
>>360
DDXと言うとコントロールとコントロール変数を関連付けるアレかな?
あっちは初期化終わってなかったのか
362:デフォルトの名無しさん
08/08/04 00:11:31
CDialog::OnInitDialog -> UpdateData -> DoDataExchange
こんな感じになってるからね。
大体、WM_CREATEの時点だと子ウィンドウはまだ存在しないと思うし。
363:デフォルトの名無しさん
08/08/04 23:01:35
質問お願いします。
edit controlを2個
OKボタンを1個
作成しました。edit controlが共に値が入っていないと
OKボタンが非表示になるようにしたのですが
非表示の場合でも、Enterキーを入力するとOKが適用されてしまいます。
非表示の場合、Enterキーの無効化または常に無効化する方法を
ご存じの方はご教示ください。
364:デフォルトの名無しさん
08/08/04 23:05:57
>>363
OnOkをオーバーライドしてそこにエディットコントロールの中身を調べるプログラムを書く。
もし空白など適切なものではない場合はreturnでそのまま返してやるだけ。
365:デフォルトの名無しさん
08/08/04 23:25:42
で、SP1まだ?w
366:デフォルトの名無しさん
08/08/05 10:20:15
>>363
同時にDisableにしておけばよいかと。
367:デフォルトの名無しさん
08/08/05 10:37:01
Disableにしても消しても無理
368:デフォルトの名無しさん
08/08/05 11:46:45
OnOkはシステム定義のメッセージだろ
OKボタンじゃなくて自分で作ったボタンにすればいい
369:デフォルトの名無しさん
08/08/05 13:32:40
>>368
>OnOkはシステム定義のメッセージだろ
何を言っているのか解らんが、
1. IDがIDOKである、ダイアログの子ボタンからのBN_CLICKED を受け取ったとき
2. ダイアログ自身がキー入力を見て Enter だったとき
に、ダイアログから呼び出される仮想メンバ関数。
370:デフォルトの名無しさん
08/08/05 13:58:56
win32で定義してるのを知らんのか
WINUSER.H(7537): #define IDOK 1
/*
* Dialog Box Command IDs
*/
#define IDOK 1
#define IDCANCEL 2
#define IDABORT 3
#define IDRETRY 4
#define IDIGNORE 5
#define IDYES 6
#define IDNO 7
#if(WINVER >= 0x0400)
#define IDCLOSE 8
#define IDHELP 9
#endif /* WINVER >= 0x0400 */
371:デフォルトの名無しさん
08/08/05 14:16:02
また意味不明なことを言ってるよ。
話をどこにもっていきたいのかわからん。
372:デフォルトの名無しさん
08/08/05 14:32:05
>OKボタンじゃなくて自分で作ったボタンにすればいい
リターンキーでIDOKを回避するにはこれだけじゃだめで、
その自分で作ったボタンをデフォルトボタンにする必要がある。
まあOnOK()捕まえたほうが確実だね。
373:デフォルトの名無しさん
08/08/05 15:53:18
>>367
なんでDisableが無理?
Disableにすればエディットボックス上でEnter押しても効かなくなるけど。
>>369
> 2. ダイアログ自身がキー入力を見て Enter だったとき
> に、ダイアログから呼び出される仮想メンバ関数。
これは違う。
Enterキーはデフォルトボタンを押す操作。
キャンセルボタン上でEnterキーを押せばOnCancelがコールされるし、
自分で用意したボタン上ならそのハンドラがコールされる。
374:デフォルトの名無しさん
08/08/05 21:17:56
OKボタン削除してもOnOK呼ばれる
375:デフォルトの名無しさん
08/08/05 21:21:23
MFCやってるんなら、始めにぶつかって覚えてそうなことなのになw
376:デフォルトの名無しさん
08/08/05 22:40:24
>>374
OKボタンを削除してもOnOKが呼ばれるのは、IsDialogMessage()が、
デフォルトボタンが存在しないときにIDOKを発行しているからであって、
直接OnOKが呼ばれているのではないのでは?
OKボタン削除だけしておいて代わりのデフォルトボタンを用意しなかったり、
DM_GETDEFIDメッセージを処理しなかったりしているからそうなるだけ。
377:デフォルトの名無しさん
08/08/08 20:02:47
シングルウィンドウでexeのアイコンにファイルをドロップしたり、その実行ファイルに関連付けされているファイルを開いた場合
どの部分でドロップしたファイルや開いたファイルのパスを取得するのでしょうか。
378:デフォルトの名無しさん
08/08/08 20:50:07
>>377
取得しなくとも__argv or __wargvに保持されています。
DialogベースのアプリでないならCYourApp::InitInstanceのParseCommandLineでコマンドラインの解析が行われます。
argvなんて単語初めて聞いた!!という場合はParseCommandLineの利用をお勧めします。
379:デフォルトの名無しさん
08/08/12 14:27:14
VisualStudio2005で、WindowsMobile6用にSDIで作っています。
リストボックスのフォントを等幅フォントにしたいと思って、次のように書いたのですけど、反映されません。
CFont nfont;
nfont.CreateFont(
0, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_BOLD, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
SHIFTJIS_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
FIXED_PITCH | FF_DONTCARE, // nPitchAndFamily
_T("MS ゴシック") // lpszFacename
);
GetDlgItem(IDC_LIST1)->SetFont(&nfont);
ちなみにHeightの設定だけ微妙に反映される状態です。
リストの1行の高さだけが変化し、フォントの大きさは変わらないという微妙さ加減です。
BOLD指定しても太字にならないし、何がなにやらよくわからないです・・・。
リストボックスの文字を等幅フォントに設定する方法を教えてください〜
380:デフォルトの名無しさん
08/08/12 14:37:12
そのフォントがスコープ抜けて無効になってるというオチじゃなかろうね?
381:379
08/08/12 15:55:41
>>380
スコープ!?
あわわわわ。まさにそのオチでしたorz
ありがとうございました(泣)
382:デフォルトの名無しさん
08/08/18 06:32:06
sp1出てたのか
いろんなニュースに紛れてて気付かなかった
383:デフォルトの名無しさん
08/08/19 14:20:46
あれ?
ファイルのフルパスからファイル名を省いたフォルダパスを取得するのってどうするんでしたっけ?
384:デフォルトの名無しさん
08/08/19 14:41:01
>>383
PathRemoveFileSpec()
385:383
08/08/19 14:41:34
_tsplitpath
でしたね。。。
すまそ。
386:383
08/08/19 14:43:06
>>384
そんなのあったんですね!!
ありがとうございます!!!
387:デフォルトの名無しさん
08/08/19 21:19:42
Path系はIE5のライブラリのAPIだっけか
388:デフォルトの名無しさん
08/08/19 23:09:10
shlwapiの4.71以降だからIE4.0かな
splitpathなんてDOSの頃使ったっきりで、すっかり忘れてたよ
389:デフォルトの名無しさん
08/08/22 00:07:23
エディットボックスにctrl+vで文字を貼り付けたときに
10文字以上になった場合にメッセージボックスを表示させるにはどうしたら良いでしょうか?
390:名無し募集中。。。
08/08/22 00:29:00
DDV_MaxChars
391:デフォルトの名無しさん
08/08/31 01:07:17
MFCスレって、いつの間にか過疎ってるのな。
皆どこ行っちゃったんだろう?
392:デフォルトの名無しさん
08/08/31 01:42:32
ATL/WTL, .NETなどなど
393:デフォルトの名無しさん
08/08/31 03:16:54
残業でカンヅメ状態だから書き込めない
394:デフォルトの名無しさん
08/08/31 11:28:58
SP1でいろいろ追加されたが、なかなか触る暇が無い
395:デフォルトの名無しさん
08/09/02 14:28:56
MFCで印刷関係のサンプルコード検索しようとすると、
ブラザーのレーザープリンタが、ちょいちょいヒットするの
なんとかしてくれませんか?
396:名無し募集中。。。
08/09/02 14:49:17
ブラザーの新型で印刷どうぞ!
URLリンク(pc.watch.impress.co.jp)
397:デフォルトの名無しさん
08/09/02 19:22:38
印刷といえば、.NET Framework 3.0 で Microsoft XPS Document Writer が
インストールされるようになったけど、あれはいいな。手軽に試せて。
398:名無し募集中。。。
08/09/02 21:06:18
つPrimoPDF
399:デフォルトの名無しさん
08/09/04 23:22:19
SP1のタブMDI(呼び方あってる?)って、デフォルトでマウスイベントとかなさ気だな・・・
まだちゃんと仕様見てないが・・・ていうかテーマで挙動かわりやがる
400:デフォルトの名無しさん
08/09/05 09:17:49
すみません、ひとつ質問というか相談させてください
現在、VC6でMFCを用いて開発しています。
昨日、取引先から、過去に弊社が納品したソフトを、
「Google Chrome」みたいなマルチタスク方式を組み込んで
バージョンアップして欲しいという要求が来ました。
過去に納品したソフトにはタブで画面を切り替える部分がありますが、シングルタスクです。
この部分をマルチタスクにして欲しいという内容でした。
要求の理由は目新しさや安定性が売りになるからとのです。
まず、実現可能性の調査をすることが決定し、
私がその調査をすることになったのですが、
いろいろ検索したりして情報を探しても、
なかなか適した情報がヒットしない状況です。
で、質問なのですが、VC6で実現できるのでしょうか?
場合によっては最新の開発環境(VS2008だったかな)へ移行することも考えています。
よろしくお願いします
401:デフォルトの名無しさん
08/09/05 10:15:38
できます。
たぶん、きっと
402:デフォルトの名無しさん
08/09/05 10:27:08
マルチタスク、マルチスレッド、マルチタブを混同してないか?
まずはその違いを理解してから質問しろよ
403:デフォルトの名無しさん
08/09/05 11:26:07
ちなみに「Google Chrome」は VS2005 でビルドします。
MFC は使用されていないみたいです。
VC6, VS2003, VS2008 を持っているおいらは負け組み? orz
404:名無し募集中。。。
08/09/05 16:52:12
2005をskipするのはありがちだと思う
VISTAで開発するなら2008になるよなぁ
405:デフォルトの名無しさん
08/09/05 17:39:24
chromeはvs2008でもビルドできたよ
406:デフォルトの名無しさん
08/09/05 18:07:34
VC6でchromeをビルドできるようにして納品しちゃえば?
407:デフォルトの名無しさん
08/09/05 19:16:02
まじ?>405
釣りじゃないよね?
今から試してみよう
408:デフォルトの名無しさん
08/09/05 19:28:10
ソリューションを変換してビルド中だけど
warning C4396 が山のように出てるぞ
(Chome をビルド・改造するってスレはある?あれば移動します)
409:デフォルトの名無しさん
08/09/10 09:29:12
CListCtrl上にデータを表示し入ってくるデータで更新しているのですが、一定時間がたつと画面表示がおかしくなります。
フォントキャッシュが壊れた時のようにコンボボックスの右側の▽ボタンに6と表示されたり、画面全体(Windows含)が残像を残すようになったり。
データの受信を中止してもそのままで、またメモリ使用量を調べても特に増えてはいません。
InValidate関数等も試しましたが同じ現象が起こります。
最小化する、別の画面を最前面に表示する等で他の画面は正常に戻るのですが、再度リストを表示するとその瞬間に同じ症状が出ます。
どのような対策方法があるか教えていただけないでしょうか。
410:デフォルトの名無しさん
08/09/10 10:57:58
そうなんだ
411:デフォルトの名無しさん
08/09/10 12:02:52
どのような対策って、バグをつぶすしかねーだろ
412:デフォルトの名無しさん
08/09/10 13:12:05
>>409 の訳:「ソース出さないけど誰かデバッグして下さい」
413:デフォルトの名無しさん
08/09/10 13:46:39
よくあるケースみたいだから対策方法教えてくれと言ってるのかもしれんが、
普通無いケースだからなあ
414:デフォルトの名無しさん
08/09/10 15:23:51
「入ってくるデータで更新」がちょっと気になるな。
別スレッドでなんかやってるとか、
逆にシングルスレッドで表示の更新が止まってるとか。
415:デフォルトの名無しさん
08/09/10 15:46:55
リソース食いつぶしてるようにも見えるなあ
416:デフォルトの名無しさん
08/09/10 17:24:26
MFCと関係ないだろ
417:デフォルトの名無しさん
08/09/10 19:20:41
スタッティク領域に書かれたテキスト文字だけ拡大できる
のか
418:デフォルトの名無しさん
08/09/10 19:23:34
ひとりごとです
419:デフォルトの名無しさん
08/09/10 21:56:10
>>409
メモリーじゃないとすればGDIオブジェクトの数確認してみ。
タスクマネージャで表示メニューいじれば確認できる。
ひとつのアプリで使用できるGDIオブジェには上限があり
開放し忘れ関数が何度も呼ばれると409のような状態になる。
420:デフォルトの名無しさん
08/09/11 09:59:09
>>419
タスクマネージャにそんな機能があるとは、知らなかった
これは便利
421:409
08/09/11 11:12:54
ソースも出さず失礼しました。
単純なプログラムでも同じ状態になるので、何か単純な回避方法があるのではないかと思ったのです。
とりあえずGDIオブジェクトを調べてみようと思います。
ありがとうございました。
422:名無し募集中。。。
08/09/11 13:03:56
>>419
便利な事を教えてくれてありがとう
423:デフォルトの名無しさん
08/09/15 23:52:27
質問です。
現在VS2008でダイアログベースのプログラムを作成しています。
多重起動を禁止するため、以下の手順でウィンドウクラス名を変更しました。
1.ダイアログのClassNameをAAAAに変更
2.C***App::InitInstanceでClassNameをAAAAに設定
BOOL C***App::InitInstance(){
/*
MFCによる処理
*/
WNDCLASS wc;
HINSTANCE hInst = ::AfxGetInstanceHandle();
if(!::GetClassInfo(hInst, CLASS_NAME, &wc)) {
ASSERT(::GetClassInfo(hInst, "#32770", &wc));
wc.lpszClassName = CLASS_NAME;
wc.hIcon = ::LoadIcon(hInst, MAKEINTRESOURCE(IDR_MAINFRAME));
ASSERT(::AfxRegisterClass(&wc));
}
ASSERT(CWinApp::InitInstance());
/*
残りの処理
*/
C***Dlg dlg;
dlg.DoModal
return FALSE;
}
Debug版ではDoModalでちゃんとウィンドウが表示されるのですが、Release版ではDoModalが-1を返し異常終了してしまいます。
Release版でやらなければいけない処理などがあるでしょうか?
また、間違ってる処理などがあれば教えてください。
424:デフォルトの名無しさん
08/09/16 00:04:30
ASSERTがいかんのじゃね? 誤解してんじゃね? よくみてねーけどさ。
425:デフォルトの名無しさん
08/09/16 00:17:59
うん、俺もちゃんと見てないがInitInstance()なんてものをASSERTの中で呼んでることが怖い
426:423
08/09/16 00:55:56
>>424-425
ありがとうございます!解決しました!
ASSERTを誤解してました。これからは変数値の評価だけに使うことにします。
427:名無し募集中。。。
08/09/16 00:57:28
多重起動防止はCreateMutexを使うのが普通だぜ
m_hMutex = ::CreateMutex( NULL, 0, "__HogeAppMutex__" ) ;
if ( ::GetLastError() == ERROR_ALREADY_EXISTS ) {
::CloseHandle( m_hMutex ) ;
m_hMutex = NULL ;
return( FALSE ) ;
}
428:デフォルトの名無しさん
08/09/16 13:22:56
>>426
Releaseビルド時にも式の評価だけはしてくれるVERIFYマクロがあるよ
429:デフォルトの名無しさん
08/09/16 20:16:49
>>427
共有メモリでもいいかも知れない。
共有メモリに最初に起動したウィンドウの
ハンドルを格納しておいて、
多重起動された時に最初に起動したウィンドウ
を最前面に表示させるとか・・・
430:デフォルトの名無しさん
08/09/17 00:00:23
>>429
実はその方針では破綻する。
431:デフォルトの名無しさん
08/09/17 10:51:59
>>429
>最初に起動したウィンドウの
>ハンドルを格納
する前に、二番目に起動したプロセスのウィンドウハンドルが
格納されてしまうかも知れないわけよ。
432:423
08/09/17 11:52:16
返信遅くなってすいません。
>>427
これからはこれを多重起動の確認に使ってみようと思います。
ありがとうございます!
>>428
こんなマクロもあったんですね。
これからはASSERTの代わりに使ってみます。
433:名無し募集中。。。
08/09/17 16:24:05
>>429
>多重起動された時に最初に起動したウィンドウ
>を最前面に表示させるとか・・・
>>427のreturn前にコレだな
CString strWndTitle ;
strWndTitle.LoadString( IDR_MAINFRAME ) ;
::SetForegroundWindow( ::FindWindow( NULL, (LPCTSTR)strWndTitle )) ;
434:デフォルトの名無しさん
08/09/21 14:03:32
MFCをマクラって略してんの俺だけ?
435:デフォルトの名無しさん
08/09/21 15:03:10
ファンデーションはどこに行ったんだ
436:デフォルトの名無しさん
08/09/21 15:26:38
どっかにふっとんだ。
437:名無し募集中。。。
08/09/21 15:46:46
ファウンデーションでしょ
438:デフォルトの名無しさん
08/09/21 16:36:40
はげしく、どっちでもいいw
439:デフォルトの名無しさん
08/09/21 16:57:36
どっちでもいいぐらいだからどっか行ったんじゃね?w
マクラいいなw
440:デフォルトの名無しさん
08/09/21 19:24:06
ダイアログコントロールの種類(ボタンかエディットかなど) を判別する関数とかありますか?
441:名無し募集中。。。
08/09/21 20:13:57
IsKindOfかなぁ
442:デフォルトの名無しさん
08/09/21 21:14:15
関数は知らないけどapiならある
443:デフォルトの名無しさん
08/09/29 21:53:50
質問です。
タスクトレイにアイコンを格納しようと思っているんですが、タスクトレイに表示されるアイコンが32ピクセルのアイコンになってしまいます。
タスクトレイに表示されるアイコンを16ピクセルのアイコンにするにはどうすればいいんでしょうか?
//SetIcon(m_hIcon, TRUE); ← タスクバーのアイコンが16ピクセル、タスクトレイのアイコンが32ピクセルになる
//SetIcon(m_hIcon, FALSE); ← タスクバーのアイコンが32ピクセル、タスクトレイのアイコンが32ピクセルになる
m_iconData.cbSize = sizeof(NOTIFYICONDATA);
m_iconData.uID = TRY_ID;
m_iconData.hWnd = m_hWnd;
m_iconData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
m_iconData.hIcon = m_hIcon;
m_iconData.uCallbackMessage = TRY_MESSAGE;
lstrcpy( m_iconData.szTip, "***" );
::Shell_NotifyIcon( NIM_ADD, &m_iconData );
444:デフォルトの名無しさん
08/09/29 22:13:32
いまいちよく判らんけど、LoadImageで取り出す大きさを明示的に指定すれば良いんじゃね?
445:443
08/09/30 03:00:33
>444
LoadIconで2種類のサイズのアイコンを取得していると思っていたんですが、LoadImageで取得する必要があるのでしょうか?
今はこうやってアイコンを取得しています。
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
446:デフォルトの名無しさん
08/09/30 08:07:47
あまり関係ないかもしれないけどLoadIcon()って非推奨じゃなかったっけ
447:デフォルトの名無しさん
08/09/30 09:44:39
LoadIcon()は昔からある固定サイズの1種類しかとれないよ。
448:デフォルトの名無しさん
08/09/30 20:42:14
MFCのウィザードが吐き出すコードで
SetIcon(m_hIcon, FALSE)
ってあるけど、32x32のアイコンを16x16に縮小して表示するだけで、
16x16のアイコンを読み出して表示しているわけでは無かったりする。
DestoryIcon呼ぶの('A`)マンドクセ、ってのが理由だろうな。
449:デフォルトの名無しさん
08/10/01 22:44:16
LoadIcon非推奨ってことは16×16のビットマップで描画したほうがよかったりするんだろうか?
アイコン使うメリットってなんだろ?
450:デフォルトの名無しさん
08/10/02 14:45:03
メンバのCArrayを戻り値として返したいんですけど
CArray<〜*, 〜*>& GetData()
{
return( m_arrData );
}
だと、コンパイル時にprivateにアクセスしています。みたいなメッセージが表示されます。
(他のクラスからアクセスしてる)
どのように書くのが正しいのでしょうか…
451:デフォルトの名無しさん
08/10/02 14:49:35
自己解決しました…
452:443
08/10/03 00:29:16
返信が遅くなってすみません。
>446-449
ということは16x16と32x32のアイコンをそれぞれロードする必要があるということでしょうか?
また、16,32,48ピクセルのアイコンをそれぞれ出力するにはどうすればいいんでしょうか?
453:デフォルトの名無しさん
08/10/03 07:56:31
自分でLoadImage使うって書いてるじゃない
454:デフォルトの名無しさん
08/10/03 09:55:19
>m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
これと同じように、
m_hSmallIcon = (HICON)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
とかやればよし。
455:デフォルトの名無しさん
08/10/04 13:28:01
>>440
GetClassName API
456:デフォルトの名無しさん
08/10/05 12:31:57
age
457:443
08/10/05 14:32:49
>453-454
無事アイコンの使い分けが出来るようになりました。
ありがとうございました!
458:デフォルトの名無しさん
08/10/11 21:06:35
iniファイルをexeのところに作ろうとしてますがうまくいきません。なぜ。。。
App::InitInstance()
{
WCHAR dir[MAX_PATH];
::GetModuleFileName(NULL, dir, MAX_PATH);
wchar_t* pdest = wcsrchr(dir, _T('\\'));
pdest[1] = '\0';
::SetCurrentDirectory((LPCTSTR )dir);
wcscat_s(dir, _T("XXX.ini"));
free((void*)m_pszProfileName);
m_pszProfileName = _tcsdup(dir);
}
459:デフォルトの名無しさん
08/10/11 21:30:40
何がうまく行ってないか不明だし、
そこまでできてたらデバッガで調べるだろ
460:デフォルトの名無しさん
08/10/11 21:42:49
CWinApp::SetRegistryKeyを後で呼び出していたら笑う。
デバッガでステップ実行すれば、正しいパスが渡せているかどうかは一発だな。
461:デフォルトの名無しさん
08/10/11 21:43:13
ところで、これはMFCになんか関係あるのか?
462:デフォルトの名無しさん
08/10/11 21:49:12
m_pszProfileName m_pszProfileName がMFC
463:デフォルトの名無しさん
08/10/11 21:59:13
CStringって普通のStringじゃだめなのか?
464:デフォルトの名無しさん
08/10/11 22:04:39
CStringを使うのが普通
465:デフォルトの名無しさん
08/10/11 22:04:55
デバッガ上では dir にexeまでのパスが入っておりxxx.iniもセットされてますが
実際、ファイルは出来上がっていない。しかし、GetProfileStringでデータは取れるという状態
466:デフォルトの名無しさん
08/10/11 22:31:21
レジストリ使ってるわけじゃなくて?
467:デフォルトの名無しさん
08/10/11 22:52:14
簡単に変更でききるようにiniついたかったんですが
468:デフォルトの名無しさん
08/10/11 22:56:44
>>466
コードに書いてるのは、GetProfileStringなのか?
ぐぐり直したほうがいんじゃねーのか?
469:468
08/10/11 22:57:47
>>466でなくて>>465の間違い。 すまねぇ。
470:デフォルトの名無しさん
08/10/11 23:31:17
Win32APIの同名APIを呼んでいる可能性があるかも。
WriteProfileStringなんか引数が全く同じだし。
471:463
08/10/11 23:34:38
>>464
ありがとう><;まだ、MFCはじめたばかりなので、習ってCString使っていこうと思います><;
ただ単に慣習的なもののような気がしますが。
472:デフォルトの名無しさん
08/10/11 23:58:42
>470 愛してる
そのまま使うとレジストリ保存だった。
正しくはWritePrivateProfileString() で最後に保存先指定でいけた
473:472
08/10/12 00:36:16
>468 も愛してるよ〜
474:デフォルトの名無しさん
08/10/12 02:17:50
>>472
愛は要らんから、CWinApp側のメソッドを使ってやろうぜ。
MFCだと、普通はCWinApp派生クラスがtheAppとしてグローバルで宣言されているはず。
475:デフォルトの名無しさん
08/10/12 04:27:45
ダイアログの中のCStaticコントロール上のOnMouseMoveイベントを取得したいのだけど、どうすればいいのだろうか?
だれか教えてください。
476:デフォルトの名無しさん
08/10/12 04:30:12
そのCStaticをクラス化して、その中で受け取るか
ダイアログ側のクラスで、CStaticのハンドルを指定してOnMouseMoveを受け取ればいい
どっちが綺麗かと言われると、ときと場合によるけど、前者の方がいいかな
477:デフォルトの名無しさん
08/10/12 05:43:56
たぶんコントロールがIDC_STATICのままなんだろ
478:デフォルトの名無しさん
08/10/12 12:12:43
なるほどIDC_STATICじゃ出来ないな
固有の名前をつけないと
479:デフォルトの名無しさん
08/10/13 08:06:30
>ダイアログ側のクラスで、CStaticのハンドルを指定してOnMouseMoveを受け取ればいい
こちらの方法をもう少し詳しく教えてもらえないだろうか。
ON_WM_MOUSEMOVE() と void CFooDlg::OnMouseMove(UINT nFlags, CPoint point)
のセットで間に合うモノなんだろうか?
コントロールのIDはもちろんユニークなモノを付けている。
480:デフォルトの名無しさん
08/10/13 10:14:38
PreTranslateMessageかなぁ
481:デフォルトの名無しさん
08/10/13 11:24:09
479です。
ごめんなさい。問題解決しました。
今までクリックを検出するためにnotifyをtrueにしていたため、OnMouseMoveでは
コントロール領域のMouseMoveが取得できなかっただけでした。
482:デフォルトの名無しさん
08/10/15 20:11:56
ID_FILE_OPENなどが選択された際、
それがメニューからか、ツールバーからか、アクセラレータからか
などをコマンドハンドラ内で調べられませんか?
MFC内の隠し関数とかでも構わないのですけど。
コマンドハンドラまで来てしまったら絶対に区別できないですか?
483:デフォルトの名無しさん
08/10/15 21:09:11
区別する必要があったら区別できるように作ればいい。
484:デフォルトの名無しさん
08/10/15 21:12:19
ID_FILE_OPEN_1とかID_FILE_OPEN_2とか作って、ラッパー経由とか?w
485:デフォルトの名無しさん
08/10/15 21:43:28
>>482
WM_COMMANDにそういうパラメータあったはずだから調べてみなさい。
486:デフォルトの名無しさん
08/10/16 21:01:29
>>483-485
CWnd::GetCurrentMessage()を使って
WM_COMMANDの付加情報からコマンド発生元を取れました。
ありがとうございます。
487:デフォルトの名無しさん
08/10/17 17:54:12
CListCtrlレポート形式で
たくさん表示させると重いです
何か回避方法はありますか?
488:デフォルトの名無しさん
08/10/17 17:57:51
仮想リストビューとか
489:デフォルトの名無しさん
08/10/17 17:59:14
こういうやつね
仮想リストコントロール
URLリンク(msdn.microsoft.com)(VS.80).aspx
490:デフォルトの名無しさん
08/10/17 18:34:18
>>488-489
ありがとうございます。
心持ち軽くなったような気がするけどやっぱり重いです
これって
LVS_OWNERDATA で作成して
描画する文字列の部分を自分で割り当てるってことでいいんですよね。
仮想リストビュー
URLリンク(www.hokuriku.ne.jp)
ここも参考にしました。
やりかたまちがえてるのかな^^;
491:デフォルトの名無しさん
08/10/17 18:39:04
>>490
更新すべき場所だけ更新すればOK
普通のリストだと表示部分全てに更新がかかるから重いだけ。
492:デフォルトの名無しさん
08/10/17 23:49:31
ダイアログAに
ラジオボタン1
ラジオボタン2
が設置されていて、この二つのラジオボタンがグループで、
2を押したら1のチェックが外れるとします(逆もあり)。
今、2を押して、1のチェックが外れました。
ダイアログAのWindowProcにはラジオボタン1のコントロールIDで何かしらのメッセージが
飛んでくるのでしょうか?
ちなみに自分で試してみたところだとどうも飛んでこないようなのです。
ではラジオボタン1のチェックが外れた!というイベントをダイアログA上でキャッチすることはできないのでしょうか?
493:デフォルトの名無しさん
08/10/18 10:21:36
(コントロール変数).GetCheck(); で調べればよろし。
チェックのON/OFFを手動にすれば、チェックをつけなおす前に以前の状態を調べればチェックが外れたかどうか調べれる。
494:デフォルトの名無しさん
08/10/18 10:22:25
>>492
「ラジオボタン2が押された」→「ラジオボタン1のチェックが外れた」
でいいじゃん。
495:デフォルトの名無しさん
08/10/18 11:24:17
メッセージは飛んでるよ
WindowProc使った方法は知らん
496:デフォルトの名無しさん
08/10/18 13:10:47
>>493
>>494
説明が足りませんでしたが事情によりチェックが外れた瞬間のイベント駆動の処理が必要なんです
まだチェックオンの瞬間は、オンクリックで拾うことはできますが、
ラジオボタンの場合、他のボタンを押したときに勝手に外れるので、オンクリックでは拾えず
また、SetCheck関数などで変更されたときもオンクリックでは拾えませんし悩んでます。
クリックから、関数から、などの入力方法に関わらず、とにかく「チェックが切り替わったとき」の
イベントが欲しいのです…
例えばエディットボックスなら内容を変更されたときのイベントを取れるとおもうんですが、
考えてるのは「今変わった!」というのがわかる、そんなイメージです…
>>495
どういったメッセージか、もしわかればヒントだけでも教えてください><
できるだけ自分で調べるつもりですので
497:デフォルトの名無しさん
08/10/18 13:16:17
オンクリック→正確にはBN_CLICKEDです
498:デフォルトの名無しさん
08/10/18 17:36:14
>>496
URLリンク(msdn.microsoft.com)
499:デフォルトの名無しさん
08/10/18 18:11:09
>>496
>ラジオボタンの場合、他のボタンを押したときに勝手に外れるので
ラジオボタンのプロパティでそういう風に設定しているからだろ。
リソースでラジオボタンをダブルクリックしたときに作られる関数で、
SetCheckする前にチェックの状態が変わったかどうか自分で調べれば解決。
500:デフォルトの名無しさん
08/10/18 20:45:55
>>494と似た考え方だが
とりあえずそのグループのラジオボタンのイベントを一箇所で捕まえて
今回選択されたラジオボタンと前回で選択されたラジオボタンが異なっていたら、
「前回選択されたラジオボタンのチェックが外れた」
と考えればいいと思う。
なんとなく>>496はWindowProcとか言ってるからMFCじゃない気もするが、
MFCならON_COMMAND_RANGE使って10行も必要ないから
とりあえずダメ元で試してみたら?
501:名無し募集中。。。
08/10/18 23:14:23
話それるけどON_COMMAND_RANGEで扱うために
リソースIDを連続させるためにresource.hを編集しちゃう俺はヘタレですか?
502:デフォルトの名無しさん
08/10/19 03:21:49
いいんじゃない?
ID指定するとき、=つけて数値指定できるけど、面倒だもんね。
503:デフォルトの名無しさん
08/10/19 22:43:58
ON_COMMAND_EXを使えば、IDを引数にとるハンドラを作れるから、
リソースIDが飛び飛びでも一つのハンドラにまとめられるけど、
こっちはあまり使われないのかな。
504:デフォルトの名無しさん
08/10/21 11:17:02
MFCを使う標準DLLを作成すると
CWinAppを派生したアプリケーションクラスが用意されますが、
これはDLL内の単独のスレッドというわけではないのでしょうか?
OnIdle()をオーバーライドしてもコールされないのですが。
505:デフォルトの名無しさん
08/10/21 18:20:07
んー、そのままだと自分のメッセージループは使わないからな。
506:デフォルトの名無しさん
08/10/21 19:20:58
すみません。他で聞いても返事が無いのでここできかせてください。
VC6で本の通りにブラウザとかつくりました。VC6の生成するブラウザだから
いまどきのWebページは開けないだろうと思っていたんですが、普通にうまくひらけました。Flushとかもです。
これは、VC6とはいえ、ブラウザエンジン?はいまどきのPCの最新のを(要するにIE7のを)
作成してくれるのでしょうか?
よろしく教えてください。
507:506
08/10/21 19:34:59
元のスレを今見たら、今日の夕方に返答がきてました。
解決したので、>>506はスルーしてください。
508:デフォルトの名無しさん
08/10/23 02:18:54
SDIでグラフ描画するソフトを作ろうとしてるんですが
ViewのOnDrawで縦軸横軸を引いて
その上にグラフを描画する方法がわかりません。
どなたか、わかる人教えてください。
509:デフォルトの名無しさん
08/10/23 06:44:33
どこまでわかっててどこからわからないの?
510:デフォルトの名無しさん
08/10/23 15:16:36
VC6で、_MBCSを使い、日本語と英語のプログラムを作っています。
一つのEXEで問題なく、
日本語Win上では、日本語のダイアログ、
英語Win上では、追加した英語のダイアログが表示されたのですが、
現在選択しているリソースが日本語か英語か知りたいのですが、
プログラム実行時、
英語日本語のリソース切り替え選択はどの値を見て読み替えてるのでしょうか?
GetSystemDefaultLangID() 辺りは、コントロールパネルによって変化しているのは確認したのですが、
リソース読み替えとは関係ない様でした。
GetACP() , GetVersionEx()でも取得はできませんでした。
ご存知の方、ヒントだけでも御教授下さい。
よろしくお願いします。
511:デフォルトの名無しさん
08/10/23 15:32:35
GetSystemDefaultUILanguageとかGetUserDefaultUILanguageあたりかね?
でも自分でFindResourceExする必要はある気がする。
512:デフォルトの名無しさん
08/10/23 15:44:51
って動的に切り替えるのが目的じゃないのか
513:デフォルトの名無しさん
08/10/23 16:21:45
ありがとうございます。
GetSystemDefaultUILanguage
も調べていたのですが、これはVC7以降のAPIの様です。
多分ですが、
GetSystemDefaultLangIDと同様、コントロールパネルのロケールIDを返すのではないかと思います。
コントロールパネルからロケールIDは変更できるのですが、
実行時に使用されるリソースは変化ありませんでした。
現在の状態が知りたいだけですので、動的に読み替える必要は今のところありません。
どうしても・・・となれば、リソースに番号振って、プログラム中から判定するという方法もあるのですが、
Kernel32あたりで、どう判断しているのかが知れればと思った次第です。
514:デフォルトの名無しさん
08/10/23 16:26:19
winnls.h インクルードして使えないか?
515:デフォルトの名無しさん
08/10/23 16:29:43
そもそもAPIなのにVC7以降、とか関係ないでしょ。
インポートライブラリにもヘッダーにもないのなら作ればいいし。
516:513
08/10/23 18:13:02
>>515
karnel32.libに無いので、呼べないのかと思ってました。
karnel32.dll をLoadLibraryして呼び出すことができました。
結果、
・日本語Win
GetSystemDefaultUILanguage() = 1041
GetUserDefaultUILanguage() = 1041
・英語Win (XP-Pro SPなし)
GetSystemDefaultUILanguage() = 2011628553
GetUserDefaultUILanguage() = 1033
と、
コントロールパネルに影響されないGetSystemDefaultLangID()と同じ値が取得できました。
ただ、リソース読み替えに使われているのかは不明なのと、
英語Winで、GetSystemDefaultUILanguageが不思議な値を返してくるのですが、
とりあえずは目的を果たせそうです。
助かりました。ありがとうございました。
517:デフォルトの名無しさん
08/10/23 18:18:39
その不思議な値、16進で0x77E70409だね。
下16ビット、0x0409は10進で1033だから上と下で別々に意味もってるのかも。
518:デフォルトの名無しさん
08/10/23 19:16:01
GDI系のAPIの基本の話か?w
519:513
08/10/23 19:27:20
>>517
LANGIDFROMLCIDマクロを使ったところ、下位だけ抜けました。
言われるとおりのHEXで見るべきでした。
WINNT.H には、上位16bitは、Reserved、SortIDとコメントがありましたから、
Reservedは不明ですが、何か意味はありそうですね。
520:デフォルトの名無しさん
08/10/24 00:46:43
CMyDialog mydlg;
if ( dlg.doModal() ){
521:名無し募集中。。。
08/10/24 13:39:41
DoModal()じゃねぇのか?
返り値はIDOKじゃないのか?
そもそもmydlgじゃないdlgって何者?
522:デフォルトの名無しさん
08/10/28 16:49:40
CheckBoxの表示手法について教えて下さい。
通常はプロパティのCaptionで設定されている文字を表示させておいて
途中で文字の代わりにアイコンを表示させたいと思ってます。
最初からCheckBoxにアイコンを表示させる事はできてるのですが、途中で
テキストからアイコンへの変更ができません。
途中から変える事は無理なのでしょうか?
HINSTANCE hInst = AfxGetInstanceHandle();
HICON h_Icon1 = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_ICON1),IMAGE_ICON,128,128,LR_DEFAULTCOLOR);
m_Check1.SetButtonStyle(m_Check1.GetButtonStyle() | BS_ICON);
m_Check1.SetIcon(h_Icon1);
523:デフォルトの名無しさん
08/10/28 17:48:42
ボタンスタイルは | でつなげても意味ないぞ。
m_Check1.SetButtonStyle(BS_ICON);
でもウィンドウサイズも変えないとアイコンの大きさにはならないかもな。
524:デフォルトの名無しさん
08/10/28 17:53:27
つーか、チェックボックスでかつアイコンというのが無いのか
525:デフォルトの名無しさん
08/10/28 19:36:32
ボタンみたいに動くものじゃないんだから
絵や文字と一体化してる必要ないし、
隣に自分で絵や文字書いても何の問題もない。
526:デフォルトの名無しさん
08/10/28 19:42:59
そんなにチェックボックスにアイコン使いたいなら擬似的に実現したクラス作ればいいじゃん
527:デフォルトの名無しさん
08/10/31 18:07:01
子ウィンドウとしてダイアログを利用しているのですが、
起動時、非表示にしたいのです。
CDialog dlg;
dlg.Create( IDD , this );
dlg.ShowWindow( SW_HIDE );
とやっているのですが、
一瞬表示されるのです。
OnInitdialogで
ShowWindow( SW_HIDE );
と記入しても。
回避できませんでした。
他に方法はありますか?
528:デフォルトの名無しさん
08/10/31 18:26:03
子ウィンドウってメインじゃないってこと?
ダイアログエディタでVisibleの初期値をfalseにしてもだめかな?
529:デフォルトの名無しさん
08/10/31 18:35:43
>>528
いけました
ありがとうございます><
530:デフォルトの名無しさん
08/11/01 19:08:11
MFC 9.0って、どこでダウンロードできますか?
531:デフォルトの名無しさん
08/11/01 19:48:43
できません。
standard以上を買ってください。
532:デフォルトの名無しさん
08/11/01 20:08:26
>>531
ありがとうございました。
しつこい質問で申し訳ないですが、今少し困っていることがあります。
当方
Visual C++ Express 2008
OS XP SP2
を使用していて、C++によってSQL Serverへの接続を試みています。
しかし、CDatabase db; のところで躓いてしまっています。
よく調べたところ、#include "afxdb.h" を使用する必要など
があるようで、更に調べたところ、MFCが関係していると知りました。
そこで、このスレの本質に従う質問をしたいと思います。
MFC9.0が使用できないことは分かりました。
MFCのシリーズで無料で(違法ではなく、公式な方法で)使用が可能な
方法はありませんか?
また、MFCがない場合
#include "afxdb.h" や CDatabase db;
などは、自分で1から記述しなければならないのでしょうか?
(初心者のため、バカなことかもしれませんが、ライブラリ
にはないため、自分で定義しなくてはならないのでしょうか?)
長文の上、稚拙な文になってしまいましたが、躓いてしまっている
ので、ご助力を加えて下されば幸いです。
よろしくお願いします。
533:デフォルトの名無しさん
08/11/01 20:25:42
CDatabaseを使用しないでDBにアクセスしなきゃなんないよ。
CDatabaseは C++ からODBCを介してSQL-Serverにアクセスするもので、
CDatabaseはMFCのクラスで、あなたは利用できないから、
ほかの手段を探すことになる。
ODBCの代わりにOLE-DBを使うこともできるし、
今からDBの勉強はじめるならこちらをお勧めする人が多いと思う。
"C++ OLE-DB SQL-SERVER アクセス"あたりのキーワードでぐぐればいいんじゃないかな。
というわけで、さようなら。
534:デフォルトの名無しさん
08/11/01 20:36:51
>>533
ご教授ありがとうございました。
貴重なお時間を割いていただき、申し訳ございませんでした。
535:デフォルトの名無しさん
08/11/02 02:30:04
質問しつれいします。
vc 2005
MFCを使ってGETやPOSTでデータを送信するプログラムを作成しようと思います。
勉強になるサイトなどありませんか?
検索のヒントでもいいので宜しくお願いしまっす
536:デフォルトの名無しさん
08/11/02 05:29:15
つWinInet
537:デフォルトの名無しさん
08/11/02 18:18:14
>>535
WebProg板
538:535
08/11/02 18:19:43
>>536
ありがとうございます
そのキーワードを頼りに自分なりに調べてやってみます
>>537
すいません板違いでしたかー
539:デフォルトの名無しさん
08/11/02 18:22:36
検索のヒントを提示しただけ。鼬害かどうかは白根。
540:デフォルトの名無しさん
08/11/02 19:04:18
MFCのクラスを使うんなら、使えそうなクラスぐらいすぐ見つかると思うが
MFCのクラスを使わずにやるんならスレ違い
541:デフォルトの名無しさん
08/11/02 19:16:10
>>540
いやぁMFCのクラスを使いたいのですが・・・
んー検討つかないんです
検索ワードだけでもヒントをぉぉぉぉぉ・・・orz
542:デフォルトの名無しさん
08/11/02 19:31:30
URLリンク(msdn.microsoft.com)
MFC ライブラリ リファレンス
インターネット クライアント アプリケーションの作成用の MFC クラス
更新 : 2007 年 11 月
MFC には、インターネット クライアント アプリケーションを作成するための以下のクラスとグローバル関数があります。
543:デフォルトの名無しさん
08/11/02 19:44:46
>>542
ありがとうございます!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
544:デフォルトの名無しさん
08/11/02 20:44:58
とりあえず、この辺一通り眺めといた方がいいかもね。
MFC > 階層図
URLリンク(msdn.microsoft.com)
545:デフォルトの名無しさん
08/11/03 02:18:47
>>544
本当にありがとうございます・・・
階層図・・・目から鱗です・・・
546:デフォルトの名無しさん
08/11/11 10:30:14
xp sp2 VS2005
CString GetString(void)
{
CString strTemp;
strTemp = "1234";
return strTemp;
}
void Main(void)
{
CString strHoge;
CString strValue;
strValue = GetString();
strHoge.Format("%08s", (LPCTSTR)strValue);
strValue = GetString();
strHoge.Format("%s%08s", (LPCTSTR)strHoge, (LPCTSTR)strValue);
// 以下略
}
という感じの処理をするとFormatで落ちてしまうのですが、
何故なのでしょうか?
あと CString でイメージ検索するとエr
547:デフォルトの名無しさん
08/11/11 10:51:26
>>546
CStringT::Format
--------
文字列オブジェクト自体をパラメータとして Format に渡すと、呼び出しは失敗します。たとえば、次のコードの結果は保証されません。
CAtlString str = "Some Data";
str.Format("%s%d", str, 123);
--------
548:デフォルトの名無しさん
08/11/11 11:08:54
>>547
その下に
----------
オプションの引数として文字列を渡すときは、LPCTSTR に明示的にキャストしてください。
書式は、printf 関数の書式引数と同じ機能を持っています。(書式や引数の説明は、
『ランタイム ライブラリ リファレンス』の「printf」を参照してください)。
書き込まれる文字列の終わりには NULL 文字が追加されます。
----------
とあったのですが、これはそもそも>>546の中でいう strValue のことであって、
自身を引数に指定するのはキャストしようが何しようがダメってことなんですよね?
549:デフォルトの名無しさん
08/11/11 11:36:26
>>548
URLリンク(msdn.microsoft.com)(VS.80).aspx
のほうには書いてないけど、
その説明は「キャストすれば自分自身を渡せるよ」ということでは無いと思う。
CStringTに書いてないということは昔はそういう制限でもあったのか、
それとも「CString::operator intなどを追加するかもしれないから、
LPCTSTRも明示的にキャストして渡しておけ」という意味じゃないだろうか。
550:デフォルトの名無しさん
08/11/11 12:52:46
const char*へのキャストは、operatorで内部のバッファ返してるだけ。
Format中に元のバッファが変わったら長さがかわるからバッファ足りなくなる。
551:デフォルトの名無しさん
08/11/11 14:19:28
>>547>>549>>550
なるほど、ありがとうございました。
ちなみに>>548の文は
URLリンク(msdn.microsoft.com)(VS.80).aspx
では無くなっちゃってるみたいですが、
VC6付属のMSDNに書かれていた文章です。
552:デフォルトの名無しさん
08/11/11 20:41:35
C#やった後にこれやると、
GUI画面作成、メッセージ処理、メモリ管理、例外処理とか泣けてくるな…
まあでも刺激はあるからいいか…
553:デフォルトの名無しさん
08/11/13 13:07:49
質問いいかな?
以下のようなプログラムでスレッド起動してスレッド終了を見ようとしているんだが、
WaitForSingleObject関数で毎回タイムアウト発生…理由分かる人いる?
void CMainClass::Start()
{
g_pThread = AfxBeginThread(Test, GetSafeHwnd(), THREAD_PRIORITY_NORMAL);
g_pThread->m_bAutoDelete = FALSE;
}
UINT Test(LPVOID pParam)
{
while(!g_Flg){ // ここで処理 //
}
return 0;
}
void CMainClass::Stop()
{
g_Flg = TRUE;
ULONG ret = WaitForSingleObject(g_pThread[0]->m_hThread, 10000);
delete g_pThread;
}
554:デフォルトの名無しさん
08/11/13 13:09:15
ULONG ret = WaitForSingleObject(g_pThread->m_hThread, 10000);
の間違い。配列はなしね。
なお「g_」をつけているのはグローバル変数
555:デフォルトの名無しさん
08/11/13 14:12:14
Test関数でちゃんと動いてる?
サスペンド中だったりしない?
556:デフォルトの名無しさん
08/11/13 14:38:07
>>555
いま調べているんだけど、タイムアウトの10000ms以内には
絶対に終わるはずなんだけどなー。
でもそれが疑わしいか…
回答してくれてありがとん。
557:デフォルトの名無しさん
08/11/13 14:46:42
とりあえず>>553のまんま動かしてみたけど、WAIT_OBJECT_0でした。
原因はそこ以外にある?
558:デフォルトの名無しさん
08/11/13 14:57:53
>>557
自分でもやってみたら確かに動いたんだよね。
Test()の処理部分に原因がありそうなのは間違いない。
(ここで10秒かかるってのは考えにくかったからここで質問させてもらったけど)
お騒がせさせてすまんかった。
>>557もありがとん
559:名無し募集中。。。
08/11/13 15:24:33
threadのreturn 0にブレイクポイントを置いてみるとか
560:デフォルトの名無しさん
08/11/13 16:11:23
>>553-554だが、新たな発見。
Test()の処理部分に処理回数をカウントアップして、
Editボックスに毎回その値を表示する処理として
SetWindowTextを使っているんだけど、
Stop関数をコールした後、どうもそこで固まるらしい。
(SetWindowTextをコメント化したら問題がでなくなった)
…意味分からん。なんで最後の1回のSetWindowTextで固まる!?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4354日前に更新/186 KB
担当:undef