■ VisualC++(MFC限定)相談室 ■
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGMFCに限ったお話をしましょう。
ルールを提案。
Qは高度なものからくだらないものまで何でもOK。
Aは「知ってるつもり君」、「えらそうに解説する人」お断りと
いうことで。
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
NGNG■ このスレッドは過去ログ倉庫に格納されています