- 1 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 18:37:47 ]
- Microsoft Foundation Classライブラリ専用スレです。
前スレ ■MFC相談室 mfc18d.dll■ pc11.2ch.net/test/read.cgi/tech/1185917008/
- 76 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:57:24 ]
- >>75
レスありがとうございます。MFCと書いてあるということはVS2008版ですよね。 残念ながら、当方VS2003なのです。 エクセルのパレットがそのままの形ででもあれば・・・。
- 77 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 08:32:41 ]
- >>74
これでよい? www.kumei.ne.jp/c_lang/sdk2/sdk_139.htm
- 78 名前:77 mailto:sage [2008/05/25(日) 08:36:46 ]
- >>76
MFC→VS2008じゃないよ。2008EEにはついてないし。 逆にVS2003には必ずついていると思われ。 「CColorDialogとかではなく」ってことは77はNGか orz
- 79 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:52:10 ]
- >>77 >>78
レスありがとうございます。 MFCと書いたのはCMFCColorButtonのことでした。略して分かりにくしてすいません。 up.cgi.jp/mek3 ↑作りたいのはコレなんです。これをチョコチョコ改変して作りたいのです。 やはりダイアログを作成して、CBitmapButtonでサンプル色ボタンを作って貼り付けて、 テキストリンクのところはCButtonの枠線なしとかで対応するのでしょうか。
- 80 名前:77 mailto:sage [2008/05/25(日) 14:22:21 ]
- 失礼。CMFCColorButton は2008にしかないってことでしたか。
う〜ん。やっぱり79のような感じなんですかね。
- 81 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:58:27 ]
- エクセルのはただのツールバーだろ
- 82 名前:74 mailto:sage [2008/05/25(日) 19:22:25 ]
- >>77
レスありがとうございます。 形状的にはそうするのが一番形になるような気がします。 >>81 レスありがとうございます。 えっ?!コンボボックスの中身をツールバーにするのですか? ちょっとイメージがつきません…。
- 83 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:31:31 ]
- ttp://www.codeproject.com/KB/miscctrl/colour_picker.aspx
これ参考にすれば?
- 84 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:14:33 ]
- >>82
ツールバーの中にコンボボックスがあるんだろ。
- 85 名前:74 mailto:sage [2008/05/25(日) 20:22:12 ]
- >>83
レスありがとうございます。 おお、これです。コレがしたかったんです。ありがとうございます。 英語ばかりですが、サンプルコード読みながら何とか紐解いてみます。 サンプルプロジェクトコンパイルしたらエラーしますがorz...
- 86 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:24:42 ]
- このサイト、Japanizeでちゃんと自動翻訳してくれるんだな・・・メニューくらいだけだけど
- 87 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:33:51 ]
- JapanizeじゃなくJapaneseだろ!
…って書き込もうと思ったんだが、ググったらそういうソフトがあるのな。自動翻訳の。
- 88 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 14:13:22 ]
- デバッグモードだと
_DEBUGが定義されてるように MFCだと 定義されてるやつってありますか?
- 89 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:08:44 ]
- _MFC_VER
- 90 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:54:21 ]
- VC6、MFC、ダイアログベース
ダイアログ上にCStaticを配置して、そこにJPG画像を表示しています。 JPG表示領域に別のWindowが重なったりした場合に、それをどかしても 重なっていた部分だけ表示が消えた状態となってしまいます。 自分自身が最上位に来たときに再描画するようにすれば良いと思うのですが 何のMessageを捕まえればよいのでしょう?
- 91 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 06:43:05 ]
- 画像を設定した後、さっさとハンドルを破棄してしまっている予感。
- 92 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 08:44:12 ]
- ダイアログベースならデフォルトで再描画あるじゃないか
- 93 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:00:31 ]
- OnPaint を理解してないと思われ
- 94 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:33:46 ]
- 2008SP1が出たら購入を考えているのですが、
タブMDIやリボンバーを実現するクラスの仕様や構成をご存じの方いますか?
- 95 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 09:35:55 ]
- >>94
ttp://msdn.microsoft.com/en-us/library/bb982354.aspx ふつーにMSDNライブラリでどーぞ
- 96 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 11:13:03 ]
- Dialog::WindowProcがダイアログが非アクティブだと呼ばれないのですが、
非アクティブ時も処理したい場合、どのように書けばよいですか?
- 97 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 11:58:38 ]
- メッセージが来てないだけだろ
- 98 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 14:19:42 ]
- メッセージが来るようにしたい場合、どのように書けばよいですか?
- 99 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 14:26:08 ]
- そもそもどんなイベントが欲しいんだ?
- 100 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 14:39:15 ]
- DIJOYSTATE2.rgbButtons[]の状態を常に監視して、
ボタンが押されたら任意に設定したキーイベントを発生させたいんです。
- 101 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:27:22 ]
- 普通は非アクティブウインドウにキーイベントは来ない
できないこともないけどMFCとは関係ない
- 102 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:45:44 ]
- MFCやWin32APIに関して初心者なんだけど、だれか助けてくれたりしないかな。
MFCでSDIアプリを作っている。CMainFrameのメンバにCDialog m_toolDlgを保持して、 モードレスで実体化させている。 やりたいことは、モードレスダイアログ m_toolDlg のあるボタンが押されたときに、CHogeViewの向けて メッセージ(?)を飛ばしたいのだけど、どういう枠組みを用意してやって、どういうメソッドを使ってやればいいのか わからない。 どうも体系的に知識が不十分なのは分かっているのだけど、今時MFCの資料が無くて困っている。 だれかアドバイスをくれないだろうか。
- 103 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 15:58:58 ]
- CFrameWnd * pFrame = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
CView * pView = pFrame->GetActiveView(); あとはSendMessageするなりキャストして直接関数呼ぶなり好きにしろ。
- 104 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:12:07 ]
- >>103
早速ありがとう。示してもらったとおりに SendMessage(WM_COMMAND, ID_XXX, 0) としたら、 Viewがうまく反応した。 感謝
- 105 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:14:05 ]
- メッセージの受け方は、自動生成される他の関数を参考にしてみろ
WM_PAINTならOnPaint()みたいな感じで
- 106 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:20:19 ]
- ユーザー定義メッセージ あたりでググるとよい。
- 107 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:40:12 ]
- afx_msg LRESULT OnXXXXX(WPARAM wParam, LPARAM lParam);
ON_MESSAGE(WM_APP+n,OnXXXXX) とかだね OnCommandとか直に呼ぶと、まずい場合もあるから↑書き方も覚えておくと良いかも
- 108 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:48:11 ]
- アクションゲームの様な物を想定して、毎秒30フレームの画面更新を行いたいのだけど、MFCで書くにはどうすればいいのだろう?
もちろん、一番手軽なのはWM_TIMERで処理することだと思うけど、精度が低いので保留。 OnIdleをハンドリングして、中でtimeGetTime()を使って適切な時間をカウントしてやる方法も試してみたんだけど、こちらは常にCPUを100%使い切ってしまうのが厳しい。 実行している処理内容は大した負荷ではないはずなのに、CPUを使い切ってしまうとユーザがいやがるし、美しくない。 できれば、この両者の間ぐらいが方法が欲しい。つまり、まずまず精度が高くて、CPU使用率がむやみに100%に振り切らない方法。 自分はMFCやWin32APIの初心者なんだけど、何かいい企てや情報はないだろうか?
- 109 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:07:10 ]
- OnIdle()でハンドリングして、時間を待っている間にSleep(1)を入れたらCPUが100%になることが無くなった。これで解決かも。
参考 ttp://orangeknowledge.jpn.org/tips/game002.html
- 110 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:08:32 ]
- 別スレッドでSleepやWaitableTimerで1/30毎にSendMessageするとか。
- 111 名前:デフォルトの名無しさん [2008/06/04(水) 22:21:07 ]
- 質問だけど、MSDNにはCFileのwriteはバッファリングしないって
書いてあったんですけどCFileのwriteとfwriteってどちらが速いですか? また、それ以外にも速いファイルライト関数ってありますか?
- 112 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:34:01 ]
- 自分で試して違いがわからなかったら気にする必要ないだろ
- 113 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:35:54 ]
- 速度程度なら、ループさせてGetTickCount()あたりでも計測すればいい
- 114 名前:デフォルトの名無しさん [2008/06/04(水) 23:41:51 ]
- 質問です。
WindowsXPでVS2005なんですけど、CFileDialog等のコモンダイアログって リソース上の文字列(“開く”とか)は実行環境に合わせ勝手にローカライズ されませんよね? 環境に応じて表示言語を変えたい(少なくとも日本語←→英語の切り替え)を やりたいんですけど、リソースIDとかがわからず、どこをどう触ればいいのか 途方に暮れてしまってるんですが、何かセオリーってありますか?
- 115 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:46:07 ]
- ローカライズの切り替えは知らないけど、リソースIDはふられていたはず
ダイアログ自体書き換えれるし
- 116 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:12:34 ]
- 数年ぶりにMFCに戻ってきたんだけど
いつのまにか、テンプレート クラス用のメッセージ マップなんて 作られたんだね。結構使われてるのかな?
- 117 名前:114 mailto:sage [2008/06/05(木) 00:17:00 ]
- >115
レスありがとうございます。 ちなみにコモンダイアログのリソースIDはどこで確認すればいいのでしょうか? 目ぼしいドキュメントが見つからなくて、てっきりリソースIDは無いものだとばかり・・・
- 118 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:20:35 ]
- >>112,113
わかりました。結局あなた達も知らないのですね。 >速度程度なら、ループさせてGetTickCount()あたりでも計測すればいい そんなしょぼい精度の計測はせず、QueryPerformanceCounter()で計測します。
- 119 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:31:41 ]
- なんという恥ずかしいレス
- 120 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 07:35:44 ]
- MFCは一定間隔の更新に弱く、MFCの表示周りの更新を行うと内部で勝手にウエイトが入るんだよな。
別スレとか方法としてはいくつもあるけど正確な更新をするのであればMFCベースでやらないほうがいい。
- 121 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 09:20:58 ]
- 動画再生ぐらい余裕でできるだろ
- 122 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:27:10 ]
- >>117
Dlgs.h の中の edt1 とかの値が使われている。
- 123 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 17:35:11 ]
- >>118
fpsの調節をするためにビジーループでQueryPerformanceCounterを呼び出していると、 環境によっては数秒に一度関数からしばらく戻って来ないでフリーズする現象が発生します。
- 124 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:22:53 ]
- 動画の再生なんて、アバウトでいいのよ
30 fps をきっちり正確に表示する必要は全くない 人間の目なんて、数コマ落ちしようと時間間隔が多少 ずれてもわからんのよ よって、秒単位に適当に切り捨てればよい
- 125 名前:デフォルトの名無しさん [2008/06/05(木) 20:54:18 ]
- MFCの中でオーバーライドされてる関数の元の関数を使いたいんですが、どうやるんでしょうか?
LRESULT SendMessage( HWND, WPARAM , WPARAM, LPARAM ); これを使いたいんですが、HWNDがない方になっちゃいます。 ::つけるようだった気がするんですが違うみたいでした。
- 126 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:08:00 ]
- あってると思うけどな。
- 127 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:01:08 ]
- >>125 それはオーバーライドとは言わない ただのAPIをCWndオブジェクトに対してのみ便利メンバ関数として用意してるだけ
- 128 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:05:00 ]
- 頭に::をつけるというのは、グローバルな関数や変数を指定してるだけだからな
頭にクラス名がついていない代わりだ ていうか、自動補完が動いてないだけで、書けばコンパイルはとおるだろ?
- 129 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:29:32 ]
- とおらないんじゃないだろうか。
- 130 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:39:29 ]
- SDI(ドキュメント無し)のMFCアプリで、Viewウィンドウサイズを指定(800*600)して起動させたいのだけど、やり方がさっぱり分からん。
やりたいことは、指定の画像(800*600)をビューでピッタリ描写すること。 いや、CMainFrame::PreCreateWindow()でcs.cx, cs.cyを設定すればいいのは分かるんだけど、ここに800, 600と入れるとウィンドウサイズが800,600になって、Viewの描写領域のサイズはメニューやツールバーに削られた小さな領域になってしまう。 メニューやツールバーの領域をあらかじめ計算して大きめのウィンドウサイズを指定する方法があるけど、それはあまりにスマートじゃないので、何かベンツのやり方はないだろうか?
- 131 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:43:45 ]
- GetMatrixHogehoge(名前忘れた)で、タイトルバーのサイズとかをあらかじめ取得しておいて、
そいつらの高さや幅をあらかじめ加算しておけば? メニューやステータスバーのサイズはあらかじめわかるだろうし
- 132 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:10:21 ]
- メニューが二段とかの例外を気にしないならAdjustWindowRect
- 133 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:14:28 ]
- >>131, 132
情報ありがとう。教えてもらった情報を試してからまた報告に来ます。
- 134 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 01:51:10 ]
- そのテのはネットで結構あった気がする
- 135 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 13:47:23 ]
- AdjustWindowRectを試してみたけど、ツールバーとステータスバーの領域は考慮してくれなくて、
その部分は自前で算出してやらなきゃいけないみたい。
- 136 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:12:33 ]
- MFCの勉強をしようと思ったら何からはじめたらいいの?
WinAPIではガリガリ組めるレベルだ。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:17:38 ]
- Win32がそのくらいのレベルあるなら、かなり楽かもなー
逆に隠ぺいされすぎて、ムカつくかもしれないけどw とりあえず、MSが配布してるサンプル読んで理解して、あとは適当に自力で作ってみたらいいんじゃないかな
- 138 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:18:34 ]
- まずはダイアログアプリから始めて、基本的な GUI の
実装を一通り経験すべし その後にドキュメント/ビュー に進むがよい
- 139 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:19:18 ]
- >>137
隠蔽されすぎてるのかw わかった取りあえず、サンプル読みまくるよ。 ところで、MFC自体のソースって公開されてるの?
- 140 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:22:04 ]
- 関数名がそのままだけど、第1引数のハンドルとかが、クラスに隠蔽されていて、なかったりする
たしかに、先にダイアログから手をつけるべきだな サンプルは公式にあったと思う
- 141 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:36:12 ]
- 個々のクラスで見ると、素直にクラスで包んでるだけだよ。
後はそれにアプリケーションレベルの仕組み(Doc/Viewとか)があるくらい。 コマンドメッセージとかはちょっと複雑なルート辿るけどね。
- 142 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:44:17 ]
- みんなありがとう。
ダイアログから読んでいろいろやってみるよ。
- 143 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 10:57:47 ]
- 確かに、目の前にハンドルがあるとついついクラスのメンバ関数じゃなくてAPI呼びたくなるよな。
ハンドルを意識する必要が全くなければいいんだけどね。
- 144 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:02:25 ]
- VS2005のMFCで作ったexeファイルが
別のPCで起動させた際に不正なファイルとでて起動できませんでした プログラムを組んだPCではきちんと起動するのですが原因がわかりません 原因についてわかる方、教えていただけませんか PCのOSは両方ともWinXP Pro SP2です VS2005は片方にしか入っていません よろしくお願いいたします
- 145 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:29:46 ]
- インストーラ作れよ
- 146 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:40:41 ]
- >>145
作り方教えてください。
- 147 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:44:04 ]
- ヘルプを見よ
- 148 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:46:54 ]
- これをダウンロードして実行しろ
www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja
- 149 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:29:14 ]
- >>144
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200606/06060025.txt VS2005にもスタティックリンク出来ないグレードあるんだっけ?
- 150 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 01:37:33 ]
- >>149
ありがとうございます。 そこに書いてあるように「マルチスレッド MT」に変えると ビルドする際に c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxver_.h(77) : fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds といったエラーがでるようになってしまいました 解決方法がわかれば教えていただけませんか
- 151 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:25:31 ]
- >>150
>解決方法がわかれば教えていただけませんか >Please use the /MD switch for _AFXDLL builds
- 152 名前:デフォルトの名無しさん [2008/06/12(木) 00:11:07 ]
- VS2005でStdioFile::ReadString()関数を引数をCString参照で使っているんだけど、
何行かread(大体1000行ぐらい)していると、stringのバッファサイズが何とかという 実行時エラーが出てしまいます。何か対策はありませんでしょうか。
- 153 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:17:16 ]
- 何とかって何?
- 154 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:24:33 ]
- 改行文字で止まるのに1000行とはなんぞや
- 155 名前:152 mailto:sage [2008/06/12(木) 07:05:45 ]
- >>153 154
今ソース、環境が手元に無いので詳細は今日帰宅したらまた書きます。
- 156 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:46:49 ]
- CStringの上限は2GBぐらいだろ
- 157 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:47:45 ]
- m_timerID = SetTimer;
↓ OnTimerでInvalidate(FALSE); ↓ アニメが終わったらKillTimer(m_timerID); ピクチャーコントロールにビットマップを表示してるダイアログで これでアニメーションをしてると、 タイマー開始するたびに4Kずつ使用メモリが増えていきます なぜでしょうか
- 158 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:31:49 ]
- 知るかよ
お前んとこのバグに決まってるだろ
- 159 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:36:16 ]
- >>157
m_timerIDって解放しなくてよかったっけ。 時計の電池を抜いて止めても時計の本体は残っている状態のような。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:43:37 ]
- >159はキチガイだから無視で
- 161 名前:デフォルトの名無しさん [2008/06/12(木) 22:29:14 ]
- CStaticにCBitmapの画像を貼り付けたいのですが、リソースからは上手くいっても
メモリ上からは失敗(何も描画されない)します。 どうするのが適切なのか、教えてください。 //// リソース読み込み CBitmap m_bmp; // メンバ変数 m_bmp.LoadBitmap(IDB_BITMAP); CStatic *pPicture = (CStatic *)GetDlgItem(IDC_STATIC_IMAGE); pPicture->SetBitmap((HBITMAP)m_bmp); //// メモリ読み込み CBitmap m_bmp; // メンバ変数 BYTE m_buf[300]; // メンバ変数 bmpの各ピクセルの色データ配列 m_bmp.CreateBitmap(10, 10, 1, 24, m_buf); CStatic *pPicture = (CStatic *)GetDlgItem(IDC_STATIC_IMAGE); pPicture->SetBitmap((HBITMAP)m_bmp);
- 162 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:51:05 ]
- 水平方向のバイト数が4の倍数じゃないから?
m_buf[(10*24/8+7)&~3*10];
- 163 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:56:00 ]
- >>162
元のは横240*縦240*3バイトだったのを編集したときに4バイトアライメントを失念してました。 すみません。 CreateBitmapでいけることはいけるんでしょうか?
- 164 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:02:12 ]
- m_bmpのデストラクタで破棄されたらそれまで。描画されなくて当然。
Windowsのハンドルは参照カウンタで管理されているわけではないので注意しる。
- 165 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:03:10 ]
- その辺まともに理解してないと、メモリリークとかもやらかしそうだな
- 166 名前:161 mailto:sage [2008/06/13(金) 19:45:30 ]
- 自己解決。
リソース読みのm_bmpを使い回して、32bppに変換したデータをSetBitmapBitsすることで表示されるようになった。
- 167 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:36:42 ]
- どのへんが自己?w
- 168 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 22:22:12 ]
- あえてWin16時代の名残りであるSetBitmapBitsを使うところが渋いな。
まあ、直接イメージを弄るなら普通はCreateDIBSectionを使う。 MFCならCImageだな。
- 169 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:20:40 ]
- MFC に CImage なんかあるかよ
- 170 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:28:42 ]
- あるある
- 171 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:57:23 ]
- VC++6.0で時間が止まってる人なんだろうな
- 172 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:15:25 ]
- MFC じゃなくて ATL だろが
- 173 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:29:08 ]
- CImage の中身は GDI+
- 174 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:35:47 ]
- GDI の BitBlt はハードウェアを使うので早い
GDI+ の BitBlt はソフトウェアのみで処理するので遅い
- 175 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:29:18 ]
- Vistaではどちらもソフトウェアになるけどな
- 176 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:31:13 ]
- そういえばGDI専用のスレってないんだな
この手の話するならここかWin32になるのか?
|

|