[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 04/06 12:43 / Filesize : 205 KB / Number-of Response : 785
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

■MFC相談室 mfc17d.dll■



1 名前:デフォルトの名無しさん mailto:sage [2006/11/21(火) 10:38:31 ]
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■MFC相談室 mfc16d.dll■
pc8.2ch.net/test/read.cgi/tech/1146117893/

255 名前:239 mailto:sage [2006/12/29(金) 12:15:18 ]
PostThreadMessageでメイン側からWM_QUITメッセージを飛ばし終了させようとしたのですが
Instanceでの処理は止まらないので終了することができません

WM_QUITの代わりのメッセージを作ったとしても終了処理をどうすればいいのでしょうか
Instance→Run→ExitInstanceの流れを通らないとスレッドの破棄は難しいのでしょうか?

>>248さんの終了処理するような処理をどうすれば実装できるか困っています


256 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 12:36:41 ]
>>255
文字通り、サブスレッド側でメッセージを受け取れば宜しい。
逆に言えば、サブスレッド側をそのように作らないといけない。
詳細は、サブスレッドの作りが判らないしスレ違いになるので割愛。

257 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 01:57:47 ]
質問です。
タブ上にリストコントロールを表示する為、メンバ変数作って
OnInitDialog関数内でリストをCreateしています。
(タブはリソースエディタで貼り付けています)
表示はできたんですけどなぜかリスト内の項目が選択できません。
なんででしょう?とりあえずこんな感じで作ってます。

m_Tab.GetClientRect(&rcRect);
ClientToScreen(&rcRect);
rcRect.left -= 21;
rcRect.right -= 5;
rcRect.top += 44;
rcRect.bottom += 52;
m_ListCtrl.Create(LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_NOCOLUMNHEADER|LVS_REPORT|LVS_SHOWSELALWAYS,
rcRect, GetParent(), IDC_JOURNALSHOWSET_LIST_KP);


258 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 02:20:50 ]
>表示はできたんですけど

本当に?
GetParent()はダイアログの親ウィンドウを返してると思うんだけど。

259 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 09:25:15 ]
こいつ思い出した
結果オーライ

> 90 名前:デフォルトの名無しさん[] 投稿日:2006/12/04(月) 13:59:24
> ダイアログにタブコントロールを乗せ、複数のリストビューの表示をタブで切り替える
> ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると
> リストビューの表示が乱れる現象が出てしまいました。
>
> (中略)
>
> 結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が
> いきません。リソース中の定義順が何に影響しているのでしょうか?

260 名前:デフォルトの名無しさん [2006/12/30(土) 15:35:51 ]
MDIタブ age

261 名前:デフォルトの名無しさん [2006/12/30(土) 15:57:27 ]
メニュー項目を選択すると CSliderCtrl を WS_POPUP で作って表示させる処理を
ダイアログに追加していたんですが、ダイアログを終了する時にビープが一発鳴る
ようになってしまいました。

どこで鳴ってるのかデバッガで追ってみたところ、InitInstance の最終行、return FALSE;
で出て行ったあとのようです。この先も追いたいんですが、F11ではこれ以上追えません
でした。どういう風にデバッグすればいいでしょうか?

262 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 16:50:16 ]
ダイアログを終了する時にInitInstanceなのか?

263 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 17:21:32 ]
ダイアログベースのMFCアプリケーションなので、ダイアログの終了=アプリ
の終了という構図です。Wizardが作ったコードそのままですけど、下記のような
雰囲気です。
BOOL MyDialogApp::InitInstance()
{
  いろいろ初期化

  CMyDialogDlg dlg;
  m_pMainWnd = &dlg;
  INT_PTR nResponse = dlg.DoModal();
  if (nResponse == IDOK)
    ;

  else if (nResponse == IDCANCEL)
    ;

  return FALSE;
}



264 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:01:01 ]
>>260
ヒント:
void CMainFrame::RecalcLayout(BOOL bNotify)
CWnd::RepositionBars()

265 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 11:56:09 ]
先月からMFCを勉強し始めた者です。
以下のようにCFileDialogを使用して、ファイルの読み込み処理をつくりました。
これを、ビューの領域に表示するにはどうすればいいのでしょうか?
「void CFOpenView::OnDraw(CDC* pDC)」に処理を書けばいいと思うのですが、全然わかりません。
どなたか、教えてください。

void CFOpenDoc::OnFileRead()
{
CFileDialog CFDlg(TRUE, _T("txt"), NULL, OFN_HIDEREADONLY, _T("TEXTファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*||"));
CString String, FilePath;
CStdioFile StdFile;

if( CFDlg.DoModal() == IDOK){
FilePath = CFDlg.GetPathName();
if(StdFile.Open(FilePath,CFile::modeRead)){
StdFile.ReadString(String);
StdFile.Close();
} else {
AfxMessageBox(_T("ファイルが開けない"));
}
}
}

266 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 12:09:43 ]
Hello, Worldと同じ
文字列を表示するだけ

267 名前:265 mailto:sage [2007/01/03(水) 12:39:21 ]
>>266
レスありがとうございます。
試してみます。

268 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 17:20:42 ]
ダイアログベースのプログラムを作成しています。
フォームにボタンを配置して、そのボタンのCaptionを動的に変更したいのですが、方法が分かりません。
CButtonクラスメンバの中にもそれっぽい関数が見付からず途方に暮れてます。
方法があれば教えてください。お願いします。

269 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 18:40:16 ]
CButtonの基底クラスのメンバ関数

270 名前:268 mailto:sage [2007/01/03(水) 19:06:07 ]
>>269
ありがとうございます。
普通にSetWindowTextで変更できたのですね。
助かりました。

271 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 20:22:26 ]
VC++2005上でVBMP3.dllというライブラリを使用し、MP3を再生するプログラムを作成しています。
MP3ファイルをオープンするために呼び出す関数 vbmp3_openはヘッダ中に以下のように宣言されています。

BOOL APIENTRY vbmp3_open(const char* pszName, InputInfo* pInfo);

で、プログラム中で

vbmp3_open(FileName, &pInfo); // FileNameはCString型

としたところ、Debugでのコンパイルは成功するのですがReleaseのコンパイルが以下のエラーとともに失敗します。

error C2664: 'vbmp3_open' : 1 番目の引数を 'CString' から 'const char *' に変換できません。
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。

といった状態です。解決方法はありませんでしょうか。

272 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 21:16:14 ]
Unicodeネタいい加減飽きた('A`)

273 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 09:35:43 ]
簡単な質問だと答えがすぐに返ってくるねぇ
MDIタブの実装方法は難しくてここの住人に答えるのは無理ってことかぁ



274 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 09:55:03 ]
MFCにMDIタブがあればすぐ教えてやるけど
ないものは教えられない

275 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 10:05:09 ]
用意された機能は使えるけど
自分でMFCを拡張してタブを実装する技術はないってことだな>274

276 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 10:05:35 ]
MFCの設計に含まれていない以上、
Office2007のリボンの実装方法聞いてるのと同じようなものだからなあ。
頑張れば出来るんじゃね?としか言いようが無い。

277 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 10:07:56 ]
275は仲間を見つけて喜んでいるようだ

278 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 13:46:54 ]
MFCにMDIタブを実装した経験のある おいらが来ましたよ
んで何が聞きたいんだ?


279 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 21:35:19 ]
奥さんが欲しいです

280 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 02:58:20 ]
>>279
以下のように2行コメントにしてみて

 for(int i=0; i<FEMALE_MAX; i++){
  if(female[i].IsMarried()==TRUE)
   continue;
  if(female[i].GetAge()<16)
   continue;
// if(female[i].CheckQuality()==FALSE)
//  continue;
  propose(female[i]);
 }

281 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 13:58:48 ]
先生!なぜかループが一回も回りません!

282 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:18:47 ]
>>281
femaleが空なんじゃないか?
つーか、FEMALE_MAXが0なのか。

283 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:43:43 ]
//if(female[i].GetAge()<16)
//   continue;

こういう余計な制限もとっちゃおうぜ。



284 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:44:44 ]
//if(female[i].IsMarried()==TRUE)
//   continue;

よく考えたらこれだって別に大した制限じゃねぇな。

285 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:46:04 ]
if(female[i].GetAge()>35)
   continue;

さすがに遠慮したいから入れておこうな。

286 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 09:47:49 ]
>>281
しょうがない、female -> maleに置き換えるんだ。

287 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 10:06:14 ]
MFC使ってるやつ少ないのかと思ってたけど
くだらない話になると書き込みが増えるな
ROMってるやつ多いのか?

288 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 12:06:22 ]
VisualC++ .net Standard使用
CImageのLoadFromResourceに関して質問です
BITMAPリソースは読み込むことができるのですが、jpgファイルをバイナリリソースとして格納した場合に、こいつを読み取ってくれません
LoadResourceを使ってtmpファイルでも書き込んでからCImage::Loadなんて馬鹿馬鹿しいですし
何とか簡単にリソースに埋め込んだバイナリデータのjpgを読み込ませる方法はないでしょうか?
ちなみに、こんな感じでやってます

CImage image;
image.LoadFromResource(GetModuleHandle(NULL),ResourceID);

289 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 12:20:49 ]
あまりにもバグって気持ち悪くなってきた

290 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 13:06:39 ]
VC6にはCImageないんだよな

291 名前:デフォルトの名無しさん mailto:sage [2007/01/06(土) 13:19:40 ]
DIB程度ならCreateDIBSectionをCBitmapにAttachとかで済むから、あまり困らなかったな。

>>288
::CreateStreamOnHGlobalとCImage::Load(IStream *)を使えば、ファイル無しでできる。
効率から言うと、バイナリリソースアクセス用のIStream実装を書いた方が良いけど('A`)マンドクセ

292 名前:デフォルトの名無しさん [2007/01/07(日) 01:51:10 ]
初期状態でドッキングされていないツールバー(フローティングツールバー?)の作り方を教えてください
普通のツールバー(ドッキングされているツールバー)はスケルトン作成(SDI or MDI)したソースを見れば
分かりそうな感じですが、それとスタイルが違うツールバーはどのように作れば良いですか?
グーグルで調べているのですが、思ったような情報に行き当たらず困っております

293 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 02:56:21 ]
MDI野郎の文体だね



294 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 03:26:52 ]
>>291
サンクス
CreateStreamOnHGlobalでいけました
というか、IPictureをかまさないとストリームにならないのでかましたわけですが
これを使うとCImageの意味がまったくをもってないですね(笑)

295 名前:デフォルトの名無しさん mailto:sage [2007/01/07(日) 10:14:35 ]
MFCのフローティングツールバーはMFCが自力でやってるから
具体的な方法はMFCのソース読めばわかるよ
確かバーの上に張り付いてるやつを別ウインドウ開いて丸ごと引っ越すだけだったと思う。

296 名前:デフォルトの名無しさん [2007/01/08(月) 17:20:10 ]
>>295
レスありがとうございます

ど素人(入社1年目)なので、それだけですとやり方が分かりません・・・

297 名前:デフォルトの名無しさん [2007/01/08(月) 17:27:33 ]
追加で質問をさせてください

ツールバー上のアイテム(ボタン?)をドラッグした時に
点線の四角形またはそのアイテムのアイコン(半透明)を
ドラッグ中のマウスポインタの横に表示させるにはどうすれば良いですか?
イメージとしては、VC++でダイアログリソース編集時にコントロールアイコンを
ツールバーからドラッグした時のような感じで

298 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:01:41 ]
>>296
自力で調べて判らないようなら上司なり先輩なりに聞け。
それでも判らないようならあんたには不適当な要求仕様なのだからそう上司(なり指示した人間)に言え。

299 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:30:36 ]
>>298
スレタイを2万5千回ぐらい嫁。

300 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:36:21 ]
>>299
6時間も7時間もやってらんない。

301 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:47:17 ]
>>299
相談室だから>>298のようなアドバイスもアリじゃないか

302 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:52:35 ]
>>298は的確だと思ったな

あと2ちゃんで仕事をにおわせると答えてもらいにくくなるよ
タダで教えてその内容で相手は金を得るわけだし

303 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 18:52:59 ]
>>301
要求仕様のさばき方相談室じゃないんだよー



304 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 19:37:22 ]
会社だったら違う人に仕事まわすだけだろ
できない仕事をかかえこまないように

305 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 22:18:54 ]
>>296でわからないっつーのはもうアレだ。
なんつーか色々と色んなことが困難だw

306 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 22:19:30 ]
いや、>>295な。

307 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 23:27:04 ]
>>292,296
質問の意味が2通りに取れるんだが
MFC標準のCToolBarをフローティング状態で表示したいってこと?
それとも独自にフローティングツールバーを実装したいってこと?

おそらく前者の意味で聞いてるんだと思うけど、
それならCFrameWnd::FloatControlBar()でフローティング状態にできるよ。
後者なら、MFCのソースを参考に自分で書けとしか言えません。

308 名前:デフォルトの名無しさん [2007/01/09(火) 11:46:02 ]
ダイアログバーにIDC_STATICのスタティックテキストを貼り付けると、
そのテキスト上でのマウスドラッグはバーのドラッグ処理になりますが、
これってどのような仕組みなのでしょうか。
ダイアログバー内に貼り付けた自作ウィンドウクラスにも
このような動作を組み込みたいんです。

OnNcHitTestでHTTRANSPARENTやHTCAPTIONを返してみても
まったく動かなかったり、コントロールだけが動いたり、
ダイアログバー内でダイアログ自身が動いてしまったりと、
仕組みがわからずに苦戦しています。

同じスタティックテクストでも
IDC_STATIC以外の名前を付けるとドラッグにならないようなので、
コントロールバークラスがIDC_STATICに対して
なにか特別なことでもやっているのでしょうか。

309 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 12:48:24 ]
初心者はIDC_STATICではまる

310 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 12:51:33 ]
初心者 IDC_STATIC の検索結果 約 211 件中 1 - 10 件目 (0.25 秒)

311 名前:デフォルトの名無しさん [2007/01/13(土) 23:36:22 ]
ドキュメントビューアーキテクチャという概念がよく分かりません

ドキュメント: プログラム内で共有するデータを扱う, メンバ変数がたくさんある, ファイル入出力
ビュー: ユーザとのインタフェースを扱う, 描画を取り仕切る, コントロール管理

の認識でOKですか?

312 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:58:14 ]
いや

313 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:00:08 ]
>>311
概ねOKじゃね?
どっちかっていうとその役割よりドキュメントとビューがセットで1つになってること(ドキュメントテンプレートってのなかった?)
新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が重要のような気がするがわかっているならOK。

そうすると自然にMDIのアプリは

1.メインフレーム(メニューとかくっついてる)
2.(ドキュメント+ビュー)X新規作成で生成された数分
3.その他のツールウィンドウやダイアログ

で構成されることになる。
VCだと

・メインフレーム(メニューとかくっついてる)
・ソースコードエディターとかリソースエディター等など(新規作成からできる奴)
・ソリューションエクスプローラーとかアウトプットウィンドウとか・・・

にあたる。
強引に「こうやって作れよ!」っていう型なんで設計からしてこうやってなってないと駄目っちゃ駄目だなw



314 名前:311 [2007/01/14(日) 00:12:54 ]
ありがとうございます

315 名前:スイ [2007/01/14(日) 00:22:26 BE:311467872-2BP(0)]
えっと、すいません、↓で討論?みたいなのをしているんですけど、
jbbs.livedoor.jp/bbs/read.cgi/game/19692/1168442603/
私は、真珠さんって少し変わった趣味を持った人だなー、とかは思いますけど、それだけで叩いたりするのってひどいと思いませんか?
私はあまりネットには詳しくないのでよくわからないんですが、なんかほなみんさんが2chとか言ってたので調べてみると見つかったので書き込んでみました。
このままだと真珠さんがかわいそうなんで、誰か真珠さん側についてほなみんさんを叩き返してくれませんか?私じゃ勝てそうにないので。

316 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:46:00 ]
↓ハイ、次の方どうぞ。

317 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 01:44:25 ]
えっと、これ本番ですか?


318 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 06:58:08 ]
>>313
なんで初心者に向かって何の前置きも無しに、あまりお目にかからないMDIのさらにレアな
複数のドキュメントタイプを持つアプリの解説を始めるのか、理解に苦しむよ。
VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。

>>311
msdn2.microsoft.com/ja-jp/library/4x1xy43a(VS.80).aspx
この解説が分かりやすいよ。

319 名前:デフォルトの名無しさん [2007/01/14(日) 08:06:10 ]
>>318
ええ!?
>>313のどこをどう読めばが複数ドキュメントの解説がメインになってるの?
とんだ濡れ衣だ!勘違いなら謝ってよ!

320 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 08:06:57 ]
X複数ドキュメント
○複数ドキュメントタイプ

321 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 09:00:21 ]
>新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が
>重要のような気がするがわかっているならOK。

SDIでは100%成り立たないし、単一のドキュメントタイプをもつMDIなら自明で重要性は感じられない。
これが重要な意味を持つのは複数のドキュメントタイプをもつMDIしかないように思った。
確信犯だと思ったんだが、気に障ったのなら謝るよ。漏れの知らない世界があるんだろうね。

322 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:00:53 ]
>>321
え?じゃあ、君の勝手な妄想で俺につっかかってきたの?
それとあきらかにその文章で複数ドキュメントタイプの説明なんて書いてないのにその態度はなんなの。
しかも、確信犯の使い方も間違ってるし。
こんなの業務でやったら大変だぜ。改めろよ。

323 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:23:18 ]
いや、改めなくていいから一切社会活動を行なわないでください。



324 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 10:27:37 ]
>VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。
これ昔からだろ、2005ではじめて触ったのか

325 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 11:07:34 ]
SDI MDI
MFC以前からある

ドキュメント/ビュー
MFC2.0で追加された

326 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 12:59:31 ]
CFrameWndの派生クラスをドキュメントテンプレートから閉じるにはどうしたらいいでしょうか。
つまり class CHogeDocTemplate : public C[Single/Multi]DocTemplate
の OpenDocumentFile で特定のフレームを閉じる様にしたいのですが、
閉じる時に CFrameWnd::DestroyWindow や OnCloseDocument を使うと
OnClose が呼びだされないがこれで大丈夫なのか、
だめだとしたら正しい閉じ方はどうなのかを教えていただきたいのです。
よろしくお願いします。

327 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:14:37 ]
普通に閉じればいいじゃん

328 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:34:04 ]
CFrameWnd::OnCloseからDestroyWindow呼んでるから
OnClose が呼びだされないのは当たり前

329 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:39:10 ]
>>327
普通にとはどのようにでしょうか?

>>328
その通りです。OnClose から閉じる方がドキュメントを閉じる等の処理も
正しく行われるように読めたので出来ればそうしたく質問しております。

330 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 13:47:01 ]
OnCloseからOnCloseDocument呼んでるから
OnCloseDocumentからOnClose が呼びだされないのは当たり前

331 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 21:50:20 ]
OnCloseはウィンドウを閉じる時
OnDocumentCloseはドキュメントを閉じる時
と考えれば何も問題ないべ

332 名前:デフォルトの名無しさん [2007/01/16(火) 04:24:49 ]
CPUやメモリをあまり気にせずにプログラム書いてたら
起動しただけでCPU使用率50%という異常な状態になっていました。
このプログラム自体、起動と同時に行う処理はほとんどなく、
SDIのスケルトンと同じようなもののはずなんですが。。

処理がないのにCPU使用率が高いまま下がらないのは
原因としてどのようなことが考えられますか?
もしくは原因を調べる方法とかってありますか?

333 名前:win32apiスレ17 mailto:sage [2007/01/16(火) 04:36:15 ]
pc10.2ch.net/test/read.cgi/tech/1168708801/17
に最初書き込みましたが、こちらのが適切かなと思って移動してきました。

Acrobatのページサムネール表示、あるいはPowerPointのスライド一覧表示のように、
イメージのリストを表示し、かつ、その順番をマウスのドラッグで調整したいと思ってます。
ドラッグ中、イメージが挿入される場所にカーソルの様な縦線が出てきて欲しいなと思ってます。

こういうコントロールの既存の実装やコードのサンプルなど御存知でしたら御教示頂けないでしょうか?
codeguru、codeprojectは廻ってみたものの、どうにもサムネールの表示どまりでして・・・




334 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 05:27:51 ]
>>332
情報少なすぎでどうespしろと?


335 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 05:36:21 ]
>>333
自分でエディタとか作ったことない?


336 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 08:03:52 ]
>>332
プロファイルで

337 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:03:52 ]
ある場所から突然malloc(255)がNULLになります。直前のmallocは必ず成功で、場所は一定
HEAP、スタックを2000000(2M)や20000000(20M)で試しましたが、タイミングや場所は変わらないようです
お手上げです。解決策をお知りの方おりませんか?

338 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:15:52 ]
直前のmallocまでのすべての戻り値をここにさらしてごらん

339 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:42:17 ]
直前のmallocの戻り値でいいですか?

malloc(255);//必ず成功。 戻り値:0x00b72e68
WideCharToMultiByte
MultiByteToWideChar
malloc(255);//必ず失敗

こんな感じです

340 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 09:59:04 ]
ヒープ壊してんじゃねえの

341 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 10:05:25 ]
解決しました!
MultiByteToWideCharを2度使いmallocのサイズを指定していたのですが、wchar単位でNULLが含まれていないため少なくなっていました
成功するほうをmalloc((len+1)*sizeof(wchar_t));で動きました。
ありがとうございました。

342 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 12:49:33 ]
CStringWじゃ駄目なのか?

343 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 17:35:59 ]
>>332です。

>>336
ありがとうございます。
プロファイルで調べたところOnIdle()のreturnが原因だったようです。

そのreturnのことで質問なのですが、
OnIdle内でのレンダリングによってCGアニメーションを表示するプログラムを書いているのですが、
return TRUE;だと前述のようにCPU使用率が高くなるのですが、
アニメーションは正常に表示されます。
return CWinApp::OnIdle(lCount);だとCPU使用率の問題は解消されるのですが
OnIdle()が呼ばれる間隔が長くなるためか、アニメーションが滑らかに表示できません。

この2つを同時にクリアできる良い方法はありませんか?
よろしくお願いします。



344 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:02:17 ]
んー、、、目的の fps が取れてるなら Sleep(0)を呼ぶとかどうだろう、Sleep(1)でもいいが

345 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:27:01 ]
ほっといてやれ

346 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 21:57:57 ]
>>344
ありがとうございます!!
どうやらすごく基本的なことのようですね。。

347 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 21:52:58 ]
マルチラインエディットボックスで
水平方向のスクロールバーの位置から
列の何文字目から表示している知りたいのですが
どうすればいいのでしょうか?

やりたいことはエディットボックスの中身を編集して
かきかえても書き換える前と同じ位置を表示したいのです。
LineScrollを使用すれば垂直はうまくいくのですが、水平がうまくできません。

また、SetScrollPosを使用してもエディットボックス内が更新されないのでこまっています。

348 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 23:52:25 ]
>>347
「書き換えても書き換える前と同じ位置」というのもよくわからないんだけど、
わざわざスクロールバーを使っているのはなぜ?
単純にGetSelでカーソル位置を取得しておいてSetSelで戻すだけじゃダメ?
あと、エディットボックスの更新するにはUpdateData(FALSE)とUpdateWindow()
じゃない?
質問がよくわかってないのではずしてるかも知れんけど。

349 名前:347 mailto:sage [2007/01/19(金) 14:44:11 ]
>>348 さん
レスありがとうございます。

自己解決しました

350 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:13:48 ]
CWnd* CWnd::GetDlgItem(int nID); で得られるCWndのインスタンスの解放は
誰に責任があるんでしょうか?ソースコードを少し追ってみると、独自のアロケータ
でごにょごにょやってるような感じなんですが。

351 名前:350 mailto:sage [2007/01/19(金) 16:23:11 ]
自己解決しました。こういう一時的に作ったオブジェクトはMFCが勝手に
CWinApp::OnIdle() → CWnd::DeleteTempMap() あたりで解放するんですね。



352 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:23:37 ]
ソース追うのもいいけど、ヘルプもみよう

353 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:34:29 ]
いや、だってヘルプには「返されるポインタは、一時的なポインタです。後で使用するために保存しておくことはできません。
」としか書いてないから、誰がどこでいつ解放するか気になるじゃん?



354 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:39:54 ]
一時的なポインタを解放するのか?

355 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 17:09:59 ]
そりゃ解放するでしょ。問題は誰がいつどこで開放するかであって、それに
よって「一時的なポインタ」とやらの有効範囲が決まってくるわけだから。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef