トップページ⇒tech
1001コメント335KB

■MFC相談室 mfc17d.dll■

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/21(火) 10:38:31
Microsoft Foundation Classライブラリ専用スレです。

前スレ
■MFC相談室 mfc16d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1146117893/
0249デフォルトの名無しさん2006/12/28(木) 17:37:02
なるほど
ありがとうございますやってみます
0250デフォルトの名無しさん2006/12/28(木) 22:05:29
VC6 で組んだプロジェクトが VC7 でコンパイル出来なくて困ってます。
ユーザー定義メッセージのとこなんですが。

メッセージマップで
ON_MESSAGE(WM_USER_ENDTHREAD, OnUserEndthread)
ヘッダで
afx_msg void OnUserEndthread(UINT wParam, LONG lParam);
実体部で
void CPg1::OnUserEndthread(UINT wParam, LONG lParam)
{
;
}

としているのですが、コンパイル時に
pg1.cpp(130): error C2440: 'static_cast' : 'void (__thiscall CPg1::* )(UINT,LONG)' から 'LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)' に変換できません。
とでます。

VC6 では問題ないのですが・・・。 ご教授下されば有難く思います。
0251デフォルトの名無しさん2006/12/28(木) 22:17:09
エラーメッセージそのまんまじゃん
02522502006/12/28(木) 22:30:23
>251

void を LRESULT にしろってことですかね?
ユーザ定義メッセージハンドラの仕様が変わったというだけのことですか。
0253デフォルトの名無しさん2006/12/28(木) 22:44:34
相当古いよそれ
0254デフォルトの名無しさん2006/12/29(金) 02:14:54
俺はGetWindowLongでとった値をどうキャストかけても警告だったかエラーだったか消えなくて悩んだ覚えがあるな。
結局、どうしたっけな・・・。
02552392006/12/29(金) 12:15:18
PostThreadMessageでメイン側からWM_QUITメッセージを飛ばし終了させようとしたのですが
Instanceでの処理は止まらないので終了することができません

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

>>248さんの終了処理するような処理をどうすれば実装できるか困っています
0256デフォルトの名無しさん2006/12/29(金) 12:36:41
>>255
文字通り、サブスレッド側でメッセージを受け取れば宜しい。
逆に言えば、サブスレッド側をそのように作らないといけない。
詳細は、サブスレッドの作りが判らないしスレ違いになるので割愛。
0257デフォルトの名無しさん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);
0258デフォルトの名無しさん2006/12/30(土) 02:20:50
>表示はできたんですけど

本当に?
GetParent()はダイアログの親ウィンドウを返してると思うんだけど。
0259デフォルトの名無しさん2006/12/30(土) 09:25:15
こいつ思い出した
結果オーライ

> 90 名前:デフォルトの名無しさん[] 投稿日:2006/12/04(月) 13:59:24
> ダイアログにタブコントロールを乗せ、複数のリストビューの表示をタブで切り替える
> ソフトを書いていたんですが、タブに重ねたリストビューの列サイズを操作すると
> リストビューの表示が乱れる現象が出てしまいました。
>
> (中略)
>
> 結果オーライといえばそれまでなんですが、どうしてこれで問題が解決するのか納得が
> いきません。リソース中の定義順が何に影響しているのでしょうか?
0260デフォルトの名無しさん2006/12/30(土) 15:35:51
MDIタブ age
0261デフォルトの名無しさん2006/12/30(土) 15:57:27
メニュー項目を選択すると CSliderCtrl を WS_POPUP で作って表示させる処理を
ダイアログに追加していたんですが、ダイアログを終了する時にビープが一発鳴る
ようになってしまいました。

どこで鳴ってるのかデバッガで追ってみたところ、InitInstance の最終行、return FALSE;
で出て行ったあとのようです。この先も追いたいんですが、F11ではこれ以上追えません
でした。どういう風にデバッグすればいいでしょうか?
0262デフォルトの名無しさん2006/12/30(土) 16:50:16
ダイアログを終了する時にInitInstanceなのか?
0263デフォルトの名無しさん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;
}
0264デフォルトの名無しさん2007/01/01(月) 19:01:01
>>260
ヒント:
void CMainFrame::RecalcLayout(BOOL bNotify)
CWnd::RepositionBars()
0265デフォルトの名無しさん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("ファイルが開けない"));
}
}
}
0266デフォルトの名無しさん2007/01/03(水) 12:09:43
Hello, Worldと同じ
文字列を表示するだけ
02672652007/01/03(水) 12:39:21
>>266
レスありがとうございます。
試してみます。
0268デフォルトの名無しさん2007/01/03(水) 17:20:42
ダイアログベースのプログラムを作成しています。
フォームにボタンを配置して、そのボタンのCaptionを動的に変更したいのですが、方法が分かりません。
CButtonクラスメンバの中にもそれっぽい関数が見付からず途方に暮れてます。
方法があれば教えてください。お願いします。
0269デフォルトの名無しさん2007/01/03(水) 18:40:16
CButtonの基底クラスのメンバ関数
02702682007/01/03(水) 19:06:07
>>269
ありがとうございます。
普通にSetWindowTextで変更できたのですね。
助かりました。
0271デフォルトの名無しさん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 *' に変換できません。
この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。

といった状態です。解決方法はありませんでしょうか。
0272デフォルトの名無しさん2007/01/03(水) 21:16:14
Unicodeネタいい加減飽きた('A`)
0273デフォルトの名無しさん2007/01/04(木) 09:35:43
簡単な質問だと答えがすぐに返ってくるねぇ
MDIタブの実装方法は難しくてここの住人に答えるのは無理ってことかぁ
0274デフォルトの名無しさん2007/01/04(木) 09:55:03
MFCにMDIタブがあればすぐ教えてやるけど
ないものは教えられない
0275デフォルトの名無しさん2007/01/04(木) 10:05:09
用意された機能は使えるけど
自分でMFCを拡張してタブを実装する技術はないってことだな>274
0276デフォルトの名無しさん2007/01/04(木) 10:05:35
MFCの設計に含まれていない以上、
Office2007のリボンの実装方法聞いてるのと同じようなものだからなあ。
頑張れば出来るんじゃね?としか言いようが無い。
0277デフォルトの名無しさん2007/01/04(木) 10:07:56
275は仲間を見つけて喜んでいるようだ
0278デフォルトの名無しさん2007/01/04(木) 13:46:54
MFCにMDIタブを実装した経験のある おいらが来ましたよ
んで何が聞きたいんだ?
0279デフォルトの名無しさん2007/01/04(木) 21:35:19
奥さんが欲しいです
0280デフォルトの名無しさん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]);
 }
0281デフォルトの名無しさん2007/01/05(金) 13:58:48
先生!なぜかループが一回も回りません!
0282デフォルトの名無しさん2007/01/06(土) 09:18:47
>>281
femaleが空なんじゃないか?
つーか、FEMALE_MAXが0なのか。
0283デフォルトの名無しさん2007/01/06(土) 09:43:43
//if(female[i].GetAge()<16)
//   continue;

こういう余計な制限もとっちゃおうぜ。
0284デフォルトの名無しさん2007/01/06(土) 09:44:44
//if(female[i].IsMarried()==TRUE)
//   continue;

よく考えたらこれだって別に大した制限じゃねぇな。
0285デフォルトの名無しさん2007/01/06(土) 09:46:04
if(female[i].GetAge()>35)
   continue;

さすがに遠慮したいから入れておこうな。
0286デフォルトの名無しさん2007/01/06(土) 09:47:49
>>281
しょうがない、female -> maleに置き換えるんだ。
0287デフォルトの名無しさん2007/01/06(土) 10:06:14
MFC使ってるやつ少ないのかと思ってたけど
くだらない話になると書き込みが増えるな
ROMってるやつ多いのか?
0288デフォルトの名無しさん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);
0289デフォルトの名無しさん2007/01/06(土) 12:20:49
あまりにもバグって気持ち悪くなってきた
0290デフォルトの名無しさん2007/01/06(土) 13:06:39
VC6にはCImageないんだよな
0291デフォルトの名無しさん2007/01/06(土) 13:19:40
DIB程度ならCreateDIBSectionをCBitmapにAttachとかで済むから、あまり困らなかったな。

>>288
::CreateStreamOnHGlobalとCImage::Load(IStream *)を使えば、ファイル無しでできる。
効率から言うと、バイナリリソースアクセス用のIStream実装を書いた方が良いけど('A`)マンドクセ
0292デフォルトの名無しさん2007/01/07(日) 01:51:10
初期状態でドッキングされていないツールバー(フローティングツールバー?)の作り方を教えてください
普通のツールバー(ドッキングされているツールバー)はスケルトン作成(SDI or MDI)したソースを見れば
分かりそうな感じですが、それとスタイルが違うツールバーはどのように作れば良いですか?
グーグルで調べているのですが、思ったような情報に行き当たらず困っております
0293デフォルトの名無しさん2007/01/07(日) 02:56:21
MDI野郎の文体だね
0294デフォルトの名無しさん2007/01/07(日) 03:26:52
>>291
サンクス
CreateStreamOnHGlobalでいけました
というか、IPictureをかまさないとストリームにならないのでかましたわけですが
これを使うとCImageの意味がまったくをもってないですね(笑)
0295デフォルトの名無しさん2007/01/07(日) 10:14:35
MFCのフローティングツールバーはMFCが自力でやってるから
具体的な方法はMFCのソース読めばわかるよ
確かバーの上に張り付いてるやつを別ウインドウ開いて丸ごと引っ越すだけだったと思う。
0296デフォルトの名無しさん2007/01/08(月) 17:20:10
>>295
レスありがとうございます

ど素人(入社1年目)なので、それだけですとやり方が分かりません・・・
0297デフォルトの名無しさん2007/01/08(月) 17:27:33
追加で質問をさせてください

ツールバー上のアイテム(ボタン?)をドラッグした時に
点線の四角形またはそのアイテムのアイコン(半透明)を
ドラッグ中のマウスポインタの横に表示させるにはどうすれば良いですか?
イメージとしては、VC++でダイアログリソース編集時にコントロールアイコンを
ツールバーからドラッグした時のような感じで
0298デフォルトの名無しさん2007/01/08(月) 18:01:41
>>296
自力で調べて判らないようなら上司なり先輩なりに聞け。
それでも判らないようならあんたには不適当な要求仕様なのだからそう上司(なり指示した人間)に言え。
0299デフォルトの名無しさん2007/01/08(月) 18:30:36
>>298
スレタイを2万5千回ぐらい嫁。
0300デフォルトの名無しさん2007/01/08(月) 18:36:21
>>299
6時間も7時間もやってらんない。
0301デフォルトの名無しさん2007/01/08(月) 18:47:17
>>299
相談室だから>>298のようなアドバイスもアリじゃないか
0302デフォルトの名無しさん2007/01/08(月) 18:52:35
>>298は的確だと思ったな

あと2ちゃんで仕事をにおわせると答えてもらいにくくなるよ
タダで教えてその内容で相手は金を得るわけだし
0303デフォルトの名無しさん2007/01/08(月) 18:52:59
>>301
要求仕様のさばき方相談室じゃないんだよー
0304デフォルトの名無しさん2007/01/08(月) 19:37:22
会社だったら違う人に仕事まわすだけだろ
できない仕事をかかえこまないように
0305デフォルトの名無しさん2007/01/08(月) 22:18:54
>>296でわからないっつーのはもうアレだ。
なんつーか色々と色んなことが困難だw
0306デフォルトの名無しさん2007/01/08(月) 22:19:30
いや、>>295な。
0307デフォルトの名無しさん2007/01/08(月) 23:27:04
>>292,296
質問の意味が2通りに取れるんだが
MFC標準のCToolBarをフローティング状態で表示したいってこと?
それとも独自にフローティングツールバーを実装したいってこと?

おそらく前者の意味で聞いてるんだと思うけど、
それならCFrameWnd::FloatControlBar()でフローティング状態にできるよ。
後者なら、MFCのソースを参考に自分で書けとしか言えません。
0308デフォルトの名無しさん2007/01/09(火) 11:46:02
ダイアログバーにIDC_STATICのスタティックテキストを貼り付けると、
そのテキスト上でのマウスドラッグはバーのドラッグ処理になりますが、
これってどのような仕組みなのでしょうか。
ダイアログバー内に貼り付けた自作ウィンドウクラスにも
このような動作を組み込みたいんです。

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

同じスタティックテクストでも
IDC_STATIC以外の名前を付けるとドラッグにならないようなので、
コントロールバークラスがIDC_STATICに対して
なにか特別なことでもやっているのでしょうか。
0309デフォルトの名無しさん2007/01/09(火) 12:48:24
初心者はIDC_STATICではまる
0310デフォルトの名無しさん2007/01/09(火) 12:51:33
初心者 IDC_STATIC の検索結果 約 211 件中 1 - 10 件目 (0.25 秒)
0311デフォルトの名無しさん2007/01/13(土) 23:36:22
ドキュメントビューアーキテクチャという概念がよく分かりません

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

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

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

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

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

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

にあたる。
強引に「こうやって作れよ!」っていう型なんで設計からしてこうやってなってないと駄目っちゃ駄目だなw
03143112007/01/14(日) 00:12:54
ありがとうございます
0315スイNGNG?2BP(0)
えっと、すいません、↓で討論?みたいなのをしているんですけど、
http://jbbs.livedoor.jp/bbs/read.cgi/game/19692/1168442603/
私は、真珠さんって少し変わった趣味を持った人だなー、とかは思いますけど、それだけで叩いたりするのってひどいと思いませんか?
私はあまりネットには詳しくないのでよくわからないんですが、なんかほなみんさんが2chとか言ってたので調べてみると見つかったので書き込んでみました。
このままだと真珠さんがかわいそうなんで、誰か真珠さん側についてほなみんさんを叩き返してくれませんか?私じゃ勝てそうにないので。
0316デフォルトの名無しさん2007/01/14(日) 00:46:00
↓ハイ、次の方どうぞ。
0317デフォルトの名無しさん2007/01/14(日) 01:44:25
えっと、これ本番ですか?
0318デフォルトの名無しさん2007/01/14(日) 06:58:08
>>313
なんで初心者に向かって何の前置きも無しに、あまりお目にかからないMDIのさらにレアな
複数のドキュメントタイプを持つアプリの解説を始めるのか、理解に苦しむよ。
VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。

>>311
http://msdn2.microsoft.com/ja-jp/library/4x1xy43a(VS.80).aspx
この解説が分かりやすいよ。
0319デフォルトの名無しさん2007/01/14(日) 08:06:10
>>318
ええ!?
>>313のどこをどう読めばが複数ドキュメントの解説がメインになってるの?
とんだ濡れ衣だ!勘違いなら謝ってよ!
0320デフォルトの名無しさん2007/01/14(日) 08:06:57
X複数ドキュメント
○複数ドキュメントタイプ
0321デフォルトの名無しさん2007/01/14(日) 09:00:21
>新規作成でできるもんがドキュメント+ビューを型にしたインスタンスであることって方が
>重要のような気がするがわかっているならOK。

SDIでは100%成り立たないし、単一のドキュメントタイプをもつMDIなら自明で重要性は感じられない。
これが重要な意味を持つのは複数のドキュメントタイプをもつMDIしかないように思った。
確信犯だと思ったんだが、気に障ったのなら謝るよ。漏れの知らない世界があるんだろうね。
0322デフォルトの名無しさん2007/01/14(日) 10:00:53
>>321
え?じゃあ、君の勝手な妄想で俺につっかかってきたの?
それとあきらかにその文章で複数ドキュメントタイプの説明なんて書いてないのにその態度はなんなの。
しかも、確信犯の使い方も間違ってるし。
こんなの業務でやったら大変だぜ。改めろよ。
0323デフォルトの名無しさん2007/01/14(日) 10:23:18
いや、改めなくていいから一切社会活動を行なわないでください。
0324デフォルトの名無しさん2007/01/14(日) 10:27:37
>VS2005でMFCアプリのデフォルトプロジェクトがMDIになったのは大失敗な気がする。
これ昔からだろ、2005ではじめて触ったのか
0325デフォルトの名無しさん2007/01/14(日) 11:07:34
SDI MDI
MFC以前からある

ドキュメント/ビュー
MFC2.0で追加された
0326デフォルトの名無しさん2007/01/14(日) 12:59:31
CFrameWndの派生クラスをドキュメントテンプレートから閉じるにはどうしたらいいでしょうか。
つまり class CHogeDocTemplate : public C[Single/Multi]DocTemplate
の OpenDocumentFile で特定のフレームを閉じる様にしたいのですが、
閉じる時に CFrameWnd::DestroyWindow や OnCloseDocument を使うと
OnClose が呼びだされないがこれで大丈夫なのか、
だめだとしたら正しい閉じ方はどうなのかを教えていただきたいのです。
よろしくお願いします。
0327デフォルトの名無しさん2007/01/14(日) 13:14:37
普通に閉じればいいじゃん
0328デフォルトの名無しさん2007/01/14(日) 13:34:04
CFrameWnd::OnCloseからDestroyWindow呼んでるから
OnClose が呼びだされないのは当たり前
0329デフォルトの名無しさん2007/01/14(日) 13:39:10
>>327
普通にとはどのようにでしょうか?

>>328
その通りです。OnClose から閉じる方がドキュメントを閉じる等の処理も
正しく行われるように読めたので出来ればそうしたく質問しております。
0330デフォルトの名無しさん2007/01/14(日) 13:47:01
OnCloseからOnCloseDocument呼んでるから
OnCloseDocumentからOnClose が呼びだされないのは当たり前
0331デフォルトの名無しさん2007/01/15(月) 21:50:20
OnCloseはウィンドウを閉じる時
OnDocumentCloseはドキュメントを閉じる時
と考えれば何も問題ないべ
0332デフォルトの名無しさん2007/01/16(火) 04:24:49
CPUやメモリをあまり気にせずにプログラム書いてたら
起動しただけでCPU使用率50%という異常な状態になっていました。
このプログラム自体、起動と同時に行う処理はほとんどなく、
SDIのスケルトンと同じようなもののはずなんですが。。

処理がないのにCPU使用率が高いまま下がらないのは
原因としてどのようなことが考えられますか?
もしくは原因を調べる方法とかってありますか?
0333win32apiスレ172007/01/16(火) 04:36:15
http://pc10.2ch.net/test/read.cgi/tech/1168708801/17
に最初書き込みましたが、こちらのが適切かなと思って移動してきました。

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

こういうコントロールの既存の実装やコードのサンプルなど御存知でしたら御教示頂けないでしょうか?
codeguru、codeprojectは廻ってみたものの、どうにもサムネールの表示どまりでして・・・
0334デフォルトの名無しさん2007/01/16(火) 05:27:51
>>332
情報少なすぎでどうespしろと?
0335デフォルトの名無しさん2007/01/16(火) 05:36:21
>>333
自分でエディタとか作ったことない?
0336デフォルトの名無しさん2007/01/16(火) 08:03:52
>>332
プロファイルで
0337デフォルトの名無しさん2007/01/16(火) 09:03:52
ある場所から突然malloc(255)がNULLになります。直前のmallocは必ず成功で、場所は一定
HEAP、スタックを2000000(2M)や20000000(20M)で試しましたが、タイミングや場所は変わらないようです
お手上げです。解決策をお知りの方おりませんか?
0338デフォルトの名無しさん2007/01/16(火) 09:15:52
直前のmallocまでのすべての戻り値をここにさらしてごらん
0339デフォルトの名無しさん2007/01/16(火) 09:42:17
直前のmallocの戻り値でいいですか?

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

こんな感じです
0340デフォルトの名無しさん2007/01/16(火) 09:59:04
ヒープ壊してんじゃねえの
0341デフォルトの名無しさん2007/01/16(火) 10:05:25
解決しました!
MultiByteToWideCharを2度使いmallocのサイズを指定していたのですが、wchar単位でNULLが含まれていないため少なくなっていました
成功するほうをmalloc((len+1)*sizeof(wchar_t));で動きました。
ありがとうございました。
0342デフォルトの名無しさん2007/01/16(火) 12:49:33
CStringWじゃ駄目なのか?
0343デフォルトの名無しさん2007/01/16(火) 17:35:59
>>332です。

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

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

この2つを同時にクリアできる良い方法はありませんか?
よろしくお願いします。
0344デフォルトの名無しさん2007/01/16(火) 19:02:17
んー、、、目的の fps が取れてるなら Sleep(0)を呼ぶとかどうだろう、Sleep(1)でもいいが
0345デフォルトの名無しさん2007/01/16(火) 19:27:01
ほっといてやれ
0346デフォルトの名無しさん2007/01/16(火) 21:57:57
>>344
ありがとうございます!!
どうやらすごく基本的なことのようですね。。
0347デフォルトの名無しさん2007/01/18(木) 21:52:58
マルチラインエディットボックスで
水平方向のスクロールバーの位置から
列の何文字目から表示している知りたいのですが
どうすればいいのでしょうか?

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

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