■ VisualC++(MFC限定)相談室 ■
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGMFCに限ったお話をしましょう。
ルールを提案。
Qは高度なものからくだらないものまで何でもOK。
Aは「知ってるつもり君」、「えらそうに解説する人」お断りと
いうことで。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG教えてあげない。
0005デフォルトの名無しさん
NGNG細かいルールとかは別にいらないんじゃない?
といいつつ質問
CStringの文字列の一部を別の文字で置き換えるのってどうやるの?
CString文字列をChar配列にコピーしてからstrncpyして
それをCStringに戻すってのはなんか汚いよね
他にいい方法知ってる人教えてください
0006デフォルトの名無しさん
NGNGCString::GetBufferでポインタを取得して、中をいじったあとCString::ReleaseBuffer。
0007デフォルトの名無しさん
NGNGReleaseBuffer()しないと別のCStringに代入できんし
GetLength()してもsizeは0のままなので要注意だ。
この2つはセットで使うようにしよう。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGいいんだが、どうやってそこにでっかい値を設定するんだ?
SetPos()だとUD_MAXVAL(0x7FFF)までしか設定できんぞゴラァ!
SetPos32()はどこだゴラァ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0010デフォルトの名無しさん
NGNG(゜Д゜)<ハァ?
||
||_
(________Э
||∴
||∵
жж _
0011デフォルトの名無しさん
NGNG>CStringの文字列の一部を別の文字で置き換えるのってどうやるの?
効率悪いかも知れないけどCString::replace()ってのもあり。
0012デフォルトの名無しさん
NGNGVC++をマスターしたつもりでもプログラマとしての実力はなにも変わっていない。
0013デフォルトの名無しさん
NGNGでも楽だからいいじゃん。ね。C++で普通にWINのプログラムする方法知らないとよくわからないわけだし。
0014名無しさん
NGNGうまく扱えず落ちこぼれる人もいるようだけど。
現状、MSの仕事やるんなら、覚えておかないとダメだと思うよ。
0015デフォルトの名無しさん
NGNGキれたくなる. ラジオボタンをビルダーなみに使いやすくしる!
0016>15
NGNGでもエディタがクソ。
0017デフォルトの名無しさん
NGNGstd::stringじゃなくてCStringを使うメリットってなに?
やっぱオーバーヘッドを気にしての事?
0018デフォルトの名無しさん
NGNG結合とか容易だからじゃない?
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG- MFC では CString を引数に取る関数が多い
- MFC の提供するシリアライズ機能が使える
- BSTR との変換やリソースから文字列を読み込むような Win32 固有の機能
が実装されているので、便利。
0021デフォルトの名無しさん
NGNGそうそう。文字列クラスって、単体でどんなにがんばっても、
そのクラスを引数にして、値の受け渡しができないと意味が無いよね。
その点、MFCではWin32ではchar*とバッファサイズで
文字列を受け取る関数をほとんどCStringで受け取れるようにラップ
してあるから便利。
0022デフォルトの名無しさん
NGNGキれたくなる。プッシュボタン型チェックボックスをVC++なみに使いやすくしる!
0023デフォルトの名無しさん
NGNGMFCって自体、ぼろくそに叩かれてこのスレ終了かと思っていたけど
結構順調な滑り出しですな。マターリマターリ
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG>そのクラスを引数にして、値の受け渡しができないと意味が無いよね。
同感同感。過去、コアサービスがBSTRとstd::string、
表示用DLLがMFC-DLLでCString使用といったアプリ書く
ことになったんだが値の受け渡しはけっこう苦労したよう
に記憶している。
変換表みたいなの作ってないと、CString<->BSTRだけでも
あれ?これどうやって渡すんだっけかなんてことになる。
その後、_bstr_tなるマクロを知って、だいぶ楽になった。
0027デフォルトの名無しさん
NGNG>>そのクラスを引数にして、値の受け渡しができないと意味が無いよね。
>同感同感。過去、コアサービスがBSTRとstd::string、
>表示用DLLがMFC-DLLでCString使用といったアプリ書く
>ことになったんだが値の受け渡しはけっこう苦労したよう
それはクラスライブラリというもののの問題点では。
関数ライブラリであれば複数組み合わせても違和感無いが、
クラスライブラリを複数にすると受け渡し時にコーディングが発生っていう。
MFC/ATL/.NETと増やすのやめて欲しい...と思ったが自分は余り関係無い。
0028デフォルトの名無しさん
NGNG=とか<とかオペレータ演算子が使えなくなってしまいました。
機能追加部分以外はCStringとまったく同じ動きにさせたいんだけど
どうやって書けばいいの?
教えてください
0029デフォルトの名無しさん
NGNGまあそれはわかるんだが現実問題として横たわっている。
ATL/COMで作ったNTサービスをWebインターフェースから
使う場合や、そのサービス自身の制御用プログラムを製造する
ときとか。全部ATLでやると開発工数かかったりPG限定されたりでモゴモゴ・・・
0030デフォルトの名無しさん
NGNG話が逸れるけど ATL 使えるプログラマって不足してるの?
0031デフォルトの名無しさん
NGNGNT/2000で常駐型のサービスというだけでATL/COMになるよ。
オレ自身業務系/ネットワーク系問わず監視サービス書いたり
することは少なくない。つーか最近そればっかり。
ただまあ、一般的かというとそうでもないから不足してのか?
と聞かれると判断つかないや。
外注あたってもスキル餅がめったにいないんだもの。
いても人月140+とか。オレの社内単価より高いぞゴラァ。
0032デフォルトの名無しさん
NGNGありがとー!
0033デフォルトの名無しさん
NGNGディスプレイに全角文字を表示させると
例)
pDC->TextOut(0, 0, "文字列");
正しく表示できません。
どうしたらうまくいくんでしょう?
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG003635
NGNGスクロールバーにへPosに入ってる位置情報を設定するにはどうすれば良いのかということです・・・。
003735
NGNG0038名無しさん
NGNG0039名無しさん
NGNG0040名無しさん
NGNG0041名無しさん
NGNG0042名無しさん
NGNG004335
NGNGhttp://www.microsoft.com/japan/support/kb/articles/J020/6/52.htm
とにかくスクロールバーをマスターしたいです。お願いします。教えてください。
0044デフォルトの名無しさん
NGNG004535
NGNG004635
NGNG004735
NGNG004835
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGどうやって書いたらどのように動かないのか、それを示せって。
005251
NGNGあぁ、わかったよ
スクロールレンジが決まってないだけだろ。
0053デフォルトの名無しさん
NGNGDDX = ダイアログデータエクスチェンジ
たとえばint型DDX変数 m_nScroll がある場合
UpdateData(TRUE)を呼ぶことででスクロールバーの値を
m_nScrollに取得できる。
反対に、UpdateData(FALSE)でm_nScrollの値を
スクロールバーに反映できる。
DDX変数には値の上限、下限を設定できるDDVというものもあり
とっても便利&Heart
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGスクロールレンジをセットしてからWM_HSCROLLのメッセージハンドラを
以下のように記述。
void CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
UpdateData(TRUE);
m_str.Format("%d", m_nScroll1);
UpdateData(FALSE);
TRACE("CTestDlg::OnHScroll%d,%x\n", nPos, pScrollBar);
switch(nSBCode){
case SB_THUMBPOSITION:
pScrollBar->SetScrollPos(nPos);
break;
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
005655
NGNGTRACE消し忘れた。
消してね
005755
NGNG余計なもの消してなかった!ごめん!
void CTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
switch(nSBCode){
case SB_THUMBPOSITION:
pScrollBar->SetScrollPos(nPos);
break;
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
005835
NGNG駄目でした。ダイアログに貼り付けられたスクロールバーにレンジが設定できないみたいです。あとSetScrollPosでポジションも指定したのですが、位置が変わりませんでした。
SetScrollRange(IDC_SCROLLBAR1,0,10,TRUE)で、1番目の引数をNULLにするとダイアログの端に自動的にスクロールバーができますよね。
そのときはレンジが設定できました。ポジションも設定できたのですが、動かすと強制終了になってしまいました。
0059デフォルトの名無しさん
NGNGおいおい。
お前の言ってるSetScrollBarてのは、
1.::SetScrollRange
2.CWnd::SetScrollRange
3.CScrollBar::SetScrollRange
のどれだ?
少なくとも俺は第1引数にコントロールIDを取るようなSetScrollRangeの
オーバーロードを見たことがない。
まずAPIなりクラスメンバの使い方をきっちり調べれ!
ここで訊くのはそれからだ。
006035
NGNGコードエディタでSetScrollRangeと入力し出てきた引数の型を適当に判断したのが間違いでした。
それから気づいてOnHScrollの引数の*pScrollPosでRangeを設定したらちゃんとできました。
本当に馬鹿で申し訳ない。どうもありがとうございました。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGMFCでも何でも一緒だと思うが。
# Viewのインスタンスへのポインタの取り方がわからんとかそういうこと?
0063デフォルトの名無しさん
NGNG聞いたことない単語ですが、アクセスしたい変数がるクラスのインスタンスがどこにあるのかわからないということです。
インスタンスの所在が不明なので、その変数を返す関数にもアクセスできないのです。
0064デフォルトの名無しさん
NGNG>聞いたことない単語ですが、
まじですか
0065デフォルトの名無しさん
NGNG具体的に、どういうクラスのインスタンスポインタが欲しいか
言ってください。
GetActiveViewとか、GetActiveDocument、AfxGetMainWnd、
GetDocument()、いろいろあるよ。
0066デフォルトの名無しさん
NGNGアフロX?
0067デフォルトの名無しさん
NGNGリソースエディタで生成したダイアログクラスです。
0068デフォルトの名無しさん
NGNGdlg.m_EDIT1.SetWindowText("逝ってよし");
dlg.m_EDIT2.SetWindowText("オマエモナー");
こういうことか?
ClassWizardでメンバ変数をCStringとかにしてんのかな。
メンバ変数作成するときに「値」じゃなくて「コントロール」
にすれ。つーかサンプルコードも読め。
006965
NGNGCAboutDlg aboutDlg;
aboutDlg.DoModal();
みたいに。
0070デフォルトの名無しさん
NGNGCEdit* ed = GetDigItem(IDC_EDIT1);
ed->SetWindowText("逝ってよし");
でもいいぞ。
0071デフォルトの名無しさん
NGNGベースのアプリつーこと?
0072デフォルトの名無しさん
NGNG概ねこんな感じです。長文です。
まず、MFCアプリWizでダイアログベースのスケルトンを生成しました。
生成されたダイアログはCMyDlgです。
次にCMyDlgのメニューを押したら出てくるダイアログを作りました。
CMyDlg2です。
CMyDlg2にはIDC_STATICではないスタティックテキストがあってそれにCString型変数(m_TextCaption)を追加しました。
このm_TextCaptionを違うダイアログで設定した値に書き換えようと思い、CMyDlg3を作りました。
CMyDlg3にはテキストボックスがあり、それに文字を入れてOKボタンを押すとCMyDlg2のm_TextCaptionに値が代入されるようにしようと思いました。
そこでSetTextCaption関数を作りました。引数はCString型(temp)で、テキストボックスの値が入ります。m_TextCaption=temp;というかんじです。
しかしCMyDlg2の関数へのアクセス方法がわからないので駄目でした。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGCMyDlg2の、どのインスタンスかを指定しないと代入できるわけがない。
CMyDlg3を実体化するときに、テキストを変更したいCMyDlg2のインスタンスを
渡してやればよい。
クラスとインスタンスの違いがわかってないように読める。
007665
NGNGmd2.SetTextCaption(CString("AAA"));
md2.DoModal();
とか、こういう感じでいいと思うのだけど・・。
0077デフォルトの名無しさん
NGNG※CMyDlg2側に書く
CMyDlg3 dlg;
if(dlg.DoModal()==IDOK)
{
m_TextCaption = dlg.m_EDIT1 //CString型で宣言した場合
m_TextCaption.Update();
}
■OKボタンを押してもCMyDlg3を維持してCMyDlg2のメンバを書き換える場合
※CMyDlg3側に書く
CMyDlg2;;OnOK()
{
CMyDlg2* parent = (CMyDlg2*)GetParent();
if(parent)
parent->SetTextCaption(m_EDIT1);
}
0078デフォルトの名無しさん
NGNG正:CMyDlg2::OnOK()
0079デフォルトの名無しさん
NGNGGetLengthだとたまに変な値が帰ってくるのは何故?
特に400byteとか大きな文字列を入れているとき起こりやすいような。
0080デフォルトの名無しさん
NGNGGetLength()がNUL文字までの文字長を返すわけではないからです。
文字列バッファの前方に長さ等を保持しているんですが、詳細は
MFCのソースを読んでください。
008172
NGNGその方法で解決できました。どうもありがとうございました。
0082名無しさん
NGNGマイクロソフトのホームページでダウンロードできますか?
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG買え
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGデフォルトボタンを頃せ。
0087デフォルトの名無しさん
NGNG殺しましたがENTERで終了してしまいます。
0088デフォルトの名無しさん
NGNGvirtual void OnOK();を作ればOK。
ついでにID_OKでダイアログを終了するには
CDialog::OnOK()をよぶ。
0089デフォルトの名無しさん
NGNGできました!ありがとうございました。
0090デフォルトの名無しさん
NGNGVCを使ったプログラミングで、
マウスポインタが画面の端に移動したことを
感知するにはどうすればよいのでしょう?
ご存知の方がいましたら宜しくお願いします。
0091デフォルトの名無しさん
NGNG大麻でもセットしてGetCursorPosで常に監視とか、アイドル時に同様の方法で監視。
それぐらいしか思いつかん。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGどうしたら上手く円を描画できるのでしょうか?
MM_TEXTだと普通に
pDC->Ellipse(0,0,100,100);
で、円がかけるのですが
pDC->SetMapMode(MM_TWIPS);
を上に挿入すると描けなくなってしまうんです。
0094デフォルトの名無しさん
NGNGやったことないけど、WM_MOUSEMOVEでWindowFromPoint()するのはどう?
0095デフォルトの名無しさん
NGNGMM_TWIPSでは下方向はマイナスですよ。
だから
pDC->Ellipse(0, 0, 100, -100);
が正解ですね。
0096デフォルトの名無しさん
NGNGvoid CTestView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
CRect rectWindow;
GetWindowRect(rectWindow);
if(!rectWindow.PtInRect(point)){
TRACE("マウスがウィンドウの外に出ているよ\n");
}
CView::OnMouseMove(nFlags, point);
}
0097デフォルトの名無しさん
NGNGそれちがう
009893
NGNGどうも有り難うございます。おかげで助かりました。
0099デフォルトの名無しさん
NGNG「画面の端」ってスクリーンでの端かウィンドウ単位の端かどっちよ?
0100デフォルトの名無しさん
NGNGGetCapture しといて WM_MOUSEMOVE で座標を確認したらいいよ
0101100
NGNG0102遅レスですが
NGNGThanks!
0103浮気者
NGNG0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNGそれじゃマウスのボタンを押している間しか有効でなかったような。
0106質問です
NGNGダイアログベースで作成したアプリそのものを、
SetWindowRgnをつかって不定形ウィンドウにしたいのですが
どのように適用すればよいでしょうか?
教えてください
0107デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0108デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0109デフォルトの名無しさん
NGNGスレ違い。
ここは MFC 限定。
0110デフォルトの名無しさん
NGNGOnInitDialogのときにやれば?
0111こーすけ
NGNGしてファイルのパスをリストに表示するOCXを作成中です。
ちなみに現在はドラッグ&ドロップしたらメッセージボックスが出るだけです^^;
つまっている点は、オーバーライドした以下の関数
OnDrop(COleDataObject* pDataObject,・・・)で
pDataObjectからどのようにドラッグドロップしたファイルのパスを取り出すか
が今だにわかりません。
おまけにテストコンテナ終了するたびにアプリケーションエラーでるし。。。
泣き入ってきました。
0112sage
NGNGを使用し保存することって簡単に可能なのでしょうか?
フォルダダイアログクラスみたいなの。
0113デフォルトの名無しさん
NGNGKBのQ185572を参照せよ
http://support.microsoft.com/support/kb/articles/Q185/5/72.ASP?LN=JA&SD=SO&FR=0
0114デフォルトの名無しさん
NGNG今度、SDIが二つ横に並ぶようなアプリを作ろうと思ってます。
この実現方法として次のうちのどれが一番よいでしょうか?
1.SDI+CFrameWndの継承クラス
2.SDI+SDI
3.SDIのアプリを2つ作って通信させる
2が一番よいのかもしれませんが、
DOC/VIEWを自前で自装するのって可能ですか?
0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG115に同意。プロセス間通信を使うのが手っ取り早い。
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGSplitterWndを使うのかな???
0119こーすけ
NGNGありがとうございます。無事に取得できました。
これってフォルダをドロップしたときは中身のファイル名が
だーっと出てくるんだ思ったんですが、違うんですね。。。
0120デフォルトの名無しさん
NGNGSDIは
App--FrameWnd--DocTemplate--Doc--View
が全て1対なので、Appに対して別フレームをもうひとつ作るのは無理(たぶん)
できるとしてもかなりマニアックなつくりになるので、
2アプリ作るか、親子関係を確定する設計にするか(1か3)のどちらかにしたほうがいいと思います。
0121114
NGNG今のところ、1の方法で始めています。
SplitterWndとは何でしょう?あとで調べてみます。
0122デフォルトの名無しさん
NGNGCSplitterWndクラス。エクスプローラで、ディレクトリ部分
と中身部分のウィンドウを分けるのに、中に縦棒を付けて
Viewを分割してる。
オレとしては121さんが何をしたいかよくわからないわけだけど・・・。
0123かなりの初心者
NGNGlibpng.lib、zlib.libをC:\Program Files\Microsoft Visual Studio\VC98\Libにコピーし、
png.h、pngconf.h、zlib.h、zconf.hをC:\Program Files\Microsoft Visual Studio\VC98\includeにコピーしました。
しかし、リンカが思った通りに動いてくれません。
pngtestDlg.obj : error LNK2001: 外部シンボル "_png_destroy_write_struct" は未解決です
pngtestDlg.obj : error LNK2001: 外部シンボル "_png_write_end" は未解決です
このようなエラーがでてしまいます。
原因はなにが考えられるでしょうか?
0124デフォルトの名無しさん
NGNG0125うぉ
NGNGプロジェクト→設定→リンクタブ→オブジェクト・ライブラリモジュールにzlib.lib libpng.libを書きこむとリンカが動いてくれました!!
でもLINK : warning LNK4098: defaultlib "LIBCMT" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください
という警告が出ますがこれは自力で解決してみます。
0126123-125
NGNGttp://www.mapletown.net/~nekora/soft/libpng.html
にあるように、静的ランタイムに設定すればいいと思っていたんですが、
やっぱり警告がでます…。
0127デフォルトの名無しさん
NGNG0128126
NGNGttp://www.mapletown.net/~nekora/soft/howto/libpng.html
URL間違い。訂正。
ねこらさんのmakefileでnmakeするとdll使う設定でも警告でません!
でもデバッグだと出ます。
0129sage
NGNGMFCでフォルダ指定ダイアログが簡単に作成できました。
お騒がせしましたです。
最近なんか頭がまわらなくなってきたよーな。。。
0130初心者
NGNGさせたいのですが、どうしたらよいのでしょうか?
教えてください
0131デフォルトの名無しさん
NGNGShell_NotifyIcon() を使用
例えばこれ
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_TaskTray.html
0132石田
NGNGあなたとても親切!!
石田兄弟
0133デフォルトの名無しさん
NGNG色々試したのですが、最終的に下のような変な形になりました。でも強制終了になります。
どうすればよいのでしょうか。
HMENU *m;
CMenu *cm;
*m=GetMenu((HWND)theApp.m_pMainWnd);
cm=(CMenu *)m;
cm->EnableMenuItem(IDR_AIUEO,MF_BYCOMMAND|MF_ENABLED);
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNGHMENU m;
CMenu *cm;
HWND h;
h=(HWND)CHOGEApp::GetMainWnd();
m=GetMenu(h);
cm=CMenu::FromHandle(m);
cm->EnableMenuItem(IDR_SAVEPROJECT,MF_BYCOMMAND|MF_ENABLED);
0136デフォルトの名無しさん
NGNG普通に、CApp 派生クラスか CDocument派生クラスに有効化したい
コマンドのUPDATE_UI ハンドラを書いて、pCmdUI->Enable()する
のはまずいのですか?
0137名無し
NGNG0138135
NGNGメニューの、淡色表示とは別のアイテムを押すと、淡色表示が元に戻るようにしたいのです。
すみません。
0139デフォルトの名無しさん
NGNGUPDATE_UI...じゃなかった、ON_UPDATE_COMMAND_UIハンドラを書く。
『Visual C++ プログラマーガイド』の「メッセージの処理とマッピング」を
参照してください。あとこれは蛇足ですが、僕はちゃんと適切なことを書いて
いますので信じておくのが吉です。
0140fujita
NGNGよくありがちな
・指定したURLにブラウザを立ち上げてジャンプ
・指定したe-mailに送信するためにメールソフトを立ち上げ新規作成
は、どうやったらできるのでしょうか?
おしえてください。よろしくお願いします
0141デフォルトの名無しさん
NGNGShellExecute(NULL,NULL,"http://www.2ch.net",NULL,NULL,SW_SHOWNORMAL);
0142デフォルトの名無しさん
NGNG"mailto:〜@〜"
でいいんだっけ?
0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNG0145143
NGNG0146デフォルトの名無しさん
NGNG「やっぱ」って?
なにがやっぱりなんですか?
0147135
NGNG色々試した結果、WM_COMMANDをマップしてるところへ
CMenu *cm;
cm=GetMenu();
cm->EnableMenuItem(IDR_SAVEPROJECT,MF_ENABLED);
とやるとできました。最期までつきあってもらってどうもありがとうございました。
0148139
NGNG0149fujita(140)
NGNG>141
>142
0150デフォルトの名無しさん
NGNGください
お願いします
0151デフォルトの名無しさん
NGNGありません。お大事に。
0153デフォルトの名無しさん
NGNG無いものは教えられません。
0154デフォルトの名無しさん
NGNG.DLLはC++のクラスがエクスポートされているようで、
dependencywalker2.0で見ると、クラスのコンストラクタやらメンバ関数やら
引数や戻り値が見えました。
でもこれから先どうすればいいのかわかりません。
ふつうのCの関数は、LoadLibraryで.DLLをロードして
GetProcAddressで関数のアドレス調べて、呼ぶというのは知っています。
クラスをnewして、メンバ呼んで…ていうのは、どういう風に書くのでしょうか?
環境はVisualC++6.0です。なんとかかんとかお願いします。
0156デフォルトの名無しさん
NGNGどうにもなりません。手動で何とかしてください。
0157デフォルトの名無しさん
NGNGLoadLibrary後、インラインアセンブラで直接CALLするのでは?
0158デフォルトの名無しさん
NGNGではせめてON_UPDATE_COMMAND_UI_RANGEをクラスウィザードで
追加する方法だけでも教えていただけませんか?
よろしくお願いします。
0159デフォルトの名無しさん
NGNGありません。お大事に。
0160158
NGNG0161デフォルトの名無しさん
NGNG道具を使わずに空を飛ぶ方法を教えてくれるやつは、歴史的に見て詐欺師である
可能性が非常に高い。麻原彰行とかな。
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGフォントに含まれるグリフに送り幅情報を関連づけているのがプロポーショナルフォント。
0164154
NGNGやはり簡単にはできないんですかねぇ…。
0165デフォルトの名無しさん
NGNGダイアログ自身にdeleteさせたいんだけど、
どのタイミングでdeleteさせたら良いですか?
0166デフォルトの名無しさん
NGNG無理です。素直に普通の方法でやってください。
0167デフォルトの名無しさん
NGNGダイアログを消したいときにdeleteしてください
0168デフォルトの名無しさん
NGNG普通のDLLではないんじゃない?拡張DLLかCOM(ActiveX)のDLLかも。
0169デフォルトの名無しさん
NGNG手動でハンドラを追加しましょう。それほど難しい作業じゃないです。
0170デフォルトの名無しさん
NGNG普通ならウインドウクラス構造体の設定で背景を指定すれば
いいのですがMFCだとそれが隠されているのでちょっとわかりません。
お願いします。
0171デフォルトの名無しさん
NGNG別に隠されてないよ。
PreCreateWindowをオーバーロードするとか。
MDIメインフレームの壁紙だったら、OnCreateでm_hWndMDIClientを
サブクラス化。サブクラス化先のウィンドウはCWndから派生させて
メンバ変数として持たせておく。
0172デフォルトの名無しさん
NGNG自己レス
PostNcDestroyでdelete thisすれば良いみたい。
楽チン楽チン
ActiveXコントロールのプロパティとプロパティページのメンバをリンクさせたいのですが
うまくいきません。
コントロール側でm_hogeがあり、DoPropExchangeで永続化(PX_Long)
プロパティページがわで、DoPropExchangeで指定したプロパティ名で
おなじくDoDataExchangeでDDP_Radioで交換しています。
プロパティページ側はラジオボタンです。
0174デフォルトの名無しさん
NGNGヘッダーとインポートライブラリがないと辛いと思う。
LoadLibraryは動的リンクなのでクラスのインスタンスをDLL内で宣言されていないと無理。(ってホントか)
0175デフォルトの名無しさん
NGNG適当な量のメモリを確保する。
dllからクラスのコンストラクタを関数としてGetProcAddressする。
さっき確保したメモリを引数として、コンストラクタを呼ぶ。
(呼び出し既約が異なるなら、アセンブラで実現する)
メンバ関数も、基本的に同様。thisをecxで取るような呼び出し形式で
なければ、第一引数をthisにして呼べばいい。
個人的にはそこまでしたくはないが。
0176デフォルトの名無しさん
NGNGダイアログの中のコントロールへのCWndポインタをGetDlgItemで取得して
(CListBox*)GetDlgItem(IDD_LIST)のようにして使うのは未熟で危険と
書いてありました。ある種の状況ではまったく機能しないとも。
どのようなときに危険なのでしょうか?
0177デフォルトの名無しさん
NGNG返されるポインタが一時的なものである、ということを
理解していれば別に危険ではないよ。おそらくその本は
あまり良くない本だと思う。
0178176
NGNG取得したポインタを保存しといて使うのがよくないと言うことですね。
その本によればAttachを使ってその都度取得するか、DDXを使うべし、
とかいてありますが、なぜだめなのかがちゃんと書いてありませんでした。
この本Microsoft PressのやつなんですがMicrosoftと関係ないの
でしょうか。
0180デフォルトの名無しさん
NGNGわかる方法ってありますか?
0181デフォルトの名無しさん
NGNGCMap<CString,CString&,CPoint,CPoint&>
みたいに使うとだめだしされるのですがどうすればいいのでしょうか?
0182デフォルトの名無しさん
NGNG>>164
できる/できないのレベルでいうと、それは「できます」。
ひとことで言うと、ヘッダと implib をいかにしてでっち上げるか、ということです...。
それでも不可能と思うなら、ハッカーを探しなさい。
0183デフォルトの名無しさん
NGNGそれはできるといえるのだろーか?
自分でヘッダーとかを作ってもまともに動かない気がするが
0184182
NGNGまぁ、確かに「できる」とはいっても、いろいろあるな。
漏れは単にリンクする方法を聞いているのだと思った。
まともに動くかどうかは漏れには関係のないことだが、
その DLL の呼び出し方が、少なくとも機械語レベルで正しいようには、
作ることが「できる」。
それで動かなければ、使い方がおかしい。
0185デフォルトの名無しさん
NGNGただし、方法を見つけるのが限りなく難しいだけ。
0186僕はあなたの分身です
NGNGでもそんなことしているまに自分で同じ機能のプログラムを作った
ほうが早い気が...
0187154
NGNG>>174
インスタンスといえば、BC++のサイトにはクラスを
エクスポートするサンプルとして
newしたポインタを返す関数をエクスポートしていました。
今使いたいdllはそれらしきものがエクスポートされてません。
>>175
試してみます。
>>182-185
アセンブラがいるようだと私には難しいのですね…。
>>186
あるデバイスにアクセスするために使われているdllらしいのですが、
デバイスの仕様が公開されていないのです。
dllをみるとエクスポートされた関数の名前が
「いかにも」で呼び出しさえできれば簡単に使えそうだったので
なんとかしたいなぁと…。
0188>>187
NGNGたぶん自分で作ったほうが早いかと
ヘッダーとlibがないのならあきらめるのが賢明かと
0189182
NGNG仮想メンバ関数を呼び出そうとしたら大変なことになるけど、
non-virtual なメンバ関数を呼び出すくらいなら、
アセンブリ言語の知識が無くても、なんとかなると思うよ。
ひとことで言うと、「ハッキング」ですね(正しい意味で)。
単にエクスポート名のデコレーションを解いてクラスの宣言をでっち上げ、
空っぽのメンバ関数を書いて、同名で同じ顔をしたハリボテの DLL を
作ればいいんだから。
で、その DLL をリンクしたときにできた .lib を使えばいい。
まぁ、だいたい、大筋はこんなもん。
細部で少々、調整する必要が出てくるかも知れないけど。
でも、もし、いま書いたことが「???」なら、
やっぱり近くのハッカーを探した方がいいかも(クラッカーじゃないよ)。
0190デフォルトの名無しさん
NGNGクラスの宣言を使える程度にでっち上げるのが難しいと思われ。
どういう構造かは逆アセンブルしなきゃわかんないだろうし。
0191ななし
NGNG誰も答えないようなので、私がやってみよう。・・・
ああエラーになるね。
CMap< CString, LPCTSTR, CPoint, CPoint& >とするのが正当だろう。
0192デフォルトの名無しさん
NGNGボタンクリック時に多重ループの処理を行うのですが、一度クリックすると、
そのイベントが終了するまで他のイベントを受け付けません。
(キャンセルボタンが別にあるのにクリックしてもOK処理終了するまで反応なし)
//サンプル
void CTest::OnOK()
{
while( 1 ){
// 処理(特定の条件でbreak)
}
}
VBで比較して悪いけど DoEventsの変わりになるような関数。
while( 1 )
// 処理
DoEvents
Wend
0193デフォルトの名無しさん
NGNGスレッドを作れば良いのです
ワーカスレッドあたりをキーワードで捜すとサンプルも出てきます
OnOK
↓
スレッドを作成
↓
OnOKを抜ける
↓
イベント待機状態に戻る
0194182
NGNGインスタンスのサイズなんてテキトーに多めに確保して渡しとけばいいし、
ただメンバ関数を呼び出すだけなら、メンバ変数なんて知らなくていい。
その DLL をリンクしてメンバ関数を呼び出したいだけなら、
でっち上げるのは至極簡単なはず。
でも確かに「使える程度」ってのが、どの程度かにもよるよね。
それ次第では逆アセンブルが必要になる。
ただしそこまでくると完全に「リバースエンジニアリング」になってしまうので、
場合によっては法的な問題が生じることになる。
0195192
NGNG確かにそうすればできると思ってたけど、
手抜きしたかったんですよね。
VBでいうDoEventsの変わりとなりそうなのはないか……。
そもそも VBと比較した時点で駄目ですね。逝ってきます。
何はともあれありがとです〜。
0196デフォルトの名無しさん
NGNGCEditViewの中でSetFontを使うとエラーがでるのですが
0197デフォルトの名無しさん
NGNGBCBには
Application->ProcessMessages();
があるなり
0198デフォルトの名無しさん
NGNG適当にGetMessageをはさむべし
0199154
NGNG本当にありがとうございます!
コンストラクタのアドレスを調べて呼び出して…という方法は
僕にはうまくできませんでした。
次に同じ形のクラスを作ってできあがったインポートライブラリを
使うという方法を試しましたがこれがうまく行きました。
DLLのすべての機能を使うのは引数の構造体とか
知らないとできないのでこれは大変そうですが、とりあえず
欲しい機能の物が作れそうです。
ありがとうございました。
それから、
今までVC++でアセンブラを使うには別のソフトを入れないと
ダメだと思いこんでいました。
MSDN見たらインラインアセンブラは使えると書いてあるじゃないですか。
アホでした。
まーアセンブラは結局私には使えなかったのでアホのままなのですが。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG>VBでいうDoEventsの変わりとなりそうなのはないか
GetMessage,TranslateMessage,DispatchMessageを
DoEventsの代わりに埋め込めばOK!
0202デフォルトの名無しさん
NGNGSendMassge(hWnd, UDM_SETPOS32, (WPARAM)0, (LPARAM)(INT)0x7FFFFFFF);
0203182
NGNGよかったね。 (^o^)/
> 次に同じ形のクラスを作ってできあがったインポートライブラリを
> 使うという方法を試しましたがこれがうまく行きました。
0204デフォルトの名無しさん
NGNG遅すぎねーか?
0207デフォルトの名無しさん
NGNG0208208
NGNG0209デフォルトの名無しさん
NGNG直せば?
0210デフォルトの名無しさん
NGNGMFCのキー入力はわかるのですが、ウェイトの設定方法がよくわからないです。
どなたかスロットゲームのソースを頂けないでしょうか?
スロットゲームのソースを見れば本当によく理解でき、勉強できると思うんです。
本当にめんどくさいこと書いて恐縮なのですが、どうかよろしくお願いします。
0211デフォルトの名無しさん
NGNGここに逝けばわかるぞ(藁
http://piza.2ch.net/test/read.cgi?bbs=tech&key=992508442
0212デフォルトの名無しさん
NGNGCBitmapクラスに取り込む方法を教えてください
(リソースのビットマップからなら楽なんですが)
よろしくお願いします
0213デフォルトの名無しさん
NGNGCreateDIBSectionとか。
0214デフォルトの名無しさん
NGNG>212
0215デフォルトの名無しさん
NGNG自分で解析せーや
0216デフォルトの名無しさん
NGNG自分で解析せーや
0217デフォルトの名無しさん
NGNGQ&A系ボードにそういうこと書くやつって必ずいるんだよな〜
>>215
0218215
NGNG0219デフォルトの名無しさん
NGNG書き方が悪いんだろ、アンサーになってないしな。
>>212
BitmapFileHeader,BitmapInfo,BitmapInfoHeaderをヘルプで調べてみ。
0220↑変なまとめ方
NGNGDIBとして無理やり使用したければ
http://www.microsoft.com/japan/developer/library/vcsample/_sample_mfc_diblook.htm
の ReadDIBFile() をパクッてちょうだい。
0222デフォルトの名無しさん
NGNGCBrush::CreateDIBPatternBrush
が簡単だったり・・・・
0223212です
NGNGあっさりと214のキーワードを調べれば
できました、おさわがせしました
0224デフォルトの名無しさん
NGNGそれで終わらせずDDBやDIBを勉強するように
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGイメージをCBitmapに取り込みたいのですが。
ただし、そのウィンドウ&ブラウザ画面は非表示のままで。
(すなわち、ダイアログウィンドウは不要なのですが、
MS Web Browserオブジェクトを貼り付ける都合上、作成)
何か方法はないでしょうか?
0227デフォルトの名無しさん
NGNGUNISYS(本社)に訊いてみれば?
0228デフォルトの名無しさん
NGNGくどすぎる説明は単なる自慰です
0229デフォルトの名無しさん
NGNG別のスレで IViewObject 経由でやれば、って返事したつもりだけど。
別の人ならごめん。
0230224
NGNG説明じゃなくて指針を与えているだけです。
0231デフォルトの名無しさん
NGNGGetObject で DIBSECTION 取り出すって方法の方が有効じゃないかな。
いや、有効かどうかはしらんが僕の指針はこうだ。ビットマップ本体と
ビットマップヘッダの両方を管理せずに HBITMAP だけで済むし、HBITMAP
としても DIB としても使いやすい。
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGCTypedPtrList<CObject,CStroke*>など)を、あるクラスの
メンバ変数として持ちたい時、宣言はどのようにしたら良いのでしょう?
CTypedPtrListは別クラスで代入されて、それらを値か参照できるよう
持つようにしたいのですが。
参照で持とうとしたのですが、初期化の方法がよくわかりません。
0235デフォルトの名無しさん
NGNGScribble ってなんだっけ、サンプル?
こんな感じではアカンの?
-----------------------------------
#include <afxtempl.h>
class Honya {
public:
Honya(CTypedPtrList<CObject,CStroke*>& list):m_list(list) {}
private:
CTypedPtrList<CObject,CStroke*>& m_list;
};
-----------------------------------
0236234
NGNGありがとうございます。結局ポインタ使ってで何とか
解決しました…が、こんな方法で初期化できるんですね(;゚Д゚)
勉強になります。
あ、Scribbleってのは仰るとおりVC++ チュートリアルにあるサンプルっす。
0237質問です
NGNGたとえば
BG = "BMP/BACK.BMP",20,300
などのような簡単なファイル名や座標をテキストで列挙したものを
バッファに読みこんで、適切にそれを読みこんで
ファイル名部分はCSringのデータ、座標部分はINTデータなどに
セットしたいのです。
まとめると、文字列を解析して、数値変換などするクラス、ライブラリとか
簡単な方法ってあるでしょうか?
(もちろん上記程度なら自分で書くこともできるでしょうが・・)
0238デフォルトの名無しさん
NGNG””で囲まれていると文字列でそれ以外が数字ですか?
そんなクラスやライブラリは聞いたことがないので
捜すより自作した方が早いと思うよ.
0239237です
NGNG感じです
Windowsフォルダにあるiniファイルみたいなのと
同じ感じです
0240デフォルトの名無しさん
NGNGGetPrivateProfileString()でも使え
0241デフォルトの名無しさん
NGNGlex
0242デフォルトの名無しさん
NGNGGetPrivateProfileStringはWin9X系だと64Kの制限がある
で、scanfは使いたくないから、
それくらいだったら自作の方が速いし、
カンマ区切りくらいの文字列解析だったら、標準関数である。
strtokとか。
0243デフォルトの名無しさん
NGNG> GetPrivateProfileStringはWin9X系だと64Kの制限がある
それは間違い。32767 バイトが正しい。
65536 バイトの制限…ってのは、Windows 95 における
ひとつのレジストリキーの大きさでしょ?
0244デフォルトの名無しさん
NGNGCBitmapのLoadImageと同じような感覚で
JPGファイルをファイルから読み込めるクラスないでしょうか?
できれば、CBitmapのサブクラスで、内部的にbmpに変換してくれるのが
ベストです。
どうか教えてください
0245デフォルトの名無しさん
NGNGCBitmap派生をさせて作れば目的達成。
>質問です!!
鬱陶しいからエクスクラメーションマークを連発するな!!
0246デフォルトの名無しさん
NGNGおまえもな!!
0247デフォルトの名無しさん
NGNGおれもな!!!!
0248デフォルトの名無しさん
NGNGんなもんわかってんだよ!!
そのライブラリはないかどーか、きいとんじゃこらぁぁぁ
0249デフォルトの名無しさん
NGNG0250244
NGNG解決法を教えてください
せっぱつまっています、よろしくお願いします
0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNGIJG のソースを使うかすると良いのでは。PNG なら libpng
でも使ってみては?
google ででも検索して入手してね。
もう二度と同じ質問はしないでね。
0253デフォルトの名無しさん
NGNGCViewにTabCtrlを貼り付けようとしています。
TabCtrlのCreate成功してInsertItemも成功しているのに
TagCtrlが表示されません。
なぜでしょう。なにかヒントないでしょうか。
0254デフォルトの名無しさん
NGNG質問させていただきます!!
>>252
0255デフォルトの名無しさん
NGNG別にライブラリ拾ってきても出来るけどさ。
0256デフォルトの名無しさん
NGNGシッ!
みんなわかってて黙ってるんだから言っちゃダメだよ(w
0257デフォルト
NGNGある程度クラスとかは理解してんだけど…
0258OleLoadPicture
NGNG0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG叩かれてるのはただの初心者じゃないということに注意せよ。
初心者なら何をやっても許されるわけではない。
0261デフォルトの名無しさん
NGNG1)API
2)C++
3)MFC
0262デフォルトの名無しさん
NGNGヨシヨシ(ナデナデ、、顔文字が使えない)
>>261
0264254
NGNGAPIの名前だけでいいので教えてください。
0265デフォルトの名無しさん
NGNGただの初心者じゃないってどういうことですか。
0266デフォルトの名無しさん
NGNGもう書いてあるよ。これでわかんなかったらあきらめろよ。
みんなお前から金もらってるわけじゃないんだからさぁ。
0267デフォルトの名無しさん
NGNGマルチポストの超教えてクン
0268デフォルトの名無しさん
NGNG>>244
>>264
サンプルも結構簡単にみつかりますよ
またわからないことがあれば遠慮なくかいてくださいね
0269デフォルトの名無しさん
NGNGお前も死んでくれ。
0270デフォルトの名無しさん
NGNG>>244
>>264
サンプルも結構簡単にみつかりますよ
またわからないことがあれば遠慮なくかいてくださいね
0271デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNG初めて、書きこみします。
GD素人なので、教えて下さい。
GDグラフィックスでイメージは作成できたのですが、それに日本語
文字列をGD::Image::stringで書こうとすると、文字が化けます。
やはり、日本語は、サポートされていないのでしょうか?
何か、他に方法はあるのでしょうか?
どうしても、図形上に日本語を書きたいのです。
よろしく、お願いします。
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGゴールデンウィーク
0276名無し
NGNGこの辺かな。私はもちろん回答を知らない。
0277デフォルトの名無しさん
NGNGジーディーのイメージのストリング
0278女の子
NGNGどうすれば、いいですか?
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG存在しているのかを言え。まずはそれからだ。
0281↑
NGNG0282デフォルトの名無しさん
NGNG>279
0283デフォルトの名無しさん
NGNGALT+PrintScreenじゃないの?
0284デフォルトの名無しさん
NGNGPrintScreenだけでオーケーだよ。
ALT + F4 はそのアプリを終了させます。
0285デフォルトの名無しさん
NGNGALT+PrintScreenの方がいいよ。
0286284
NGNG知らなかった。
あいやー、勉強になったじょー
0287デフォルトの名無しさん
NGNGダイアログでWeb BrowserオブジェクトでIEのWebページを表示できますが、
これを画面に表示しないで、ビットマップイメージを取得する方法
ありますか?
教えてください
0288デフォルトの名無しさん
NGNGエクスプローラが開いているフォルダの絶対パスを
プログラム中で取得する方法ってありますか?
ご存知の方がいましたら宜しくお願いします。
0289デフォルトの名無しさん
NGNGMFCは、メンバ変数をpublicにしている部分がたくさんあるのですが、
MFCの設計者はオブジェクト指向を理解しているのですか?
答えられる人いますか?
0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNG部品や物としてより正確に設計したり使いやすくするために
メンバ変数をpublicにすることはある。
0292デフォルトの名無しさん
NGNGしません。
更新権限&参照権限を分けることができるだけでも有用なので、
常にメンバ変数はprivateがデフォルトです。
0293デフォルトの名無しさん
NGNGクラスライブラリがオブジェクト指向型設計を踏襲する必要はないんじゃないの?
>>289
あれは別にオブジェクト指向で作っているわけじゃないよ。
C++ == OOPではない。
でも、CObjectから派生してるんじゃないかというのは、もっともな意見だ。
0294デフォルトの名無しさん
NGNGんなアホな
0295デフォルトの名無しさん
NGNG継承って知ってるか?
0296デフォルトの名無しさん
NGNGしってます。
メンバアクセスは、自身のメンバに対してもsetter・getter
でアクセスがデフォルトです。
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG理由があるんだがね。
MFCを使い倒せるようになった後で考えてみな。
それらがみんな隠されていたらと思うとぞっとするよ。
APIとMFCが同時に更新されるならともかく。
0300デフォルトの名無しさん
NGNG基底クラスにセットゲット作っとけって言ってんでしょ多分
0301デフォルトの名無しさん
NGNGじゃあCFileとその派生クラスみたいな例だと、派生クラスごとに
セットゲットはおろかハンドルを保存するメンバ変数までprivateに
実装しろってか。
ReadとかWriteとかの操作はAPI上では全く同じなのに、セットゲット
の手段が違うために全部再実装しなきゃいけなくなるねぇ。
0302デフォルトの名無しさん
NGNG俺に怒るな
俺はお前派
0303デフォルトの名無しさん
NGNGあれをどう見れば、オブジェクト指向にみれるんだろう。
やっぱ、CObjectから派生してるから?
0304300,302
NGNGMFCがらみはどうも・・・
0305やばいよやばいよ
NGNG0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNGこーやってだんだんアンチ側になっちまうんだよな
もやめとこ
0308デフォルトの名無しさん
NGNGバグってるよね。MBCSだと。
バグとわかってれば、回避も出来る。
DLLがOSに始めっからはいってるというのは利点だと思うので
有効利用しよう。
ほかには?
0309デフォルトの名無しさん
NGNGあれって何でなの?
よく分からずに使ってる厨坊です・・・
0310デフォルトの名無しさん
NGNG荒れんよ
0312↑
NGNG0313312(ほんとにすまねえ)
NGNG0314デフォルトの名無しさん
NGNGMFCに比べて遙かに上手にカプセル化してるよ。
もっとも、今となってはかなりマイナー化してるが。
0315デフォルトの名無しさん
NGNG何故今マイナー化しているか考えたことはあるか?
OSが先にバージョンアップされたら新しいOSの機能が何一つ
使えなくなるからだ。
隠蔽すれば当然APIに対する自由度は下がる。
0316デフォルトの名無しさん
NGNGMFC設計者のコメントがあって
「最初はOWLみたいな(とは書いてなかったが)抽象的なライブラリに
するつもりだったんだけど〜、実際作ってみたら遅くて使い物になら
なかったし〜、細かい事できなくて不便だったんで〜、それ捨てて
利便性追求型の今のMFCの形で作り直したんだよ〜」
とか書いてあった。まぁ当時のCPUパワーとか考えるとわからなくも
ないが、CPUパワーが十分になった現在では、醜い設計がきわきわに
目立つようになったよなー
0317デフォルトの名無しさん
NGNG言い訳にしか聞こえない
0318デフォルトの名無しさん
NGNG「カプセル化」に反する内容だと思ってます。(一般的には、ですが。)
例えば、代表的なメンバ、m_widthとかを作ったとき、
widthの設定 : m_width = n;
widthの取得 : n = m_width;
という方法でOKなら問題ないのですが、ウインドウとかだと
設定はsetWidth()とかにする必要があるはずです。
「ウインドウの幅を変更する」にはメンバの更新以外にも
様々な処理が必要です。
また、将来的にm_widthと同時に、m_lengthを内部的に
合わせなければならなくなったときとか、メンバを直接
いじるのは非常に困ると思います。
ならばsetWidth()、getWidth()というメソッドでやりとり
するのが正しいし、将来的にも「幅の設定、取得」という
意味での予約ができるため、「カプセル化」というのは
このようにすべきではないか、というのが経験上の鉄則です。
オーバーヘッドが気になるならば、この程度のものは
インライン関数にしてしまえばいいし、メンバはあくまで
内部で処理、確実に意味を持ったアクセスはメソッドに
するべきでしょう。
0319デフォルトの名無しさん
NGNGm_hWndを簡単に書きかえられてしまうというのは盲点でした。
ためしに、ダイアログのOnInitDialog()のなかに、
m_hWnd = NULL;
とやってみましたが、見事に落ちました。
当然、ウィンドウの外部からもこれをやってしまう可能性があるわけですから、
「MFC恐るべし」って感じですね。なるほど、勉強になりました。
0320デフォルトの名無しさん
NGNGjava厨発見
0321デフォルトの名無しさん
NGNG漏れはprivateに入れるべきだと思うよ。
MFCはMFCでいいと思うけど普通publicには入れないでしょう?
0322321
NGNGprivate:
HWND m_hWnd;
protected:
HWND SetHwnd();
public:
HWND GetHwnd() const;
0323デフォルトの名無しさん
NGNGC++で getWidth, setWidth はやめてくれ。
頭おかしいとしか思えないぞ、その名前の付け方。
0324デフォルトの名無しさん
NGNGダイアログでWeb BrowserオブジェクトでIEのWebページを表示できますが、
これを画面に表示しないで、ビットマップイメージを取得する方法
ありますか?
教えてください
0325デフォルトの名無しさん
NGNGそれがマトモなC++プログラマの発想だよねん。
0326デフォルトの名無しさん
NGNGCreateWindowEx2とか…MSならやりかねないし。
0327デフォルトの名無しさん
NGNGMFC ヘッダー ファイルでは、各クラスの中でそれぞれのキーワードが何回
も使われます。たとえば、パブリック メンバ変数とパブリック メンバ関数
は、複数の public キーワードの下に分けて記述されることがあります。
これは、MFC ではアクセス タイプではなく、用途によってメンバ変数とメ
ンバ関数を分類しているからです。MFC は private をできるだけ使用しな
いように設計されているので、処理系に密着した変数や関数であっても、
protected または public が使われるようになっています。通常、クラス
外部からインプリメントの詳細部分へのアクセスは避けることになっていま
すが、MFC では最終的な判断はプログラマに任されています。
0328デフォルトの名無しさん
NGNG0329ちょっとツッコンいいか?
NGNG>HWND SetHwnd();
0330デフォルトの名無しさん
NGNGおぉ、確かに(笑)
0331デフォルトの名無しさん
NGNGデザインパターン(MediatorとかObserverとかになんのか?俺も知らん)の話だと思うが...
C++プログラマっていってもイロイロあんだろ。「僕の中」って言われてもなあ
ま、しょせんMSだからオカシんだろうとは思うけど。。
0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNGCWnd::m_hWndが(言語使用上)書き換え可能であるからといって、書き換えても
いいというわけではない。それはクラスライブラリの用法上の話。
もちろん、クラスライブラリの用法上間違った操作を言語仕様で保護できるに
越したことはないが、言語仕様で保護されないからと言ってクラスライブラリを
せめるのは筋違い。
0336デフォルトの名無しさん
NGNGこの辺とかから続いてるコピペなわけね。
2ch世界だけで知識共有 求めて生きてるヤツ、イタいな。
仕事しな
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNGかな?
0340デフォルトの名無しさん
NGNGそうか。君程度のレベルじゃついてこれなかったか。精進せえよ。
0341デフォルトの名無しさん
NGNGSetWindowLongでHINSTANCE書き換えるのを試したことはあるが
なんも問題なく動いていたのはなぜ?
0342デフォルトの名無しさん
NGNGHINSTANCEってもうほとんど意味無いんじゃなかったっけ?
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG置き換えたいのですが、可能でしょうか?
0345デフォルトの名無しさん
NGNGでも隠蔽されてるかもね、MFCのアプリでそうゆうのって聞いたことない
0346デフォルトの名無しさん
NGNG普通にLeft、Mid、Find、Deleteくらいしか使ってないのに。
何とかならないでしょうか?
0347デフォルトの名無しさん
NGNGどんな使い方してんの?
CStringが原因でメモリリーク起こすなんて聞いたことないぞ。
0348デフォルトの名無しさん
NGNGデバッガが見つけたメモリリークが常にCStringのバッファ辺りなんですよね。
文字列も残ってるし・・・。
ほんとに代入、Left、Mid、しか使ってないし、引数に渡すときも当然LPCSTRか、
MFCのCString参照にしか渡してないし・・・。
0349デフォルトの名無しさん
NGNG他にリークしたオブジェクトが使ってるんだろ?
0350デフォルトの名無しさん
NGNGPurify か BounceChecker を使う
0351デフォルトの名無しさん
NGNGとりあえず、BoundsChecker体験版をDL中。
DL完了が早いか自分で見つけるのが早いか(笑)
0352346
NGNG実行した時点でアプリが終了してました・・・・
OnDestroyWindow()はオーバーライドしてないし、
PostNcDestroy()でも、タイマー殺してるだけだし・・・。
もう少し調べてみますね・・・。
0354デフォルトの名無しさん
NGNG含まれていると正常に動作しないのでしょうか?
よく解らなかったので結局
void RemoveChar( CString& str, CHAR chRemove )
{
LPSTR pszDst = str.GetBuffer( str.GetLength() + 1 );
LPSTR pszSrc;
LPSTR pszNext;
for( pszSrc = pszDst; *pszSrc; pszSrc = pszNext ){
pszNext = CharNext(pszSrc);
if( *pszSrc != chRemove ){
int nCount = pszNext - pszSrc;
for( int i = 0; i < nCount; i++ )
*(pszDst+i) = *(pszSrc+i);
pszDst = CharNext(pszDst);
}
}
*pszDst = '\0';
str.ReleaseBuffer();
}
こんな関数作りました。
逝ってよしでしょうか?
0356354
NGNGようで、その実、2 バイト文字の 2 バイト目をコピーしていないドキュソースですね。
もしかして、これって有名な不具合なのでしょうか?
0357sage
NGNGsore
0358デフォルトの名無しさん
NGNGで、ソレ、どうやって調教したの?
自前で mfc42.dll をビルド?
それともスタティックリンク?
あるいは…(謎)
0360デフォルトの名無しさん
NGNGそのダイアログは別スレッドで動いてると考えていいんですよね?
0361sage
NGNG調査してない。誰かつっこんでくれ
0362デフォルトの名無しさん
NGNGよくない
0363デフォルトの名無しさん
NGNGやっぱそうですか・・・・・
分かりました。
0364354
NGNG自前で CString::Remove だけを実装して、MFC より先にリンクしちゃう
っていうのもアリですか?
0365358
NGNGあっ、そうか。
CString::Remove を直接、調教したわけじゃ、ないんだ。
>>364
なるほどね、それだけ先にスタティックにリンクしちゃって、
のこりは mfc42.dll へ Go! なワケね。
CString::Remove が virtual なら、話は早かったんだけどね...。
0366デフォルトの名無しさん
NGNGCBitmapに付いて教えてください。
今、チラツキを防止する為にダブルバッファにしています。
で、OnDraw時にpDCにBitBltしてバッファの情報を書いているんですが、
ここで質問があります。
画面はフルカラーです。でもバッファを作るときにコンパチのバッファを作ると
容量のでっかいバッファになっちゃうんで、256色でバッファを作りたいです。
でも、表示すると、真っ白な画面が出てきちゃいます。
どうすればよいのでしょうか??
とりあえず以下のようにやってます。
・メンバ変数
CDC m_bufferDC;
CBitmap m_bufferBitmap;
・コンパチ作成
m_bufferDC.CreateCompatibleDC(GetDC());
m_bufferBitmap.CreateBitmap(幅, 高さ, 1, 8, NULL);
m_bufferDC.SelectObject(&m_bufferBitmap);
とまぁ、こんな感じでバッファを作ってます。
で、OnDraw時に
pDC->BitBlt(0,0,幅,高さ,m_bufferDC,0,0,SRCCOPY);
0367デフォルトの名無しさん
NGNGパレットは DC が持つので、m_bufferDC とやらに適切なパレットを
選択しておくこと。
0368デフォルトの名無しさん
NGNGご伝授ありがとうございます。
がしかし、やっぱり私はあほなようです。できませんでした。
ご伝授いただいたように、以下のようにやってみました。
・バッファ画面の作成
//メンバ変数
CDC m_bufferDC;
CBitmap m_bufferBitmap;
CPalette m_bufferPalette;
//パレット作成
m_bufferPalette.CreateHalftonePalette(GetDC());
//DC作成
m_bufferDC.CreateCompatibleDC(GetDC());
m_bufferDC.SelectPalette(&m_bufferPalette);
m_bufferDC.RealizePalette();
//Bitmap作成
m_bufferBitmap.CreateBitmap(幅, 高さ, 1, 8, NULL);
//ビットマップの設定
m_bufferDC.SelectObject(&m_bufferBitmap);
OnDraw時に
pDC->BitBlt(0,0,幅,高さ,m_bufferDC,0,0,SRCCOPY);
上記のようにコーディングしました。
結果としては、真っ白な画面になってしまいます。
m_bufferDC.SelectObject(&m_bufferBitmap)
の戻り値が0x0なので、SelectObjectに失敗しているようなのですが、
原因がまったくわかりません。
お願いいたします。
0369デフォルトの名無しさん
NGNGどうも分かりません。
とりあえずヘルプに載っていたレポートの印刷方法は理解できましたが,
画像ファイル出力となると,一体どのメソッドを使えばいいやら。
オススメの参考文献とか URL とか,ご存知ないでしょうか?
環境:
Windows2000,VC++6.0,Crystal Reports ver.8
0370369
NGNG「そもそも Crystal Reports は画像を出力しないんじゃ?」
という気がしてきました。
私は逝ってもよい存在なのでしょうか?
0371デフォルトの名無しさん
NGNGCrustalReports使ってる人はじめてみたよ。
びくーり。
で、なにができんの?それ。
0372369
NGNG私も今回の仕事で初めて"Crystal Reports"てなモノを扱うんで,何が何だか・・
どうやら DB と連携して,綺麗なレポートを仕上げてくれるようです。
VB には標準でバンドルされている(?)ということで,使う人はよく使うとか?
0373デフォルトの名無しさん
NGNGAccessのレポートみたいなもんか?
さんくす
0374369
NGNGところで >>369 ていうか,むしろ私の興味はすでに >>370 に移っちゃったんだけど
どなたかご存知ないっすかねぇ・・・
0375デフォルトの名無しさん
NGNGこのとき、OnInitDialog関数でAddStringしてるんですけど、
表示に反映されません。
リストボックスで試したところ、問題なく表示されます。
これはどういったことが考えられるでしょうか。
0376素人
NGNGDDXとかDDYとかじゃないのかな?
0377デフォルトの名無しさん
NGNG原因分かったよ。コンボボックスの高さ方向のサイズが十分じゃなかったのな。
コンボボックスって、▼を押すと下にリストボックスみたいのが出るじゃん。
そのスペースを考えて高さ設定をしなけりゃならなかったのさ。
それにしても、リソースエディタ不親切すぎんぞゴルァ!!!
0378デフォルトの名無しさん
NGNGあ〜〜、わかるわかる
高さ方向のサイズ変更ってわかりにくいよね。
前はやり方わからんかったからいちいち新しいの作りなおしてた(爆)
0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNGコンボボックソのサイズ変更の悩み(表示されない(w))
は初心者の95%が経験しています。
0382デフォルトの名無しさん
NGNGWebページを表示しますが、「カチ」とクリック音が鳴ってしまいます。
これをオフにする方法はないでしょうか?
どうか教えてください
追伸:某板では誰もわからなかったので、時間をおいてのガイシュツです
0383デフォルトの名無しさん
NGNG答えが返ってこなかったくらいで他人を無知呼ばわりするDQNには教えません
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNG同じ位置に配置したいのですが、
優先順位はどうやって変更できるのですか?
たとえば、3つコントロールがあってすべて可視、
常に最前面に表示されるコントロールを調整したいのです
おしえてください
0386ななし
NGNG同じ位置に置いたらごちゃごちゃにならんかな?
とりあえず、".rc"ファイルをテキストエディタでいじるとか。
0387名無し
NGNG0388デフォルトの名無しさん
NGNG必要になるってことじゃないの?
0389デフォルトの名無しさん
NGNGOnInitDialog内で、ShowWindowしてもいいと思う?
一応逝けてるんだけど・・・。
0390デフォルトの名無しさん
NGNGいいよ
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNGどう知れば言いのでしょうか。
シリアライズするデータが増えた場合、加古のファイルも
読めないとまずいです。
0393デフォルトの名無しさん
NGNGデータ構造なんか自分で好きなようにしろ。
0394デフォルトの名無しさん
NGNG書籍ってなんかないですかねぇ?
本やいろいろ回っているんだけどなかなか
いいのが見つからないんですよ。
0395デフォルトの名無しさん
NGNGCArchive::GetObjectSchema 使っとけ。
0396デフォルト名無し
NGNG0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG0399名無しサソ
NGNGDC取得してウィンドウモードで描画する分には問題なくて、フルスクリーン
モードにした瞬間プライオリティの設定に失敗して異常終了します。
MFCのフレームワークに何か設定する必要があるのか、それとも仕様上無理
なのか、どっちなのかがちょっと分からないです。
0400デフォルトの名無しさん
NGNGヘルプ->バージョン情報にアプリケーションを作った
製作元のアイコンがあって,そのアイコンをクリックすると
ブラウザが起ちあがってその製作元のホームページが
表示されるというものを作りたいのです.
アイコンのBN_CLICKEDのイベントで何かをやればいいのかと
思うのですが,どなたかご存知の方いらっしゃいませんでしょうか?
初歩的な質問で申し訳ありません.
よろしくお願いします.
0401デフォルトの名無しさん
NGNGDirectX5ゲームプログラミングって本ではMFCで
組んでるよ。
買ったのにぜんぜん読んでない(^^;
0402デフォルトの名無しさん
NGNGShellExecute(URL)
でいけるはず。
0403402
NGNGFileにURL指定して、後は適当に。
0404400
NGNG回答ありがとうございます.
こんな感じでよろしいのでしょうか?
ShellExecute( pParent->m_hWnd, "open", "http://〜〜", "", "", SW_SHOW ) ;
とりあえずはうまく行っています.
0405デフォルトの名無しさん
NGNGWebページを表示しますが、「カチ」とクリック音が鳴ってしまいます。
これをオフにする方法はないでしょうか?
かなり何日もなやんでいてそれでもわかりません
どうか教えてください
0406名無しサソ
NGNGレスどうもです。本屋にあったら立ち読みしてみます(笑)
出来るのは確かみたいですね。GUIのためのフレームワークを
フルスクリーンで使う事ほど馬鹿な事はありませんが・・・
やっぱりスピードを考えたらAPIで素から組んだ方が軽いですね(苦笑)
0407392
NGNGそれだ!ありがトン
>405
コントロールパネルのサウンドを開いて、”音を鳴らす場面”
てのを見ると、ナビゲーション開始とか完了とかの設定がある
から、ここに設定されてるんじゃない?
0408405
NGNGほかの音を鳴らしたいので、クリック音は鳴らしたくないんです
うーーん、ここ2,3週間悩んでいます
0409デフォルトの名無しさん
NGNG個別に設定できると思うがどうか?
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGそういうレベルじゃないのか?
無駄に音鳴らされるっつうのはすごく厭なソフトだけど
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG大きめ(640×480)のウィンドウで安定したアニメーションを
させたいのですが、
やはりFPSを安定させるには、普通のタイマーよりマルチメディアタイマー
使うしかないのでしょうか?
あと、画面の更新でInvariadateRect使っているのですが、ほかに
よい方法はあるでしょうか?
もちろん全画面表示ではないですが、DirectX使ったほうが安定
しますかね?
教えてください
0414質問です!
NGNGならないでしょうか?あと、中身を塗りつぶさない方法も教えてください!
四角形だったらCPenクラス使って線引くだけでいいんだけど、円は
かなり厳しい!まさか円の方程式使って一点一点描画するわけにもいかないし。
まだVisual C++使い始めて半年の厨房ですがよろしくお願いします。m(__)m
0415デフォルトの名無しさん
NGNG0416競れ損
NGNG通常のタイマー(OnTimerね)でやると描画速度は安定しても、
正確なFPS値が出ない。
例えばタイマー間隔を1mm/sにして100FPSにしようとしても
環境によって異なったFPSが出てしまう。
ただ、無茶なFPS値を出そうとしてもハングったりしないという利点があるかも。
0417デフォルトの名無しさん
NGNGアイテムを選択状態(青い箱で囲まれる)にするには
どのようにすればいいのでしょうか?
SetHotItem(), SetSelectionMark(),
を使ってみましたがだめでした.
また,LVN_ITEMCHANGEDのイベントは起こるのでしょうか?
よろしくお願いします.
0418競れ損
NGNGSetItemStateを使うべきべき。
0419デフォルトの名無しさん
NGNG回答どうもです.
m_ctlErrorList.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED,
LVIS_SELECTED | LVIS_FOCUSED ) ;
m_ctlErrorList.SetFocus() ;
こんな感じで書いたらうまく行きました.
けど,“ホットアイテム”とは何ですか?
“選択状態にあるアイテム”と思っていたのですが....
0420デフォルトの名無しさん
NGNGMFC AppWizardで作ったアプリって、あるファイルを開いている状態で、
もう一度同じファイルをOpenさせると、何も起きませんよね。
既に開いているからってことでしょうが。
でも、既に開いているファイルを指定しても、もう一度Open処理
(Serialize, OnInitialUpdateなど)を
通したいアプリを作っているのですが、その場合
どの辺りをいじるのが正統でしょうか?
(MatchDocTypeをオーバーライドとか?)
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGやはりマルチメディアタイマーがベストでしょうか?
(DirectXを用いない場合)
ただ、InvaridateRectって、即座に画面更新が反映しないような気が
するのですが。。。
0423デフォルトの名無しさん
NGNGコンパイラされた後のファイルから
ソースを見ることって出来ますか?
参考にしたいプログラムがあったので・・・
危ない話すんません。。
0424デフォルトの名無しさん
NGNGシェル石油のことですか?
スレチガイですよ。
0425デフォルトの名無しさん
NGNG失せろマルチポスト野郎。
0426競れ損
NGNGアイテム(コントロール)にマウスカーソルを持っていったとき
(選択してなくてもよい)なんらかのアクションを起こすアイテムを
ホットアイテムといいます。
例えばツールバーのフラットボタンが良い例。
>422
DirectXを使用する場合でもマルチメディアタイマーが良いかと。
0427デフォルトの名無しさん
NGNG開きなおす
というメニューを作るのではダメですか?
0428デフォルトの名無しさん
NGNGCanselとOKボタンを消してアプリケーションを開発しているのですが
キーボード側の処理が残っていて、ESC、Enterを押すと、終了してしまいます
これを無効にする方法を教えてください
お願いします
0429デフォルトの名無しさん
NGNGOnCloseでEndDialogを呼ぶべし。
0430デフォルトの名無しさん
NGNGなるほどありがとうございます
ところで独自のキー操作を追加したくて
OnKeyDownをオーバーライドしているのですが、
何をおしてもそこに飛びません(ブレークポイントを張って
チェックしてみたのですが)
何かミスっていますか?
0431デフォルトの名無しさん
NGNGPreTranslateMessage をオーバーライドする。
0432デフォルトの名無しさん
NGNGアンチエイリアスをかけた(要するにα合成する)
ウィンドウを表示させたいのですが、よい方法ありますか?
イメージの合成方法はわかります
問題は、ドラッグする際に、自分自身のウィンドウ(パネル)より
下のデスクトップイメージをどうやって取得すればよいか?
というところです・・・
どうかご教授ください
0433デフォルトの名無しさん
NGNGありません。あきらめてください。
0434420
NGNG>開きなおす
>というメニューを作るのではダメですか?
それだと、FileメニューのOpenに仕込まれている色々便利な機能
(SetModifiedFlagのチェックとか、Serializeとか、FrameTitleの設定とか)
が使えないので、できれば、それらはそのまま使いたいのですが。
CSingleDocTemplateを継承したクラスを作る、という方法は思いついたのですが
もっと簡単な方法があるような気がして...。
0435デフォルトの名無しさん
NGNGWindows2000 なら Layered Window 使えばできる。
MFC とは関係ないので sage
0436無能な姦理人@Shiri-Q
NGNG□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
続きはコチラです
http://www.geocities.com/entry_k/main/main01.html
0437デフォルトの名無しさん
NGNGCDoc::OnReOpen()
{
OnCloseDocument();
OnOpenDocument();
}
何か問題でも?
0438デフォルトの名無しさん
NGNG0439434
NGNGOnOpenDocument()のDefaultインプリメントは、引数に
LPCTSTR lpszPathName を必要とします。
自分で ReOpenメニューを作ると、ここには Pathnameが渡されてきませんので、
これでは ちょっと...。
0440デフォルトの名無しさん
NGNGバカか?
OnCloseDocument(GetPathName());
何か問題でも?
0441440
NGNGOnOpenDocument(GetPathName());
逝ってくる。
0442440
NGNGCDoc::OnReOpen()
{
CString strPathName =GetPathName();
OnCloseDocument();
OnOpenDocument(strPathName);
}
以上。
0443デフォルトの名無しさん
NGNGその程度のバグは残しといてやれよ(藁
0444439
NGNGこのコードだと、Access Violationになりますねぇ。
OnCloseDocument();で、自分自身が deleteされて、
その後、まだ自分が居るつもりで OnOpenDocument()するからですねぇ。
やっぱ、FrameWorkに割り込まないとダメなんじゃ?
0445デフォルトの名無しさん
NGNGVC++ 1.0で SDIのプログラムを作っていたころのメモを見てたら
↓こんなのが出てきました。自分でも何をやっているのかようわからん。
//CWinApp::OpenDocumentFile( )をオーバーライドし、
//いったん、メインウインドウにID_FILE_NEWメッセージを送る
CDocument* CMyApp::OpenDocumentFile(LPCSTR lpszFileName)
{
if(m_pMainWnd){
m_pMainWnd->SendMessage(WM_COMMAND,ID_FILE_NEW);
}
return CWinApp::OpenDocumentFile(lpszFileName);
}
今のVC++で通用するのかどうか未確認。ごめん。
ID_FILE_NEWを送ったら、SDIだと今開いているファイルは閉じられる
のでしたっけ。
0446420=434=439
NGNGおお、これは良いですねぇ。
Recent Fileにも効きますし。なるほど〜。いいなぁ。
Goodです。
0447デフォルトの名無しさん
NGNG同じだったら何もしないのはCWinAppの所業なんだ!
つーわけで、
CDoc::OnReOpen()
{
CString strPathName =GetPathName();
OnOpenDocument(strPathName);
}
終了!
0449420
NGNGあ、なるほどぉ。Close要らないんだ。そーかー。
でも、これだとModifiedFlagが立ってても、有無を言わさず
ReOpenしちゃうわけですね。
455の CMyApp::OpenDocumentFileをいじる方法だと、
Modifiedだと、Saveするかどうか聞いてきます。
どっちが良いかは、
うーん...アプリの要求仕様しだいだなぁ。
ユーザがOpenで、何が起きると期待するか、という問題で、
たとえば、Editorアプリなんかで、編集結果を廃棄してReopenなら、
OnReOpenを作ればいいし、
ファイル送信ツールなんかで、Openしたら即それをどこかへ送信する
みたいなやつは、RecentFileが使えた方が便利ですよね。
今回の私のアプリは、後者のほうなんで、455さんの方がBetterでした。
0450440=447
NGNGmodifiedくらい自分で引っかけれ。
ていうか、
>ファイル送信ツールなんかで、Openしたら即それをどこかへ送信する
だったら「保存して送信」ハンドラを作るのが適当かと。
0451420
NGNG>だったら「保存して送信」ハンドラを作るのが適当かと。
うーん、アプリの使い方として、Modifyする場合が多いときは、
その方が良いのでしょうが、
ファイルは加工せずにそのまま送信する、という場合は
Openしたらすぐ送信した方が、ユーザにとっては便利でしょ。
0452デフォルトの名無しさん
NGNGfool proofは?
何をどこへ送信するかによるが間違って開いてもそれだけで問答無用に
送信されるのは怖くないか?
0453デフォルトの名無しさん
NGNG0454ゆうぼん
NGNGCBitmap myBit; (グローバル)
myBit.DeleteObject(); (初期化)
memDC.DeleteDC(); (初期化)
memDC.CreateCompatibleDC(&dc);
myBit.CreateCompatibleBitmap(&memDC,rx,ry); (クライアント領域の描画をmyBitに取り込む)
memDC.SelectObject(&myBit);
ってコーディングして、メモリ上のデバイスコンテキストにCBrushなどで描画して
dc.BitBlt(0,0,rx,ry,&memDC,0,0,SRCAND);
でクライアント領域に表示させたいんですけど、memDCにちゃんと
データが入ってないらしく、テレビの白黒みたいに表示されるんです。
クライアント領域に描画してある上からまたAND演算で描画
したいんですけど、どうしたらいいのでしょうか?
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGCreateCompatibleBitmap(pDC, rx, ry); // pDC はクライアント領域の DC
に直してみな。
それから、DeleteObject() と DeleteDC() は不要。
0457デフォルトの名無しさん
NGNGこれらのウィンドウのバーの部分にメニューをつける方法を
知りたいです。メタセコイアとかマヤみたいに。
この方法をご存知の方、よければ教えてください。
0458デフォルトの名無しさん
NGNG俺は昔、CControlBarを派生させて自分でメニューバー実装してた。
CView::OnCreateでCControlBar派生クラスをcreateして、各Viewの
クライアント領域にドッキングさせるがよろし。
0459デフォルトの名無しさん
NGNG落ちるような状態になってしまうんですが、これについてなんか
知っている方はいますか。
自アプリだけじゃなくて、IEとかも落ちる。
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG背面にあった自分のアプリを、前面にもってきてアクティブにした場合には、
どういったイベントを処理してやればよいのでしょうか?
ClassWizardで簡単に追加できますか?
教えてください
0462デフォルトの名無しさん
NGNG再描画が必要な部分のみが処理されるのでチラツキが減ります。
0463デフォルトの名無しさん
NGNGWM_ACTIVATE (OnActivate)
0464457
NGNGどうもありがとうございます。早速CControlBar関係を調べて
実装してみたいと思います。ありがとございました。
0465デフォルトの名無しさん
NGNGMFCのフレームワークは極小間隔のタイマーをまわして、マウス位置を
取得しています(ツールチップのため。またメニューのオンオフも、この
タイミングで操作している)WM_MOUSEMOVE 等ではなくタイマー使用
もちろんCFrameWnd内に完全カプセル化されています。
CCmdUIがらみでなんか不具合があるんでしょう。
0466デフォルトの名無しさん
NGNGできないのでしょうか?ブレークポイントを張っても
どうやら通過していないようなんですが
どなたかご教授ください
0467Poh
NGNGReleaseとDebugとで、症状かわったりしないかい?
Debugでビルドしたやつを、他のPC(*D.DLLなし)に持っていって、
そんなことが起こったことあるような。
0468Poh
NGNGAppWizで作ったMFCベースのやつ
StringTableのIDR_XXXTYPEと、CFileDialogに与えられる
引数との関係教えてください。どれが、どれ?
0469デフォルトの名無しさん
NGNG0470Poh
NGNG私に言ってる?
Wizが裏でやっていること、自動で対応付けられていることについての、
情報がどこにあるのか分からないです。
どこ?
0471デフォルトの名無しさん
NGNGが参考になるでしょう。
0472Poh
NGNGお!ありがとう。助かった。MFCのソースを眺めて、ちょうどCDocTemplateに
たどり着いたところだった。
0473競れ損
NGNGメインフレームウィンドウを作っているわけではないので
ダイアログベースではPreCreateWindowは呼ばれない。
0474デフォルトの名無しさん
NGNG関数名忘れたがダイアログの場合表示前に呼ばれる関数あるよ
そっちに実装しなされ
ただしツリービューのチェックボックスの初期化以外
0475デフォルトの名無しさん
NGNGMSDNで以前見かけたんだけどみつかんない
(Win95がどうのこうのってやつ)
誰かこの記事のってる場所しりません?
0476デフォルトの名無しさん
NGNGOnInitDialog か。
0477デフォルトの名無しさん
NGNG>>476
PreCreateWindowの引数で受け取るCREATESTRUCT& cs
を書き換えてウィンドウの属性を変更したいのです。
OnInitDialog内ではそういうのってできないですよね?
0478デフォルトの名無しさん
NGNGリソース書き換えるのは?
0479477
NGNGまとめなおすと、ダイアログでON_PAINT画面更新がかかる場合に
アニメーションをしたいので、余計な描画(消去)がかからないように
バックグラウンドをNULLにしたいのです
0480デフォルトの名無しさん
NGNG0482477
NGNG悪かったな!
0483デフォルトの名無しさん
NGNG黙れ馬鹿
0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNG俺も偽者で酷い目にあった。
0486料理ショー
NGNG0487デフォルトの名無しさん
NGNG手軽なライブラリを教えてください
よろしくお願いします
0488デフォルトの名無しさん
NGNGPNGで検索しろ。腐るほどでてくる
0489デフォルトの名無しさん
NGNGhttp://www.libpng.org/pub/png/pngaptk.html
ここから C++ とあるものを使え。
0490デフォルトの名無しさん
NGNGON_PAINTのなかの再描画を直接行うことができればベストなのですが・・・
何が目的かというと、
InvalidateRectを呼んでしまうと、システムのどこかに更新領域の
キューが残ってしまうようで、その下にコントロールオブジェクトが
あると、勝手に更新されてチラツクので、それを防ぎたいのです。
よい方法があれば教えてください
0491デフォルトの名無しさん
NGNGGetDC で DC とってきて普通に描けば描ける。
0492デフォルトの名無しさん
NGNG太学生
19 名前:くらげ 投稿日:2001/08/06(月) 01:27
犬学生
20 名前:KSM ★ 投稿日:2001/08/06(月) 01:28
大学生
21 名前:首領クサ夫 ★ 投稿日:2001/08/06(月) 01:29
中学生
22 名前:名無しさん 投稿日:2001/08/06(月) 01:44
大学生
23 名前:尻尾だけトラ猫 投稿日:2001/08/06(月) 01:46
大学玉
24 名前:尻尾だけトラ猫 投稿日:2001/08/06(月) 01:51
大往生
0494デフォルトの名無しさん
NGNGWS_CLIPCHILDRENがついていなければ、ね。
でもそれは WM_PAINT 時も同じだよ。
せっかく教えてあげても、「ですよね?」なんて気取った問い返しを
根拠も無くしてくる人にはもうつきあってあげない
↑
(勝手に返事しといて高飛車ですまんけどさ)
0495493
NGNG>>494
素人の素朴な疑問でした。言い回しが悪かったのかもしれませんが
誤解なさらないでください
気をわるくなされたのでしたら、今後きをつけます
すいませんでした
0496デフォルトの名無しさん
NGNGゴメンですんだら警察いらんのじゃー
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNG解決したのか?
0499Poh
NGNG行番号で指定して選択したいのです。
LineIndex()で行から文字数に変換してSetSel()で
選択できるじゃん。と思ったら、LineIndexの戻り値がintなの。ちょっと足りない。
longあれば十分なんだけど、どしたらいい?
0500デフォルトの名無しさん
NGNG0501Poh
NGNGCEditで足りなくなったので、CRichEditに書き直している最中。
SetSelやGetSelがlongになっていたので、あぁそうかと思ってしまったのだよ。
CEditの限界はintよりもっと小さなとこにあったのね。
はずかしいけど、助かっちゃった。。
0502Poh
NGNGそんなドキュメントどっかにある?
98以降NT4以降について知りたい。
0503デフォルトの名無しさん
NGNGやっぱり派生クラス作って実装しないと無理??
0504デフォルトの名無しさん
NGNGダイアログオープンするように変えられないの?
0505デフォルトの名無しさん
NGNGそうかなぁ?
2個しか項目が無いからむしろインプレイスのが
楽そうなんだよね。
もともとは入力ダイアログにしてたけど・・・
0506503=505
NGNG0507デフォルトの名無しさん
NGNG作成したいのですが、わかりやすい書籍やURLを教えてください
ちなみにプログラムはEXEとデータファイルのごくシンプルな構成です。
利用規約の表示と確認、スタートメニュー&デスクトップに配置などが
できれば大丈夫なレベルです。
よろしくおねがいします
0508デフォルトの名無しさん
NGNGとっととウィザード使えば済む話と思われ
そんなにシンプルなインストーラなら、LZH の自己解凍書庫でも作れると思われ
0509デフォルトの名無しさん
NGNG仕様はほぼ満たすことができたんですが,現在一つ困ってることがあります。
メニュー「Window->ObjectList」でモードレスダイアログの
オブジェクトリストを開くようにしているのですが、
このオブジェクトリストがビューアを立ち上げたときに
一瞬チラッと表示されてしまうんです。(メニューから
オブジェクトリストは呼び出すことはできます)
すごく不恰好なのでこのモードレスダイアログを起動時に
一瞬表示しないようにしたいのですが解決法が分からず苦しんでます。
大まかな実装の流れはビューアクラスCOpenGLViewのメンバとして
オブジェクトリストクラスのポインタ CObjectList* pObjectList;
をプロテクトメンバにしてコンストラクタで↓のように初期化しています。
COpenGLView::COpenGLView
{
// TODO: この場所に構築用のコードを追加してください。
pObjectList = new CObjectList;
...
モードレスダイアログの作成方法は以下のアドレスのページを参照しました。
www2s.biglobe.ne.jp/~maekawa/dev/vc/tips/tips102.htm
COpenGLViewのコンストラクタ内のpObjectListの生成部分を
コメントアウトして実行しようとすると「ハンドルされていない例外は
Viewer.exe(MFC42D.DLL)内にあります」というエラーが出てしまいます。
長々と書いて申し訳ないんですが,どなたか知恵を貸してくれないでしょうか?
よろしくお願いします。
0510509
NGNGメンバをStaticにしてやるとうまくいきました。
お騒がせいたしました。
0511デフォルトの名無しさん
NGNG初心者にもわかりやすいガイド本(またはURL)ご存知でしたら
教えてください
0512デフォルトの名無しさん
NGNGアスキーから本が出てるから、アスキーのサイトで検索してください。
(何年か前の本だから使えないかも知れないけど)
0513名無し
NGNGVC++6.0pro SP5当ててあります
CString buf;
buf = "aa";
buf.Delete(0, 4); //仕様だとbuf==""だと思うんだが、それ以前に落ちる
0514513
NGNGmemcpyのcountが負になることによって起きるようです。
0515デフォルトの名無しさん
NGNG0516sage
NGNGage
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG作成したいのですが、
VCに付属のInstallShieldがよくわからなくて
Visual Studio Installerを導入することにしました
ファイル・フォルダ類は無事インストールできるのですが
デスクトップ・スタートメニューに配置する
ショートカットファイルがうまく機能しません。
インストール後に、ショートカットファイルのリンク先をチェック
すると、どうもディレクトリ階層が消えていて
実行ファイルのみになってしまいます
なにかミスしているのでしょうか
ご教授ください
それってMFCなのでしょうか。クラスは?
0520デフォルトの名無しさん
NGNGスレ立てて
しかも回答でてるのにまだマルチポストですか?
いいかげん自分で調べたら?
0521名無しさん
NGNG0522
NGNG0523デフォルトの名無しさん
NGNGMFCでプログラムすると、デバッグでMFCのソースコードまで
追いかける羽目になることが多いように思う。
生APIでのプログラムをちょっとだけでもかじるのと、そうで
ないのとで、MFCのソースコードの追いかけやすさは変わるん
じゃないだろうか。
0524ななーし
NGNG0525デフォルトの名無しさん
NGNGいきなりMFCから入ったけど死んだ。
APIの知識、というかWindowsのプログラムを知っとかないと
わかんないとおもう
0526名無し
NGNGについて分かりやすく説明してある本とかありますでしょうか?
できれば、実例がたくさん載ってるといいのですが、、、
一応、C++はわかるので、MFCについて詳しく載ってる本がいいです。
何かあれば教えてください。
0527pf
NGNG0528デフォルトの名無しさん
NGNGについて分かりやすく説明してある本とかありますでしょうか?
MFCのソース
0529名無し
NGNGそんないじわるなこといわないでください。
教えてください。
0532デフォルトの名無しさん
NGNGhttp://www.eshopping.ne.jp/bks.svl?start&CID=BKS503&pcd=30609355&introd_id=Xmo46Wk9o3649896i81Gi1Xm66G53i6o&pg_from=u&shelf_id=03&location_id=01
どうだろ。安いし。内容はまともだが、あなたに合うかは謎。
0533デフォルトの名無しさん
NGNG0534sage
NGNG使うか使わないかを含めて、
Doc-Viewがなんたるかを理解してれば全く問題なし。
マルチスレッド対応にするなら、MFCのマルチスレッド関連の注意をよく読むこと。
そんだけ
0535デフォルトの名無しさん
NGNGSDKで作ってそれが仕様どおり動いてるんなら、
わざわざMFCにする必要はないと思うが。
その目的は?
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGWTLが主流です。(嘘)
0540デフォルトの名無しさん
NGNGMFCor直APIだけじゃなくて
自前のクラスライブラリを使うってのも結構あるんじゃないかな?
0541デフォルトの名無しさん
NGNG面倒くさいなぁ。まぁ、メインに使う言語がC++とCで違うってのもあるけど。
ちょっととなりの町内会に、データをもらいに行くだけで、キャスト、アドレス、キャストぉぉ・・
となり町のファッションにいちいち着替えないと、入れてくれないんだもん(藁
MFCでスマートにコードかけない自分が悪いんだけどね。
0542デフォルトの名無しさん
NGNGAppWizard(exe)を使って骨組みを作ったアプリケーションで画像を表示させて
いるのですが、表示を更新するとウィンドウに白いちらつきが出て困っています。
これを消す方法をご存知の方教えていただけないでしょうか?既出のダブル
バッファを用いて1回で転送してもだめなのです。
0543デフォルトの名無しさん
NGNG0545542
NGNG直りました。ありがとうございました。
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGWM_LBUTTONDOWN
SetCapture
WM_MOUSEMOVE
WM_LBUTTONUP
ReleaseCapture
0548 ◆nCjjyXhk
NGNG0549>>547
NGNG0550デフォルトの名無しさん
NGNGサンクス
0551_
01/09/03 00:44ID:iwqf5Q0QMFCのCDialogを使って、ダイアログを扱いたいんですけど
内部のAfxFindResourceHandle関数がASSERTに引っかかります。
多分CWinAppクラスのインスタンス化をしていないとか、
そのあたりが原因と思いますが、これを回避する方法はないでしょうか?
そもそもMFCのフレームワーク以外でMFCのクラスを使おうというのが
間違っているのでしょうか?
MFCのプラットフォーム以外で、MFCのクラスはどの程度まで使えるのか
そういった情報も知りたいです。
よろしくおねがいします。
0552デフォルトの名無しさん
01/09/03 01:03ID:nepQwT9IAfxWinInit()
0553_
01/09/03 02:02ID:HWCzgSAMお返事ありがとうございます。
教えていただいたAfxWinInit関数をWinMainに置き、
グローバル変数にCWinApp winApp;と置いたら
成功しました。
どうもありがとうございました。
0554デフォルトの名無しさん
01/09/05 02:53ID:9DGwApwEときに何が起こっているのか教えてください。
ビューのインスタンスがコピーされるってことで
いいんでしょうか。
055547
01/09/05 03:12ID:kiU7d71A0556デフォルトの名無しさん
01/09/05 16:07ID:pDzmJoSY単にある処理をした後にプログラムが終了するには
どのようにすればいいでしょうか?
0557デフォルトの名無しさん
01/09/05 16:29ID:iHP9cOK2いまVCでチャット作ってますが、ほぼ完成したところで、マルチスレッドにしないとサーバーに
多数のクライアント繋いでる時に不具合出るって言われた。
入門書にあまり載ってないしまったく分からないので聞きたいのですが、絶対必要でしょうか?
Webでそれなりに探したがあまり詳しく説明してるところが無くて、かなり困ってます(汗
オススメの本やページありましたら教えてください m(_ _)m
0558デフォルトの名無しさん
01/09/05 16:38ID:3xtzV.Hcその条件でつないでみてそのままでいいのかどうか自分の目で判断しろ。
0559557
01/09/05 19:13ID:pDzmJoSY「ユーザがオペレーションを行わないで」という事です。
0561デフォルトの名無しさん
01/09/05 21:05ID:yo/DrG8Y[default]
PROJECT_NUM=10
LAST_UPDATE=20010905
のように、連想配列をファイルに読み書きしたいんだけど、
使えるクラスとかありますか?
0562デフォルトの名無しさん
01/09/06 14:45ID:5pS2jHq6うむ、逝ったね。
どう頑張ってもサーバー作れん。
ウツダシノウ
0563デフォルトの名無しさん
01/09/06 15:11ID:lC87f1l6http://www5.wisnet.ne.jp/~mercury/program/windows/etc/inifile.html
0564デフォルトの名無しさん
01/09/06 17:00ID:DJLsxQNICMDIFrameWnd::OnWindowNew()
0565デフォルトの名無しさん
NGNGさんく〜♪
0566デフォルトの名無しさん
NGNGCOleDropTarget派生クラスのOnDropで、COleDataObjectから取得した
グローバルメモリハンドルは、::GlobalFreeしなければならないのでしょうか。
いろんなサイトを見てみたのですが、解放してたりしてなかったり、果ては
COleDataSourceの方で解放していたりと、まちまちです。
0567デフォルトの名無しさん
NGNG検索してみたけど、どれがいいのかさっぱり分からないです。
0568デフォルトの名無しさん
NGNGアイテムを右クリックでポップアップメニューを出すってのがどうしてもうまくいきません。
WM_CONTEXTMENUのハンドラで出してるんですけどうまく出ません。
誰か作ったことある人がいたら教えてください。
0569デフォルトの名無しさん
NGNGVC関連の初心者向けコミュニティーは無さそう
(普段からいろいろ漁ってるけど)
たぶん、みんなプライド高いんだろね
その点、VBは初心者サイト、腐るほどあるんだけどな
0570デフォルトの名無しさん
NGNGなんか、嫌な感じの信仰があったりするけど、
礼儀正しくしてれば基本的に親切に接してくれます
0571デフォルトの名無しさん
NGNGhttp://mfc.acty-net.ne.jp/ml/mfc/
0572デフォルトの名無しさん
NGNGありがとうございます(ぺこり)
VCPPMLにまず入ってみました。
VC++MLも入ってみます。
0573デフォルトの名無しさん
NGNGCDocument::OnSaveDocument
CDocument::ReleaseFile
CMirrorFile::Close
でエラーになるのですが、ReplaceFileに失敗して、CFile::Renameを呼んで例外がスローされます。
ローカルのファイルだと、ReplaceFileが成功します。
どのような原因、対策が考えられるでしょうか?
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNGなんらかの処理を行いたい場合
(具体的には、ほかのウィンドウを同時にセットでMoveWindowで移動させたいのです)
どのへんを乗っ取って処理すればよいのでしょうか?
WindowProc内で、なにかメッセージを感知して、、、というのは想像
つくのですが、具体的にわかりません。
どうかご教授ください
0576デフォルトの名無しさん
NGNGWM_MOVINGとかWM_MOVEとかでは?
0577デフォルトの名無しさん
NGNGWM_EXITSIZEMOVE
05781Rubyユーザ
NGNGオブジェクト指向スクリプト言語として他のスクリプト言語を圧倒する性能と美しい言語仕様を持っています。
例えば、SchemeやSmallTalkなどは比較的美しい言語だと言われていますが、後発である優位さでRubyは
さらなる美しさと実用性を備えています。
もちろんPerlやPythonなど問題外です。
日本語との親和性ではRubyしか選択肢がないでしょう。
LinuxのディストリビューションもRubyの採用例が増えてきています。
1年後には全てのディストリビューションがRubyを標準採用するでしょう。
Rubyは未来のスクリプト言語なのです。
長くなりましたが、コピペではありません。
賛同していただける方はRubyの事を分かっていただけない人に出会ったら、
この発言をコピペしていただければ幸いです。
VC++なんて糞の極ですがね(大爆笑)
0579デフォルトの名無しさん
NGNG┃ ┃ ┃
┃ ┃ ┃
┣━━━━┫ ┃
┃ ┃ ┃
┃ ┣━━━━┫
┃ ┃ ┃
┃ ┃ ┃
┗━━━━┻━━━━┛
このように分割されたウィンドウはどうすれば上手く
出来るのでしょうか?
SplitterWndをOnCreateClientでネストして使用し
・まず左右に分割
・次に左を上下に分割
・最後に右を上下に分割
とやってみたのですが、左の領域の幅が
何故かゼロ(分割線が左端に寄ってしまう)に
なってしまい、悩んでいます。
左右のどちらか一方が分割されないような三分割は
検索すると結構見つかるのですが、この形態の四分割は
参考例が見つからないので、識者の知恵をお借りしたい次第です。
0580
NGNG引いてくれば?
0581デフォルトの名無しさん
NGNGDelphiならすぐ出来るんだけどね
0582デフォルトの名無しさん
NGNG分割位置を指定したいだけならCSplitterWnd::SetColumnInfo()は?
3分割が分かるんならすぐだと思うんだけどなあ。
0583
NGNG0584
NGNGサイズ指定されていないウインドウを分割しようとすると
>とやってみたのですが、左の領域の幅が
>何故かゼロ(分割線が左端に寄ってしまう)に
>なってしまい、悩んでいます。
まさにその状態になります。
ちなみに私はMoveWindow()でサイズ指定してます。
0585579
NGNG上下にも分割した後にサイズを変えようとしていたのが問題だったようです。
ありがとうございました。
0586デフォルトの名無しさん
NGNGLineToで線を引く。
0587デフォルトの名無しさん
NGNGRubyはクソです。ゴミ箱逝きです。
いじょ
この発言をコピペしていただければ幸いです。
0588-
NGNGhttp://members.tripod.co.jp/bingo852/
0589Ruby!
NGNG>いろいろと有名なオブジェクト指向言語であるC++と
>Rubyを比較すると:
>* C++なぞ問題外.^^;;;
http://www.ruby-lang.org/ja/compar.html
Rubyを知ってもらうためにもこの文をコピペしてください。
0590デフォルトの名無しさん
NGNGそれでは次のコーナーです
__ ____________________
.|/ ‖ ‖ ____
‖ ‖ | ON AIR.|
∧ ∧ θ ‖  ̄ ̄ ̄ ̄
(,,゚Д゚)__ /[] ̄ ̄θΛ_Λ
||(. つ_/ //(´∀` )/|
┗┳ /  ̄/⊂ ||_/
┻| ̄ ̄ ̄ ̄ ̄| ( ━┳┛
|_____| /ヽ」┘┻
____________|\____
「Rubyはクソです。ゴミ箱逝きです。 いじょ 」
この発言をコピペしていただければ幸いです。
0591デフォルトの名無しさん
NGNGAppendMenuでダイナミックに追加したメニュー項目を処理する方法を
教えてください
あと、AppendMenuで与えるメニューIDで、Resource.hで既存のものと
ぶつからないようにするにはどうすればよいでしょうか?
(+1ずつ加算していくにしても、そもそもどこから開始させればよいのか・・)
以上、よろしくおねがいいたします
0592
NGNGクラスウイザードで関連付けしてソース生成
だったかなあ?
シンボルブラウザでぶつからないか確認・・・。なのかなあ?
0593デフォルトの名無しさん
NGNGWebを調べてみたら、
http://www.kab-studio.com/Programing/Codian/MFCTips/05.html
ぶつからないように、できるだけ大きい値をあらかじめ割り当てておく
って書いてあるけど、
これでほんとにいいのかな・・・
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG#include <afxsock.h> // MFC のソケット拡張機能
と
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
を追加してもうまくいきません。
この他にも設定するものがあるのでしょうか?
0596sage
NGNG1)そりゃあ、それだけじゃ動かんだろ。
2)うまくいかないって何?
0597デフォルトの名無しさん
NGNGプログラムを作っているのですが、gifアニメや、flash動画を
任意のタイミングでロック(静止)させておきたいのです。
何かよい方法はないでしょうか?
よろしくご教授ください
0598デフォルトの名無しさん
NGNG#include <afx.h> が要るんじゃない? 試してないけど。
0599デフォルトの名無しさん
NGNGCInternetSession
のOpenURLでウェブページ(HTTP)にアクセスする際に、
URLが不正だったり、指定のURLのサービスが利用できない際に
それを知る方法はありますか?
インターネットそのものにアクセスできない場合は、例外をcatch
することでわかるようなのですが。
どうか教えてください
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGビットマップを表示したら、ウィンドウのサイズを自動的に
ビットマップのサイズと同じにしたいと思っています
MoveWindowでビットマップの幅と高さを指定したんですが
うまくいきません。マッピングモードはテキスモードです
画面上の1ピクセルとビットマップの1ピクセルはサイズが違うのでしょうか?
0602デフォルトの名無しさん
NGNGウィンドウサイズと表示領域は確か違ったはず。
あとディスプレイ設定より大きくは出来ないはずだね。
0603デフォルトの名無しさん
NGNGこれじゃわからん。
具体的にどうなったか報告しろ。
0604くだらない質問ですが
NGNGCxxxAppクラスを知ってる(#includeしてる)のが気に入らなくて、
それらをCxxxAppから独立させて(絶縁して)組んでます
こういうことしてる人っていますか?
0605デフォルトの名無しさん
NGNGそういうことが気になる人はAppWizardを使わないのでは?
0606601
NGNGそこで質問なんですが
GetClientRectで得たクライアント領域の座標を
デスクトップ上の絶対座標に置き換えるにはどうしたらいいのでしょうか?
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG俺だったら <windowsx.h> の MapWindowRect 使うぜ。
0609デフォルトの名無しさん
NGNGそれは画面座標をクライアント座標に変換するの。
正解は API の ClientToScreen()
0610606
NGNGClietToScreenを使ってクライアント領域とウィンドウサイズの差をとって
うまく設定することが出来ました。
こんなかんじです。
CWnd* parent = GetParent();
CRect win,client;
GetClientRect(client);
parent->GetWindowRect(win);
ClientToScreen(client);
parent->MoveWindow(win.left, win.top,
w + client.left - win.left + win.right - client.right,
h + client.top - win.top + win.bottom - client.bottom );
wとhはそれぞれ画像の高さと幅です
0611デフォルトの名無しさん
NGNGw + (win.right - win.left) - (client.right - client.left),
h + (win.bottom - win.top) - (client.bottom - client.top)
ですよね。ClientToScreen(client)の必要ないと思う…。
0612デフォルトの名無しさん
NGNGCxxxApp::AddToRecentFileList(filename);
で登録できることは分かったんですが・・・
最近使ったファイルを選んだ時の関数OnFileMruFile1()で
どのようにそのファイル名を取得したらいいのですか?
#やっぱりOnFileOpen()を自分で実装せず
#シリアライズを素直に使うものなのでしょうか?
0613デフォルトの名無しさん
NGNGCDocument::OnOpenDocumentを引っかけるのが正解。
0614611
NGNGほんとだ。なんでこんあこときずかなかったんdろう。。。
鬱氏!
0615CEdit
NGNGSDIのスケルトンからクラスウィザードで
最上位フレームのOnCreate引っこ抜いてきて
グローバル
CEdit *e;
OnCreate(){
:
e=new CEdit;
e->Create(.....);
:
}
って感じでメインフレームのクライアント領域いっぱいに
CEdit貼り付けると
中身が編集できなるっす
スクロールバーつけたらそれも弄れない
んで
WS_MAXIMIZEを指定したり
e->SetWindowPos(&wndTop...);
とかでCEditをTOPに持ってくると
こんどは編集できるけど表示がおかしくなるっす
いったい、どうしたらよいのでしょう?
0616デフォルトの名無しさん
NGNGビューウィンドウを隠して、別のCEditを表示させるなんてことは、やめたほうがいい。
AppWizardでビューウィンドウの基本クラスをCEditViewにしとくのが無難だよ。
0617616
NGNGビューウィンドウに貼り付けるといいんじゃない。。。
0618615
NGNGSDK風にはっつけても駄目っすか
もう少し素直になることにします
Thxです
0619612
NGNGありがとうございます
おかげで一歩前へ進みました。
えっと次の問題なんですが・・・・
CMainFrame::PreCreateWindowで
cs.cx = 200;
cs.cy = 350;
としてもこの大きさになりません
cs.x = 0;や
cs.style &= ~(WS_MAXIMIZEBOX | WS_THICKFRAME | WS_VSCROLL | WS_HSCROLL);
は反映されるのに....
AppWizardでSDIで作ってます。
よろしくお願いします
0620デフォルトの名無しさん
NGNGあなたのプロジェクトのrcファイルをテキストエディタで見てご覧...
ウィンドウが出来てからSetWindowPosで変更すればOK。
0621デフォルトの名無しさん
NGNGMFC AppWizardで作成したアプリで、子ウィンドウのサイズを変更したときの
描画の更新指示はどこで行われているのでしょうか?
更新リージョン内の背景を消去しないようにしたいのです。OnSize()に記述
(Invalidate(FALSE))しても効果なしで。
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNGOnEraseBkgnd、背景ブラシ ??
0624デフォルトの名無しさん
NGNGOnDrawで更新してるんでは?
僕的には、常に描画はバックバッファに対して行い、
それをBitBltして全部再描画してるけど(簡単なゲームみたいなプログラム
たしかRegisterWindowに渡す引数次第では
ずっとクライアント領域を保存しておくことができた気も。
ちなみにRegisterWindowに渡す引数は、
PreCreateWindowをオーバーライドして変更するyo
0625デフォルトの名無しさん
NGNGLRESULT WndProc(,,,,,,){
switch(...){
case WM_PAINT:
OnPaint();
break;
}
return DefWndProc(.,...)
}
calss a{
virtual void OnPaint()
}
こういうことをやっているのですか?
0626デフォルトの名無しさん
NGNGMFCのソース見て自分で確認しる
0627625
NGNG0628デフォルトの名無しさん
NGNG一本一本ほどいて喰え。
0629625
NGNG明日、家族にその確認汁を作ってあげたいんですけどどうやって作ればいいですか。
0630デフォルトの名無しさん
NGNG0631625
NGNGCD−Rに僕のVCのライセンスを譲渡しようと思うのですが駄目ですか。
0632デフォルトの名無しさん
NGNG食べたい人の人数分ライセンスを買いなさい
0633625
NGNG0634デフォルトの名無しさん
NGNG他人への譲渡は出来ない契約になっております。
買われた当人が、最後までお食べくださるようお願いします。
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNGクソスレが急に良スレになったな。
0637デフォルトの名無しさん
NGNGのOpenURLでウェブページ(HTTP)にアクセスする際に、
URLが不正やリンク切れだったり、指定のURLのサービスが利用できない際に
それを知る方法はありますか?
インターネットそのものにアクセスできない場合は、例外をcatch
することでわかるようなのですが。
どうか教えてください
0638637
NGNGアクセスしたURLがリンク切れだったりしても、
Not Found
The requested URL /xxx.htm was not found on this server.
のようなHTMLがゲットされてしまって、あたかも正常に
ダウンロードできたっぽい結果になるんです。
0639デフォルトの名無しさん
NGNGhttpヘッダ解析しる。
ていうかまずRFC読んでhttpそのものについて勉強した方がいいど。
0640デフォルトの名無しさん
NGNG生成したモードレスダイアログなんですが、
アクティブな状態でエンターキーを押すと
ウィンドウが消えてしまいます。
どうやらDestroyWindow()は呼ばれていないようなのですが
実体はお亡くなりになっている気配で、これを抑止するために
OnKeyDownをオーバーライドしてみたのですがこれも
呼ばれていないようで効きません。
モードレスダイアログ特有の現象に見えるのですが、
どなたか原因&解決抑止方法をご存知の方、いらっしゃいませんでしょうか?
0641デフォルトの名無しさん
NGNGそれはEndDialogが呼ばれてしまっているのです。CDialogのアホ。
解決策はCDialog::OnOk()のドキュメント読んで。
それとCDialog::OnCalcel()も。
0642デフォルトの名無しさん
NGNGありがとうございます。
でも、OnOk()もOnCancel()もPostNcDestroy()も
オーバーライド済なんです。
ウィンドウシステムメニューの閉じるボタンを押したときは
きちんとOnCancelを通ってDestroyしているようです。
試しにEndDialogをオーバーライドしてみましたが変化なしです。
一体どこでリターンキーコードを受け取って動いているのでしょうか・・・
0644641
NGNGウィンドウが消えるあたり(OnClose?)にブレークポイントを入れて
止まったところでコールスタックを見たら原因わかんないかなあ。
0645デフォルトの名無しさん
NGNGそれらしきものは試してみたのですが、
OnClose、OnOk、OnCancel、OnShowWindow、
すべて素通りでした。しくしく
0646637
NGNGヘッダ解析は面倒ですね。やはりそれしか方法はありませんかね。
では、指定したURL下のディレクトリ(ファイル)一覧を
ゲットする方法ってありますか?
(要は普通にFTPソフト実行したときのように)
参考になるプログラムとかあれば是非教えてください
0647デフォルトの名無しさん
NGNG> OnClose、OnOk、OnCancel、OnShowWindow
実はCDialog::OnOK(OKは大文字)がオーバーライドできていない、
なんてことはないよね。
うーん。考えにくいか。
0648sage
NGNGうっきゃーそれでした!!(大恥)
大馬鹿に付き合ってくださってありがとうございました・・・
逝ってきます・・・
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGうまくいきません。
根本的に間違ってのでしょうか?
TC_ITEM TabCtrlItem;
memset(&TabCtrlItem,0,sizeof(TabCtrlItem));
TabCtrlItem.mask=TCIF_TEXT;
m_tabctrl.GetItem(0, &TabCtrlItem );
return TabCtrlItem.pszText;
0651デフォルトの名無しさん
NGNGpszText用のバッファは自分で用意するんでないの。
0652デフォルトの名無しさん
NGNG根本的に間違ってよ
Cからやり直したほうがイイよ
0653デフォルトの名無しさん
NGNGは開放しなくていいのですか?
っていうか、あらかじめ確保しておかないといけない・・・。
0654デフォルトの名無しさん
NGNGこの部分はCで書いても同じじゃねーかよ。アホか。
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG同じだからCを勉強しなおせって事だろ。
0657デフォルトの名無しさん
NGNGサブルーチン内の変数はサブルーチンを抜けたら保証されません。
(関数だろというつっこみは禁止)
0658ツッコミ
NGNG0659うーん
NGNG3 返すんだけど、これってバグじゃないかい?
JIS X0208に付いてる資料だと、ユーザ定義文字領域?
0660デフォルトの名無しさん
NGNGの所でエラーが出てしまい、上手くいきません。何か代替
手段が無いでしょうか?
//パスワード設定
CString key="PASSWORD";
int maxpass = key.GetLength();
char password[ maxpass ];
m_pass.GetWindowText(password,maxpass);
0661デフォルトの名無しさん
NGNGエラーになる。C++の場合:
char *password = new char[....];
....
delete[] password;
とすれば動的確保になるかも。
0662デフォルトの名無しさん
NGNGあとあとのことを考えるととりあえず3日だけでも卒研を中断して
C/C++の入門書で勉強したほうがいいと思われ。
0664デフォルトの名無しさん
NGNGCStdioFile file("hoge.txt", CFile::modeWrite | CFile::modeNoTruncate);
で、オープンすると、上書き書き込みモードになってしまうようです。
0665デフォルトの名無しさん
NGNG左側のCTreeViewの中にツールバーをつけたいのですがどうやったらよいでしょうか。
CTreeViewのOnCreateでCToolBarCtrlをCreateして、
OnSizeでTreeCtrlとToolBarCtrlの位置を変更してみたのですが、
Viewの中身が描画されずうまくいきませんでした。
0666664
NGNG0667デフォルトの名無しさん
NGNG私はVisualC++で作成をしているのですが,いままでずっと
メインウィンドウのメニューやサブウィンドウのGUIの作成&設定は
VisualC++のリソースエディタを使ってこつこつ作成してきました.
ですが、最近になってツール(ポリゴンビューア)上から
インタラクティブにサブウィンドウのGUI(テキストフィールド,ボタン等)
を変更・追加・削除する機能をつけたいと思うようになりました.
具体的に似たような機能を持つMayaを例にあげて説明させてもらいます.
(Mayaをご存知でない方申し訳ないです)
MayaのAttributeEditor(サブウィンドウ)を開いてそのメニューの
”Add Attribute”でアトリビュートを追加するとAttributeEditor
に新しい項目(アトリビュート)が追加されてGUIも更新されている、
といった感じのものを作りたいと考えています。
このようなことって実現できるのでしょうか?
リソースデータ等を無理やり書き換えるプログラムを作成するのでしょうか?
それとももっとスマートな方法が存在するのでしょうか?
分かりにくい説明かもしれませんが,ご教授のほどお願いします.
0668デフォルトの名無しさん
NGNG「追加、削除」を「表示、非表示」と考えたら比較的簡単にできます。
ボタンなどのコントロールも結局CWnd派生ですから
GetDlgItemでコントロールのポインタを取得して
ShowWindowで表示、非表示、MoveWindowで位置を動的に
調整することができます。
また、メニュー項目の追加や削除なども動的に変更できます。
CMenuあたりのヘルプを見てください。
0669デフォルトの名無しさん
NGNGprocedure Tjotai_real.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
文
end;
上の文をFormCreateで呼ぼうと思っImage1MouseDown(Sender,mbLeft,ssShift,0,0);
をしたのですが「TshiftStateとEnumerationには互換性がありません」って警告が
出ます。
どうしたら良いでしょうか?
0670669
NGNG0671デフォルトの名無しさん
NGNGWS_VSCROLLとWS_HSCROLLを指定して
生成したウィンドウをスクロールさせたいのですが、
引数で渡されるCScrollBarが死んでいる様子なので
GetScrollBarCtrlを使おうとしたら、GetScrollBarCtrlは
WS_VSCROLLで生成したスクロールバーには無効と
MSDNに書いてありました(涙)
どうやって制御したらよいのでしょうか?
本も10冊近く調べ、MSDNもしつこく調べたのですが
よくわからなくて・・
どなたか教えてください!よろしくお願い致します。
0672671
NGNG0673デフォルトの名無しさん
NGNGCScrollBar::SetScrollInfo()ではなく
CWnd::SetScrollInfo()をウィンドウ自身に対して使う。
0674671
NGNGありがとうございます!
CWnd::GetScrollInfo&SetScrollInfo&ScrollWindowでなんとなく動くようになりました。
でも、クライアント領域の再描画がうまくいきません。
調べてみます。
0675デフォルトの名無しさん
NGNGあんた、ものすごく仕事の相談してるっぽいな。
ところでGUIのボタン等はMFCでクラス化されてるんだから
動的にクラスの実体を作ればいいだけのこと。
C++から勉強し直すことをオススメするよ。
0676デフォルトの名無しさん
NGNG貴重なアドバイスありがとうございました.
確かにC++(オブジェクト指向)の理解が足りないと思います。。
どうもありがとうございました。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNGに現在開いているウィンドウが、自動的に追加表示されますが、
特定のウィンドウはメニューに表示されないようにしたいのですが、
どうしたらいいのでしょうか?
0679デフォルトの名無しさん
NGNGその表示したくないウィンドウを、Doc-Viewアーキテクチャ以外
(例えばモードレスダイアログとか、MDIフレームとは独立した
ChildFrameとか)で作る。
0680678じゃないけど
NGNG0681デフォルトの名無しさん
NGNGそれでうまくいきました。どうもありがとうございました。
0682デフォルトの名無しさん
NGNGAfxBeginThreadについて質問です。
下にあるソースを実行すると、
----------------------------------------------------
error C2665: 'AfxBeginThread' : 2 のオーバーロードは
1 番目の引数を 'void (void *)' から要求の型に変換できません。
----------------------------------------------------
というエラーが出てきてしまいます。
Threadをstaticで宣言しているのになぜですか?
class Caaa : public CWinApp
{
public:
void Rethread(void);
static void Thread(LPVOID p);
LPVOID pParam;
protected:
・
・
・
};
void Caaa::Rethread()
{
if (AfxBeginThread(Thread, pParam) == -1)
{
//処理
}
return ;
}
void Caaa::Thread(LPVOID p)
{
//処理
return ;
}
0683デフォルトの名無しさん
NGNG&Thread
ポインタの勉強を最初からやり直せ。
0684デフォルトの名無しさん
NGNGいやそれは別に問題なかろう。
UINT Caaa::Thread(LPVOID p)
{
//処理
return ;
}
0685デフォルトの名無しさん
NGNG型をUINTにしてみましたが、今度は
----------------------------------------------
error C2511: 'Camera_thread' : オーバーロードされたメンバ関数が
'<Unknown>' にありません。
----------------------------------------------
というエラーが出てしまいました。
class Caaa : public CWinApp
{
public:
void Rethread(UINT);
static UINT Thread(LPVOID p);
LPVOID pParam;
};
UINT Caaa::Thread(LPVOID p)
{
//処理
return ;
}
ではいけないのでしょうか?
よろしくお願い致します。
0686smat
NGNG作りたくないのですが、どうすればよいかわかりません。誰か助けて。
void CSmatPaint2Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
CFile* pf=ar.GetFile();
CString fn=pf->GetFileName();
image=IeImg((LPCTSTR)fn);
if( !image->isValid() ){ //無効なイメージファイル
AfxGetMainWnd()->MessageBox("無効なイメージファイルです");
//ここで新しいドキュメントを作成せずに、閉じたい(アプリケーション
//は終了せず)のですが、その方法がわかりません。
}
else
{
//有効なイメージデータの処理
}
}
}
0687デフォルトの名無しさん
NGNGOnCloseDocument
0688smat
NGNGありがとうございます。
でも、いきなりOnCloseDocument()を呼び出すと、
不正な処理...のDialogBox
↓
ハンドルされていない例外はSmatPaint2.exeにあります。:0xc0000005:Access Violation
↓
メモリウィンドウが出てくる(文字が灰色で???)
の様になってしまいます。MSDNを見る限りでは何の問題もなさそうなのですけど。
ついでに、起動時に子ウィンドウを出さない様にするにはどうすればよいのでしょうか?
・OnNewDocumentのインプリメントをコメントアウトしてもダメ。
・OnNewDocument()の中でOnCloseDocument()を呼び出ししたら氏んでしまう。
0689デフォルトの名無しさん
NGNGOnNewDocument/OnOpenDocumentが完了する前にはOnCloseDocument呼べないみたいだね。
MDI子フレームにWM_CLOSEを送ってみるってのはどうだ。
0690デフォルトの名無しさん
NGNG>起動時に子ウィンドウを出さない様にする
これは知ってます。
CxxxApp::InitInstance()の中で
CCommandLineInfo cmdInfo;
の直後に
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
を挿入。
0691smat
NGNGCxxxDoc::Serialize の内部で行うと氏んでしまいました。
CxxxDoc::Serialize(CArchive& ar)
{
.....
POSITION pos=GetFirstViewPosition();
while(pos != NULL){
CView* pView=GetNextView();
CWnd* pWnd=pView->GetParent();
pWnd->SendMessage(WM_CLOSE);
}
....
}
次にドキュメントがダメならCxxxViewでやっちまえと思って
OnInitialUpdate,OnDrawなどでやってみましたが、ことごとく
粉砕されてしまいましたが、
CxxxDoc::OnOpenDocument()の内部で下記の様にやるとうまくいきました。
BOOL CSmatPaint2Doc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: この位置に固有の作成用コードを追加してください
//拡張子によるフィルタ
CString s = lpszPathName;
if( s.Right(3).CompareNoCase("TIF") != 0 ){
AfxGetMainWnd()->MessageBox("サポートされていないファイル形式です。");
return FALSE;
}
//イメージオブジェクトをファイル名から生成
m_img = IeImg(lpszPathName);
//---イメージの有効性チェック---
// 拡張子が合っていても、いたずらにて拡張子が変更されている場合または
// ファイルが壊れている可能性があるためにこれを行う
if(!m_img.isValid()) {
AfxGetMainWnd()->MessageBox("無効なイメージファイルです。");
m_img = ieImgNull;
return FALSE;
}
return TRUE;
}
大変良い勉強になりました。感謝してます。
>>690さん
ばっちりです。ありがとうございます。
0692ビギナー
NGNG_variant_t vString;
vString = m_pRecordset->GetCollect(_variant_t("整理"));
vString.ChangeType(VT_BSTR);
s11=vString.bstrVal;
整理がNULLの場合2行目のvString.ChangeTypeで
落ちますがどう対処すればいいのでしょうか。
0693デフォルトの名無しさん
NGNGVC++のspでの修正内容一覧でそんなのを見かけた気が、、、
spのバージョンは?
0694デフォルトの名無しさん
NGNG0695694
NGNGif ( vString ) で囲んでもダメなのかい?
0696692
NGNGただvc起動時 VBみたいに SPなんとかと出ませんが...。
カッコでくくってみます。vbでいう on error resume next みたい
のがあるといいな
0697デフォルトの名無しさん
NGNGtry {
} catch (...) {
}
__try {
} __finally {
}
TRY {
} CATCH_ALL{
} END_CATCH_ALL;
0698ビギナー
NGNG0699デフォルトの名無しさん
NGNG痛い目見るかも。
0700デフォルトの名無しさん
NGNGCTimeとかをコンポジションしたいときって
ポインタだけにして
コンストラクタでヒープ領域にとるようにすべきなんでしょうか。
0701sage
NGNGポインタでもメンバ変数として持ってもどちらでもよい。
0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNG0704700
NGNGそれはCTime自身がヒープ領域を取るからですか?
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG0707700
NGNG了解です。簡単なスタックの方にしときます。
0708デフォルトの名無しさん
NGNGヒープにとるぶんにはまあ問題ないでしょう。
スタックだとちょっとまずい。
たとえばCTimeがメンバ変数に大きな配列を持っていて、その実体を
メンバとするクラスAを作ったとする。
このAをプログラム中でlocal変数としてインスタンス化した場合、
大量のスタック領域が消費されることになる。
まCTimeではそんなことは無いから気にしなくてもいいんだけど。
0709700
NGNGアドバイスどうもです。
CTime,CFile,CStringとかいっぱい入れてるんで
(それをコンポジションと言うと思ってた。なんて言うのだろ)
ヒープにとることにします。
0710700
NGNGTime = CTime::GetCurrentTime();
error C2679: 二項演算子 '=' : 型 'class CTime'
の右オペランドを扱う演算子は定義されていません。
(または変換できません)
って出てしまいました。なんですかこれ?
0711デフォルトの名無しさん
NGNG0712700
NGNGああ、そうか、あれじゃポインタの置き換えになっちゃいますね。ボケてました。
0713デフォルトの名無しさん
NGNG0714700
NGNG作ったんですけど、
OnPaintがprotected:メンバになっていて
コンパイルエラーになります。
publicにしちゃって良いですか?
0715デフォルトの名無しさん
NGNG状況がよくわからんが…、OnPaintを外から直接呼ぶ気か?
止めとけ。InvalidateRect() か何かで間接的に使うようにすべき。
0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG0719718
NGNG0720デフォルトの名無しさん
NGNGCreate時かPreCreateWindowでウインドウスタイルを変える。
0721714
NGNGまたひとつ賢くなりました。
0722デフォルトの名無しさん
NGNG折れ線グラフのクラスを作りたいんですが
CPaintDCだけじゃだめでしょうか。
0723デフォルトの名無しさん
NGNGメーラのBecky!を例に挙げますが、このソフトのメール一覧ビューと
本文ビューの間には、縦サイズが固定で日時情報や複数のボタンが
表示されているビューが存在します。
このビューのように、MFCで水平に3分割したビューのうち
中央のビューの縦サイズを固定し、なおかつドラッグしても
縦サイズが保持されたまま移動するビューの実現はどのように
すれば良いのでしょうか?
参考になるソースへのポインタだけでも教えて頂けると有り難いです。
0724デフォルトの名無しさん
NGNG>Create時かPreCreateWindowでウインドウスタイルを変える。
ありがとうございます。が、PreCreateWindowだとアサートされてしまうので
Create時に試してみたところ、
ModifyStyleEx(0, ~WS_EX_WINDOWEDGE);
ではまたもにクリックできないようになり、
ModifyStyleEx(0, WS_EX_TRANSPARENT);
では期待した効果が得られませんでした。具体的にはどうすればいいのでしょうか。
0725デフォルトの名無しさん
NGNGhttp://www.codeguru.com/bitmap/Graph.html
ほれ
From CodeGuru
0726725
NGNG>>722
http://www.codeguru.com/bitmap/Graph.html
0727デフォルトの名無しさん
NGNGこのサイトいいですね。
0728smat
NGNGショートカットの上にドラッグ&ドロップしたときにファイル名又はフォルダ名を
をGETするにはどうすればよいのでしょうか?
::DragQueryFile(...)のまねをしたいのです。
0729デフォルトの名無しさん
NGNGGetCommandLine
0730デフォルトの名無しさん
NGNGこれって端っこまで行った時、画面からはみ出てしまいます。
自動的にスクロールするようなやつ、ないですか?
0731デフォルトの名無しさん
NGNGプログラマだろ?
自分でカスタマイズしろよ
0732725
NGNGhttp://www.codeguru.com/controls/oscope.shtml
http://www.codeguru.com/controls/histogram_control.shtml
こんなのもあるぞ
0733デフォルトの名無しさん
NGNG付き合いすぎ。
自作自演?
0735smat
NGNGQuick Responseありがとうございます。
早速やってみました。
GetCommandLine()で大概はOKなのですが、問題があります。
その問題とは、ファイル名がMS-DOSファイル名(8.3形式)にされてしまうのと、
ファイルを複数ドロップしたときに、ファイル名がスペース区切りにされてし
まうことです。::FindFirstFile()等でMS-DOSファイル名で検索し、
WIN32_FIND_DATA構造体の中にLong file nameで格納されていれば問題なし
なのですが、まだそこまで確認できていません。
MS-DOSファイル名→Long file name変換の関数があれば何の問題もないのですが。
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGゴルァしようかと来て見たら
732のような天使がいて心洗われました。
0738smat
NGNGばっちりです。ありがとうございました。WIN32 APIを打ち込みするのに
::をいれたら__argcと__argvが出てきたのを偶然発見したので、もしかしたら
と思って、使ったらうまくいきました。
以下動作確認部分のコードです。
...
int arg_cnt = ::__argc;
CString s="";
char buff[MAX_PATH+1];
for(int i=1; i<arg_cnt; i++){
::GetLongPathName(::__argv[i],buff,MAX_PATH+1);
s += buff;
if(i != arg_cnt-1 ){
s += "\n";
}
}
MessageBox(s);
...
0739デフォルトの名無しさん
NGNGreturnしただけだとウィンドウが残ったままです。
WM_DESTROYするとアプリケーションエラーになります。
0740デフォルトの名無しさん
NGNG二重書き込み申し訳ないです。
COleDataSource::OnRenderGlobalData
COleDataObject
の、サンプルコードがあるところを教えてください。
達人の方々、簡単なサンプルコードをいただけると幸いです。
サパーリわからなくて困り果てています。うう(泣
0741739
NGNGだめなんですか?
どのサイトみてもそういうサンプルがないので。
0742デフォルトの名無しさん
NGNGOnInitって何よ?
.NETの話ならスレ違い。
0743デフォルトの名無しさん
NGNG問題点すら明確に伝達できないやつに教えるのはばかばかしいので
さらしage
0744デフォルトの名無しさん
NGNG>returnしただけだとウィンドウが残ったままです。
>WM_DESTROYするとアプリケーションエラーになります。
ゆーてるやろもうええわ!っち。
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG>>744は元VB厨だからForm_Loadでエラーチェックするのが作法なんだよ、きっと。
0747デフォルトの名無しさん
NGNGなんとか入門の本を読んでも、その辺の構造について解説してないもんな。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNGMFCのフレームワークにはOnInitなんてハンドラはないんだけど。
0750739
NGNGほんとにありがとう!
>>746
VBはやったことないです。元DOSプログラマ。
>>747
基礎がなってないのは自覚してます。
>>748
来ました
>>749
OnInitDialogでした。
0751EBI
NGNG0752デフォルトの名無しさん
NGNG画像の回転には5.0でも4.0でも
バージョンは関係ない。
ちなみに
pDC->StretchBlt(xDest, yDest, bm.bmWidth, bm.bmHeight, &memDC,
bm.bmWidth-1, 0, -bm.bmWidth, bm.bmHeight, SRCCOPY);
このsrcの値を変えれば回転する。
0753デフォルトの名無しさん
NGNGなんでですか?
0755753
NGNGExitInstanceで処理することにしました。
0756デフォルトの名無しさん
NGNG当たり前。
0757
NGNG方法はどのようにするのでしょうか。
spyというやつでid(?)取得してどうこうするのでしょうか?途方にくれてます。
0758デフォルトの名無しさん
NGNGrocket mouse買う方が簡単でやすくつくよ
0759757
NGNGだからウィンドウがでたらキャンセルを自動的に押して
キャンセルしたいんです。
ほかの方法でもいいんですが...
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNGWM_CREATEをフックして送られてきたハンドルからボタンのハンドルをゲットしてMESSAGE送る。
0762デフォルトの名無しさん
NGNG0763759
NGNG0764デフォルトの名無しさん
NGNGフックしなくてもよかった。
普通にWM_CREATEでSendMessage送れヴぁ?
0765759
NGNG0766デフォルトの名無しさん
NGNG押されたくないボタンのあるアプリなんか使わせなければいい。
0767デフォルトの名無しさん
NGNG0768757
NGNGエクスポートするボタン。
フリーでも画面に出た特定ボタン押すというソフトあるれどこれじゃその
ソフト終了されたらおしまいだし。だから自分で偽装したやつ作る必要が
ある訳でした。
多分rocket mouseも簡単に終了できんるですよね。これいいと思ったんですが。
0769757
NGNG0770デフォルトの名無しさん
NGNGダイアログのボタンとか削除とか、disableにできるよ。
ダイアログじゃないとか、
動的にコントロールを制御してるようだと、
駄目だけどね。
0771デフォルトの名無しさん
NGNG他人のプログラムに改変を加えて再配布というのはいろいろ問題がないか?
0772757
NGNGただ改造すら禁止しているケースもありますが。
というか、誰でもエクスポートできるように作るなと言いたい。
0773デフォルトの名無しさん
NGNGドラッグ&ドロップしてファイル名とパスを
取得したいんですが、よくわかりません。
どなたか、教えていただけないでしょうか。
おねがいします。
0774デフォルトの名無しさん
NGNGただしClassWizardはデフォルトではCDialog派生クラスにWM_DROPFILESを表示しないので
クラスのメッセージフィルタを"Dialog"から"Window"に変更する。
0775デフォルトの名無しさん
NGNGありがとうございます。
まだファイル名がうまく取れませんが、ドロップは認識しました。
0776757
NGNGそれにしてもVC(MFC)は奥が深いです。
0777
NGNGDDX_Control(pDX, IDC_RADIO1, m_radio1)
としているんですがこれって問題ありますか?
0778デフォルトの名無しさん
NGNGafxdd_hを見たところDDX_Control関数の3番目の引数が参照になってるね。
m_radio1はポインタなの?
0779777
NGNGCButton m_radio1;
としています。
他のコントロールならばClassWizardで追加するのですが、
グループスタイルの無いラジオボタンなので手作業で追加しました。
0780デフォルトの名無しさん
NGNGあーなるほど。グループスタイルを付けないと
ClassWizardじゃDDX変数を作れないんだ。
しかしなんでグループスタイル付けないんですか?
0781777
NGNG全部のラジオボタンにグループスタイルつけるとラジオボタンのON/OFFが
各ボタンでばらばらになってしまうからです。
例えば、
○ラジオボタン1
○ラジオボタン2
上のように二つのボタンがあったとき、1だけにグループスタイルをつけると
1をONにしたときに2が自動的にOFFになり、またその逆も可能です。
ところが両方のボタンにグループスタイルを設定してしまうと、
2は1のON/OFFとは関係無しに独立して動作します。
0782デフォルトの名無しさん
NGNG分かった。「1だけグループスタイルあり」でグループ化したとき、
グループスタイルを持たないラジオボタン2以降にも、
手作業でコントロール型のDDX変数を割り当てたいつー話?
たしかに問題ありそうな無さそうな微妙なところですな。
これはMFCのソースを見るしか。
0783デフォルトの名無しさん
NGNGCArrayで2次元配列作る方法、操作などがわかりません(;´Д`)
参考してる本はSTL使ってるが良く分からないし、、
どなたか、教えていただけないでしょうか。
おねがいします。
0784デフォルトの名無しさん
NGNGint x_;
int y_;
int *vec_;
public:
nijigenhaitetsu(int x, y) : x_(x), y_(y), vec_(new int[x*y]) { std::fill(vec_, vec_+x_*y_, 0); }
~nijigenhaitetsu() { delete [] vec_; }
int &get(int x, int y) const { return vec_[y * y_ + x]; }
};
0785デフォルトの名無しさん
NGNGCArrayに初めて触ってみたので変なとこあったらごめんね。
#include <afxtempl.h>
struct cell_t {
int m_data;
};
struct map_t : public CArray< CArray< cell_t, cell_t& >, CArray< cell_t, cell_t& >& >
{
map_t(int width = 1, int height = 1)
{
SetSize(height);
for (int i = 0; i < height; i++)
(*this)[i].SetSize(width);
}
};
int main()
{
map_t map(10, 10);
map[9][9].m_data = 777;
printf("%d\n", map[9][9].m_data);
return 0;
}
0786デフォルトの名無しさん
NGNG>struct map_t : public CArray< CArray< cell_t, cell_t& >, CArray< cell_t, cell_t& >& >
CArrayを継承した構造体map_tを作ったみたいんですが、後ろのほうの< CArray< cell_t, cell_t& >, CArray< cell_t, cell_t& >& >
の意味がわかりませんが、もしよければ教えてもらえませんでしょうか?
あとクラスで書くときはどうなるとか、、
MFCから始めたなんちゃってプログラマで、構造体いじった事もなくてすみません(;´Д`
2次元配列ってC習う時良く使うが、実務ではあまり使わないのでしょうか?
0787初心者
NGNGVisualC++6で
char型の配列buf[0] buf[1] buf[2]に格納した8bitデータ3つを
24bitデータにまとめたいのですがどうしたらよいでしょうか。
例********************************
buf[0]:0xAA
buf[1]:0xBB
buf[2]:0xCC
の場合
0xAABBCCにまとめる。
**********************************
int data = 0x000000;
data = (buf[2] * 0x010000) + (buf[3] * 0x000100) + buf[4];
とやってみたのですが、おかしくなります。
どなたかご教授願います。
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNGこういうことだ
BYTE buf[4];
buf[0] = 0xcc;
buf[1] = 0xbb;
buf[2] = 0xaa;
buf[3] = 0;
DWORD data = *(DWORD*)buf;
0790初心者
NGNGdata = ((unsigned long)buf[0] * 0x010000) + ((unsigned long)buf[1] * 0x000100) + (unsigned long)buf[2];
とも
unsigned long datasize = 0L;
datasize = (unsigned long)buf[2];
datasize += (unsigned long)buf[1] << 8;
datasize += (unsigned long)buf[0] << 16;
ともやってみたんですが、やっぱりおかしくなります。
どこが間違っているのでしょうか?
0791789
NGNG0792789
NGNG0793785
NGNG「クラスTを要素に持つCArrayの宣言」が CArray< T, T& > array; なんですね。
だから「『クラスTを要素に持つCArray』のCArray」なら、
CArray< CArray< T, T& >, CArray< T, T& > > map; となる。
785をtypedefでわかりやすく書けば、
typedef CArray< cell_t, cell_t& > array_t;
typedef CArray< array_t, array_t& > array_of_array_t;
class map_t : public array_of_array_t { ... }
となるでしょう。
785で構造体(struct)にしたのは、特に意味ないです。
structはデフォルトで全メンバがpublicなだけで、それ以外はクラス(class)と同じと思ってください。
あとmap_tをarray_of_array_tから派生させたのは、
map_t自体のコンストラクタを定義したかったからで、
2次元配列だから特に必須ってわけではないです。
0794790
NGNGDWORD data = 0x000000;
data = ((BYTE)buf[0] * 0x010000) + ((BYTE)buf[1] * 0x000100) + (BYTE)buf[2];
で
できました!
ありがとうございます!
0795デフォルトの名無しさん
NGNGCArray< CArray< T, T& >, CArray< T, T& > > からクラス派生出来るのはちょっとデカルチャでした。
本当にプログラマとして仕事できるかどうか心配になってきた(大学3年)
なんとか使えそうです、ありがとうございました。
0796デフォルトの名無しさん
NGNGdata = buf[0]<<16 | buf[1]<<8 | buf[2];
の方がコーディング量少ないぞ(藁
0797
NGNG0798デフォルトの名無しさん
NGNGなぜint型の配列ではいけないのか小一時間問い詰めたい
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG同じマスに色んな情報を詰め込みたいので、クラスを使いたい
map[2][3].cell = 1 ,map[2][3].character = player ←みたいな使い方で、、
マップはサイズ変更可能なので、できればベクターのほうが使いやすい
もしかしたらとんでもない勘違いしたかな?小一時間教えてくださいm(_ _)m
0801デフォルトの名無しさん
NGNGclass GikoMap {
int x_;
int y_;
T *vec_;
public:
GikoMap(int x, int y) : x_(x), y_(y), vec_(new T[x*y]) {}
~GikoMap() { delete [] vec_; }
T &get(int x, int y) const { return vec_[y * y_ + x]; }
};
0802デフォルトの名無しさん
NGNG0803777
NGNGどうやってるのでしょうか
0804デフォルトの名無しさん
NGNG普通に1番目だけグループスタイルをつけてグループ化して、
整数型のDDX変数にしてる。
個々のラジオボタンを操作することはほとんどないけど、
もしやるならDDX変数を解さずに直接
GetDlgItem(ID_RADIO1)->SetCheck() とか。
0805デフォルトの名無しさん
NGNGradio1->SetCheck(1);
というようなGetDlgItemの返り値をキャストして使うのは
状況によっては動かない場合があると聞いたのですがどうなんでしょう。
入門書によく載ってますが。
0806デフォルトの名無しさん
NGNGCButtonとCWndの継承関係から考えるに、それはだめじゃないの?
CButton* radio1 = (CButton*)GetDlgItem(ID_RADIO1);
((CWnd*)radio1)->SetCheck(1);
ならよいかも。というより、すなおに
CWnd* radio1 = GetDlgItem(ID_RADIO1);
radio1->SetCheck(1);
ではないか。
0807806
NGNG0808デフォルトの名無しさん
NGNGでもMFCはそれを動くようにしてるそうです。
>CWnd* radio1 = GetDlgItem(ID_RADIO1);
>radio1->SetCheck(1);
SetCheck()はCWndのメンバでは無いのですが良いのでしょうか?
0809デフォルトの名無しさん
NGNG>普通に1番目だけグループスタイルをつけてグループ化して、
>整数型のDDX変数にしてる。
自分、わざわざ各ボタンでGetCheck、SetCheckしてました。
0810806
NGNGうがー確かに。
ソースを見るとCButtonにはメンバ変数がないようなので
(CButton*)を(CWnd*)にキャストしてもポインタがずれなくて大丈夫なのかな?
0811デフォルトの名無しさん
NGNGUpdateData();
int n = m_num_radio;
で選択ボタンを判定したり
m_num_radio = 3;
UpdateData(FALSE);
で4番目のボタンを選択したりというのは定石??
0812デフォルトの名無しさん
NGNGおめーえらそーに嘘教えてんじゃねーよ!!
>>805はダウンキャストの危険性についての話だろが!
CButtonはCWndをpublic継承してんだから、
CButtonをキャストなしにCWndと見なすのは全然問題ねーだろが!
>>805
C++のdynamic_castやstatic_cast、reinterpret_castについて調べみ。
いろいろ出てくるから。
0813デフォルトの名無しさん
NGNGNote that it's always safer to check for the validity of the results from GetDlgItem.
0814デフォルトの名無しさん
NGNGダイアログを追加して、
その上にWeb Browserコントロールを載せているのですが
そうすると元のActiveX自体をコールできなくなってしまいます。
ちなみに、ActiveXでは無くMFC AppWizard(exe)などでやると
正常に動いてくれます。
どうしたらいいのでしょうか?
0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGAfxLoadLibrary()、AfxFreeLibrary()
が使えないんだけど、どういうわけですか?
0819デフォルトの名無しさん
NGNG0820818
NGNGじゃ、APIの LoadLibraly、FreeLibraly使って問題ないわけですね?
ロードされる DLLでは、MFCの共有 DLL使ってるんです。で、
MSDNには、「グローバルなMFC の状態を破損するのを防ぎます」と
あるのが気になるんですが。このグローバルって...
0821デフォルトの名無しさん
NGNG自分はMFCスタティックで、
呼び出すDLLがMFCダイナミックだとどうなるんですかね?
リンケージがうまくいかないような気もするんですが。
0822デフォルトの名無しさん
NGNGはい。いかなくなります。スマートな解決方法は多分ありません。
0823デフォルトの名無しさん
NGNG自分も DLL な MFC を使うしかないと思われ。
逆は不可。
0824超初心者
NGNGそれで少し聞きたいんですがMFCでDirectXを取り込むような形で使えますか?
使えるとしたらどんな形でどうやるんでしょうか??
0825デフォルトの名無しさん
NGNG逆は不可とは?
DLLをスタティックに出来るなら、自分がスタティックでもいいだろ?
0826デフォルトの名無しさん
NGNGWin2000でCOleDateTimeのGetCurrentTime();をやってみたんだけど
1899年12月30日になります。
なんで?
0827デフォルトの名無しさん
NGNG0828826
NGNG使い方間違ってた。
COleDateTime today;
today.GetCurrentTime();ってやってたよ・・・
正しくは
today = COleDateTime::GetCurrentTime();だった。逝っとく。
0829デフォルトの名無しさん
NGNG差し替えることってできますか?
ボタンだったら、CBitmapButtonでできるのですが・・・・
0830デフォルトの名無しさん
NGNGオーナードロー
0831デフォルトの名無しさん
NGNGSDIウインドウの下に(ステータスバーの上)に、エディットボックスを追加したいけどどうすればいいんですか?
RPGらしきもの作ってますがチャット機能も追加しょうと思って、入力できる場所を用意しないといけないが、
一々ダイアログを出してはあまり美しくないので、エンターキーを押すと下のほうにエディットボックスが出てくれると
いいなーと思って、、 宜しくおねがいします。
0832ネット初心者
NGNG分かりやすいサンプルあればいいんですが、、VCのサンプル分かりにくいですね。
CSocketFileとCArchive使うまでは分かったが、なかなか実装できない。なにかヒントでも、、
0834デフォルトの名無しさん
NGNG文字のサイズや色を変える事しかわからないっす。
厨房質問でスマソ
0835デフォルトの名無しさん
NGNG秀丸などのエディタは、RichEditは使ってないよ。
で、EM_AUTOURLDETECT
ってのがあるけど、Win2000限定かも
0836マッハ
NGNGできるのでしょうか?そのとき、前に表示された線はそのまま残していきたいのですが・・。
0837デフォルトの名無しさん
NGNGできるよ。
0838デフォルトの名無しさん
NGNG自分で文字列を抽出してリンク張れば出来る。
0839デフォルトの名無しさん
NGNG10進数から16進数への変換関数はないでしょうか?
あるのでしたら、関数名だけでも結構ですので教えてください。
0840デフォルトの名無しさん
NGNG16進数字列にしたいの?
MFCは知らないけど、sprintf()を使えば?
str=sprintf("%X",num);
こんな感じ。
0841840
NGNGもし、10進数字列を16進数字列にしたいのなら、atoiやatolを使って数値にしておいてね。
str=sprintf("%X",atoi(dec));
0842デフォルトの名無しさん
NGNGそれじゃ、コンパイルが通らない
0843840
NGNGおおっと、Perlと勘違いした(汗
sprintf(str,"%X",num);
sprintf(str,"%X",atoi(dec));
だね(汗
サンクス!!
0844844
NGNGなんとか出来そうっす。
ヒントサンクス
0845間違えた鬱だし能
NGNG0846デフォルトの名無しさん
NGNG>>843さん
ありがとうございます。
sprintfでやってみます。
0847デフォルトの名無しさん
NGNGCString strResult;
strResult.Format(_T("%X"), num);
0848まいったね
NGNGMFCのダイアログベースのプログラムなんですが
1) CTestAppでTestMainという関数をスレッド使って呼び込む
2) CTestAppでCTestDlgのダイアログを表示
3) TestMainの関数内のfor(;;)で永久ループ
処理としてグローバルにある終了フラグを見続ける
TRUEならWM_CLOCEをPostして終了
4) CTestDlgのダイアログ内で終了ボタンを押したらグローバルにある終了フラグをTRUEにする
ある特定ファイルそ検索してて見つかったらなにか処理をするというプログラムなんですが
せっかくスレッドを作ってやってもその中で永久ループしてるので意味無しでした・・
おかげさまでCPU稼働率が常に100%な業務アプリです^^;
これって普通の作り方なんでしょうか?
違うと思いたい・・・
0849デフォルトの名無しさん
NGNGイベントオブジェクトでも使ったらちっとはマシになる?
0850デフォルトの名無しさん
NGNGマルチスレッドとか、それ以前の問題。
とっととイベントオブジェクト+WaitFor〜系API使え
0851デフォルトの名無しさん
NGNGそれが普通かどうかはともかく、
ループの中に Sleep(0); を入れるだけで
一気に負荷が減ります。
0852まいったね
NGNGかなーりボトルネックなってますよね。
0853デフォルトの名無しさん
NGNGどうせあまってんだろ。
HDDもどうせATAだろうし(藁
0854デフォルトの名無しさん
NGNGだが二度とそんなクソプログラムは世に出すな
0855まいったね
NGNG考えてみれば私以外皆、MFC初心者か大学出の新卒が作った奴だった^^;
ループの前ではSetTimer使って、タイマー使用フラグを立ててるだけ・・
ループ中にファイル検索して見つかったらメイン処理を行う。
うーん、素直にWM_TIMER拾ったらファイル検索してメイン処理したほうがいいような・・
やっぱりC言語初心者のやつが作った物はこんなもんなんだろうか
Sleepは試しましたが駄目でしたね。
あと残念ながらCPUは一つしかつんでませんので。
HDDはATAでした。
0856まいったね
NGNG他アプリとの平行稼動しないから現時点ではさほど問題になっておりません。
0857デフォルトの名無しさん
NGNGおまえは一体何を相談にきたのかと小一時間問いつめるYO!
愚痴ならプログラマ板いけや。
0858まいったね
NGNGうーん愚痴になってしまいましたねごめんなさい。
作り方についての意見を聞きたかったのですが。
やっぱり普通のやりかたではなかったという皆様の意見が聞けましたので・・
皆様どうもありがとうございました。
0859まいったね
NGNG雰囲気読めませんでした・・
今後気を付けます。
0860デフォルトの名無しさん
NGNGMFCでWebオブジェクトにあるWeb(test.htmとする)を表示して、
それに対してGetLocationName(またはURL)すると、当然test.htmが
取得できますが、ユーザー操作(リンククリック)によって
test.htmの中にあるリンクページ(link.htm)にジャンプしてから、
GetLocationNameすると、link.htmが得られそうなのに、
test.htmが戻ってきますね。
Webオブジェクトに現在表示されている最新のURLを取得する方法はありますか?
教えてください
0861デフォルトの名無しさん
NGNG// ワーカースレッド内
if(*flg == 0)
return 0;
などとしていますが、
CInternetSession session;
session.OpenURL(・・・);
if(*flg == 0)
return 0;
などのようにフラグを判定する前に時間のかかる関数などを実行すると、
関数が返ってくるまで終了できません。
このような場合でもすぐにワーカースレッドを終了させるには
どうすればよいのでしょうか。
0862デフォルトの名無しさん
NGNG名前、サイズ、種類等のデータが表示されますよね
ああいうのを作りたいのですが、MFCに用意されているのでしょうか?
0863デフォルトの名無しさん
NGNG用意され過ぎていてどうやって動いてるのか判らん・・・・。
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGCInternetSessionを非同期で使えということですか?
セッション途中で通信を中止させるには具体的にどうすればよいのでしょう。
0866デフォルトの名無しさん
NGNGOnCharで検出できるのでしょうか?
0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGツール起動時にタイトルウィンドウが表示される機能を
自分のツールに実装したいと思っています。
MFCでこれを実現するための便利な関数はあるのでしょうか?
どなたかご教授ください。よろしくお願いします。
0870デフォルトの名無しさん
NGNG起動してデータやファイルをロードしているときに
ウィンドウ一つ作って絵を表示してるだけちゃう…?
MFC にそれ専用の関数があるかは知らないな…。
0871デフォルトの名無しさん
NGNGでてくると思うが。俺は詳しくないんでそれ以上はパス。
0872デフォルトの名無しさん
NGNGコンポーネントギャラリに入ってなかったっけ? >スプラッシュ
0873デフォルトの名無しさん
NGNGそれに対してGetLocationName(またはURL)すると、当然test.htmが
取得できますが、ユーザー操作(リンククリック)によって
test.htmの中にあるリンクページ(link.htm)にジャンプしてから、
GetLocationNameすると、link.htmが得られそうなのに、
test.htmが戻ってきますね。
Webオブジェクトに現在表示されている最新のURLを取得する方法はありますか?
>>869
ダイアログ作成ー>絵を表示
起動処理
ダイアログ破棄
そのままです
0874デフォルトの名無しさん
NGNGスレッドが違うとCWndなどは正常に動かないようなんで、Documentの
UpdateAllViews()を呼び出しても希望どうりの動作にはなりませんよね。
メインフレームにメッセージを送ってそのハンドラでUpdateAllViews()
を呼び出すようなコードを書かなければならないのでしょうか?
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNGMFCでActiveXコントロールをActiveXコンテナにする方法を
教えてください。ActiveXコントロール上にActiveXコントロール
を貼り付けたいのです。
CDialogの上で、buttonとかlistboxは貼り付けて、
使うことができるんですが、コントロールギャラリで追加した
コントロールを使おうとすると起動中でエラーが出ちゃいます。
0878デフォルトの名無しさん
NGNGそのボタンに対し、CButton::SetCheck
を使いたいのですが、どうすればよいのでしょう?
0879デフォルトの名無しさん
NGNGClassWizardで、メンバ変数を作りましょう。
グループ化もしなきゃ。
0880878
NGNGありがとうございます。
グループ化っていうのは「プロパティ」→「グループ」のことですか?
0881デフォルトの名無しさん
NGNG0882SUMIO
NGNGCEditコントロールにエディタ(メモ帳など)で書いた文章を出力したい
のですが、なにかうまい方法はありますかねえ?
0883デフォルトの名無しさん
NGNGコピペ
0884SUMIO
NGNGえっと、言葉が足りなかったのですが、
(メモ帳などの)ファイルから「開く」という形で
出力したいんですよ。
0885!883
NGNGだから、「ファイルを開く」というイベントを受け取ったメソッドで、
ファイル読み込んでCEditに貼り付けするように組めばいいだろ。
それともCEditに「ファイルから読み込む」なんて機能が付いてると
思ってるのか?
0886デフォルトの名無しさん
NGNGDoc-ViewならCDocument::OnOpenDocumentあたりでファイルからメモリに読み込む。
んでもってCView::OnUpdateあたりでDocumentからテキストを受け取ってSetSel, ReplaceSel(かWM_SETTEXT)
0887デフォルトの名無しさん
NGNGなにか方法はないですか?
CBitmapButton
あたりを使えばよいと思うんですけど
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG自己完結型Q&A
0890ゴンベエ
NGNGなどと考えてた(←過去形)者です。
・・・で、詰まったんですけんど、
リソースエディタでIPAddressボックスをダイアログに貼り付け、ClassWizardで
メンバ変数としてCIPAddessを割り当てました。そして実際に使おうとしたら
なぜかメンバ変数が使えません。基本クラスのメンバは使えるのですが・・・
なぜなんでしょう? 結局あきらめてCStringで代用しましたが、気になって
仕方ありません。
0891デフォルトの名無しさん
NGNG二重書き込み申し訳ないです。
COleDataSource・COleDropTargetでドラック&ドロップを行っています。
COleDropTargetを設定しているViewでドロップを行うとOnDropがコールされますが、
COleDropTargetを設定していないViewでドロップを行ったのはどーやって判断すればいいですか?
0892デフォルトの名無しさん
NGNGヘルプ見ても、CSocket→CSocketFile→CArchiveのコンボしか書いてないが、これはオブジェクトを送る
方法ですよね?
チャットのように、CFileから一行読んで→送信→受信→ファイルに一行書き込む というやり方でいけるでしょうか?
ネット初心者教えてクンで申し訳ない。
あと、CSocketとCAsyncSocketはどこが違うのかヘルプ何回良く分かりません。だれか簡単に説明してくれると
うれしいですm(_ _)m
0893ゴンベエ
NGNG私も初心者なんであまり偉そうなことはいえませんが、解る範囲で。
>チャットのように、CFileから一行読んで→送信→受信→ファイルに一行書き込む というやり方でいけるでしょうか?
いけるとおもいますよ。普通にSendかSendtoで。CStringつかうと簡単です。
私はSendしか使ったことありませんが、Sendの中身はchar[]です。
CSocketとCAsyncSocketのちがいは色々あるみたいですけど、CSocketはブロッキングモード前提で、
CAsync(非同期の意味)の方は、基本的にコールバックでブロック制御するためのものみたいです。
0894890
NGNG手入力したら普通にコンパイル通りました。(動作は確認してないけど)
でもおかしいですねー?afxcmn.hに記述されてますしね・・・??
0895デフォルトの名無しさん
NGNG0896papa
NGNGキーがchar*で、値がlongである場合の
CMapを利用して高速検索機能を実現したいと考えてます。
CMapのポインタはグローバルで初期処理でmdbから読み込んだ値をCMapのオブジェクトへと
格納したいのですが下記のやり方ですと検索が出来ないのです。
どなたか教えて頂けると幸いです。
ヘッダーには
CMap <const char*, LPCTSTR, long, long&> *pm;
クラスのコンストラクタではmdbからの読み込んだ件数をCntとして
pm = new CMap<const char*, LPCTSTR, long, long&> (Cnt);
値(char* a, long b)を入れる所では
pm->SetAt(a, b);
としています。この条件下で
クラス内の別関数内で検索を掛けるとキーに対応した値を持ってこないのです。
なにぶんまだ未熟ではあるので質問も的を得ていないかもしれません。
宜しくお願い致します。
0897デフォルトの名無しさん
NGNG当たり前だのクラッシュ
0898sage
NGNGちょっとウケタ>当たり前だの
まあいいや。
>>896
せいぜい文字列のハッシュ値をキーにするとか?
CMapのソース見たこと無いけど内部ではハッシュだったら
高速とか言っても無理だな。
0899デフォルトの名無しさん
NGNGstd::mapと関数オブジェクトでもいいけど
0900デフォルトの名無しさん
NGNGCWebBrowser2クラスが作成されますが、
OnBeforeNavigateをオーバーライドすることができません。
オーバーライドするにはどうしたらよいのでしょうか?(CHtmlViewを用いずに)
教えてください
0901papa
NGNGどうもありがとうございます。早速やってみます。
0902デフォルトの名無しさん
NGNG>OnBeforeNavigateをオーバーライドすることができません
OnBeforeNavigate2のこと?CHtmlViewメンバだけど・・・?
0903デフォルトの名無しさん
NGNGありがとうございます、とりあえず実装してみます。
0904デフォルトの名無しさん
NGNGintegerの値を stringに変えることは可能なのでしょうか?
string get_string(int value)
このようなfunctionで intの値を stringで戻したいのですが
おねがいします
0905デフォルトの名無しさん
NGNGでいいのでは。
0906デフォルトの名無しさん
NGNG#include <sstream>
std::string get_string(int value)
{
std::stringstream ss;
ss << value;
return ss.str();
}
こんなの?
0907デフォルトの名無しさん
NGNGテンプレートクラスカヨ・・・
MFC限定のはずが・・・
CStringじゃ駄目なの?
0908デフォルトの名無しさん
NGNGまさにそれがやりたかったことです
string streamの 使い方がよく分からなかったので 助かりました
0909900
NGNGCHtmlViewメンバなのはわかっていますが、
Dialogで作成したMS WebBrowserオブジェクトから作成される
CWebBrowser2クラスには「OnBeforeNavigate2」が含まれていませんよね。
ヘッダで、
CWebBrowser2の親クラスをCWndではなく、CHtmlViewにしても
無事コンパイルはできたのですが、ブレークポイントを立てると、
オーバーライドした「OnBeforeNavigate2」は通過していません。
どなたか知恵をかしてください
0910デフォルトの名無しさん
NGNGget_string()じゃなくてto_string()とかにしてくれ
0911デフォルトの名無しさん
NGNG「Dialogで作成した」っていうのはダイアログにブラウザコントロールを貼り付けたって意味か?
OnBeforeNabigate2()はブラウザコントロールの親ウィンドウ(つまりダイアログ)につくるんじゃないの?
0912デフォルトの名無しさん
NGNGどうしてもMFCのアイコンになったまんまなのですが…。
0913デフォルトの名無しさん
NGNG上の方のコンボボックスをいじるべし。
0914デフォルトの名無しさん
NGNG上の方とはどこの事なんでしょうか?すいません、初心者で…
0915デフォルトの名無しさん
NGNGリソースエディタでアイコンを直接変更するのはダメなの?
それともこういうこと?
http://www.ylw.mmtr.or.jp/~akky/mfc/dlgicon.html
0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNGあぁそういうことか。
リソースエディタを開いて「32×32」とか
書いてあるコンボボックスを選択すればよいってことね。
0918デフォルトの名無しさん
NGNG上のコンボボックスの意味がやっとわかりました。
リソースのアイコンファイルの編集の時の話だったんですね。
僕はてっきりダイアログの設定でアイコンを指定すると
アイコンを自動的に小さく縮小しているものだと思ってました(汗)
小さいアイコンを作って解決出来ました。ありがとうございます。
0919909
NGNGまじですか?ブラウザコントロールの親(ダイアログ)となると
CDialogを継承しているだけなので、CHtmlViewの関数である
OnBeforeNabigate2()は呼び出せないと思いますが。
それとも、この親(ダイアログそのもの)をCHtmlViewから継承させる
ということですかね?
うーーん
0920デフォルトの名無しさん
NGNGいやそうじゃなくて ブラウザコントロールの「これからなびげーとするよ」メッセージのハンドラがOnBeforeNabivage2()ってことだろ。
CHtmlViewとブラウザコントロール(IWebBrowser2だっけか)の関係をよく考えてみろ。
0921デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNGスクロールバーを消すにはどうしたらよいでしょうか?
0924デフォルトの名無しさん
NGNGゴメン、サンクス
0925デフォルトの名無しさん
NGNGモーダルレスダイアログはどうやって呼び出す側にメッセージ与えるんですか?
例えば元のクラスの関数呼びたいときとか、、
いまは呼び出す側のポインタも貰って使ってるが、そうすると相互includeしてたまにおかしくなる。
クラス宣言の前にincludeするクラスを書いておけば通るが、なんか危なそうなので、、
0926デフォルトの名無しさん
NGNGユーザ定義メッセージ
0927デフォルトの名無しさん
NGNGcloseのときメインの方にポストするんですか?
よーくわからないからヘルプ見てみる、、、
サンクス!
0928デフォルトの名無しさん
NGNG実はいい人
0929900,909
NGNG最近きづいたことなのですが、まず、自分のアプリはウィザードから
「ダイアログベース」として作成して、Webオブジェクトを貼り付けて
コントロールしています。
もしかして、CHtmlViewって、「SDI,MDI」ベースのアプリじゃないと
利用できないっぽくないですか?
こちらだと、問題なく、OnBeforeNavigate2はオーバーライドできますが・・・
問題点をまとめると、ダイアログベースのアプリで、あるWebオブジェクト
に対するCWebBrowser2クラスで「OnBeforeNavigate2」と同じことを
やりたいのです。
どなたかどうか知恵をかしてください
0930デフォルトの名無しさん
NGNGWIN32(NT SP5)で、VC6のMFCで作成されたモジュールが実行されている環境です。
VCから起動している8つ程度のスレッドがおのおの
VBモジュールを呼び出し、そこで1個の名前付セマフォを取得しているような状態で、
VCから起動されたスレッドがランタイムエラーを出したときに、
VBが獲得した名前付セマフォが開放されず残っているようなのです。
そこでVBがつかんでいるセマフォを開放する手段はあるでしょうか?
ReleaseSemaphoreは自分がつかんでいるセマフォしか開放できないのでしょうか?
詳しい方教えてください。
0931デフォルトの名無しさん
NGNGだからぁ
ダイアログクラスで、ウエブブラウザコントロールの「これからナビゲートします」メッセージのハンドラを作ればいいだけじゃないの?
CHTMLViewクラスは内部にウェブブラウザコントロールを持っていて、「これからナビゲートします」メッセージのハンドラとしてOnBeforeNavigate2()が書かれているわけだろ?
君の場合はCHTMLViewがダイアログに変わるだけの話だろ?。
だまされたと思ってクラスウィザードで ダイアログクラスにウェブブラウザコントロールの「これからナビゲートします」メッセージのハンドラを作ってみてくれ。
それで何が不満なのか教えてくれ。
それともウェブブラウザコントロールの派生クラス自身でどうしてもやりたいのか?それならCHtmlViewの話がでてくるのはおかしくないか?
それとも俺はからかわれているだけなのか?
0932デフォルトの名無しさん
NGNGそのクソOCXを捨てなさい。
0933デフォルトの名無しさん
NGNGViewはウィンドウではないのでメッセージはポストされません。
なのでダイアログの派生元をCHtmlViewにしてもメッセージハンドラは
呼ばれません。
0934900,909
NGNGいろいろありがとうございます。決してからかっていません。
それから、動作報告も必ずします。
これから試してみますが、933さんのような意見があると、ちょっと不安・・・
931さんを信じてみます
0935デフォルトの名無しさん
NGNGエディットコントロールなどを貼り付けてしまうと、
WM_CHARやWM_KEYDOWNなどがダイアログクラスで受け取れなく
なってしまいますけど、
いい対処法ってありますか?
0936900,909
NGNGやっぱり駄目でした
>だまされたと思ってクラスウィザードで ダイアログクラスに
>ウェブブラウザコントロールの「これからナビゲートします」メッセージの
>ハンドラを作ってみてくれ。
class CTestDlg : public CDialog
{
}
ダイアログクラスはこんな感じですが、
やはり、ClassWizardでは、OnBeforeNavigate2メッセージハンドラは
生成できないですね。
CDialogを継承するだけでは無理ぽい気もしますが・・・
かといって、
class CTestDlg : public CDialog,public CHtmlView
{
}
も駄目でしたし。
0937デフォルトの名無しさん
NGNG>生成できないですね。
ClassWizardがないと、何もできない人のようですね:)
CHtmlViewくらい、改造してしまえばいいのに。
0938デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNGお前には本当にいらいらさせられるな。
ダイアログにブラウザコントロールを貼り付けるだろ。
クラスウィザードでダイアログのクラスを選択して オブジェクトIDでブラウザコントロールを選択するだろ。
そうするとそのブラウザコントロールのメッセージとしてBeforeNavigate2というのがあるだろ。
そのメッセージのハンドラを作れって二日前から延々言ってんだよ。
ダイアログベースのアプリなんだからCHtmlViewは全然関係ない。
メッセージハンドラを作るんだぞ!。オーバーライドじゃないぞ!。わかるか??
0940結構初心者
NGNG文字列の内容を判断して実行させる、インタープリタもどきな機能をもたせたアプリケーションを
作りたいのですが、文字列の判断にif elseを連発して、いまいち見栄えがよくありません。
良い方法があったらどなたかレスお願いします。
0941デフォルトの名無しさん
NGNGyacc&lex
flex&bison
あたりをキーワードに何か探してみなさい
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNGなんつーか・・・なんだかんだで教えてやってるお前・・・優しいな
惚れちまいそうだ(ぽっ
0945942
NGNG多少のオーバーヘッドはあるにせよ、総当りでif elseを繰り返すよりは
比較回数減る分速いとは思うが、結局文字列比較繰り返してることには
変わらないからトロい。hash_mapならもうちょっと速いが標準じゃないし。
まぁ、yacc&lex使う根性がなくて、速度を求めないならアリって程度。
0946デフォルトの名無しさん
NGNG0947940
NGNGCMap!?
ザッツサウンドナイス(訳:根性なくてもできそうな響き♪)!!
それも見てみます。
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG遅いかどうか以前に、yacc と比べると受け付ける言語のクラスが限定されるのが痛いと思われ。
手で状態遷移を計算できる程度だと LR(1) なんて論外でしょ。
0950936
NGNGなるほど
うまくいきました。自分で間違って思い込みしていたところがあって、
ClassWizard立ち上げても見過ごしていました。
デバッガでも万事うまく通過しました!!
ありがとうございました
0951デフォルトの名無しさん
NGNGage。
0952デフォルトの名無しさん
NGNG>>936
0953デフォルトの名無しさん
NGNG俺は認めないぞ!
0954デフォルトの名無しさん
NGNGCBitmapButtonで管理している任意のビットマップボタンを
操作不能(マウスオンに反応せずノーマルボタン状態の画像が表示されたまま)
にするのはどうしたらよいのでしょうか?
EnableWindow(FALSE)だと、ボタンの画像すら描画されないですし。
0955デフォルトの名無しさん
NGNGEnableWindowでできますよ。
ボタンに割り当てる画像(操作不能時)のリソースIDを
"hogehogeX" にしてますよね?
0956デフォルトの名無しさん
NGNGそろそろ新スレたてるべきかと。
もういないかもしれないけど・・・
0957デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/test/read.cgi/tech/1008031675/
0958みゆ
NGNG新規作成で
MFC AppWizard→ダイアログベース→***App
を選択したもので
始めに出来ているダイアログ画面の
親を適当なもの(ウィンドウクラス名をAとする)
に変更することなんかはできるのでしょうか?
このときダイアログのウィンドウクラス名をBに設定し
親のウィンドウクラス名をAにする方法もおしえてください
0959デフォルトの名無しさん
NGNGIE6で動作させるためにActiveX化したいと
思っています。
機能は、ファイルアップロード、ダウンロードです。
お勧めの開発方法、書籍などあったら教えてください。
0960デフォルトの名無しさん
NGNGあるスレッドを使ったプログラムをCOM化すると、
WaitForSingleObjectのところで応答が返ってきません。
どうやらスレッドが終了していないようなのですが、原因不明です。
COM化してない場合は問題なく動くのですが、
なにかご存知の方、いらっしゃいますでしょうか?
0961デフォルトの名無しさん
NGNG新スレ逝ってください。ageないでください。
http://pc.2ch.net/test/read.cgi/tech/1008031675/l50
レス数が950を超えています。1000を超えると書き込みができなくなります。