■ VisualC++(MFC限定)相談室 5■
■ このスレッドは過去ログ倉庫に格納されています
0001MFC
NGNG■ VisualC++(MFC限定)相談室 4■
http://pc3.2ch.net/test/read.cgi/tech/1021620974/l50
0153デフォルトの名無しさん
NGNGイメージを貼り付けたいのですがどなたかご存知ではないですか?
メディアプレーヤーみたいにいくつもイメージを変えたいです。。
0154デフォルトの名無しさん
NGNG::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST|SHCNF_FLUSH, 0, 0);
0156デフォルトの名無しさん
NGNG取得するにはどうすればいいでしょうか?
CWnd* ????(HWND hWnd);
みたいな関数ってありませんか?
CWnd::FromHandle()
0158156
NGNG最高です。
感謝します。
0159デフォルトの名無しさん
NGNGフレームワークのファイルオープンのダイアログみたいに使うことはできませんか?
0160あ
NGNGみたいに?
代わりにじゃなくて?
0161159
NGNG0162デフォルトの名無しさん
NGNGするには、どうしたらいいですか?
一行目だけ色を変えたいんですけど、やりかたが書いてある
参考書がないので
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGID_FILE_OPEN の COMMAND メッセージハンドラを CXxxApp に作る。中身は
void CXxxApp::OnFileOpen()
{
LPCTSTR lpszFileName;
{
// ここで自作のファイルオープンのダイアログから得たパスを
// lpszFileName に格納
}
CWinApp::OpenDocumentFile(lpszFileName);
}
見たいな感じ。
0165デフォルトの名無しさん
NGNGこの際ウィンドウのスタイルを
WS_CHILD
でなおかつ、
WS_EX_CLIENTEDGE (ウィンドウの境界が3D)
にしたいと思っています。
CWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
で、
lpCreateStruct->dwExStyle
をいじくったりしていますが上手くいきません。
よい方法があれば、或いは不可能であるのならば
その旨を教えて下さい。
そもそも、CWndを直接継承してウィンドウを作って良いのか否か
も分からないのですが…。
0166デフォルトの名無しさん
NGNG0167165
NGNGありがとうございます。上手くいきました。
また質問なんですが、
CWnd::OnMouseWheel()
のところが上手くいきません。
これもまた、CWndから直接継承されたウィンドウなのですが。
ほかの、OnMouseMove()などはちゃんと反応するのですが…
0169デフォルトの名無しさん
NGNGDLLを使用してもよいなら
正規表現 DLL
で検索を、、
0170170
NGNGたとえばCStaticのAとBがあります。どちらもビットマップが表示されています。
AがBの上に重なっているとして、マウスでBをクリックすると、
BがAの上にくるように表示しなおすことってできますか?
もしできなければ、ほかのコントロールを使ってもいいので、
似たようなことができますか?
0171171
NGNGできるよ
0172170
NGNGどういう方法がありますか?
0173あ
NGNGSetWindowPos
で無理か?
0174動画無料サンプル
NGNG小学生、中学生、女子高生が【無料】で見れる!!
http://www.traffimagic.com/WIPE7MMLZCA/comein/NZKYA
0175デフォルトの名無しさん
NGNGで、子ウィンドウはダイアログベースで作ったものをそのままはめ込む
ようにしたいんですが、どのような手順で作ればよいのでしょうか?
0176デフォルトの名無しさん
NGNGウインドハンドルを渡すとZオーダーを返してくれるとか、そういうのありますか?
GetNextWindow以外でお願いします。。
0177デフォルトの名無しさん
NGNGCFormViewにしとけ
0178デフォルトの名無しさん
NGNG0179突然ですが
NGNG0180デフォルトの名無しさん
NGNG13文字で不吉だからと思わ
0181デフォルトの名無しさん
NGNGC**View::OnPreparePrintingで
DEVMODE* pDev=(DEVMODE*)GlobalLock(pInfo->m_pPD->m_pd.hDevMode);
pDev->dmPaperSize=DMPAPER_A3;
pDev->dmOrientation=DMORIENT_PORTRAIT ;
pDev->dmFields= pDev->dmFields | DM_PAPERSIZE | DM_ORIENTATION ;
GlobalUnlock(pDev);
とやってるのですが、デフォルトのA4のままです。プリンタの設定の
ダイアログを使わずにどうやってA3に出来ますか?
0182デフォルトの名無しさん
NGNGわからんけどCreateDCでHDCを作り直すんじゃねーの
0183デフォルトの名無しさん
NGNGこれって使ってるコントロールの数とかモロに影響します?
0184デフォルトの名無しさん
NGNG不特定多数のコピーを行いその後
シャットダウンを続行したいのですが、
うまくいかなくて困ってます。
BOOL CTestDlg::OnQueryEndSession()
{
if (!CDialog::OnQueryEndSession())
return FALSE;
// TODO : ここに特定なクエリの終了セッション コードを追加してください。
CopyFiles();//不特定多数のファイルのコピー処理
return FALSE;
}
実際書いてみると、コピー処理が長く、
応答が無いから終了しますか?みたな
プログレスバー付きのダイアログが表示されてしまいます。
これはちょっと不自然なので、どうしたらいいでしょうか?
0185184
NGNG環境はWinXP VC.NETです。
よろしくお願いします。
0186デフォルトの名無しさん
NGNG根本的に、終了間際に時間のかかる処理はするなってこった。
適切な対処法は知らんけどさ。とりあえず、OnQueryEndSessionで
FALSEを返しておいて、OnEndSession で CopyFiles() を読んんで処理が
終わった後、ExitWinodowsするとか。
0187デフォルトの名無しさん
NGNGBOOL exitFlag = FALSE;
BOOL CTestDlg::OnQueryEndSession()
{
return exitFlag;
}
void CTestDlg::OnEndSession(BOOL bEnding)
{
if(!bEnding && !exitFlag) {
CopyFiles();
exitFlag = TRUE;
::ExitWindows(0,0);
}
}
0188184
NGNGこの方法でいけそうです。
ありがとうございました。
0189VC初心者
NGNGVBでいうDoEvents()にあたる関数を教えていただけませんでしょうか?
0190あ
NGNGおいおい、俺はVB知らんから
教えてやろうにも教えてやれない。
そこで検索してみることにした。
VB DoEvent
見事にヒットした。
代わりに検索して欲しいと言う依頼ですか?
出直してきなさい。
0191VC初心者
NGNGvoid DoEvents(void){
MSG msg;
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
0192デフォルトの名無しさん
NGNGDoEventsは知らないけどAfxBeginThread辺りを調べてみて。
0193VC初心者
NGNG全然わからないので無理っぽいです。(汗
とりあえず、上のDoEvents()でうまくいきました。
0194今田純
NGNG以下のコードではだめなんですが、どこをどうなおせばいいのか、
おしえてください。おながいします。
void CMy1Dlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CEdit* e1 = (CEdit*)GetDlgItem(IDC_EDIT1);
CListBox* l1 = (CListBox*)GetDlgItem(IDC_LIST1);
CString s1;
e1 ->GetWindowText(s1);
l1 ->InsertString(-1,s1);
}
void CMy1Dlg::OnButton2()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CEdit* e2 = (CEdit*)GetDlgItem(IDC_EDIT1);
CListBox* l2 = (CListBox*)GetDlgItem(IDC_LIST1);
CString s2;
char buf[50];
double n1;
double n2;
e2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
sprintf(buf,"%d",n2);
l2 ->InsertString(-1,buf);
}
0195今田純
NGNGe2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
sprintf(buf,"%d",n2);
l2 ->InsertString(-1,buf);
0196あ
NGNGだめっぽいのはわかったけど、
どうだめっぽいの?
0197デフォルトの名無しさん
NGNG結果が表示されないとか?
0198デフォルトの名無しさん
NGNG0199あ
NGNG当たり。
自信なくてUpdateData(FALSE);
ありとなしの両方のコード書いてきたら
なしじゃ結果が表示されなくて、
UpdateDataしたらいけたよ。
よって解決。
0200今田純
NGNG>>196-197
結果は表示されますが、おかしいです。
数字が出力されてほすぃのに、文字が「フ0」とかでます。
>>198
UpdateData。。。なんでしょう。。あたらしい言葉だ。。
調べてきます。
sprintf(buf,"%d",n2); を
sprintf(&buf,"%d",n2); にしました。
Editboxに「1」を入力したら、Listboxに「2」とでてほすいのですが、、
「フ0」(フは半角)
と表示されますた。
editboxが空だと「0」と表示されます。
ウトゥです。
0201今田純
NGNGありがとうございました。
0202デフォルトの名無しさん
NGNG> sprintf(&buf,"%d",n2); にしました。
あほう。
0203今田純
NGNG「あ」さん
UPDATEDATAってコードのどこに書き込めばよいのでしょうか?
教えてください。オナガイします。
これで僕の最初のVC++プログラムが動く。。かもです。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGUpdateData(FALSE)で変数の内容をコントロールに表示する
普通は変数を処理する前にTRUEで処理した変数の内容を表示する場合にFALSEだから
メッセージハンドらの最初にTRUE、最後にFALSEが一般的では?
0206今田純
NGNGcahrじゃないとだめですか?
教科書もチャーで書いてあるし、、
0207デフォルトの名無しさん
NGNGe1 ->GetWindowText(s1);
l1 ->InsertString(-1,s1);
としなくても、戻り値がコントロールのポインタなので戻り値をそのまま利用して
GetDlgItem(IDC_EDIT1)->GetWindowText(s1);
GetDlgItem(IDC_LIST1)->InsertString(-1,s1);
これでOKだよ
この方がわかりやすいでしょ?
0208デフォルトの名無しさん
NGNG0209今田純
NGNG文字列の中身をcharに直さないと。
ということですね。
0210今田純
NGNGわかっているつもりだttが、わかってないことがわかってしまったあぁ!
歩いたら道が伸びていく感じです
0211デフォルトの名無しさん
NGNG0212今田純
NGNG>>208クラス。。クラスってなんか塊みたいなものですよね。代入不可ですか
>>211僕もとてもそうしたいですが。。
GetWindowText(s1);
InsertString(-1,s1);
とかが使えないと、ファイル入出力ができなくないですか。
テキストファイルからデータを読んで、数値計算をして、
結果をテクストファイルで出力したいんです。
0213デフォルトの名無しさん
NGNGe2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
sprintf(buf,"%d",n2);
l2 ->InsertString(-1,buf);
ここらへんをステップ実行して、s2,n1,n2,buf の値を調べてみれ。
どこで変数の値が化けるのか分かるから。
0214デフォルトの名無しさん
NGNGe2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
l2 ->SetWindowText( itoa( n2, buf, 10 ));
ではダメなん?
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGVC上っつーか、CString::oprator LPCTSTR()があるんで、
TCHARがcharならば、C++的に問題なし。
0219デフォルトの名無しさん
NGNGカッコイイからじゃないか?
0220今田純
NGNG>>214おお!atoiがあるならitoaもあるはず!なんで気づかなかったのか!
>>215どもですー。
>>216数値計算に使いたいからですー
>>217僕が地に足の着いてない生き方だからです、すんまそん。
>>218LPCTSTR()って何の略なのかすらわかりませぬ。とりあえずNO問題?
0221デフォルトの名無しさん
NGNG> おお!atoiがあるならitoaもあるはず!なんで気づかなかったのか!
C標準関数じゃないから。
0222デフォルトの名無しさん
NGNG略っていうかCSTRINGのメンバ関数だよ
0223デフォルトの名無しさん
NGNGあなたが参考にしてるという教科書にはクラスに関する解説はないの?
0224デフォルトの名無しさん
NGNG0225今田純
NGNG223-224>>そんなこというなよ、ウワァァァンヽ(`o´)/
0226デフォルトの名無しさん
NGNG君が使ってるVC++が合法的に入手したものであればヘルプ機能が付いてるはず
VCのヘルプであるMSDNは素晴らしいツールだから是非使い方を覚えるべきだね
CStringのメンバについてもその使い方についても全て書いてあるからさ
まずエディタの中でCStringという記述を反転させて(記述がなければ記述してくれ)F1キーを押す
それから「該当するトピック」の中からCStringクラスメンバを選んでクリックする
0227デフォルトの名無しさん
NGNG(それなら << か...どうでもいいや。)
0228デフォルトの名無しさん
NGNGint num=12345;
hoge.Format("数値は%dですが何か?",num);
MessageBox(hoge,"test",MB_OK);
//(゚д゚)ウマー?
0229デフォルトの名無しさん
NGNG>エディタの中でCStringという記述を反転させて
カーソルを CString という文字列のどこかに置くだけで OK。
0230デフォルトの名無しさん
NGNGCString strTemp2 = strTemp1;
としてもほとんど処理速度に影響ないときいたのですが
どういう意味でしょうか?
0231あ
NGNG>今田純
別に嫌味で言うわけじゃないけどさ、
はっきりいってMFCやるの早いよ。
クラスのこと分かってなかったら
MFCいじっても勉強っていうより
作った気になるだけじゃないかな。
MFCよりまずはクラスがなにか、
継承、カプセル化などについて学び、
その後SDKを学ぶことを強くオススメする。
0232今田同定
NGNGふん、おめーよりはわかってるよ!
0233デフォルトの名無しさん
NGNGC++の基礎とかわかんなくても何となく作れちゃうから。
0234デフォルトの名無しさん
NGNG>CString strTemp2 = strTemp1;
のときは文字列の内容自体はコピーしなくて、ポインタのコピーと参照回数++しか
しないことがいいたいんだろ
>>232
同定ageすんなよ
0235デフォルトの名無しさん
NGNGいちいち char buf[50]なんてやらんでよろし。DDXとか使わないんだったら
CEdit* e2 = (CEdit*)GetDlgItem(IDC_EDIT1);
CListBox* l2 = (CListBox*)GetDlgItem(IDC_LIST1);
CString s2;
int n1;
int n2;
e2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
s2.Format("%d",n2);
l2 ->InsertString(-1,s2);
でいいだろ。
こういう処理したかったら普通ClassWizard使ってエディットボックスの
値を反映させるメンバ変数使います。
0236デフォルトの名無しさん
NGNG>>216数値計算に使いたいからですー
すまん、doubleが使いたいのね。だったら%dじゃなくて%gとか%f。
atoiはatof使わないと少数切られるよ。
0237デフォルトの名無しさん
NGNG0238VisualC++初心者
NGNGアプリケーションを起動した時のみ一度だけ実行したい関数があるのですが、
その関数はCClientDCオブジェクトのアドレスを渡さなければなりません。
それでオブジェクトを作るためにCAppView::CAppView()にCClientDC DC(this)と
記述したのですが、どうも不安定になっていしまいました。(Appはプロジェクト名です)
OnDrawに同じコードを書くと問題無いようなのですが、何回も関数が呼び出されるわけには
いきません。何か方法ありませんか?
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGCAppView::OnInitialUpdate()に書いとけば?
0241デフォルトの名無しさん
NGNG>>238
フラグでも用意してやれば良いんじゃない?
0242あ
NGNGそりゃMFCの方が断然簡単だよ。
=SDKの知識が必要ないとは
別な気がするなぁ。
私はSDK->MFCの流れだけど、
SDKやってるからかなり分かりやすかったよ。
俺の使ってた本には、
船の操作方法はわからなくても
海を航海できるが、
最低限の舵取りなどは覚えておくべき、
みたいな例え方してたと思うけど、
ほんとその通りだと思うなぁ。
0243デフォルトの名無しさん
NGNG単にヘルプとIDEの使い方知らない奴なんだから。
0244あ
NGNG確かに。
根本的なものが抜けてるね。
で、考え直したけど、つまりは
できないことじゃなくて、
できることからやってろ。
って言うのが結論ですかね。
頑張れ新人。
0245デフォルトの名無しさん
NGNGCClientDC DC(this)なんてことしたら実行時にエラーで落ちるでしょうね。
ViewクラスにBOOL型のメンバ変数でも追加して、OnDrawで1回だけ描画
されるようにしたらいいと思いますよ。
>>240
その時点で描画しても多分描画されないと思う。
0246今田純
NGNGなので、生あたたか〜く見守ってください
>>232いつもくるけど、道程じゃねえっていってるだろ!プンプン!
>>233-237レスさんくすこ
0247デフォルトの名無しさん
NGNGメニュー->オプションで
オプション設定画面(ダイアログ)を表示するような
コードを書いたのですが、
もう結構進んだ段階なのですが、
オプション設定画面に置くべきコントロールが
増えてきたのでタブ式のオプション設定ダイアログに
変更したいと思ったのですが、
なにかいい方法はないでしょうか。
タブコントロールを使うのが一番早いでしょうが、
あれってリソースエディタ画面がコントロールで
ぐちゃぐちゃになりません?
必要に応じてShowWindowで切り替えるので
リソースエディタ開いたら1〜?ページぶんの
コントロールが表示されてる状態で。。
ページをタブコントロールで切り替える場合
リソースエディタの見た目入り混じって
ぐちゃぐちゃになりますが、こういうものなんでしょうか?
実際起動するとShowWindowで制御されてるので
普通に見えます。
0248デフォルトの名無しさん
NGNG0249247
NGNGやっぱりそうですよねぇ。
実は私もそう思ったんですが、
CDialogから派生したオプションダイアログなんですが、
これをAddPageするにはCPropertySgeetからの
派生クラスに変更しないといけないんですが、
なんか単純に public:CDialog
の部分を変更しただけだとコンパイルすら
通らない状態になってしまって。。
両方ともCDialogの派生クラスだからいけると思ったんですけどね。
なんか間違ってますか??
0250デフォルトの名無しさん
NGNG余裕で変更できる。
・ダイアログの基本クラスを、CPropertyPage(CPropertySheetではない) にする。
・ダイアログエディタで
[無効] と [タイトル バー] プロパティにチェック
[スタイル]→[チャイルド] 、[境界線]→[細枠]
・CPropertySheet::AddPage() , CPropertySheet::DoModal()
0251デフォルトの名無しさん
NGNGCClientDC myDC(&m_pict); <====アソコ
m_pict.GetWindowRect(&pictSize);
.....
.....
myDC.SelectObject(&myRgn);
となっとるだどもアソコでは何をしてるんだべか?
CClient型のオブジェクトmyDCを作ってるのかと思ったら
m_pictというオブジェクトもできてるように思えるんだべが。
0252デフォルトの名無しさん
NGNGタブ分のフォーム作って選ばれたタブによってフォームをSHOW,HIDEしてやれば?
■ このスレッドは過去ログ倉庫に格納されています