MFC相談室 mfc23d.dll [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2016/09/21(水) 00:20:48.44ID:OfO+mYkd
Microsoft Foundation Classライブラリ専用スレです。

■MFC相談室 mfc21d.dll■
http://hibari.2ch.net/test/read.cgi/tech/1250919279/l50
■MFC リファレンス■
http://msdn.microsoft.com/ja-jp/library/d06h2x6e(v=VS.100).aspx
2デフォルトの名無しさん
垢版 |
2016/09/21(水) 02:30:56.74ID:5qi85AkV
< `∀´>ニダー
2016/09/21(水) 13:22:08.79ID:QlBymPtT
2016/09/21(水) 13:34:34.78ID:lqTjg4Df
>>1 乙
ここは即死あるんだっけ?
2016/09/21(水) 14:32:51.99ID:ib8am8Zc
1年くらい前から即死しない仕様になってる
2016/09/21(水) 15:00:46.64ID:DJrsIBwc
即死なんて見たこと無い
2016/09/23(金) 17:10:11.66ID:1AYxo37g
ひでぶ
2016/09/24(土) 19:06:33.61ID:vAKGJfNO
いや即死あるぞ
俺が今月立てたスレなくなってる
2016/09/25(日) 15:44:56.16ID:fXLErY67
1000いったんでないの?、、ないかw
2016/09/26(月) 22:01:57.62ID:TukXLw2X
ドトネに負けたのか?
2016/10/11(火) 01:01:55.41ID:XtQ45pny
ネタくれ
2016/10/11(火) 19:51:53.66ID:XtQ45pny
質問しろ〜
なんでも答えてやんぜって思ったら、俺c++できないんだったw
2016/10/15(土) 18:29:48.76ID:gqlXN5xD
そろそろ埋めようぜ
2016/10/17(月) 00:02:34.42ID:rdSWZXJ7
埋め
2016/10/17(月) 16:06:58.50ID:rrzVlL3A
産め
2016/10/17(月) 17:53:44.29ID:WLzPflAs
2016/10/17(月) 18:21:19.26ID:WLzPflAs
そろそろ本気で埋めるか
2016/10/18(火) 13:35:30.77ID:w7Iv1X0L
埋める前に次スレ立ててくれ
2016/10/18(火) 21:44:51.96ID:ZG7+Cw8s
最新のMFCはコンストラクタでメンバ変数初期化サボってるクラスないよね
2016/10/22(土) 20:44:20.18ID:cpluUqjP
過疎ってるな〜
2016/10/26(水) 17:50:00.81ID:K3buMdl9
いつの間にかMFCでもDirect2Dがサポートされてたんだね
ちょっとサンプル見たけどGDIと比べると複雑だな
2016/11/01(火) 21:11:07.99ID:fAr6l5+l
保守
2016/11/03(木) 14:33:38.93ID:kJS9Zyl0
CStdioFile::ReadStringでshiftjisのファイルをバッファに読み込んだんですが、
テキストファイルの内容は「あ」のみ

バッファの内容は
82 00 A0 00
でした。
unicodeなら
30 00 42 00

00 30 00 42
になると思うのですが、なにか勘違いしていますかね?
2016/11/03(木) 14:52:47.88ID:bkzCM1IA
>>23
テキストファイルをUTF-16にするか、UTF-8にしてUTF-16に変換する。
2016/11/03(木) 15:09:32.76ID:s4829peE
setlocaleしてないからascii-8bitとして読み込まれたと予想。
2016/11/03(木) 15:43:52.99ID:bkzCM1IA
そのテキストファイル、シフトJISになってるぜ
2016/11/03(木) 16:27:10.81ID:kJS9Zyl0
>>25
setlocaleしたら
42 30
となっちゃいました

>>26
そう書いていますが?・・・
2016/11/03(木) 16:40:23.70ID:s4829peE
>unicodeなら
>30 00 42 00
>か
>00 30 00 42

てのがおかしい。
2016/11/03(木) 19:17:37.78ID:Vul1aP3I
盛り上がってきましたw
2016/11/03(木) 19:25:00.47ID:bkzCM1IA
レス番消えてる。。。荒らしか
2016/11/03(木) 19:31:17.07ID:bkzCM1IA
片山ウザい氏ね
2016/11/03(木) 21:26:45.01ID:HYN+5xRW
たしかにマジウゼー
2016/11/06(日) 23:23:45.08ID:5/z3Ppl4
嫌われ者w
2016/11/07(月) 21:17:10.96ID:71HmpZSZ
プロセスが起動した状態で、
ツールバーのツールチップの文字列を取得、変更したいのですが
ちょっと手こずっています。アドバイスお願いします

以下の方法ではツールチップではなくボタン文字列が対象になるようです
TBBUTTONINFO bi = {sizeof(bi), TBIF_STYLE};
m_wndToolBar.GetToolBarCtrl().GetButtonInfo(9999, &bi);
::MessageBox(NULL, bi.pszText, bi.pszText, MB_OK);

以下はまだ使い方がよくわかってないけど目的がちょっと違うように思われます
CToolTipCtrl* tt = m_wndToolBar.GetToolBarCtrl().GetToolTips();
tt->UpdateTipText(...);
2016/11/08(火) 07:56:03.76ID:Dir9NEfz
>>34
動的な変更は、やった事ないけど、このあたりでは?
ttp://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc22/
アプリを普通に作っていれば、取得はボタンのリソースIDと同じIDを持つSTRINGリソース
2016/11/08(火) 22:03:34.52ID:fDzF2sx9
>>35
ありがとうございます

以下で無事できました
http://nsoft.blog60.fc2.com/blog-entry-1875.html
2016/11/16(水) 21:31:23.35ID:7nJMKxmy
ちょっとiconの相談です
MFCでプロジェクト作った際、アプリのicon(IDR_MAINFRAME)にいろんなイメージタイプ
(サイコロ3つ)が作られるけど私は全部設定するの面倒なので32x32 8bit bmpだけ
作って他全部消すようにしてます。皆さんはどうしてます?
いろんな環境に対応するためにあ-いうことしてるのかなーとは思うんだけど..
2016/11/16(水) 21:43:12.65ID:qcIR6hue
>>37
アイコンのイメージ作成にはInkscapeを使ってるよ。
お金に余裕があればAdobe Illustrator使えばいいんじゃないかな。
32x32だけだとユーザーに汚い画像を見せることになる。
2016/11/16(水) 22:59:39.33ID:qcIR6hue
>>38
Inkscape(笑) ダセーw
2016/11/16(水) 23:02:25.51ID:qcIR6hue
>>39
氏ね
4137
垢版 |
2016/11/16(水) 23:54:39.55ID:7nJMKxmy
> 32x32だけだとユーザーに汚い画像を見せることになる。

解像度を変えてのテストはある程度してるけどあまり気になったことないなー
私の想定を超えたデバイスだと汚くなるのかな?Inkscapeは落とした。勉強してみます。
片山博士は大きく&色彩豊かなicon作った後でInkscape使って縮小/減色してるの?
2016/11/17(木) 00:07:27.86ID:TXdVmO9D
Inkscapeで256x256ピクセル(Vistaサイズ)にしてから図形を描いてとりあえず保存すればSVG形式ファイルになる。
「ファイル」メニューの「PNG形式でエクスポート」を選べばPNG画像が吐き出される。
それを16x16,32x32,48x4864x64に縮小して、見辛いピクセルを細かく補正してからアイコン作成ソフトに取り込むとアイコンができる。
2016/11/17(木) 00:15:30.72ID:TXdVmO9D
Inkscapeは図形の合成などの強力な編集機能があるが、
図形が足りなければワード、エクセルの図形をコピペすればいい。
2016/11/17(木) 00:23:23.58ID:TXdVmO9D
時間がないときは文字アイコンだね。1文字をアイコンにするだけで
インパクトあるかもしれない。
2016/11/17(木) 00:29:46.37ID:TXdVmO9D
「アンチエイリアス」がかかると、どうしても細部がぼやけてしまう。
小さいアイコンでは、ユーザーにはっきり見えるように微細な加工をした方がいい。
2016/11/17(木) 07:07:34.33ID:gXcsVs3+
片山ueeeeeeeeeeeeeeee
4737
垢版 |
2016/11/17(木) 07:08:48.33ID:0g51nw+9
詳しい説明ありがとう
2016/11/18(金) 16:59:51.57ID:+QqWh5ch
片山先生はアイコン一つにも手を抜かないんだな。
お前らも見習うべき
2016/12/20(火) 20:31:33.27ID:TcHawI4o
CListView(LVS_OWNERDATA style指定)で特定の行の選択を禁止したいのですが
LVN_ITEMCHANGINGはOWNERDATAの場合は送られない様です。by msdn
何か良い方法は無いでしょうか。
クリックやENTERを潰すしかないんでしょうか?
5049
垢版 |
2016/12/26(月) 20:33:00.82ID:LBPR2r0v
選択禁止は諦めました。
選択された後、近くの行を強制的に選択状態にするようにししたら、あまり違和感がなかったので、これでごまかします。
2017/01/17(火) 18:47:51.47ID:BjvebHTO
CArrayの質問なんですが、

CArray<int> test;
test.SetSize(10);

とやった場合、test[0]〜test[9]までの値は、
0で初期化されていることは、前提として良い動作ですか?

ソースを見たところ、SetSize()で確保したバッファをいったんゼロクリアして、
その後、各要素に対してコンストラクタが呼ばれるようなので、
C++のintのコンストラクタが「なにもしない」という仕様なら大丈夫そうですが。
2017/01/18(水) 20:04:22.77ID:dWVIY9sh
intのようなプリミティブな型にもコンストラクタってあるの?
知らなかった
2017/02/06(月) 23:41:58.25ID:sJV81fCO
MFCでリボンアプリケーション組もうとしてるんですけど、
リボンデサイナでダイアログボックス起動ツールのボタンは
付けられないのでしょうか?
例えばWORDとかでフォントグループの右下にある小さい四角いボタンです。
2017/02/15(水) 15:11:12.80ID:WDBEc38A
MFCでCEditをサブクラス化したいと思うのですがうまくいきません

サブクラス化時にFromHandlePermanetと言う関数が呼ばれてそこでASSERTに引っ掛かってしまいます

MSDNによると「SubclassWindowを呼び出す時、ウィンドウがMFCオブジェクトに結びつけられていないようにしろ」とあります

馬鹿で申し訳ないのですが、ウィンドウがMFCオブジェクトに結びつけられるのはどのタイミングなのでしょうか?
今はCEdit::Create後にサブクラス化を試みています
2017/02/15(水) 15:59:13.06ID:IaTHaUdU
>>53
ああ、あの2ミリ角くらいの小さな四角ね。
2017/02/15(水) 16:57:51.66ID:sI0w68I3
>>54
CEditをダイアログエディタで作成したなら、すでにMFCの管理下にある。
サブクラス化する必要はない。作成したCEditメンバーを使えばいい。
57デフォルトの名無しさん
垢版 |
2017/02/15(水) 17:29:15.59ID:WDBEc38A
>>56
ありがとうございます

しかしながらCEditから派生させたクラスをnewを使用して動的に作成しています

newによりインスタンスを動的に作成

Createメンバ関数を呼び出しコントロールを作成

サブクラス化

ASSERT
2017/02/15(水) 17:43:20.32ID:WDBEc38A
途中で送信してしまいました

現状はこんな感じでアサートに引っ掛かってしまいます

デバッガで追うとウィンドウのMAP(?)にサブクラス化対象のウィンドウが既に存在しているとアサートされるようなのですが、このウィンドウマップにどこで登録されるのかが解りません
マップに登録される=MSDNの言う「ウィンドウをMFCオブジェクトに結び付ける」と言うことなのかと推測しています
2017/02/15(水) 17:49:31.94ID:urFAvqLF
その工程ならサブクラス化はいらないはず

でもウィザードを使わずにクラスを作ったら
おまじないマクロがついてこないんじゃないかな

後始末のときにオブジェクト開放が先かウインドウ破棄が先かってのも迷う
60デフォルトの名無しさん
垢版 |
2017/02/15(水) 19:18:20.41ID:WDBEc38A
>>59
ありがとうございます

説明不足で申し訳ありません
そもそも何故エディットボックスをサブクラス化したいかというとエディットボックスのコンテキストメニューを改造したいためなのです
エディットボックスにくるWN_RBUTTONDOWNをトラップするため、サブクラス化が必須になっている次第です
2017/02/15(水) 19:36:45.27ID:sI0w68I3
>>60
http://www.ne.jp/asahi/hishidama/home/tech/vcpp/subclsi.html
2017/02/15(水) 19:40:04.43ID:8VpWPRqB
Createするから既存になってしまうんじゃないの?

>>57でいうサブクラス化ってSubclassWindow? SubclassDlgItem?

CEditのサブクラスは時々使うけどSubclassWindow経由では使ってないので
外してたらスマソ
6362
垢版 |
2017/02/15(水) 19:46:05.27ID:8VpWPRqB
私がやるのは
https://support.microsoft.com/ja-jp/help/403856
の一番下のやり方。
2017/02/15(水) 19:51:10.47ID:uPR4+QIT
自分でサブクラス化したときはDDX_Controlを削らないとうまく動いてくれなかったような気がする。
正解は知らんが。
2017/02/15(水) 19:57:49.61ID:IaTHaUdU
>>60
mfcは昔やっててもう忘れかけだが
マウスボタンをトラップする程度なら
サブクラス化なんて不要なんじゃないか?
66デフォルトの名無しさん
垢版 |
2017/02/15(水) 20:56:19.16ID:WDBEc38A
>>62
ありがとうございます

SubclasDlgItemを使っています
ですがデバッガで追うと結局は内部でSubclassWindowをを呼び出しているのは確認しています
67デフォルトの名無しさん
垢版 |
2017/02/15(水) 20:58:48.04ID:WDBEc38A
>>64
ありがとうございます

DDXは使っていません
リソースにエディットボックスコントロールを貼りつけてはおらず、プログラム中でCEditクラスを派生したクラスを動的に作成しています
68デフォルトの名無しさん
垢版 |
2017/02/15(水) 21:01:57.77ID:WDBEc38A
>>65
エディットボックスのマウス右クリックはサブクラス化が必要なようです

でも確かになにかコンテキスト〜というメッセージがあったような気もしないでもないのですが…
WEBで調べた限りですと右クリックメッセージをフックしているのしか出てきませんでした
6962
垢版 |
2017/02/15(水) 21:37:49.75ID:8VpWPRqB
回答ではなく代替案ですが

1. CEditのサブクラスでOnContextMenuをオーバーライドしてメニュー処理を記述。

2. https://support.microsoft.com/ja-jp/help/403856
  中の
  また、CDialog::DoDataExchange() で DDX を使用して..
  のやりかたで CEditをCYourEditに変更。

で独自のコンテキストメニューは出ますよ。
2017/02/15(水) 21:47:42.01ID:WDBEc38A
>>69
おおおお!!!
ありがとうございます!

早速試してみます!




と思いましたが、今日はもう事務所が閉まるそうです…
早速明日試してみます!
ありがとうございました!
2017/02/20(月) 02:48:59.49ID:oIbcE82M
明日もあさっても過ぎたんだけど、どうなったんだろうね。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況