■ VisualC++(MFC限定)相談室 3■
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001MFC
NGNG0002デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/989902845/
■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/test/read.cgi/tech/1008031675/
0003II
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGイベントはどうして取ればいいのでしょう?
ON_BN_CLICKED(IDC_XXXXX, OnXXXXX)
↑こんな風に書けないしって事なんですけど。
0006デフォルトの名無しさん
NGNGVC++のエディタ上でが空白文字のとこに現れるようになったんだが、
どうやったら消せる?
0007修正
NGNGVC++のエディタ上で
^ `
が空白文字のとこに現れるようになったんだが、
どうやったら消せる?
0008修正
NGNG~~~~~
が空白文字のとこに現れるようになったんだが、
どうやったら消せる?
0009デフォルトの名無しさん
NGNGCtrl+Shift+8
0011デフォルトの名無しさん
NGNG生意気に答えてみます。
マクロ
ON_COMMAND(IDC_XXXXX,OnXXXXXXX)
を定義してハンドラ
void CXXXXXX::OnXXXXXXX()
を作成。もちろんヘッダでは
afx_msg void OnXXXXXXX();
を定義。これでどうでしょう。ぜんぜん的外れな回答でしたら
スミマソン
0012デフォルトの名無しさん
NGNGなんで書けないの?
手動で書けばいいじゃん。
0013デフォルトの名無しさん
NGNG自分で書いたものは //{{ ... }}// の外に置くように。
さもないとClassWizardがパルプンテをくらう。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGさせる方法ありますか?
0016MFC わけわか
NGNGMDI で、CxxxDoc と CxxxView ってクラスを作って。例えば、CxxxDoc でファ
イルを読み込んだら読み込んでいる状況を CxxxView に表示したいんだよ。
とりあえず、CxxxDoc でワーカスレッド作って適当な時に、CxxxDoc の状態を
更新して、UpdateAllViews(NULL); って呼べば、CxxxView の OnUpdate()
が呼ばれて表示を更新...、と思ったけどやってみたらアプリケーションエラー
になるんだよ。で、HELP 読んだら「たとえば、あるワーカー スレッドで計算を
行ってから、ドキュメント オブジェクトのメンバ関数 UpdateAllViews を呼び
出して、新しいデータに対するビューの収容先ウィンドウに反映させることはで
きません。」とそのものずばりのことが書いてあんだよ。
で、対処としては「第 1 の方法は、ワーカー スレッドに C++ オブジェクトを
渡さずに HWND などのハンドルを個別に渡す方法です。」と「もう 1 つの方法
は、ワーカー スレッドが処理するタスクごとに新しいユーザー定義のメッセー
ジを作成し、このメッセージを ::PostMessage 関数を使ってアプリケーション
のメイン ウィンドウに渡す方法です。」って書いてあんだけど、HWND 等のハン
ドルってどのハンドル渡しゃいいんだ ? CxxxDoc か ? CxxxView か ?
また、::PostMessage で送ったメッセージを CxxxView で受けるにゃどうすりゃ
いいんだ ?
0017デフォルトの名無しさん
NGNGこの場合はDocかな。
> ::PostMessage で送ったメッセージを CxxxView で受けるにゃどうすりゃ
手動でハンドラを追加する
>>11が参考になるかも。
0018デフォルトの名無しさん
NGNGすまん、もう少し教えてくれ。Doc って、CxxxDoc のことだよね。これには、
HWND はないんだが...。(CxxxView なら、CWnd が m_hWnd 持ってんだけ
ど。) なんか、HWND を取り出す関数とかあるのかな ?
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG第2の方法(アプリケーションにPostMessage)で行くのなら、
第1の方法(HWND渡して云々)は関係ないだろ。
まあ、この場合、スレッドにViewのウィンドウハンドルを渡して
そこにメッセージを投げさせるのが妥当だろうけど。
0021デフォルトの名無しさん
NGNG例えばクラスの中の関数でこのような感じで
CBrush *CB = new CBrush(theApp.GetProfileInt(theApp.version,_T("TextBkColor"),0));
return (HBRUSH)CB->m_hObject;
newしてその値を返すとき、この*CBをdeleteすることが
できませんが、これはこのままでいいのでしょうか?
それともポインタではなく変数を利用してdeleteすべきでしょうか?
0022デフォルトの名無しさん
NGNGさんくす、でけたよ。
でも MFC のアーキテクチャーがよくわからん。これは、一つの CxxxDoc
に対して、CxxxView が一個だけだから良いけど、複数の CxxxView があ
るときは、その数分 HWND 渡すしかないのかなぁ。
0023デフォルトの名無しさん
NGNG安心したまえ。ドキュメント/ビューアーキテクチャで悩んでいるのは君だけではない。
しかし、大事なのはドキュメント/ビューアーキテクチャは使うことを「強要されない」って事だ。
実際、DocとViewをきっちり使い分けてるやつが何人居るやら。
0024デフォルトの名無しさん
NGNGリークします。
return CB;
じゃだめ?
>>23
>大事なのはドキュメント/ビューアーキテクチャは使うことを「強要されない」
否定はしないが、D/V/Fが完全に分離した設計も腕が上がれば、可能。
この場合、コードの冗長性とパフォーマンスに疑問を感じるが、今のCPUパワーで
なんの問題もない。
データ保持と、そのデータの操作は、CDocに徹する。
CViewは、CDocの内容のレンダリングに徹する。
ただし、CDocの作りはヘボいので注意。
0025デフォルトの名無しさん
NGNGやっぱりリークするんですね。
struct HBRUSHを返したいのですが
では変数でやってみようと思って
CBrush CB = CBrush(theApp.GetProfileInt(theApp.version,_T("TextBkColor"),0));
このようにしてみたましたが、これは出来ないみたいですね。
本来
return (HBRUSH)GetStockObject(WHITE_BRUSH);
こうなっていたのをこれだと細かい色指定ができないなあと
思って今の形にしたのですが・・・
どうしたらよいでしょう?
0026デフォルトの名無しさん
NGNGそーゆー時は、アプリのはじめでブラシを作っておいて、毎回渡して、
終了時に破棄すべし。
HBRUSHをAPIで、直接作る時も同じ。
ストックオブジェクトは、そのハンドルを破棄する必要がないから(破棄できない)
破棄を省略してるだけ。
WM_CTLCOLORなんかで
return ::CreateBrush();
としたら、毎回リークする(と思う)
002725
NGNGなるほど。ありがとうございます。
無事メモリリークしなくなりました。
002825
NGNGもうひとつメモリリークに関して質問があります。
ダイアログクラスを
new で作って<vector>にしまっているとき、
必要が無くなったらdeleteして<vector>からそのポインタを消したいのですが、
以下のように
ダイアログクラスの
void MyDlg::OnClose() 関数から
CDialog::OnClose();
delete theApp.whoisdlg.at(d);
theApp.mydlg.erase(theApp.mydlg.begin() + d);
このようにしてdeleteしてみました
クラスの中からそのクラスを指すポインタを削除してるわけですから
なにかおかしなことになるかな?と思ったら
ちゃんと動いてしまいました。しかしデバッガには以下のようにメッセージが
でます。
Warning: calling DestroyWindow in CDialog::~CDialog --
OnDestroy or PostNcDestroy in derived class will not be called.
Warning: no message line prompt for ID 0x8008.
Warning: no message line prompt for ID 0x800A.
これはなにか問題ありますでしょうか?
それともこのような遣り方はやめた方が良いですか?
0029デフォルトの名無しさん
NGNG「いきなり、~CDialog()かよっ」って感じです。
おれも良くわからんが、delete this;つーコードは「あり」らしい。
もう寝ます。
0030デフォルトの名無しさん
NGNG普通ウィンドウ消すときはDestroyWindowを使う。で、CDialogの場合は
OnDestroy の中で delete this するようになっていたような気がするゾナー。
このケースと関係あるかどうかは眠いのでよくわからん。
0031デフォルトの名無しさん
NGNG文章の内容を見て色違いの
文章を出力するにはどうしたらよいでしょう?
文章の先頭を参照してある文字で始まっていたら
その行は色を替えるとかしたいのですが・・
0032デフォルトの名無しさん
NGNGCListViewの項目の間のバーをドラッグしたときにウインドウに
送られるメッセージは何でしょうか?
Spy++を使ってみましたが量が多すぎてよくわかりませんでした。
0033デフォルトの名無しさん
NGNGそれ専用に定義されたメッセージというのはたぶんない。
WM_LBUTTONUP なり WM_MOUSEMOVE なりで、
GetColumnWidth して幅が変わったかどうか調べる、
くらいしかないんじゃないかな。
0034デフォルトの名無しさん
NGNG解説した書籍やサイトは無いでしょうか。
MSDNライブラリ日本語版で検索しても詳しく説明しているものがないのです。
0035デフォルトの名無しさん
NGNGどうしたらよいでしょうか?
右クリックから貼り付けならば出来るのですが・・・。
0036デフォルトの名無しさん
NGNG行いたいのですが、LCOUNT.BATのどこをどう編集すればよいのか分かりません。
編集しないと糞重いし、必要な個所を見つけるのも一苦労なので困ってます。
0037デフォルトの名無しさん
NGNGデフォルトで有効になってない?
0038デフォルトの名無しさん
NGNG自分もそう思っていたのですが、なぜか動かないのです・・・。
CSplitterWndで区切って使っているので何か特殊な操作が必要なのでしょうか・・?
0039デフォルトの名無しさん
NGNGアクセラレータを変更したとか?
0040デフォルトの名無しさん
NGNGfile_names_buf[0] = '\0';
CFileDialog dlg(true, NULL, NULL, OFN_ALLOWMULTISELECT,
"CSV(カンマ区切り) (*.csv)|*.csv|全てのファイル (*.*)|*.*||");
dlg.m_ofn.lpstrFile = file_names_buf;
dlg.m_ofn.nMaxFile = sizeof(file_names_buf);
if (dlg.DoModal() != IDOK) return; <---
...
複数ファイル選択可能のファイルダイアログを使っています。
上のコードで、複数のファイルを選択することはできるのですが、
ファイルを一つだけ選択すると、OKボタンを押しているのに、
IDOKが返らず、矢印のところでリターンしてしまいます。
な ぜ で す か ?
よろしくお教授願います。
004135
NGNG>アクセラレータを変更したとか?
すみませんアクセラレーターとは何でしょうか?
0042デフォルトの名無しさん
NGNGIDCANCELが返ってるね…<DoModal
>>41
リソースにAcceleratorがあるよ。
それでCtrl+*やAlt+*の組み合わせを簡単に設定できる。
ところでCtrl+*ってエディットビューをクリックしたりして
フォーカスを与えてからやってるんだよね?
0043デフォルトの名無しさん
NGNG右クリックで関数を実行したい時
マウスポイントの下にコントロールが
あると機能しないんですが、
回避策はあるのでしょうか?
0044デフォルトの名無しさん
NGNGPreTranslateMessageで捕まえる
0045デフォルトの名無しさん
NGNGchar file_names_buf[0x10000];
が大きすぎるみたい。0xFFFFだといける。
0046デフォルトの名無しさん
NGNGダブルクリックはどのうなるんでしょう?
でも質問に答えてくださってありがとうございました
004735
NGNG>それでCtrl+*やAlt+*の組み合わせを簡単に設定できる。
>ところでCtrl+*ってエディットビューをクリックしたりして
>フォーカスを与えてからやってるんだよね?
リソース見てみました。
特に変更はしてないです。
しかし。ここではないかと思われる点がありました
ダイアログ上でリターンキーが押されたらある処理を
するようにPreTranslateMessageをオーバーライドしていたのですが、
BOOL LineFormView::PreTranslateMessage(MSG* pMsg)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
if (pMsg->message == WM_KEYDOWN){
switch(pMsg->wParam){
case VK_RETURN:
OnButton1();
return TRUE;
break;
}
}
return CFormView::PreTranslateMessage(pMsg);
}
どうもここでは?と思っています。
しかしこれは見る限りでは
リターンキーが押されたときのみ処理をしたあと
return CFormView::PreTranslateMessage(pMsg);
すべてのメッセージを返していると思われるので、
どうも原因がわかりません・・・・。
0048デフォルトの名無しさん
NGNGすまん!スプリッタウィンドウっていうからてっきりCEditViewかと思ってたけど
CFormViewにエディットコントロールを貼り付けてたんだね。勘違いしてた。
で、フォームビューに貼り付けたエディットコントロールに対して
Ctrl+Vはデフォルトでできない。(さっき作って確認した)
アクセラレータリソースのCtrl+VやCtrl+Cを削除するとできるようになる。
004940
NGNGめっちゃたすかりました。
0x10000だと3バイトですもんね。できないはずだ・・・。
005035
NGNG出来ました!ありがとうございます。
しかしなんで
アクセラレータリソースのを削除すると出来るようになるんでしょうか・・???
なんだか逆な気が・・・
今まできいていたほかのViewでもそのまま効くみたいですし。
0051仕様書無しさん
NGNG0052デフォルトの名無しさん
NGNG持ち逃げされてたというか。
まぁAppWizardのおせっかいな部分ということで。
005335
NGNG前述のFormView内のEditBoxの背景色と文字テキストを替えたいのですが、
CEditにはSetBkColorなどの関数がないようなので、
CEditViewと同じように、
CtlColorをオーバーライドすればいいのだろうと思っています。
しかしFormViewの中の1アイテムの関数をオーバーライドする方法がわかりません。
クラスの新規作成を行って見ても
CEditBoxを継承するクラスを作成することは出来ないようですし・・
このような場合はどうしたらよいのでしょうか?
0054デフォルトの名無しさん
NGNG// IDC_EDIT1がEditBoxコントロールのID
if(pWnd->GetDlgCtrlID() == IDC_EDIT1){
…
…
}
}
0055VASH
NGNGSQLサーバもこのマシンで動いているので定期的に時刻をSQLテーブルに書いて
ローカルがそのSQLサーバにアクセスして取得する方法考えたけどこんな
アホなことしなくても良さそうだし。
0056デフォルトの名無しさん
NGNGフレッツなどのプロバイダや公的機関のサイトが基準時刻だしてる。
0057VASH
NGNG>56 の方法は無理なんです。
0058デフォルトの名無しさん
NGNGもう少し、文章を読む癖をつけましょう。
「社内LANのあるNTサーバの時刻を取得したんですが」← こいつも文章を書く癖
をつけたほうが良いけどな。
その、社内 LAN がインターネットに繋がっていないとか考えないのか ?
時刻 → ntp と言う単純 (≒貧素) な発想が笑えます。
>>55
とりあえず、クライアントも Windows なら net time \\サーバ名 /set を定期
的に実行するなどしたら ?
0059デフォルトの名無しさん
NGNG桜時計を(必要な)全マシンに入れて、
サーバーマシンのをSNTPサーバーにすれば楽かな。
# 社内LANなら、net time で何かできる...のだろうと思うが俺はやったことない。
#(DOS窓で net time /? してみれ)
0060デフォルトの名無しさん
NGNGオイオイオイオイ
煽られてるぜ〜?
0061デフォルトの名無しさん
NGNG電源を入れるたびに毎回時間がおかしくなってたから
スタートアップにnet timeを勝手に入れたなぁ。
0062どどどどシロート
NGNGGetWindowRect APIの機能と、
Cwnd::GetWindowRect メンバ関数の機能とは、どう違うのでしょうか。
引数の数が違うことはわかりましたが・・・
0063VASH
NGNGクライアントがかなりあるんで >58 の方法はダメかなとおもったけど、
現在作成中のプログラムにnet time \\サーバ名 /set をexecする
コード入れればいいかなとひらめいた。
でもWIN2Kの場合、権限ないと時刻変更できなかったような。
0064デフォルトの名無しさん
NGNGねえ、あんたもプログラマなら...
if (dlg.DoModal() != IDOK) return; <---
を...
int rc = dlg.DoModal();
if(rc != IDOK) return;
とかに変更して、dlg.DoModal() から何返ってきてんのかを見るとか、IDCANCEL
ってわかったら CommDlgExtendedError() 呼んで、どんなエラーが起きてんのか
調べるとかしないの ? いつまでも教えて君じゃ進歩しないよ。
0065デフォルトの名無しさん
NGNGソース見りゃいいじゃん。
void CWnd::GetWindowRect(LPRECT lpRect) const
{
ASSERT(::IsWindow(m_hWnd));
::GetWindowRect(m_hWnd, lpRect);
}
要は、そのまま呼んでるだけだよ。
0066デフォルトの名無しさん
NGNGディフォルトは、Power Users と Administrators だけ可。
ワークグループ環境ならローカルセキュリティポリシーで変更できるよ。
0067デフォルトの名無しさん
NGNGC++とかから入った方がいいんですかね?
0068デフォルトの名無しさん
NGNGププ、「煽られてるぜ〜」だって。馬鹿にされてると思わんかな、普通。
0069デフォルトの名無しさん
NGNGこのスレに書く位だから「VC++やる」を「MFCを使ってWindowsプログラムを作る」と
解釈すると、Cの知識があるならMFCを使いながらC++を勉強することをおすすめする。
0070デフォルトの名無しさん
NGNGそういうソースってどうやって見つけるんですか?
何か簡単に見つける方法があるのでしょうか。
0071デフォルトの名無しさん
NGNGCが普通に出来るなら、やってりゃ結構++については覚えられるよ。問題なし。
もしCが出来ないなら、w95/98のコマンドモード。それが不可能なら
PC-98エミュ上での開発をお勧めしたい(コンパイラはフリーで有る。必要なら再度質問のこと)。
やっぱいきなりグラフィックだのコントロールだのは辛いと思うし、
まずはキャラクターで、ってね。
#w2000/xpが不可なのは、エスケープシーケンスを受け付けないから。
0072デフォルトの名無しさん
NGNGVC買ったらMFCのソースが一式ついてくる。
探す手段の話なら、VCのIDEからでもエクスプローラからでも
「特定の文字列を含むファイルの検索」くらいのことはできる。
0073デフォルトの名無しさん
NGNGやっぱその方法ですか・・・
コンテキストメニューで「**の定義位置を表示」はできるけど
実際のコードを簡単に検索する機能はないんですね。
0074デフォルトの名無しさん
NGNGデバッガでステップ実行すれば奥まで入っていけるが。
0075デフォルトの名無しさん
NGNG007667
NGNGどちらから入った方がいいのかと思って質問させていただきました。
0077デフォルトの名無しさん
NGNG>時刻 → ntp と言う単純 (≒貧素) な発想が笑えます。
ntpはudp/ipが通ってれば、The Internetにつながってなくても
動きますが何か。
0078デフォルトの名無しさん
NGNG行が増えた場合、AddStringまたはInsertStringで最終行に追加しても,
自動的には最終行へスクロールして表示されません.
スクロールを制御する関数,あるいは自動的に表示とスクロールを行う
メソッドなどが存在するのでしょうか?
よろしくお願いします.
0079デフォルトの名無しさん
NGNGSetCurSelの説明に
「文字列を選択し、その文字列が表示されるように必要に応じてスクロールします。」
って書いてるけど
0080デフォルトの名無しさん
NGNGCSplitterWndで分割してビューを3個1列に配置しました。
一番左のビューの最小幅を指定し、それより小さくできないようにしたいと思したいのですが、うまくいきません。
SetColumnInfo()を使って最小幅を指定できるのですが、この場合、最小幅より小さくするとビューの幅が0になってしまいます。
WM_SIZEを拾ってMoveWindowでサイズを変更してもやはりダメでした。
うまい方法がありましたら、ご指導お願いします。
0081デフォルトの名無しさん
NGNGまず君は列の概念から勉強しなおしたまえ。
何で1列なのに一番左なんだ。
1行3列って意味か?
008280
NGNG×CSplitterWndで分割してビューを3個1列に配置しました。
○CSplitterWndで分割してビューを3個横1列に配置しました。
×思したいのですが
○思うのですが
(;´Д`)
008378
NGNGm_list.SetCurSel(m_list.GetCount()-1)と,
プロバティで行を選択しないを設定したら,
目的の通りになりました.
0084デフォルトの名無しさん
NGNGしかし、リストボックスで結果表示か……。
>78の次の質問はきっと「どうやったらリストボックスを
水平スクロールできるのですか」だな……。
008578
NGNG確かに出来ました.有難うございます.
ステータスバーにステータス表示するよりも,
数行のリストボックスに表示した方が,
履歴が分かって良いと思うのですが..
VCのアウトプットウィンドウのような感じです.
エディットボックスで作るべきなんでしょうか?
0086デフォルトの名無しさん
NGNG別にリストボックスでも悪いことはないんじゃない?
ただ、横スクロールもさせたいって思うと、ちょっとだけ手間がかかる。ちょっとだけな。
0087デフォルトの名無しさん
NGNGうか?テキストを編集したとき、テキストの元のデータに編集を反映させたいの
ですが何かよい方法ありませんか?
つまり
CString text;
m_List->SetItemText(n,m,text);
こうやって表示したテキストを
m_List->SetItemText(n,m,"new");
のように編集した後に元のtextにも変更を反映
させたいんです。参照を渡してみたりしたんですけど、やっぱ
そんなんじゃ無理ですか??
0088デフォルトの名無しさん
NGNG008987
NGNGあ、いや違うんです。言いたかったのは
text = _T("new");
見たいな代入処理なしで反映されたらなぁ・・・って思ったんです。なぜかというと、
レポートビューにCStringオブジェクトを渡してテキストを書いても、ソートしたりカラムの順番が変わ
るとアイテムとかサブアイテムのインデックスも変わってしまうから、元のCString
オブジェクトを特定するのが大変そうなので・・・。でもInsertItemもSetItemTextも
引数の文字列はconstだから無理ですね。今自分でわかりました。
でも、どうやって元のオブジェクトを特定するのが一番うまい方法なんだろう・・・。
こりゃキツイ(´_ゝ`)
0090デフォルトの名無しさん
NGNG009287
NGNGわかりました。しかし、メッセージをハンドルする関数の書式がわかりません。
どのようにテキストを渡してやればよいのでしょうか?return char*などやって
しまってましたが、やはりだめですね。ハンドラに渡される引数に入れてやるん
でしょうか?ハンドラに渡される引数を教えていただけませんか?
0093デフォルトの名無しさん
NGNGClassWizardでLVN_GETDISPINFOのハンドラを作って
void CxxxView::OnGetdispinfo(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
if(pDispInfo->item.mask & LVIF_TEXT){
switch(pDispInfo->item.iSubItem){
case 0:
::lstrcpy(pDispInfo->item.pszText, _T("Item"));
break;
case 1:
::lstrcpy(pDispInfo->item.pszText, _T("SubItem"));
break;
}
}
*pResult = 0;
}
0095デフォルトの名無しさん
NGNG同じ大きさのダイアログ複数に同様の図形を入れるので、OnPaint()から別にメンバ関数を
作って、描画をそこで行うようにしました(引数はピクチャコントロールのIDで、関数中で
GetDlgItem()する)。
描画そのものはうまくいったのですが、別のウインドウを上に重ねてから、重ねたウインドウを
最小化させるなど、一部の動作で再描画がされません。
何か抜けてるのかよく分からない状態なのですが、なにがおかしいのでしょうか?
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNGCTreeCtrl * TC = &GetTreeCtrl();
TC->SetTextColor(RGB(64,64,64));
してもダメなようでした。
EditViewなどでも違う方法をとりますよね。
結局SetTextColorはDrawTextを使うときしか使えないのかな・・・
とすると普通ノーマルのCViewでしか使えないですよね。
方法をご存知の方教えてください。
0098デフォルトの名無しさん
NGNGオーナードローじゃだめなの?
0099デフォルトの名無しさん
NGNGビットマップを貼り付けたいのですが、
誰かいい方法を知りませんか?
よろしくお願いします。
0100PowerPoint
NGNG以前、Excelの処理はやったことがあるので、同じことだろうと思って
余裕でいたのですが、なんだか少し違うようです。
Excelのときは、Application・Workbooks・Workbookの順に
CreateまたはAttachDispatchしていました。
PowerPointだと、Application・Presentations・Presentationになります。
ApplicationとPresentationsのDispatchは正常にいくのですが、
その後、Openするときに「PowerPointのフレームウインドウは存在しません」
とのエラーメッセージがでます。
----- サンプルコード -----
_Application pptApp;
Presentations pptPrts;
_Presentation pptPrt;
int ret = pptApp.CreateDispatch("PowerPoint.Application");
if(ret == 0)
{
return;
}
pptPrts.AttachDispatch(pptApp.GetPresentations());
CString FileName = "D:\\test.ppt";
pptPrt.AttachDispatch(pptPrts.Open(FileName, 0, 0, 1)); <--- ここでエラー
-----------------------------
PowerPointが起動されていれば、ファイルは開きます。
何の制御が足りないんでしょうか?よろしくお願いします。
0101デフォルトの名無しさん
NGNG今EditBoxを継承してOCXを作っていて、コントロールに
Replaceメソッドを付けたいのですが、うまくいかず困っています。
コントロール名はTestです
とりあえずReplaceメソッドを新規で追加しました。(このとき引数なし)
次にCTestCtrlのReplaceに(BSTR find,BSTR Rep)と追加したところ、
「Replaceが宣言されていない」を怒られました。
どの場所を直せばよいのか見当がつかないので、どうかお願いします。
あと、Replace関数内で元からあるプロパティ(CaptionやText)が参照できないので
こちらも合わせてお願いします。
0102デフォルトの名無しさん
NGNG死ね
0103デフォルトの名無しさん
NGNGこんな生産性の低いプログラムを一生懸命覚えた人、ご苦労様。
いまや世界最高開発者人口を誇るのはVisual Basic。
そしてVisual C# .netの登場でVisual C/C++はFortranやCOBOL
のように過去の開発言語になることは必至。
.netからはBasicやC#でもC/C++と同等の柔軟性を持っていて
かつ生産性も高いものになるそうで、会社内にC#とC++プログラマ
がいたらその差歴然。一日中エラー処理に悩んじゃってください。
0104デフォルトの名無しさん
NGNG敗北者?
0105デフォルトの名無しさん
NGNGC,C++は残るだろうけど
0106っっj
NGNG0107デフォルトの名無しさん
NGNG通常の場所より、下のほうに移動したいんですけど・・・。
誰か知っていたら教えてください。
0108デフォルトの名無しさん
NGNG大抵は1年も有れば乗り換えられるんでないかな。プログラム向きの脳味噌になってっから。
漏れもハッカーレベルには及ばないにせよ、普通にこなせてるしさ。
0109101
NGNG0110デフォルトの名無しさん
NGNGどうしたら良いでしょうか?
CListCtrlでCHeaderCtrlからHDN_BEGINTRACKメッセージが送られていることはわかったのですが、
処理をさせない方法とかわかりません。
宜しくお願いします。
0111デフォルトの名無しさん
NGNGだよな。会社の意向で俺もVC++からVB主流に転換したけど
初めてVB覚えた人に比べ短期間で覚えられた気がする。
それにVBでも変数とそのアドレス意識できるとAPI呼び出すとき
何かと役に立つし。
0112デフォルトの名無しさん
NGNG動的に変更することってできるのでしょうか?
リストビューの項目を変更・追加・削除するとか。
リソースファイル(*.rc)をいじろうとしているのですが
文字列が16進数になっていてどこをいじれば分かりません。
C++Builderならそこらへんがかなり手軽にできると聞きました。
MFC(VisualC++)でも手軽にリソース部分を変更できる
方法がありましたら教えて下さい。よろしくお願いします。
0113デフォルトの名無しさん
NGNG0114101
NGNG今EditBoxを継承してOCXを作っていて、コントロールに
Replaceメソッドを付けたいのですが、うまくいかず困っています。
コントロール名はTestです
とりあえずReplaceメソッドを新規で追加しました。(このとき引数なし)
次にCTestCtrlのReplaceに(BSTR find,BSTR Rep)と追加したところ、
「Replaceが宣言されていない」を怒られました。
どの場所を直せばよいのか見当がつかないので、どうかお願いします。
あと、Replace関数内で元からあるプロパティ(CaptionやText)が参照できないので
こちらも合わせてお願いします。
また放置されたらマルチポスト開始します
0115尭日 杣
NGNG//CListCtrlの派生クラスCExLsitCtrlを作って
BEGIN_MESSAGE_MAP(CExListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CDeliveListCtrl)
ON_NOTIFY(HDN_BEGINTRACK, 0, OnBegintrack)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// メッセージハンドラ --------------------
void CExListCtrl::OnBegintrack(NMHDR* pNMHDR, LRESULT* pResult)
{
HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
*pResult = 0;
}
//とかどうよ?
0116デフォルトの名無しさん
NGNG0117101
NGNG5000円出して買った本にはHello Worldとメモ帳、
動画の作り方しか書いてなかったんです。
お年玉使ってVCと入門書買ったのにコレじゃあんまりだ。
せめてちょっと何か作れるようになって遠まわしに自慢したい。
だめですか?
0118デフォルトの名無しさん
NGNGコワイッ
0119101
NGNGヘッダも書き換えなきゃナランのね。
あとは既存のプロパティの参照方法。
アレって追加時に「値の参照・取得」オプションを選択しないと
コード内で参照できないの?
それとも何か別の方法があるの?
0120101
NGNGプロパティとメンバ変数の違いって何?
0121101
NGNG0122デフォルトの名無しさん
NGNGHDN_BEGINTRACKWとHDN_DIVIDERDBLCLICKWのメッセージを受け取り無事解決しました。
(Win2000のため?)
ありがとうございました。
VC++って難しいですね。
0123デフォルトの名無しさん
NGNG記述すればいいのですか?
マジで分かりません・・・。
0124デフォルトの名無しさん
NGNGMFC ったって言語自体は C++ (標準からはちょっと外れてるが) なんだから
ソースの好きなところに書いて下さい。
0125100
NGNGCreateDispatch()の後に、pptApp.SetVisible(TRUE);を入れたら
うまくいきました。
値をFALSEにすると、またエラーになるのが不思議ですが。
0126123
NGNGどこかのヘッダに書くと、「すでに定義されています」というエラーが沢山出てしまうのです。
extern付けても「未解決です」というエラーが出てしまって駄目です。
0127デフォルトの名無しさん
NGNG.cpp の方に書けぃ。ヘッダの方には必要ならexternで。
MFCじゃなくても同じぞ。(w
0128デフォルトの名無しさん
NGNG*.cppに書いたらど〜いうエラーになるかやってみたら
0129123
NGNG*.cppに書いても、当然他のファイル(クラス)から参照できないので
「定義されてません」というエラーが出ます。
だからと言って、全てのファイルにインクルードされるヘッダに書くと
「すでに定義されいます」と出てしまいますし。
externしても、やはり「未解決です」と言ったエラーが出ます。何でだろう。
0130101
NGNG0132デフォルトの名無しさん
NGNGアプリケーションクラスのヘッダに
static int n;
とか。
0133123
NGNGいや、もちろんそういう書き方してるんですけど。その逆もやってみました。
とりあえず、自分でも最高にくだらない質問してると思うので、何とか自分で解決してみます。
お騒がせしました。
0134デフォルトの名無しさん
NGNG全てのファイルにincludeされるヘッダとやらに全部書いてるさ。漏れは。
SET int valiable VAL(123);
とかして、Appクラスの場合は SET : NULL VAL(x) : = x
その他は SET : extern VAL(x): NULL とdefineしておく。
必要無いソースにもextern宣言されると言う弱点は有るけど、管理は楽っぽ。
今時はコンパイル速度なんか無視出来るし(w
0135101
NGNG0136101
NGNG0137101
NGNG0138101
NGNG0139デフォルトの名無しさん
NGNGプロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?
プロパティとメンバ変数って何が違うの?プロパティとメンバ変数って何が違うの?
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGポインタ値が示す場所がアドレスです。
ポインタ値→地図
アドレス→実際の場所
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG質問の意味がよくわからないけど・・・
リソースファイルをテキスト形式で開いたらリソースの中は見れますよ。
ちなみに、「ファイルを開く」→用途をテキストに変更。
0144ボー然
NGNG親ウィンドウにメッセージ送ってこないんスか?
0145デフォルトの名無しさん
NGNGんなこたーない。が、何のメッセージが来るのを期待してる?
0146デフォルトの名無しさん
NGNGVC++6.0でプログラムを作成しています。
プログラムの途中経過を保存したいために、途中まで出来たところで
すべてをコピーして、新フォルダにペーストし次にこれを開いてプログ
ラムを書いていました。
すると何とコピー元の内容まで書き換えられているではないですか。
元の内容を書き換えるのをやめさせるにはどのようにしたら良いので
すか?
初心者の質問ですみません。
0147デフォルトの名無しさん
NGNGとうか多だ短にもとのファイルを開いてデバッグしていた
ってことじゃない。
コピーしたらリビルドしたほうが良いよ。
0148デフォルトの名無しさん
NGNG/ ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■-っ < >>146 んなーこたーない
´∀`/ \__________
__/|Y/\.
Ё|__ | / |
| У.. |
0149デフォルトの名無しさん
NGNG勇気もりもりで、アプリケーションウィザードでSDIのスケルトンを作り、
それを新たなフォルダーにコピーした後で、画面に"TEST"と表示させるよ
うに変更して保存。次にコピー元のプロジェクトを実行すると
”TEST”は表示されない・・・ ターモさんが正しい・・・。
では・・・と146でのプログラムを新たなフォルダにコピーして内容を
書き換えると、やっぱりコピー元も変更される。インプリメントファイル
のプロパティを見てみると、コピー元ファイルプロパティが、確かにコピー
元のファイル名になっている・・・ケド・・・・試しに作ったスケルトン
では、コピーしたファイルでもこのコピー元ファイルプロパティは自分自
身になっている。
なんか変なことしたのかな?
0151デフォルトの名無しさん
NGNG魑魅魍魎の世界です。まるで狐に化かされていたかのように
正常な動作になりました。 ターモさんは正しい。
原因全くわからず
こりゃまた・・・お騒がせしました。
0152デフォルトの名無しさん
NGNGダイアログ エディタのステータスバーに表示さている
サイズの単位は何でしょうか?
ピクセルじゃないみたいです。
0153デフォルトの名無しさん
NGNG最初は、フレームのクライアント領域一杯に合わせて作成されるみたいですけど
この大きさを変更したいのです。
0154デフォルトの名無しさん
NGNGvoid xxxx::OnDeleteitemTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;//←クラスウィザードに憑いていたコード
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
TV_TIEM item=pNMTreeView->itemNew;//ここに情報が格納されると思ったけど駄目
*pResult = 0;
}
typedef struct _TV_ITEM { tvi
UINT mask;
HTREEITEM hItem;
UINT state;
UINT stateMask;
LPSTR pszText;
int cchTextMax;
int iImage;
int iSelectedImage;
int cChildren;
LPARAM lParam;
} TV_ITEM, FAR *LPTV_ITEM;
根本的に間違ってるのかな?
0155154
NGNG0156ともくん
NGNGリストコントロールのヘッダーの高さが変更できません。
どうしたらいいんでしょう?
0157デフォルトの名無しさん
NGNGダイアログユニット(DLU)
詳しくはGetDialogBaseUnitsとかのヘルプを見て下ちい。
0158デフォルトの名無しさん
NGNG戻り値は1です。
CToolBarCtrl::HideButton は非表示になります。
なぜCToolBarCtrl::EnableButtonで淡色表示にならないのでしょうか。
0159デフォルトの名無しさん
NGNGWM_SIZEを受け取って自前で大きさを変える。
ついでに WM_GETMINMAXINFO で検索してみたまい。
0160デフォルトの名無しさん
NGNGMFCには独自のやりかたがあるよ。
UPDATE_COMMAND_UIハンドラで
pCmdUI->Enable(FALSE);
してね。
0161デフォルトの名無しさん
NGNGずばり前スレの
http://pc.2ch.net/test/read.cgi/tech/1008031675/783
に出てるんだけどな。
0162デフォルトの名無しさん
NGNGvoid CHogeDlg::OnPaint()
{
if (IsIconic())
{
この部分
と、
// システムは、ユーザーが最小化ウィンドウをドラッグしている間、
// カーソルを表示するためにここを呼び出します。
HCURSOR CHogeDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
の部分って、いつ呼ばれるんです? ダイアログを最小化しても呼ばれないみたいだし。
っていうか、何のためにあるのか分かりません。何で?
「最小化ウィンドウをドラッグ」ってどういうことですか?
0163デフォルトの名無しさん
NGNGexplorer以外のシェルを使うとわかるかも。l
0164デフォルトの名無しさん
NGNG俺はその部分削除してるけど問題ない
クラスウィザードから削除しましょう
0165デフォルトの名無しさん
NGNGNT3.51などのprogmanがシェルだったころの名残だろ。
http://www.microsoft.com/japan/support/kb/articles/J013/3/34.asp
0167デフォルトの名無しさん
NGNGATL COM AppWizardで
MFCをサポートするようにしたんだけど
CRecordsetクラスから派生したODBCで外部DBにアクセスするクラスを生成しようとすると
CRecordsetが定義されていないとエラーが出ます。
#include <afxdb.h>としても
windows.h includedとかってエラーが出ちゃうんですが
解決策のヒントでもいいんでご教授お願いします。
0168デフォルトの名無しさん
NGNG嫁
夜目餘目
0169デフォルトの名無しさん
NGNGたとえばmySocketクラスをCSocketを継承しないで作った場合、
class mySocket {
CArchive *m_paout;
CArchive *m_pain;
CSocketFile* m_psf;
CSocket *m_ps;
}
こんな感じにメンバーがいてソケットにデータを送った場合
データ変身があるとm_psのOnRecieveが呼び出されますよね?
このときのOnReceiveをmySocketクラスからオーバーライドするには
どうしたら良いのでしょうか?
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGって書いてあるところにそのままCSocketを使うのではなく
CSocketから派生させたクラスを作って、そのクラスでオーバー
ライドするよ。普通は。
0172デフォルトの名無しさん
NGNG継承すれ。
class mySocket : public CSocket {
CArchive *m_paout;
CArchive *m_pain;
CSocketFile *m_pst;
void OnReceive(int);
};
0173デフォルトの名無しさん
NGNGこのページにのってる方法で、
MDIアプリケーションでのドキュメントのポインタを得ようとしているのですが、
(後半のサンプル)
CxxxDoc* pDoc = (CxxxDoc*)GetDocument(pView);
引数として指定するpViewをどのようにすべきかがわかりません。
そもそもViewへのポインタが得られていればそこからGetDocument
できるような気がしてしまうのですが・・・・・
0174デフォルトの名無しさん
NGNGお二方、どうもありがとうございます。
無事解決しました。同じようなケースになることがたまにあるのですが、
それは設計が悪いのですね・・
CFormViewの中に設置したアイテム一つ一つの関数をオーバーライドしようとするときなどに
やっぱりこんな問題にぶつかります。
0175デフォルトの名無しさん
NGNG> できるような気がしてしまうのですが・・・・・
その Web ページちゃんと読んだ ?
> しかし、ビューをドキュメントに関連付けずに作成した場合などは、
> m_pDocument にドキュメントへのポインタは入っていません。
> したがって GetDocument() は使えないということになります。
> でも、どうしてもドキュメントへのポインタが必要なときがあります。
の時の話だよ。普通は、GetDocument() でいいんだよ。
0176173
NGNGいえ、ビューの中から呼ぶのではなく別のところから
自分で作った新規クラスから呼びたいのです。
MDIですのでMAinView+MainDoc以外にも
いくつかのView+Docのくみあわせがあります。
その中で特定のDocを得ようとしているのですあ・・・
0177デフォルトの名無しさん
NGNGどうすればよいかわかる方はおられますか?
そう、ちょうどタグブラウザのウィンドウシステムみたいにしたいのです。
0178
NGNG以前の設定+リンクの項目ってどこへいったのでしょか。。
0179
NGNGライブラリの設定なら、なくなったんじゃないかな。
指定しなくてもソースから自動でリンクをするようになってると思う。
0180デフォルトの名無しさん
NGNGそのダイアログにサイズ変更枠をつけたいんだけど
どうすればいいのでしょう?
0181デフォルトの名無しさん
NGNG俺も前にやろうとしたけど・・・
無理だと思う・・・
0182デフォルトの名無しさん
NGNGただ、それをつかってサイズを変更できるかは
知らないけど。
0183173
NGNGTreeViewを使ったプログラムなのですが、
ViewでもDocでもない
新規クラスをつくりDocのメンバ変数とします。
そしてそこから、Docの中身を変更したときに
TreeViewを再描画させたいのです。ですのでDocのポインタと取り
UpdateAllViewsするのがいいのだろうかと思ったのですが、
このようなケースの時はどのような方法がベストでしょうか・・?
0184デフォルトの名無しさん
NGNGウィザードで作ったスケルトンのソースを見れば良いと思います。
>>183
> Docのポインタと取りUpdateAllViewsする
という方法がいいと思います。
0185173
NGNGそうですか、やっぱりそこまでの方針は正しかったのですね・・・
強引にCMyCLassから
CMyCLass::Update(){
MainView* pView;
MainDoc * pD = (MainDoc*)GetDocument(pView);
pD->UpdateAllViews(pView);
}
こんな風にしてみましたが、だめでした・・
これは当然でしょうね・・・
↓この関数を呼びたいのですが・・・
CDocument* GetDocument(CView* pView)
{
// pAppにCWinApp オブジェクトへのポインタを取得
CWinApp* pApp= AfxGetApp();
// 最初のドキュメントテンプレートの位置を取得
POSITION posTemplate = pApp->GetFirstDocTemplatePosition();
while (posTemplate != NULL)
{
// ドキュメントテンプレートへのポインタを取得
CDocTemplate* pTemplate = pApp->GetNextDocTemplate(posTemplate);
// 最初のドキュメントの位置を取得
POSITION posDoc = pTemplate->GetFirstDocPosition();
while (posDoc != NULL)
{
// pDocにドキュメントへのポインタを設定
CDocument* pDoc = pTemplate->GetNextDoc(posDoc);
// 最初のビューの位置を取得
POSITION posView = pDoc->GetFirstViewPosition();
while (posView != NULL)
{
// pDocViewにビューへのポインタを設定
CView* pDocView = pDoc->GetNextView(posView);
// 取得できたビューが指定されたビューならpDocをリターン
if (pDocView == pView)
return pDoc;
}
}
}
return NULL;
}
0186デフォルトの名無しさん
NGNG0187173
NGNGGetActiveDocumentはCFrameWndのメンバですよね。
こうなると今度はCFrameWndのとり方がわからなかったりします・・。
うーん結局問題は
自作クラスとMFCクラスとの連携かも・・・
自作クラスからMFCのViewクラス、Docクラス、Frameクラス
あたりのポインタを手に入れる方法がわかれば何とかなりそうなのですが・・
アプリケーション全体へのポインタならAfxGetApp()
で手に入れることができるのはわかるのですが・・・
しかし問題は自作クラスと、MFCクラスの連携にあるとすると、
メッセージハンドラを使った連携なども可能そうですね。
例えば自作クラスから任意のハンドラをアプリケーションに返したり
なんてことは出来るのでしょうか?
できるならWM_UPDATEを自作クラスから発信して
Viewクラスでそれを受けて更新処理をすればいいのではと思います。
0188デフォルトの名無しさん
NGNGSendMessageもできますし、CMainFrameでキャストすれば
GetActiveDocumentできます。
0189173
NGNGありがとうございます。
だんだん核心に近づいてきたかんじです。
CMainFrame *pMf = (CMainFrame*)AfxGetMainWnd();
MainDoc * pMd = (MainDoc*)pMf->GetActiveDocument();
こんな感じでやってみました。
これでMainDocへのポインタを手に入れることが出来ました。
そして
pMd->UpdateAllViews(
しようとすると・・・・
UpdateAllViewsの第一引数pView pSenderが・・・・
入れるものがないです・・・。
Viewへのポインタが結局必要なのでしょうか・・・
SendMessageの方は
CWndから送れるようですので、
試してみます。
しかしWM_UPDATEってメッセージないんですね・・・
てっきりOnUpdateを呼ぶメッセージがあるきがしてたのですが・・・
0190デフォルトの名無しさん
NGNGとりあえず0でいいよ。
とりあえず0でいいよ。
0191デフォルトの名無しさん
NGNG勘違いしてるようだけど、UpdateAllViewsの第一引数には
更新したいビューではなくて、更新したくないビューのポインタを入れる。
ビューを更新したいならNULLで。
0192180
NGNGレスどうもです
しょうがないのでCTabCtrl使って自作しました
0193173
NGNGどうもありがとうございます
CMainFrame *pMf = (CMainFrame*)AfxGetMainWnd();
MainDoc * pMd = (MainDoc*)pMf->GetActiveDocument();
pMd->UpdateAllViews(NULL);
このようにしたらコンパイルをちゃんととおり
よーし!っと思って実行すると
こんどはUpdateAllView関数内の
POSITION pos = GetFirstViewPosition();
ここでエラーが出ている模様・・・・・・。
これはいったい・・・・・
0194デフォルトの名無しさん
NGNGCMainFrame *pMf = (CMainFrame*)AfxGetMainWnd();
pMf->GetActiveDocument()->UpdateAllViews(NULL);
もできないかな?
0195デフォルトの名無しさん
NGNGちなみに1度に複数選択できるようにしたいです。
フォルダ名が取得できなかったりして困っております。
0196173
NGNGんーと、やっぱり同じ現象です。
どうやらGetActiveDocumentが
CMainFrame *pMf = (CMainFrame*)AfxGetMainWnd();
if (pMf == NULL){AfxMessageBox("error11");}
MainDoc * pMd = (MainDoc*)pMf->GetActiveDocument();
if (pMd == NULL){AfxMessageBox("error12");}
pMd->UpdateAllViews(NULL);
結局"error12"とメッセージボックスが開き
GetActiveDocument()がエラーを返す模様。
んーよく考えたらMDIだから
メインフレーム→子フレーム→GetActiveDocument()としなきゃならないのかもしれませんね。
0197デフォルトの名無しさん
NGNG内容更新時に垂直スクロールバーが表示される場合のみ、以前のテキストが消されずに残ってしまいます。
また、その内容をスクロールしても、テキストが残されたままスクロールされ、ゴミが残ります。
正常な処理を行うには、
m_edit1 = cNewData;
UpdateData(FALSE);
だけではだめなのでしょうか?
m_edit1 = "";
を挟んでみたのですが、結果は変わりませんでした。
テキストの量がエディットボックス内に収まる場合(スクロールバーが現れない場合)は正常に更新されます。
更新のタイミングは、メッセージパンドラは拾わず、手動で行っています。
どうか、ご教示お願いします。
リソースエディタでは複数数行、垂直スクロール、改行を許可、境界線、にチェックを入れています。
初歩的な質問で申し訳ありません。よろしくお願いします。
0198デフォルトの名無しさん
NGNGMDIは作ったことないんだけど、
>MainDoc * pMd = (MainDoc*)pMf->GetActiveDocument();
は
MainDoc * pMd = (MainDoc*)(pMf->GetActiveDocument());
かなぁと。
あと、ドキュメントが複数あるようだけど、MainDocはアクティブになってるのかな??
0199を
NGNG>更新のタイミングは、メッセージパンドラは拾わず、手動で行っています。
これの意味が良くわからないけど、とりあえず
UpdateWindow()とかInvalidate()とかしてみるのは堂でしょおう
0200197
NGNGありがとうございます。
Invalidate()を使って更新時に正常に描写されるようになりました。
スクロール時にゴミが残るはまだ対処できていません。
OnCtlColor()でフォームビューの背景の色を変えていたのですが、この辺にも原因がありそうです。
こちらの方を、もう少し調べてみます。
>更新のタイミングは、メッセージパンドラは拾わず、手動で行っています。
説明下手で申し訳ありません。自分でも何を言っているのかわからなくなってしまいました。
0201173
NGNGどうもそれでもダメなようです。
もう一度整理してみます
フレームの構成としては
CMainFrame→CChildFrame
→CChildFrame2
となっており
それぞれCChildFrameにMainDoc+MainView
CCHildFrame2にSubDoc+SubView
となっています。
このとき自作クラスCMyClassからMainViewに再描画の命令を出したいのです。
この場合はCMainFrameではなく
CChildFrameへのポインタを手に入れ
そこからGetActiveDocumentすればいいのではないかと、考えています。
しかし親フレームから子フレームのポインタを手に入れる、
もしくはアプリケーション全体へのポインタから特定の子フレームの
ポインタを手に入れる方法がわからず悩んでいます。
0202デフォルトの名無しさん
NGNG自作クラスから View/Doc/Frame へのポインタを手に入れようとするから複雑になる。
自作クラスに View/Doc/Frameが自分へのポインタを自己申告すれば良いんでは?(初期化のときとかに)
あとは、自作クラスからやりたい放題。
見当違いだったらゴメンね。
0203173
NGNGありがとうございます。なるほど発想の転換ですね。
自作クラスというのがサーバの情報をもつクラスなのですが、複数あり、
それがMainDocのメンバとなっています。
ですのでMainDocの関数の中から自作クラスのオブジェクトを作るときに
MyServer("www.***.com","80",this)//アドレス、ポート、MainDocへのポインタ
を渡してthisを
自作クラスのメンバpMainDocに代入したら、
pMainDoc->UpdateAllViews(NULL)で出来ました。
しかしこの場合、あるオブジェクトが自分を保持しているクラスの
ポインタがわからないから、あらかじめ教えてもらうという方法ですよね。
クラスA →メンバとして所持→ クラスB
という関係の場合AからBへのポインタはすぐ手に入りますが
BからAは難しいんですね。
0204173
NGNGMDIアプリケーションで
子ウインドウが一つ開いていて
そこからもう一つ別の種類の子ウインドウを開くときにはどうすべきでしょうか?
先ほどと同じなのですが
CMainViewもしくはDocから
ChildFrame2+SubDoc+SubViewの組み合わせを
一つ新たに開きたいのです。
これが出来ればMDIについてだいぶ使えるようになるかと思うのですが・・・
DocumentTemplateに新たな子ウインドウへのポインタを追加すると
起動時に二つ(もしくは複数)のウインドウから選ぶ画面が出ますよね。
あのとき選ばなかった方を動的に作り出したいのです。
0205173
NGNGChatFrame *cFrm = new ChatFrame();
CRect cr = CRect(0,0,400,400);
cFrm->Create(NULL,"test",WS_OVERLAPPEDWINDOW,cr,(CMainFrame*)AfxGetMainWnd(),NULL);
cFrm->ShowWindow(SW_SHOW);
SubDocら強引にこんな感じで開いてみました。
すると
Warning: Creating a pane with no CDocument.
まあこれはエラーでるだろうな・・・と思ったのですが・・・
0206173
NGNGいろいろ試行錯誤してようやく問題が整理できました。
つまるところMainFrameのメニューからウインドウ→新しくウインドウを開くを
するとウインドウを開くことが出来ますよね。
これをボタンかなにかでそのボタンを押したら動的にウインドウが開く
といった風にしたいのです。結局新しくウインドウを開くメニューでは
ID_WINDOW_NEWメッセージを送っているようですが、
これでは開くべきドキュメントテンプレートが複数あるときに
それを選択できませんよね?
MfcによるWindowsプログラミングと新VisualC++6.0入門を持っていますが、
MDIアプリに関する情報って少ないんですね。需要が無いんでしょうか・・・
0207デフォルトの名無しさん
NGNG需要が無いわけじゃないんだろうが、よほどの事がないと今はMDIにしないな。
最近はSDI、ていうかもっとExplorerスタイルのスプリッタ画面が主流かも。
2chブラウザのギコナビとかもそうでしょ。
0208デフォルトの名無しさん
NGNGMDIは推奨されてないってことになってるしな
0209173
NGNGそうですね。確かに推奨されてないというのは知っていました。
しかし、代替えの方式として提案されているものの作り方がわからないんですよ・・
こちらも情報が無い・・
「MFCによるWINDOWSプログラミング」の688ページ
(持ってない人すみません)に載ってるワークブックモデルが理想に近いのですが
(タブブラウザのようなものを想定しています)
MDIが作れるようになったら、こっちへ移行して〜っと思っていたのですが、
最初からワークブックモデルを目指した方がいいのかな・・・
タブブラウザのようなワークブックモデルのアプリケーションの解説って何かありませんでしょうか?
今手元にある書籍「mfcによる〜」「新Visualc++6.0、ビギナー編、シニア編」
「VisualC BlackBook」
のどれにも記載が無いのです。
0210デフォルトの名無しさん
NGNG作る例としてタブ付きビューの作り方がちょこっと出てる。
たしか「Best of MSDN magazine 下巻」だったと思うけど、
その本にはExcelのワークシート風のタブウィンドウの作り方が載ってたような。
「VisualC++5.0プログラミング入門」というVC++5.0LearnigEditionに
付いてきた本(市販もされてるはず)には複数View&複数DocのMDI
アプリケーションの作り方が出てる。
あとはCodeGuruやCodeProjectにサンプルがないかなぁ。
0211デフォルトの名無しさん
NGNGによって多国語対応しているソフトありますよね?
これってどうやるんでしょうか?
一応外部DLLからダイアログを表示することはできたんですけどそのあとがわかりません。
CDialog dlg;
HINSTANCE hInst;
RSRC hDlgInit;
hInst = ::LoadLibrary("jpn.lng");
hDlgInit = ::FindResource(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),RT_DIALOG);
hResource = ::LoadResource(hInst, hDlgInit);
if (hResource != NULL)
{
LPDLGTEMPLATE lpTemplate;
lpTemplate = (LPDLGTEMPLATE)GlobalLock(hResource);
GlobalUnlock(hResource);
dlg.InitModalIndirect(lpTemplate);
}
dlgg.DoModal();
本当はCDialogクラスから派生したCAboutDlgでやりたいんですけど、InitModalIndirect()
呼び出したあとにASSERTでとまっちゃいます。
0212デフォルトの名無しさん
NGNG適当なところ(CXXXApp::m_pSubDocTemplateとか)に保存しておけばいいんじゃないか。
で、適当なユーザ定義メッセージ(WM_APP_OPENFRAMEとかなんとか)を定義して、
そのハンドラ(CXXXApp::OnAppOpenFrame())で
m_pSubDocTemplate->OpenDocumentFile(NULL);
するって感じではどうか。
0213デフォルトの名無しさん
NGNG一応、WinMain()からDosで扱うのは、解ったのですが、
MFCに入れると、スレッドが作成できなかったり、エラーが出てどうしようもありません。
0214デフォルトの名無しさん
NGNGタブブラウザは、ただタブコントロール使ってるだけじゃん。
何が難しいの?
タブコントロールの使い方が分からんの?
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG5,6どこいったよ!
0219デフォルトの名無しさん
NGNG一つのDocに複数のViewがあるとき
GetDocumentでDocへのポインタをえるにはどうしたらいいのでしょう?
AppクラスのInitInstanceのRUNTIME_CLASS
ではViewを一個しか指定できないですよね。
0220173
NGNGそのタブビューの作り方はやってみました。
でもそのタブの動的作成が難しそうだなあ・・と思って作っただけで放置してました。
もう一回チャレンジしてみます。
>212
ありがとうございます。
とりあえずその遣り方で解決しました。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGどのViewからGetDocument()しても、
Documentへのポインタは取得できますが・・・
0223173
NGNG結局TabViewでやることにしました。
まあタブビューも資料がそんなにあるわけではないですが、
とりあえず
Best of MSDN magazine 下巻
を買いにいきまっす。
基本的に不思議なのがタブビューは一つのビューですよね。
一つ一つのタブの中身を3分割してそれぞれにまた別のビューを割り当てる
ということがしたいのですが、その場合はビューの下にビューを作るということですよね。
そういうことは可能なのでしょうか?
うーーん。先は長そうだ・・・
0224デフォルトの名無しさん
NGNGそれはスプリッタウィンドウでいいのでは?
0225名無しさん@Emacs
NGNGコンストラクタでリソースID渡してない?
その時点でリソースロードしちゃってるんだと思う。
クラスウィザードに吐かせたクラスはそうなってるはずだから
手で消せばいいかと思う。遅レスごめん。
0226名無しさん@Emacs
NGNG>>225
追加。
CDialogから派生したクラスのコンストラクタで >>211の
ようなことをやるようにして、他のソースの"CDialog"を
作ったクラス名で全部置換すれば動くべ。
0227173
NGNG同じドキュメントテンプレートから生み出した複数Frameの区別って
どこでするものでしょう?
それと複数のフレームは単一のDocオブジェクトを参照すべきなんでしょうか?
それとも一つのフレームに付き1つのオブジェクトってのが自然なのかなあ・・・・
この辺のポリシーがわからないので、設計がめちゃくちゃになってきました・・・
0228デフォルトの名無しさん
NGNG男らしく全部ダイアログですませ。
0229デフォルトの名無しさん
NGNGいや、MDI って発表された時から「糞」だの「吐き気がする」だの
散々叩かれてますが。
0230173
NGNGぐへー。やはりそうですか・・・
とりあえずタブブラウザのMoonBrowzerのようなアプリが目標なんです。
例えばMoon Browzerとかはタブブラウザですが、
タブじゃないですよね。こういうのはMDIから作るのかなと思ってるのですが、
ちがうのですか・・・??
0231デフォルトの名無しさん
NGNG早速、コンストラクでID渡してるところを削除しましたらASSERTでなくなりました。
CAboutDlg::CAboutDlg()// : CDialog(CAboutDlg::IDD); →ここをコメントにしました。
{
HINSTANCE hInst = ::LoadLibrary("JPN.lng");
HRSRC hDlgInit = ::FindResource(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), RT_DIALOG);
HGLOBAL hResource = ::LoadResource(hInst, hDlgInit);
if (hResource != NULL)
{
LPDLGTEMPLATE lpTemplate;
lpTemplate = (LPDLGTEMPLATE)GlobalLock(hResource);
GlobalUnlock(hResource);
InitModalIndirect(lpTemplate);
}else{
//jpn.lngがなかった場合、自前リソースを使用。
}
}
こうすると、ダイアログ呼ぶ方は何も変更しなくていいのでスッキリしますね。
で、ちょっとまだ検証中なんですが、外部リソースDLLがなかった場合自前の
リソースを利用するようににしたいと思ってます。
実は上のコードでも、FindResourceをNULLで呼ぶと自ファイルから検索するみたい
で、うまく機能します。
ただ、コメントにした" : CDialog(CAboutDlg::IDD)"を処理しなくていいのかは
もう少し調べてみます。
乱文失礼しました。
0232デフォルトの名無しさん
NGNGウィンドウパカパカ開くから、
SDIだとデスクトップや他のアプリのウィンドウが見えてしまって混乱する。
0233232
NGNGMDIにすべし、という説を提唱してみるテスト
そうでなければむやみにMDIにすべきではないミタイナー
0234デフォルトの名無しさん
NGNGタブを使用禁止にすることは出来るでしょうか?
シートのOnInitDialog()でGetPage(0)->EnableWindow(FALSE)
としてみたのですが、出来ませんでした。
何かいい方法はないでしょうか??
0235デフォルトの名無しさん
NGNGん?タブじゃない?
あれはどう見てもタブだと思うが。
0236デフォルトの名無しさん
NGNGC++(MFC)で作った実行ファイルの置いてあるディレクトリを取得
(自分のFullPathを取得)するのにはどうすればいいでしょう?
0237デフォルトの名無しさん
NGNGGetModuleFileName()
0238デフォルトの名無しさん
NGNG同意。MDIが駄目かどうかはアプリのタイプによるから一概には言えない。
opera5は MDIだったが、なんか圧迫感があった。
(6になってSDI/MDI/タブが選べるようになったが)
ブラウザみたいに一つのウィンドウに多くの情報を提示するような
アプリだと MDIは向かないのかも。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGGetModuleFileName()で実行するとエラーばかり出て、
MSDNを見てもいまいち解決しません。
実行している自分自身のパスを取得するサンプルか何か教えていただけないでしょうか?
0241デフォルトの名無しさん
NGNGhttp://search.acty-net.ne.jp/mfc_search/archive/1998-1/msg01541.html
0242デフォルトの名無しさん
NGNG有難うございます。助かりました!
0243デフォルトの名無しさん
NGNGに追加です。
VBのTabEnabledのようなものがあればいいと思うのですが、
誰か知りませんか?
本当に困っているので、よろしくお願いします。
0244デフォルトの名無しさん
NGNGCString t1;char cs[100];
GetPrivateProfileString("window", "width", "0", cs, 0, spath);
t1.Format("%s", cs);
こう書いたのですが、まともに読み取れません。
解決法を知っておられる方はおられますか?
0245デフォルトの名無しさん
NGNGnSize が0じゃ何も読めないと思うがどうか。
0246デフォルトの名無しさん
NGNG>>243
「最新Windowsプログラミングテクニック ワンポイント・レッスン」
て本の1069ページに出てる。
0247デフォルトの名無しさん
NGNGある文字列があって、その文字列の左からn番目の文字列を取得したいの
ですが、このような関数ってあります?
MSDN探しててもそれっぽい関数ないのですが・・・
0248デフォルトの名無しさん
NGNGn番目からの文字列は、(n+p)
MultiByteCodeSet? 知らんね。
0249デフォルトの名無しさん
NGNGあのように、ダイアログの外をクリックしたら自動的に消えるようにしたいのですが、
どうすればよいか知ってるかたおられますか?
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGフォーカスが無くなると自分自身を破棄するとか?
0252173
NGNGタブじゃないという言い方は変だったかもしれません、
プロパティとかに表示される耳のような部分がないので
そのように思ったのです、MoonBrowserのようなアプリは
MDIから作るのでしょうかSDIから作るのでしょうか?
0253デフォルトの名無しさん
NGNGつうか、あんた何も分からな過ぎ。
もうちっと色々調べてから挑戦しようや。
ちなみにあれは、タブコントロールのスタイル変えただけだよ。ボタン型に出来る。
Moonは使ったこと無いので知らんけど、親Windowの内部に複数Window表示できるタイプなら
MDIだろう。
しかし、今から新たにプログラム組むのに、MSが推奨しないMDI使うのはどうかと思うが。
何でわざわざMSがWordやExelをSDIに作り変えるなんていう手間をかけたか考えてみ。
0254デフォルトの名無しさん
NGNGstrncpy(str1,str2+n,cn);
0255254
NGNGMFCはわからん。というかC++がわからん。
0256デフォルトの名無しさん
NGNGビューからドキュメントを得るのは
GetDocument()で出来ますが、
その逆や親フレームのポインタはどのようにしたら取れるのでしょうか?
0257デフォルトの名無しさん
NGNGレスありがとうございます。
早速、その本を探してみます。
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNGMIDI音源が不安定だからさ
0260VC++初心者
NGNG何が原因でしょうか?
詳しい調査の仕方を知ってるシト教えてください。
ASSERT(SelectObject([ビットマップへのポインタ])!=0)で
アサーションされるが、なぜかがまったくワカンネーーー
0261デフォルトの名無しさん
NGNGまずだ、そこの ASSERT は VERIFY にしておけ。リリース版作ったときにハマるぞ。
そうそう、SelectObjectの返り値もちゃんと保存しとくように(後で戻すのに必要になる)。
次にだ、GetLastErrorでエラーコードを取得して、
VCの [ツール]-[エラーコード検索] で何のエラーか調べてみてくれ。
おおかた、ビットマップが変なんだろうと思うが。
0262デフォルトの名無しさん
NGNGハンドルを渡せ。
0263デフォルトの名無しさん
NGNGそうだよな。>260よ、そうだと言ってくれ。
0264VC++初心者=260
NGNGCBitmap *pCBitmap;
ビットマップ初期化処理(略);
ASSERT(pDC->SelectObject(&pCBitmap)!=0);
>>261さんのアドバイスに従ってやってみます。
それでもだめならまたきます。
おやすみなさい。
0265デフォルトの名無しさん
NGNGで、260はMSDN見たのか?ビットマップについて色々書いてあるぞ。
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNGあれ、そうなの? たしかに、GetLastErrorでエラーとれるとは書かれてないけど……。
>264
本当に & って付いてる? もし付いてたらすぐさま外せ。
0268デフォルトの名無しさん
NGNGWin32上の特定のファイルのサイズを取得するにはどうすればよいでしょう?
0269親切な人
NGNGヤフーオークションで、凄い人気商品、発見!!!
「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA
ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0270デフォルトの名無しさん
NGNG箱型選択になりますか?
0271VC++初心者=260
NGNG丸投げしているみたいで申し訳ないとは思いますが、
VC++練習用のゲーム(パズルみたいなもの)なので公開しても問題ないと思います。
メニューから、「ピクチャーの読み込み」を選択して、
360*360以内の.bmpファイルを読み込み、終了するとSelectObjectがエラーを返してくれます。
問題が起こる場所は、
void CJigsawView::OnNewGame() の
pCBitmapWkd
= pDC->SelectObject(pCBitmap);
の部分です。
以下のURLに問題のプロジェクトがあります。(2行ですがつないでください)
http://jp.y42.briefcase.yahoo.co.jp/bc/aji_curry_x/lst?.dir=/Public&.view=l&.src=bc&.done=
http%3a//jp.y42.briefcase.yahoo.co.jp/bc/aji_curry_x/lst%3f.dir=/Public%26.src=bc%26.view=l
身勝手なことばかり書いて申し訳ありません。
0272デフォルトの名無しさん
NGNGGetFileSize
0273VC++初心者=260
NGNGやってはみたのですが・・・・
エラーコードは「0」でメッセージは「この操作を正しく終了しました。」と、
言いつつ、pDC->SelectObject(pCBitmap)はしっかり0を返してくれます。
0274デフォルトの名無しさん
NGNGそんなAPIは存在しない。自力で実装すれ。
0275デフォルトの名無しさん
NGNGアクセス権などはどのように取得するのでしょうか?
0276デフォルトの名無しさん
NGNG見てみたよ……色んな意味ですごいことになっているソースだな。
一つ重要なことを話しておこう。「ASSERT の中に書いたものは
リリース版ではきれいさっぱり消えてなくなる。」何でもかんでも
ASSERTにつっこんどくと後でえらいことになるぞ。
で、本題。SelectObjectできない理由は、pDCがメモリDCじゃないから
(ビットマップはメモリDCでしか選択できない)。
画面⇔メモリ間のビットマップ転送が目的なら、画面側のDCに
ビットマップを選択しておく必要はまったくない。
ビットマップのコピーが目的だったら、メモリDCを二つ作って
その間で転送しないとダメ。
0277VC++初心者=260
NGNGお答えいただきありがとうございます。
ここからはVC++できないので、帰って直してみます。
家は電話回線を繋いでないのです。
ところでデバイスコンテキストについてですが、
メモリDCとそうでないDCは何か見分け方があるのでしょうか?
そのプログラムを見ていただいてもお判りのように今ひとつ理解できてないのです。
そのプログラムは、参考書などを使って書きました。(MSDNも参考にさせていただきました。)
でも、デバイスコンテキストになると「紙に絵をかくように図形を描画する。」とか、
書かれていて、それがハードウェアとどう結びついているかの説明は見つかりません。
何か詳しい本とかHPをご存知ですか?
0278デフォルトの名無しさん
NGNGhttp://techtips.belution.com/ja/vc/0023/
でDLLでデータを共有する方法があるのですが
このデータをクラスでもできるのでしょうか?
本などでは、すべてグローバル変数というか
このサイトで説明しているものばかりなんです。
同じようにクラスも宣言したんですけど
どうも、共有にデータをもってくれないんです。
誰か知っているかたがいればお願いします。
0279デフォルトの名無しさん
NGNG表示したいのですが、わかる人はおられますでしょうか?
SHGetFileInfoとは聴いたのですがまったく解らないので、
教えてください。
0280デフォルトの名無しさん
NGNGSHGetFileInfoで検索したら山ほどひっかかるじゃん。
なにがわからんのよ。
0281デフォルトの名無しさん
NGNGSHFILEINFOへ代入する所までわかったのですが、
その値をCListCtrlへ受け渡す方法がわからないのです。
0282デフォルトの名無しさん
NGNGCImageListに取得してたIconをぶち込んで
CListCtrl::SetImageListすればよかろう。
0283デフォルトの名無しさん
NGNGいえ、CImageListへ取り込む方法がわからないのです。
0284デフォルトの名無しさん
NGNGででけへんの?
0285デフォルトの名無しさん
NGNGに変換できないんですよ。Addだと。
HIMAGELIST、SHFILEINFO のどちらからも入れれないんです
0286デフォルトの名無しさん
NGNGどうすればよいでしょう。
0287デフォルトの名無しさん
NGNGどういうコード書いているのか見せろ
0288デフォルトの名無しさん
NGNGSHGFI_ICON | SHGFI_LARGEICON);
CImageList mig;
mig.Add(shfi.hIcon);
m_listl.SetImageList( &mig, LVSIL_NORMAL);
mi.iImage = 0;
miはLVITEMで、SHFILEINFO shfi、CImageList il
こんな感じです。
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNGfor() {
SHGetFileInfo(m_pathl + ch, 0, &shfi, sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_LARGEICON);
::CoUninitialize();
mig.Add(shfi.hIcon);
m_listl.SetImageList(&mig, LVSIL_NORMAL);
mi.iImage = 0;
CListCtrlへ代入
mig.DeleteImageList();
}
指摘いただいた通り書き直したのですが、まだ動きません。
というよりも、コンパイルエラーは出ないのですが、
そのプログラムが実行された瞬間に、エラーが出るのです。
デバッグしてみるとAddの部分に問題があるようなのですが…。
0291あのう・・・・
NGNGCFont myFONT;
myFONT.CreatePointFont(300,NULL,NULL);
myDC.SelectObject(&myFONT);
とやるとコンパイルもできてちゃんと文字も大きく表示されるのですが
実行時に必ずエラーが出るんです。無視すれば普通に動くのですが
どうしてこうなるのかがわかりません。どなたかご教授お願いします。
0292デフォルトの名無しさん
NGNGCreateの引数が足りない。
0293デフォルトの名無しさん
NGNGヘルプぐらい確認しなさい
>>291
それだけじゃ分かりません。
最低でもどんなエラーが出るか書いて下さい。
いちいちビルドしてチェックするほど皆ヒマじゃないんだぞ
0294デフォルトの名無しさん
NGNG予想の範囲で
CFont myFont, *pFont;
myFont.CreatePointFont(300, NULL, &myDC);
pFont = myDC.SelectObject(&myFont);
/* 描画処理 */
myDC.SelectObject(pFont);
myFont.DeleteObject();
後始末の問題かと思うが
0295あのう・・・・
NGNGMicrosoft VisualC++ Debug Library
------------------------------------
Debug Assertion Failed!
File:wingdix.cpp
Line:250
For information on hou your program can cause an assertion
failure,see the Visual C++ documentation on asserts
というようなエラーメッセージが起動直後に出るのです。
コンパイルは通るのですがなぜこうなるのかがわかりません。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGSHFILEINFO shfi;
CImageList il;
mi.mask = LVIF_TEXT | LVIF_IMAGE;
mi.iItem = 0;
mi.iSubItem = 0;
s = kFinder.GetFileName();
_tcscpy(ch, s);
mi.pszText = ch;
::CoInitialize( NULL);
HIMAGELIST himg= (HIMAGELIST)::SHGetFileInfo(m_pathl + ch, 0, &shfi, sizeof(SHFILEINFO),
SHGFI_ICON | SHGFI_LARGEICON);
CImageList mig;
mig.Create(32, 32, ILC_COLOR, 1, 1);
mig.Add(shfi.hIcon);
m_listl.SetImageList( &mig, LVSIL_NORMAL);
mi.iImage = 0;
m_listl.InsertItem(&mi);
このように書いたのですが、ぜんぜん、画像が
CListCtrl(m_listl)に表示されません。どうなっているのでしょう?
0298デフォルトの名無しさん
NGNGスコープが外れるとmigが無くなるから。
migをメンバ変数にしる。
CImageList il; はどこに使われているのだろう?
0299デフォルトの名無しさん
NGNGそれから、Createを使うのですから、DeleteImageListもいるんですよね?
そこまではかえたのですが、ぜんぜんCListCtrlにはアイコンが表示されません。
どうしてですか?
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG一つ聴いてよろしいですか?というのは、私を困らせたのは、Reportでのリスト化なんです。
long state = ::GetWindowLong(ma.GetSafeHwnd(), GWL_STYLE);
::SetWindowLong(ma.GetSafeHwnd(), GWL_STYLE,(state & ~LVS_TYPEMASK)|LVS_REPORT);
で、REPORTになるじゃないですか。
そうすると、アイコンが消えるのですか?
それで、試行錯誤がんばっていたわけです…。
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNGを使ったのですが、
そうするとファイルを開いて、追記開始部分に変な文字が
つけられてしまうのですがどうにかならないんですかね?
0306デフォルトの名無しさん
NGNG再描画を追加したいのですが,初期設定やら,初心者なのでよくわかりません.
OnPrint関数を使って具体的にどのようにすればいいのでしょうか?
ボタンOnBotton1()を押したら,グラフを順番に描いてくれるものを作っています
CDC* pDC=this->GetDC();
書けばいいらしいのですが,それ以降がわかりません.お願います.
0307デフォルトの名無しさん
NGNGそれMFC?
>>306
OnPaintでCDCのメンバ関数で描画しなさい。
0308デフォルトの名無しさん
NGNGテキストファイルなら、末端のEOFを殺すのは義務です。
0309デフォルトの名無しさん
NGNGMainFrm.cppのOnCloseでGetWindowPlacement、
CreateでSetWindowPlacementを使いましたが
次回起動したときに最大化や最小化が正しく反映されません。
最大化や最小化をしない場合は正しく位置が反映されます。
どうすればよいのでしょうか?
0310デフォルトの名無しさん
NGNG閉じ際に一瞬開いて場所を保存。
最小化・最大化状態まで保存されたらかなりむかついて
即アンインストールだがな。
ああ、きっと、アンインストーラもないんだな。
ごめんごめん。
0311デフォルトの名無しさん
NGNG行・列の数は変わりません。
最整列させるにはどうすればよいでしょうか?
0312デフォルトの名無しさん
NGNGこんなの見習いたくないな
0313デフォルトの名無しさん
NGNGつーか秀丸の作者か?
あんぽんたん、とだけ言っておこう。
0314デフォルトの名無しさん
NGNGCFrameWnd::ActivateFrame()をオーバーライドしる!
0315デフォルトの名無しさん
NGNGここみるとよいかもよ。314の言うように処理してます。
http://www.codeproject.com/dialog/windowpres.asp
0316デフォルトの名無しさん
NGNG位置を保存するだけならこんなことしないでも
GetWindowPlacement、SetWindowPlacementでできるが。
0317デフォルトの名無しさん
NGNGArrangeはやってみた?
0318デフォルトの名無しさん
NGNG「保存」と聞いて即レジストリを連想したんだろうな…
0319デフォルトの名無しさん
NGNG取り扱いたいのですが、(コモンダイアログではなくて)
方法を知っておられる方はおられませんか?
0320デフォルトの名無しさん
NGNGツリーを自分で作れ。
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNG通常のウインドウと同じ方式、(DragAcceptFiles()して、OnDropFiles())(COleDropTargetを持たせる方法)
でうまく動かないのですが、何か特別な手続き方法が必要なのですか?
間違ってPart2スレに書き込んでしまい、あげてしまいました。ごめんなさい。
0323デフォルトの名無しさん
NGNGフォント変えたい。"MS ゴシック"のサイズ「9」にしたい。
CFontをSetFontしろと聞いたのでやってみたが、実行時エラーで落ちる。
どのクラスにどのタイミングでどの処理をやるのですか?
0324デフォルトの七資産
NGNG分割の縁のサイズを変えた時に呼ばれるメッセージって
なんだかわかりますか?
それか, CFrameWnd::IsTracking をどのタイミングで
呼べばいいのか教えて下さい。 お願いします。
相談に乗ってください。
待ってます。
0325デフォルトの名無しさん
NGNGWM_SYSCOMMANDの SC_MINIMIZEを捕まえて、
::AfxGetMainWnd()->ShowWindow(SW_HIDE);
::AfxGetMainWnd()->ShowWindow(SW_SHOWMINIMIZED);
とかやると、できるっぽい。
SystemParametersInfo()を使って、SPI_GETANIMATION で現在の設定を保存、
SPI_SETANIMATIONでアニメーション切って、最小化後、設定を復元してやる
方法もあるが、これはちょっと問題アリな方法かも。
>>323
SetFontはいつでもいいが、CFontをメンバ変数にするか、newで作ってやる必要がある。
0326デフォルトの名無しさん
NGNGなるほど、別にアニメーション自体を切らなくてもいいわけだ。
0327325
NGNGいや、しかし ShowWindow()使う方法ではタスクバーの項目の順番が変わってしまうな(´Д`;)
SW_HIDEでタスクバーから一旦消え、SW_SHOWMINIMIZEDで再登録されるので。
0328デフォルトの名無しさん
NGNGでは、タイトルバー以外でドラッグできるようにするにはどうすればよいのでしょうか?
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNGそういうのは定番だから
「MFC タイトルバー 以外 ドラッグ ウィンドウ 移動」
みたいな単語でぐーぐればすぐ出てくるよ。
0331デフォルトの名無しさん
NGNGClassWizardのメッセージにWM_NCHITTESTがのっていないので、
悩んでいるわけです。
0332デフォルトの名無しさん
NGNGClassWizardのメッセージフィルタをウィンドウにしる。
0333デフォルトの名無しさん
NGNG解決しました。
0334デフォルトの名無しさん
NGNG途中で別のダイアログを使う。
そのときに最初のモードレスのダイアログを終了したい。
なにか手段はないだろうか?
0335デフォルトの名無しさん
NGNGダイアログのコードに処理を埋め込んでいるなら
お前の設計ミス。
0336デフォルトの名無しさん
NGNGCTreeViewで実現したいのですが、ぐるぐるでは構造体の配列が
いくらあっても足りません。
どうすればよいでしょうか?
力を貸していただけませんか?
0337デフォルトの名無しさん
NGNGぐるぐるとな。
ぐるぐるを忘れてはいかんぞ。
何のための配列が欲しいのだ?
構造体(をnewしてそのアドレス)を、個別に対応するTVITEM のlParamに
ぶっ込んでやれば、配列のサイズがどうとか悩まずに済むと思うが。
0339デフォルトの名無しさん
NGNGツリービューなんだから、データの持ち方もツリーする。
ごくアタリマエなことがなぜできんのだろう・・・
0340デフォルトの名無しさん
NGNG0341
NGNGそのチェックボックスの上をマウスが通過したときにチェックボックスの文字色や背景色を変更するにはどうすればいいでしょうか?
0342デフォルトの名無しさん
NGNGCButtonを派生してWM_MOUSEMOVEに対応するようにする。
0343デフォルトの名無しさん
NGNG表示、使用することは可能ですか?
可能なら方法を教えてください。
0344336
NGNGなにか、参考になるページなり何かありませんか?
0345341
NGNG派生クラスを作らないとダメでしょうか?
サブクラス化によってWM_MOUSEMOVEメッセージは検出することができるので、
問題はそのタイミングで色を変更するにはどうすればいいか、なのです。
0346デフォルトの名無しさん
NGNG「MFCによるWindowsプログラミング」\8800
ttp://www.codeproject.com/
ttp://www.codeguru.com/
0347デフォルトの名無しさん
NGNGOnCtlColorは?
0348341
NGNG普通にそれを使ったらダイアログの作成時から色が変わってしまいます。
どうすればいいのでしょうか?
0349デフォルトの名無しさん
NGNGWM_MOUSELEAVE、WM_MOUSEHOVERメッセージで
マウスが離れた時と留まってる時がわかるので、
そのタイミングでシステムのデフォルト色と変更色を変えるとか。
win98以降じゃないとこのメッセージ使えないけど。
0350デフォルトの名無しさん
NGNGttp://www.codeproject.com/buttonctrl/hoverbutton.asp
にWM_MOUSELEAVE、WM_MOUSEHOVERを使って表示を切り替える
サンプルがある。
0351341
NGNG今からそのサンプル見てみます。
0352349
NGNGフラグをTRUE、カーソルがなければFALSEをセットするようにして、
OnCtlColorでフラグがTRUEなら色を変更する、という方法でもできたよ。
0353Javaじゃないのね
NGNG既出だったらすいません。
世の中にはいろんなページがあるんですね。
0354デフォルトの名無しさん
NGNGとりあえず作者のがんばりを誉めてあげたい。
しかしなぜそこまでしてJavaドキュメントに似せたかったのか・・・
0355デフォルトの名無しさん
NGNG出来るのかな…。
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNGCString→int型にするにはどうすればいいんですか?
逆ならformatでできるのですが
(int)やってもatoiやってもできないんで困っております。
0359デフォルトの名無しさん
NGNGそういや operator (int)() はあっても良さそうだね。けど無いのさ。
atoi((LPCTSTR)str)
で、どうよ?
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNGsscanfの方がエラーチェックできるから楽。
CStringからってことなら _stscanf()
>>360
別に一緒だけど?
ダイアログリソースのスタイルにD&D許可チェックついてる?
0362デフォルトの名無しさん
NGNGゲボハハハ
0364デフォルトの名無しさん
NGNGMFCはイイね。子供がキャストしなくても困らないように作ってある。
とりあえずUnicodeに手を出すのはやめとけ。
0365sage
NGNGMoveWindow( 0,24,100,100, TRUE );
SetWindowPos( &wndTop, 0, 0, 100, 100, SWP_NOMOVE );
とか書いてもサイズは変わらず、
代わりにクライアント領域内でのこの範囲内だけが再描画の対象になって、
範囲外の領域は前のウィンドウの内容が残る──てなことになるんですが、
これの対処方法はどうすればいいんでしょ?
Web上で調べてみたんですが、普通、上のどっちかでウィンドウサイズは変えられるらしいんですけど。
ビューはCViewクラスで、とりあえずOnDrawに記述してみました。
特にこれといって難しいことはやってませんです。
0366デフォルトの名無しさん
NGNG反省しる。
GDIにあやまり!
0367デフォルトの名無しさん
NGNG反省しる!
USER32.EXEにあやまり!
デストラクタで例外を投げるくらい重罪だぬ!
0368デフォルトの名無しさん
NGNGあれー? WM_PAINTメッセージの処理中はダメなの? タブー?
んじゃどこに書いておけばいいでしょうか。
どうでもいいけど、さっきの書き込みって名前だけsageてて全然下がってなかったよ。
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGCreateWindow[Ex]のぱらめーたをいじるか
WM_NCCREATE(PreCreateWindow)を掴んで
CREATESTRUCTをいじるり!
0371デフォルトの名無しさん
NGNGとちゅーで(プログラムの実行中、任意のタイミングで)変えたい……
とか言ってみていいっすか?
CREATESTRUCT構造体をどっかで捕まえてそこからいじれないかなあ、とも
考えてみたんですけど、あれってウィンドウの作成段階でしか使えなかったっけ。
VBで組んだソフトでそういうことやってるのを見たことはあるんですが、
VBでできることがVCでできないはずはないかなあ、と。
0372デフォルトの名無しさん
NGNGただし
WM_PAINTとWM_KILLFOCUSではやるなぼけ。
0373デフォルトの名無しさん
NGNGDoc/View使ってるなら例えばメニューに[ウィンドウサイズを2倍に汁]
という項目を作って、MainFrm.cppにそのハンドラ作って
SetWindowPosすればよいと思うが。
0374デフォルトの名無しさん
NGNG結果→ダメ。
今までと変わらずでおんなじ症状が出るー。むきーっ。
任意のタイミングってのが、クライアント領域をクリックしたとき、なんですけど、
前にOnLButtonDownに置いて試したときも同じ状態に。
これじゃウィンドウサイズっちゅーよりクライアント領域しかいじれない。
んー、どっか何かを見落としてんのかなあ。
0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNGMainFrm.cppにハンドラ用意するか、
Viewでやるなら
AfxGetMianWnd()->SetWindowPos(〜);
0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNGCWndClass…SDIのビューの基本クラスですが、
ここに、ハードディスク上の任意のビットマップを表示したいのですが、
(絶対パスで指定するわけですが)
取り込む方法がわかる方いますか?
0380デフォルトの名無しさん
NGNGで、お前がやりたいことは何なのかもう一度思い出せ。
それからCBitmapの使い方を調べろ。
0381デフォルトの名無しさん
NGNGあはははー。そりゃそーだ。そりゃそーだわ。
これってViewのクラスでやってるからじゃないのかあー? とか思いつつも
いや、Viewでいいような気がする、ってずーっと考え込んでましたわ。
一発で解消。
絶対、くだらないことで詰まってるよ、とか思ってたらやっぱりその通りで力抜けまくり。
ともかくありがとうです。
0382デフォルトの名無しさん
NGNGオレが思うに、CBitmapではリソース上のBitmapは扱えるけど、
ハード上のBitmapは無理なんじゃないの?
ちがった?
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNGファイル名から一発で作る方法がないだけさ〜
ファイルを読んで、BITMAPINFOHEADER を読み出して、
BITMAP(構造体)をでっち上げて、CreateBitmapIndirect() で作る
とこまで自分でやるのさ。
「幸せは 歩いてこない だから 歩いてゆくんだね」ちゅうわけだ。
0385デフォルトの名無しさん
NGNGCFormViewにしてダイアログにコントロールを埋め込んで、CListCtrl型のメンバを関連づけて、
と、ここまではいいんですが、この後が。
ヘルプやHPを見て回ってわかったのは、LV_ITEM構造体にリスト用のデータを一時的に格納し、
それをInsertItemのパラメータに与えればいいらしい、てことぐらいです。
ただ、その構造体に関する箇所がヘルプでは英語しかないし、どこのHPを見てもいまいち意味が。
項目、アイテム、サブアイテム、インデックス、ラベル、状態、state、mask。
もう用語からさっぱりわけわかりません。
0386デフォルトの名無しさん
NGNG本買った方が早いと思うんだが。
0387デフォルトの名無しさん
NGNGclassViewでViewクラスに自分で追加したメンバ関数を削除したら
classViewからViewクラス自体が消えちゃったよ・・・。
ファイル自体は生きてるんだけどclassViewには表示されないんです。
どうしたら直るんでしょうか。
0388初心者
NGNGを出力したら 65535 となるのはなぜですか?
u はunsigned int型符号無し10進数らしいですが意味がわかりません。
くだらない質問ですみません。
0389385
NGNGやっぱりそれなりに長くなる話ですか。
しょーがない。本探すか。
0390デフォルトの名無しさん
NGNGおれはいつもLoadImage()で、ファイル名から一発で
HBITMAPを作っていますが、何か?
0391デフォルトの名無しさん
NGNG.clw ファイルを削除してからプロジェクトを開くとどうなるでしょ。
0392デフォルトの名無しさん
NGNGスレ違いの予感。
>>389
というか、リストコントロールで何をしたいのか書いてないし。
>項目、アイテム、サブアイテム、インデックス、ラベル、状態、state、mask。
のそれぞれの意味と使い方の説明はめんどうで誰もしたくないと思われ。
>>390
一発で作る云々はCBitmapの話だと思われ。
0393デフォルトの名無しさん
NGNGCBitmap bmp;
bmp.Attach((HBITMAP)::LoadImage(・・・));
これで一発。
0394387
NGNG返事遅くなりました。ありがとー。clwファイル削除しても
直らなかったけど、「clw 拡張子」で検索したら同じ症状の人
居たみたいで、色々試した直りました。
サンキュー。
0395デフォルトの名無しさん
NGNG関数を呼びます。その関数の中では、モードレスダイアログを Createしています。
で、ここまでは良いんですが、このダイアログの PreTransrateMessage()が
どうも呼ばれていないみたいなんです。CToolTipCtrlでツールチップを表示
するんですが、Pre〜が呼ばれないせいでツールチップのが表示されません(´Д`;)
どうすれば良いんでしょうか...? DLLのモジュール状態とかって関係あります?
0396395
NGNG|ただし、DLL の CWinApp オブジェクトには、アプリケーションの CWinApp
|オブジェクトと異なり、メイン メッセージ ポンプがありません。DLL が
|モードレス ダイアログ ボックスを表示する場合、または独自のメイン
|フレーム ウィンドウを持つ場合は、アプリケーションのメイン メッセージ
|ポンプから、DLL がエクスポートしたルーチンを呼び出す必要があります。
|このルーチンが、さらに DLL のアプリケーション オブジェクトの
|CWinApp::PreTranslateMessage メンバ関数を呼び出します。
0397デフォルトの名無しさん
NGNGCStringをstringへ。
また、
stringをCStringへ変更する良い方法はありませんか?
0398デフォルトの名無しさん
NGNG多分単純なことが解ってないのだと思います。
CRichEditCtrl& Edit = GetRichEditCtrl();
FINDTEXTEX findtext;
::ZeroMemory(&findtext,sizeof(findtext));
findtext.lpstrText = new TCHAR[3];
この辺でfindtext.lpstrTextには漢字+\0を入れました
int nRet = Edit.FindText(FR_MATCHCASE,&findtext);
if( nRet !=-1 ){
TRACE("これが出ない\n");
}
確実に一致するものはあります。
0399デフォルトの名無しさん
NGNGconst char* にすればOK
CString s1;
string s2;
s1 = s2.c_str();
s2 = (const char*)s1;
0400デフォルトの名無しさん
NGNGCString向けに書いちゃったもんは仕方ないからそのまま使え。
0401デフォルトの名無しさん
NGNG(HelloWorld!と手書きで表示されているページですよね?)
あの、サンプルはどのようにして見るわけですか?
0402デフォルトの名無しさん
NGNGMSDN起動するのが面倒ならMSDNのCDの何枚目かにあるSAMPLEディレクトリをごっそりコピーしておけ。
最近のVCの箱の中にはチュートリアルの本は入ってないのか?
急ぎでないならあれのソースを手打ちでもいいぞ。
0403デフォルトの名無しさん
NGNG応援してくれ!
0404デフォルトの名無しさん
NGNG0405zxcvbnm
NGNG今はWinbiffのひらめーるにあるようなリストビューが対象です
0406デフォルトの名無しさん
NGNGリソースエディタでRichEditコントロールを貼り付けて
対応する変数をm_rEditとしました。
View::OnInitialUpdate()
の所で
m_rEdit.SetBackgroundColorとかやると、色とか変わるんですが
m_rEdit.SetWindowText("初期");として、起動したときに
「初期」と表示したいんですけど、何も表示されません。
UpdateData(FALSE);
を最後に呼んでも変わらないです。
どうすればいいのでしょうか。
0407デフォルトの名無しさん
NGNGReplaceSel
0408406
NGNGReplaceSelでも出来なくって、これは自分が何処かで変なことやっている
と思って見直してみたら、DDX_ControlとDDX_Textで同じIDが
違うメンバ変数に割り当てられてた。
ClassWizardだと、ひとつしか割り当てられないと思ってたけど、
複数可能なんだ。混乱するから一つにしたけど。
レスしてくれてありがとう>407
0409デフォルトの名無しさん
NGNG直し方を書いてなかったからついでに書き込んどく。
ワークスペースに表示されなくなったクラスのヘッダファイル(****.h)を
メモ帳か何かで開いて内容を書き替えずに保存する(つまりファイルのタイムスタンプを変える)。
すると消えたクラスが復活する。(clwファイルは消さない方がいいような気がする)
0410デフォルトの名無しさん
NGNGたいんだけど、これって標準 (コモンダイアログボックス) みたいなのはない
の ? 自分で、作るしかないのかなぁ ?
0411デフォルトの名無しさん
NGNG「あるフォルダにあるファイルとフォルダのリスト」を取得する
メンバ関数の含まれているClassはないでしょうか
おしえてください
0412デフォルトの名無しさん
NGNGCFileクラス以降を見てた
CObject-CFileFindだったのね
0413デフォルトの名無しさん
NGNG知っていれば教えて貰えませんか。
今、けっこう必死で探しています。
0414デフォルトの名無しさん
NGNGなんかないみたいだね。素直に、FindFirstFile() 等を使うのが吉。
0415デフォルトの名無しさん
NGNGWin32APIでなら、::SHBrowseForFolderってのがあるよ。
MFCでそれをラップしてあるかどうかは知らないけど、
その辺から探ってみれば。
0416411
NGNGCFileFind finder;
BOOL bWorking = finder.FindFile("C:\\*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
cout << (LPCTSTR) finder.GetFileName() << endl;
}
ちなみに
僕は>>410さんとは別人です
なぜか同じことをやりたいようですねw
0417デフォルトの名無しさん
NGNG::SHBrowseForFolderで。MFCには無いよ。
以前検索したことあるけど、::SHBrowseForFolderをラップした
クラスを公開してる人が何人かいた。
0418デフォルトの名無しさん
NGNGサンクス !! できたよ。
でも、なんでディレクトリを指定するだけでこんなにしちめんどくさいん
でしょうね。CFileDialog にパラメータ指定するとか、CFolderDialog
みたいなクラスを作るとかしてくれれば良いのに...。
ともかく、ありがとう。
0419デフォルトの名無しさん
NGNGソースにまったくエラーがないのにコードを少しでも書き替えると
xxxxview.h(50) : error C2143: 構文エラー : ';' が '*' の前に必要です。
xxxxview.h(50) : error C2501: 'xxxxDoc' : 識別名を宣言するのに、型が指定されていません。
xxxxview.h(50) : error C2501: 'pXXXX' : 識別名を宣言するのに、型が指定されていません。
xx.exe の実行エラー
となる。
この3つは1つの同じ行で発生しているが、コンパイラのチェックにかかるような問題はない。
で、試しにこの1行を削除してみると、ここに書かれている宣言が必要な行からエラーが噴出しまくるが、
元に戻すとなぜか再びコンパイラを通って、何事もなかったかのように実行できる。
ただしまたソースを書き替えると同様の現象が起こる。
これと同じような状態になった人っているかなあ?
あと、なぜかブレークポイントの1つが消せなくなって、文末付近にゴミのように残る。
これも経験ある人いない?
0420デフォルトの名無しさん
NGNGシステムのルートを取得するClassってないでしょうか
たとえば、A:,C:,D:,Q:という感じで
0421デフォルトの名無しさん
NGNG言いたいことはよくわからないけど、GetLogicalDriveStringsとか?
0422デフォルトの名無しさん
NGNGありがとうございます
やっぱり、MFCにはなかったんですね
結局スレ違いすんまそん
0423デフォルトの名無しさん
NGNG“プリコンパイル済みヘッダを使用しない”にしてリビルドしてみては。
0424419
NGNGビューのヘッダファイルに、ドキュメントへのポインタを
メンバに持たせようとしてたんだけど、
ドキュメントのヘッダファイルをビューのソースでインクルードしてたのがいけなかったみたい。
ちゃんとビューのヘッダでインクルードしたら直った。
……って、すげえイージーミスじゃんよ。笑えねー。
それと相変わらずブレークポイントのゴミは消えてくれない。
とりあえず無効にしてるからジャマにはならんが、なんかうぜえ。
0425sage
NGNG逆にCStringの文字列をcharの配列にいれるのはどうしますか。
0426デフォルトの名無しさん
NGNGCString a(str);
CString b = str;
CString c;
c = str;
strcpy(str, a);
0427sage
NGNGいやー、助かったわ。ありがとさん。
これでやっと納品できるわな。
0428デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG発注しないけど、面接に読んでもヨイですか?という意味だ。
きちんと嫁。
0431427でも429でもないが
NGNGニポン語、難シイネ。
0432デフォルトの名無しさん
NGNG電波を受信できない人には、あなたの発言を
理解するのは不可能でしょう。
0433398
NGNG0434デフォルトの名無しさん
NGNGそんな俺もC#のドキュメントを読んでたりするけど…
0435デフォルトの名無しさん
NGNGやっぱC++がイイナ
0436デフォルトの名無しさん
NGNGあのクラスと、CMap系を使いたいが為に今だにMFCに頼りっきりな漏れ。。。
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNG知らんかった。。。
どうもありがとう
0439デフォルトの名無しさん
NGNGstd::string と std::map じゃ不満?
0440438
NGNGしかし、なんでこれが流行らないのだろう。。。
>>439
STLも確かに便利なんだけど、すぐにインライン展開してコードが膨れるのであまり好きではないです。
もしかして使い方が悪いだけかな?
0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNG元のDCのクリッピング領域情報が引き渡されずに困ってます。
というか空になっちゃうんですが、何とかして上手く引き渡す方法は
ありませんでしょうか?
クリッピング領域はRECTじゃないからGetClipBox→SelectClipRgnも
使えないし、ていうかそもそもなんでGetClipRgnでクリッピング領域が
取得できないんだとか、MFC&Win32APIの愚痴になってしまいがちですが。
0443デフォルトの名無しさん
NGNGその後AddFontResourceしても目的のフォント得られないんじゃボケェ
CreateFontで渡すフォント名はハードコーディングしても得られないんじゃぁ
第1引数に0指定しておくとちゃんと取れるんじゃハゲェ
どなたかご存知ですか?
0444デフォルトの名無しさん
NGNGグループボックスを三個、
それぞれのグループボックスの中にラディオボタンを3つずつ配置しました。
ところが、ラジオボタンが正常に動きません。
どこかにチェックを入れるとグループボックス関係なく
ダイアログ上でひとつにしかチェックつけられません。
どうしたらいいでしょうか?
0445デフォルトの名無しさん
NGNGグループボックスの一般>グループのチェックは入れましたか?
それと、レイアウト>タブオーダーはちゃんと設定しましたか?
0446444
NGNG設定されていなかったので、ご指摘のところを設定しました。
でも、症状はかわりませんでした。
ラジオボタンのグループ、タブストップのところは
チェックしなくてもいいのですか?
0447455
NGNGタブオーダーはちゃんと番号が続くようにしましたか?
この場合だと、グループボックス1→ラジオボタン1→ラジオボタン2→ラジオボタン3
→グループボックス2→ラジオボタン4→ラジオボタン5→ラジオボタン6
→グループボックス3→ラジオボタン7→ラジオボタン8→ラジオボタン9
のように番号を設定しましたか?
0448高官
NGNGMFC(CEditView)でエディットビューの背景に対し
カラーダイアログを実装させたいのですが,うまくいきません.
まず,COLORREF型m_BkgndとCBrush型m_brBkgndをエディットクラスに
追加して,Resourceビューのメニュー(ID_VIEW_COLOR)の関数を追加します.
void CTestView::OnViewColor()
{
CColorDialog colDlg;
if (colDlg.DoModal()==IDOK){
m_Bkgnd = colDlg.GetColor();
Invalidate();
}
}
そして,=WM_CTLCOLORハンドラを追加.
if( nCtlColor == CTLCOLOR_EDIT ) {
pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(m_Bkgnd);
return (HBRUSH)(m_brBkgnd.GetSafeHandle());
}
return m_brBkgnd;
}
これを実行すると
文字を入力した行のみが変更されてしまいます.
背景色全体を変更するにはどうしたらよいのでしょうか?
0449444
NGNGありがとうございます。おかげで解決しました。
0450デフォルトの名無しさん
NGNGWM_ERASEBKGND 背景を塗りつぶすときに発生するメッセージ
自力で塗りつぶせば大丈夫
0451デフォルトの名無しさん
NGNGブラシも同じ色のを作って渡してやれ。
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG>>356
0454デフォルトの名無しさん
NGNG↑のサイトを参考にして、自作クラスのインスタンスをシリアル化して書き出したのですが、
読み込むにはどうすればいいのでしょうか?
CHoge hoge;//CHogeは自作クラス(上のサイトに従ってSerialize関数を継承しています)
CArchive ar;
(省略)
ar << &hoge;
↑のようにして書き出せたのですが、
CHoge hoge;
CArchive ar;
(省略)
ar >> &hoge;
↑で読み込もうとすると、
error C2679: 二項演算子 '>>' : 型 'class CHoge *' の右オペランドを扱う演算子は定義されていません。(または変換できません)
と出ます。
なにが間違ってるのでしょうか?
そもそも何故operator<<(CHoge*)がないのにar << &hoge;が通ったのかがわからないのですが…
0455デフォルトの名無しさん
NGNGoperator << ( CArchive&, CObject*& ); が存在するゆえ。
型がCHogeであるとわかってるオブジェクトなら、 << とか >> を使わないで
直に CHoge::Serialize を呼んだ方が良いなり。
from MSDN
> つまり、シリアル化可能クラスでメンバとして埋め込みオブジェクトを
> 定義している場合は、CArchive 演算子 <<および>> を使えないので、
> 関数Serialize を呼び出す必要があります。また、シリアル化可能
> クラスのメンバとして CObject (またはその派生オブジェクト) への
> ポインタが定義されていても、そのオブジェクトが自身のコンストラクタに
> よって構築されるときは、Serialize を呼び出す必要があります。
0456デフォルトの名無しさん
NGNGレスありがとうございます。
>operator << ( CArchive&, CObject*& ); が存在するゆえ。
あ、この行見逃してました。でもなんか難しい…
operator>>(CArchive& ar, CObject*& pOb);
もあるということは(形が同じだから)、本来ar >> &hoge;で行けませんか?
MSDNのは読んだんですが、Serialize関数で書き込むと<<で書き込んだのとは
フォーマットが変わりますよね?
他のフリーソフトの設定ファイルを書き換えたいという用途なので、
ファイルのフォーマットは変えられないんです。
そのファイルのフォーマットは間違いなく <<演算子で書き込んだものです。
というわけで<<で読み書きしたいのです。
あと、VC++5.0Learning(w です。
0457455
NGNGCHoge* m_pDynObj;
ar >> m_pDynObj;
かな。operator << って、型の情報まで書き込んでおいて
operator >> の時にはそこで動的に作成するもんなので。
0458デフォルトの名無しさん
NGNGサスペンド出来なかった。。。
動作も妖しいし、DLL開放時に激しく0x05例外出すし。。
(DLLでの話)
悩んだ挙句_beginthreadを使うと、すんなりと動いた。。。
とりあえずこれで解決したのだけど、MFC的にスレッドを立てる場合は_beginthreadって正しい?
どう思われますか>ALL
0459454
NGNGなるほど、CHoge宣言時に読み込むサイズが予測できないから
operator>>中でメモリを動的に確保する(確保し直す?)必要があるところが
operator<<と違って、それを注意されていたわけですね。
実装してみたところ、すっきり解決しました。
本当にありがとうございました。
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGttp://www.hi-ho.ne.jp/hawk/mfc0401.html
0462デフォルトの名無しさん
NGNGどうせつかうなら_beginthreadex。
AfxBeginThread使うならm_bAutoDeleteをFALSEに。
_beginthread系で作ったスレッドからMFCオブジェクトは使用禁止。
0463デフォルトの名無しさん
NGNG非同期にできるって書いてあるんだけど、実際にコンストラクタで
INTERNET_FLAG_ASYNCを指定するとアサートする。
ドキュメントは間違い?
0464sin
NGNGGetComputerName()の場合、win98系だと取得できず困っています。
getenv("COMPUTERNAME")も win98系だと駄目みたいだし。。
0465デフォルトの名無しさん
NGNGGetComputerNameはWin95以降に対応してるってあるけど?
0466デフォルトの名無しさん
NGNGWin95、Win2000でやってみたけど両方ともちゃんと取得できたよ。
MSDNより引用
>Windows 95/98:入力サイズが MAX_COMPUTERNAME_LENGTH + 1 未満で
>ある場合、GetComputerName 関数は失敗します。
こんな感じの初歩的なミスの可能性は。
0468デフォルトの名無しさん
NGNGブロッキング操作をキャンセルするため「キャンセル」ボタンを押した時に
CancelBlockCallを呼び出そうとしても、ブロッキング時は
そのキャンセルボタンが押せません。
0469デフォルトの名無しさん
NGNG>>あと、なぜかブレークポイントの1つが消せなくなって、文末付近にゴミのように残る。
>>これも経験ある人いない?
複数のプロジェクトを同時に扱ってない?
もしそうならブレークポイントが消せないソースファイルがロードされている
プロジェクトをアクティブにしてブレークポイントを削除してみて
0470Disca ◆NAfP6znE
NGNG再配布するときには、どうすれば良いのでしょうか。
0471Disca ◆NAfP6znE
NGNGそれとも、リンクさせる方法があるのでしょうか…。
お願いします。
0472デフォルトの名無しさん
NGNG回答ありがとう。VCは1つしか起動していないのでそれは違うかと。
でもいつの間にか消えてたからとりあえず解決。
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNG画面をスクロールさせながら行うとうまくいきません。
どなたか良い方法を知っていたらお願いします。。。
0475デフォルトの名無しさん
NGNGあらかじめ暗い画像をよういしとくってのは?
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNGCreateDIBSectionでビットマップ作って、
直接画像いじるしかないかな?
0478デフォルトの名無しさん
NGNGぱれっとあにめーしょん(ワラ。
0479デフォルトの名無しさん
NGNGミックスする方法があった気がするが、というか使ったことあるが、
誰か覚えてないか?
P.S>478とか、むかつくし
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG0482478
NGNG0483デフォルトの名無しさん
NGNGでないと、使えないのだよ!
0484デフォルトの名無しさん
NGNGヘルプには98以降って書いてあるよ?
0485478
NGNGOh!X 2001春号をみていませんな。
0486463
NGNG0487なんとなく哀れを誘ったので
NGNG知らん物だがちょっと調べてみた。
こんなことが書いてあるのな
http://www.microsoft.com/japan/developer/library/vccore/vcconlibraryimplementationchanges.htm
----------------------------------------------------------
CInternetSession
バッファの正当性チェックの強化
MFC のインターネット関連のすべての関数で、メモリ バッファのポインタ引数の正当性チェックが強化されています。
非同期処理の非サポート
MFC では、INTERNET_FLAG_ASYNC がサポートされていませんでした。このフラグを設定すると、MFC のデバッグ ビルドでアサートします。
----------------------------------------------------------
0488474
NGNG0489デフォルトの名無しさん
NGNGちょい待ってて
0490デフォルトの名無しさん
NGNGCIPAddressCtrl
等でBYTEでIPアドレスを取得すると
BYTE型でIPアドレスが受け取れるのですが、
このBYTE型、例えば16進数で64を
・Stringで"64"に変換したり、
・int型で64に変換する
にはどうしたらいいでしょうか?
0491489
NGNGリロードボタン連打して待ってます!!!
o(^^o)(o^^)o わくわく
0492デフォルトの名無しさん
NGNGsprintf
0493デフォルトの名無しさん
NGNGありがとう。
ワーカースレッドに入れるしかないか・・・
0494いやーははは
NGNG思わずいろいろ試していてしまった。
http://www06.u-page.so-net.ne.jp/ga2/toku/VC/Doc/Doc007.html
ココを見て変形したスクロールビューを使ったもの↓
http://members.tripod.co.jp/g54g45g/efedewView.txt
結局上手い方法は思いつかず、スクロール画面位置の原点を座標計算に
加えてみただけ。なんかアレなのでこの際丸投げ
ライコスメールで
ID:【g54g45g】
PASS:【7ftakr】
の受信トレイに入れときます
”efedew.lzh”の”efedewView.cpp”
役に立つかどうか・・・
0495デフォルトの名無しさん
NGNGMFC AppWizardで作成したSDIプロジェクトで、ウインドウを4つにスプ
リッタし、それぞれにCRichEditViewを貼り付けたいのですが、ClassWizardで
「クラスの追加(&L)...」→「新規...」を選択した後に表示される
「基本クラス(&B):」のコンボボックスの中にCRitchEditViewが表示されません。
MFC AppWizardの6/6で基本クラスにCRichEditViewを指定すると、一つ目のスプリッタ
ウインドウにはCRichEditViewが貼り付けられるのですが、残りのスプリッタウインドウ に貼り付ける為のCRichEditViewをClassWizard等を使い簡単に作成する方法ってないで
しょうか。
0496デフォルトの名無しさん
NGNGクラス間でデータ等のやりとりを行うには
どのような関数を使用すればいいのでしょうか?
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNG適当なクラスから派生させて、基本クラスを書き換える。
0500500
NGNG0501デフォルトの名無しさん
NGNGいいヤツだなお前
0502デフォルトの名無しさん
NGNG具体的に言うとデータの入出力用のクラスがあって、
インスタンス化した元のクラスに対して「出力準備完了」など通知
したいんですが・・・・・・
呼び出し元 ーーーーーーーー> 入出力クラス
インスタンス化
呼び出し元 <−−−ーーーーー 入出力クラス
入出力準備完了通知
こんな感じでできないでしょうか?
スレッドとかプロセス同士だとできそうなんですが、
入出力用のクラスを気にせずに呼び出せるようにしたいもので・・・・
0503デフォルトの名無しさん
NGNGお好きなようにやればよいではないか。
class MsgHandler {
public: void io_ready();
};
class IO {
MsgHandler* pMHan;
public: IO( MsgHandler* p ) : pMHan(p { /* ... */ pMHan->io_ready(); }
};
class Yobidashimoto : public MsgHandler {
/* 略 */
};
0504503
NGNGpublic: virtual void io_ready() = 0;
とかでよろしこ。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNGおおおそうやればいいのか!
今まではUNIXでCとかやってたんですが
子供が親の参照もってるのがちょっとなんか違和感あるなあ
でもこれでうまくいきそうです。ありがとうございます。
0507
NGNG0508デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1017674939/l50
できいてみ。
0509デフォルトの名無しさん
NGNGDefWindowProcのパラメータで動かしているけど、
ダイアログ外の操作で生じた変更を、
すぐにリストビューに反映させるにはどうしたらいいかなぁ。
一応、試しに親からUpdateData(FALSE)とかやってみたけどやっぱダメだった。
0510デフォルトの名無しさん
NGNGRedrawItems呼んでみるとか。
0511デフォルトの名無しさん
NGNGうん、これだ。助かったぜぃ。
0512デフォルトの名無しさん
NGNG内部リンクが全て効かなくなってしまいました。リンク部分を"res://〜"で
書き直せばいいのですが、自動的に書き直すようなことってできますか?
0513デフォルトの名無しさん
NGNGタイムロス無しでそのままWAVE OUTから音を出すソフトってVISUAL C++で
作れますか?
既に保存してあるWAVEファイルを加工するソフトは結構ありますけど
そういうのじゃなくてギターなんかのアナログエフェクトと同じ事がしたいんです
ちなみに僕はまったくプログラムできません(C言語がほんの少しだけ。)
出来るか出来ないかだけでいいので教えてください。
多分
line in→標本化→アナログ/デジタル変換→エフェクト処理→
デジタル/アナログ変換→wave out(waveファイルじゃなくて音が出したい)
(line in→wave out の間にタイムロスほとんどなし)
みたいなことをしたいんですけど…
0514デフォルトの名無しさん
NGNG通常アプリケーションでは難しい、というかほとんど無理。
カーネルモードで動くドライバならばできるかもしれないけど、
素人にはおすすめできない。
0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNGスクロールバーが付く瞬間に送られているメッセージを知りたいのですが、
何のメッセージが送られているのかspy++でもよくわかりませんでした。
あと、DelphiでいうStringGridのようなものはないのでしょうか?
FlexGridというActiveXコントロールがあるようですが、
ActiveXではなくて、MFCのようにソース付のものがあれば教えてください。
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519518
NGNGピクチャボックスのIDを
IDC_STATICからIC_PICT_ONEにしたらできました。
0521デフォルトの名無しさん
NGNGで、配布するときにMFCのDLLを付けて配布しないといけないじゃないですか。
(無いと実行できないからですよね。)
で、そのDLLを実行ファイル(EXE)に組み込めないでしょうか?
0522デフォルトの名無しさん
NGNGスタティックリンクでやればいいんじゃなかったかな?
0523デフォルトの名無しさん
NGNGDOSモードで動かせばいいじゃん。
割り込み応答だけ速くてもしょうがないし。
0524Disca ◆NAfP6znE
NGNGスタッティックライブラリ
問題解決デス^^
0525デフォルトの名無しさん
NGNGProfessional以上のEditionでないとダメなのでそこんとこ注意だ。>>521
0526デフォルトの名無しさん
NGNGhttp://techtips.belution.com/ja/vc/0012/
を参考にして常にアクティブなアプリにしようと思いましたが、
どうもアクティブになりません。
F:\Vc\HukumaDen\HukumaDenDlg.cpp(239) : error C2065: 'SPI_GETFOREGROUNDLOCKTIMEOUT' : 定義されていない識別子です。
F:\Vc\HukumaDen\HukumaDenDlg.cpp(241) : error C2065: 'SPI_SETFOREGROUNDLOCKTIMEOUT' : 定義されていない識別子です。
とエラーがでます。なにかヘッダ等をインクルードしなけらばいけないのでしょうか?
0527デフォルトの名無しさん
NGNGwinuser.h
#if(WINVER >= 0x0500)
#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
つーか、grepしる!
で、OSが98の場合はそのまま書いちゃえ。
0528デフォルトの名無しさん
NGNGそれとはまた別に、独自のダイアログを挿入したいのですが、
(もちろん、MDIのMainFrameからはみ出さないように)
どう書くべきですか?
0529526
NGNGありがとうございます。
>つーか、grepしる!
grepってなんですか?
と思ってしらべてみたら、すごい便利なものですね。
VCの中にあるのかな?探してみます。
0530デフォルトの名無しさん
NGNGXPでVC++使っててデバッグしようとすると
良くとまるのですが。SPとかもでてないし。
どのPCでもとまるぞ
0531デフォルトの名無しさん
NGNGリストにアイテムを加えていくとき、addstring()でやっていくと
1アイテム一行になりますが、1アイテムにつき二行以上を使って、
選択時もそのアイテムをクリックすると二行以上選択できるように
したいんです。AddString("aho\r\nbaka")で試しましたができません
でした。そんな風なことはできるんでしょうか?
0532デフォルトの名無しさん
NGNGオーナードローでしこしこする。
それかcodeguruやcodeprojectでさがす?
0533デフォルトの名無しさん
NGNGその前にまた問題が・・
ひとつのダイアログ画面に三つリストボックスを入れたいんですが
二つ目を入れてコントロールのメンバ変数を作ると、ダイアログを閉じた
時に強制終了してしまうんです。何が原因と考えられますか。
0534デフォルトの名無しさん
NGNGプレコンパイルヘッダーを削除してビルドしたらしっかり
動いてくれました・・いったいなんだったんだ。
0535デフォルトの名無しさん
NGNGは?
それってコンパイラオプションと作り方が違ってたってことか?
ってゆーかエラーコードくらい書け!
0536デフォルトの名無しさん
NGNGCAsyncSocketクラスを使用してインスタンスをつくり、
read関数を使って受信したデータを読み込もうとしているのですが
例えば
CAsyncSocket Sock;
BYTE *buf;
と定義されていて
Sock.read(buf,2000);
とした場合、
実際に受け取ったデータが1500バイトぐらいだった場合
1500バイトであるというのを確認するにはどうしたらいいでしょうか
また、read関数でデータを取り出した際に全てのデータを取り出せて
いなかった場合、通知などは行われるのでしょうか?
詳しい方教えて下さい〜
0537デフォルトの名無しさん
NGNGCAsyncSocketにreadなんてメソッドあったっけ…
Receive()なら受信バイト数を返してくれるけど。
> また、read関数でデータを取り出した際に全てのデータを取り出せて
> いなかった場合、通知などは行われるのでしょうか?
ネットワークプログラミングスレにもあったような気がするけど、ストリーム型では
「どこがデータの終端か」をライブラリが知ることはできないので、アプリ側でデータ
の区切りを指定する必要がある。
ということで、終端にEOFをつける決まりにしておくとか、HTTPみたいに
Content-Lengthを送っておくとか。
データグラム型なら基本的にパケットが勝手に結合されたりすることはないので、
ReceiveFrom()で受信した時点で完了。1パケットのサイズを超えるデータを扱う時
には、TCPがやってるようなことを自前で処理。
0538sage
NGNG型名は最初大文字推奨
0539デフォルトの名無しさん
NGNGCString a="draemon";
CString b;
b.Format("%d",15);
a += b;
を
CString a = "doraemon;
a += new CString.format("%d",15);
こんな風に簡潔にできないでしょうか?
コンパイルエラーで怒られる・・・・・
0540デフォルトの名無しさん
NGNGNM_LISTVIEのiItemの値が「-1」になってダメ。
なら選択状態が外れる前に取得しようか、とOnItemchangingをハンドルしてみたけど、
今度はこの関数が呼ばれない。「〜ed」の方は反応するのに。なぜ?
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGCString a = "doraemon; では、右側の '"' がないぞと言うのと、CString は
format() じゃなくて Format() だぞと言うのは、おいとくとして...。
CString a;
a.Format("%s%d", "doraemon", 15);
じゃダメなの ?
0543デフォルトの名無しさん
NGNGCString a(_T("doraemon15"));
0544デフォルトの名無しさん
NGNGワラタ。はげしく同意だ。
0545デフォルトの名無しさん
NGNG// m_listはCListCtrl
m_list.SetExtendedStyle(LVS_EX_INFOTIP | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
としてツールチップを表示させようとしたのですが、
なぜかツールチップがプロパティシートの後ろに表示されてしまいます。
どうすれば通常のようにリストビューの前に表示されるのでしょうか?
0546デフォルトの名無しさん
NGNGなんか書き方が悪かったっす
void nobita::ayatori(CString shizuka,int kaisuu)
{
CString suneo;
UpdateData(TRUE);
suneo.Format("%d",kaisuu);
m_doraemon = shizuka += suneo;
UpdateData(FALSE);
}
コード的にこんな感じになっちゃうんですが
これはこれで仕方ないんでしょうか?
suneoが消せたらすっきりするかなーと思ったんですが
m_doraemon = shizuka += new CString.Format("%d",kaisuu);
昔こんな感じのコードみた記憶があったんで・・・
VCじゃなくてJAVAだったのかなぁあれは・・・・・・
0547デフォルトの名無しさん
NGNGじゃダメなんか?
0548デフォルトの名無しさん
NGNG...でオブジェクトがそのまま渡ってキケンでわ?
0549デフォルトの名無しさん
NGNGいっそこうしよう
0550デフォルトの名無しさん
NGNGCStringに限って言えばそのまま渡しても問題ない。
0551デフォルトの名無しさん
NGNGビットマップを表示するプログラムを書き足しました。
bm1にリソースから、画像をロードしてからのプログラムです。
スクリーンセーバですから、ループするわけですが、10000回目ぐらいで、
エラーが出ます。しかも、C++の実行では出ず、
時間がたてば起動するようにセットしたときに起こります。
どう直せばいいでしょうか。知恵を貸してください。
void CDrawWnd::Draw(CDC& dc, int nWidth)
{
...........
CDC mDC, *pDC = this->GetDC();
mDC.CreateCompatibleDC(pDC);
CDC mDC, *pDC = this->GetDC();
mDC.CreateCompatibleDC(pDC);
CBitmap *ob = mDC.SelectObject(&bm1);
dc.BitBlt(100, 100, 100,&mDC, 0, 0, SRCCOPY);
...........
]
0552デフォルトの名無しさん
NGNGvoid nobita::ayatori(CString shizuka,int kaisuu)
{
UpdateData(TRUE);
m_doraemon = shizuka += CString().Format("%d",kaisuu);
UpdateData(FALSE);
}
suneoをテンポラリオブジェクトにした。これでどうよ?
0553552
NGNGshizukaも変更するってのは、ホントに意図したものなんか?
0554デフォルトの名無しさん
NGNGその前に、お前は CString().Format() の型を知っているのかと小一時間...
0555デフォルトの名無しさん
NGNGまあ、>>539 見ると本人は意図してるみたいね。また、MSDN にも...
次の例は CString::operator += の使い方を示しています。
// CString::operator += の例
CString s( "abc" );
ASSERT( ( s += "def" ) == "abcdef" );
なんて書いてあるぐらいだから、変じゃないのかもね。
0556デフォルトの名無しさん
NGNGinline CString Format(LPCTSTR pszFormat, ...)
{
TCHAR szBuf[1024];
va_list arg;
va_start(arg, pszFormat);
_stprintf(szBuf, pszFormat, arg);
va_end(arg);
return CString(szBuf);
}
どうしてもスネオが嫌いで足し算が大好きなら、
これヘッダに張っとけ。
っていうか、VBじゃだめなの?
0557デフォルトの名無しさん
NGNG_vstprintf()でした。偉そうにいってごめん。
0558デフォルトの名無しさん
NGNGつーか、CString::FormatV() じゃダメなのか ?
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG>>552さん
そそそそうそれです!そんな感じの・・・・
テンポラリオブジェクトってやつなんですね
でも今ちょっとやったところなんかコンパイルないっぽい・・・・
他にも
>>547さん
のおっしゃられているようにm_doraemon.Foramt(_T("%s%d"), shizuka, kaisuu); でも同じようにできるんですね
sprintfを調べて、
自分が未熟だと気づくまで小一時間
気づいてからもう小一時間
やっとなんとかできそうです!
答えていただいたみなさんありがとうございました
0561デフォルトの名無しさん
NGNGCFile::Seekを使えばできそうな気がするのですが、
下から5行目というのをどう判断すればよいのかがわかりません。
0562デフォルトの名無しさん
NGNG改行
0563デフォルトの名無しさん
NGNGどんなコード書けば下から改行を数えられるのかがわかりません・・・
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGいろいろ調べたりしてて思ったんですが、MSのヘルプって分かりにくい・・・
自分の質問もなんか初歩的なものだったみたいだし・・・・
他に参考書のスレッドがあるのを承知でお伺いしたいんですが、
ここのスレッド的に「せめてこれ読んでから質問せいよ ゴルァ!」
のありますか?あったら教えて下さい
お願いします
0566デフォルトの名無しさん
NGNGMSのヘルプ
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNGアセンブラに直すとどういう風になっているのでしょうか?代入をブロック
するっていうのはなんかフラグを立てて一度代入をするまえにフラグが
たっていれば代入不可になるみたいな処理がおこなわれているのですか?
0569デフォルトの名無しさん
NGNG書き換え不可のメモリ領域に配置するとか。
「const指定に違反したコードをコンパイラがチェックしてエラーにするだけ」
で、コンパイルされた後には違いがないという場合が多いと思うが。
0570デフォルトの名無しさん
NGNG>書き換え不可のメモリ領域に配置するとか。
それは‥‥const_castとかmutableとか、初期化とかに
いろいろ問題がでそう‥‥
0571デフォルトの名無しさん
NGNGconst_castはそもそもそういう危険を承知した上で使うキャストだが。
0572デフォルトの名無しさん
NGNG0573554
NGNG> そそそそうそれです!そんな感じの・・・・
> テンポラリオブジェクトってやつなんですね
> でも今ちょっとやったところなんかコンパイルないっぽい・・・・
おいおい、>>554 は、見てくんねぇのかよ。
> 他にも >>547さんのおっしゃられているように
> m_doraemon.Foramt(_T("%s%d"), shizuka, kaisuu);
> でも同じようにできるんですね
お前は、shizuka にも代入したいんと違うかいと小一時間 (もう飽きた...)
0574デフォルトの名無しさん
NGNG最近の子は、ハードウェアを全然知らんのか ? CASL/COMET ぐらいやっといた方
がいいぞ。
0575デフォルトの名無しさん
NGNGその内部の構造についても勉強したいと思っています。
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include(うちの環境)
にある afxwin.h に色々なクラスの定義があるとこは分かったのですが、
実際のメンバ関数本体はどこにあるのでしょうか?
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC
の中にあるのではないかと思い探しているのですが、最近MFCを始めたばかりで
難しい名前が沢山並んでいるのでどこにどのクラスのメンバ関数本体があるのか分かりません。
ファイル名とクラス名には何か関連性があるのでしょうか?
実際に使いたいものは CRect と CPoint と CSize なのですがどこか分かりません。
どうかよろしくお願いします。
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNGさっきからウィンドウスタイルに「!WS_HSCROLL」とかやって頑張ってみてるんですが。
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNGなぜ下から数えようとするの?
全行数から取得したい行を減算する方法はだめなの?
0582デフォルトの名無しさん
NGNGそれをやるなら style & ~WS_HSCROLL
ただし、すでに付いてしまったスクロールバーを外す効果しかない。
最初からスクロールバーが出ないようにしたいんだったら
ES_AUTOHSCROLL を外すという方法がある(かわりにウィンドウ右端で
折り返されるようになるけど)。
0583デフォルトの名無しさん
NGNG400Mのファイルの下40行とかで死にますがなにか。
0584デフォルトの名無しさん
NGNG両方試したんですが消えないす。
一応、OnCreateとPreCreateWindowの2カ初でやってみたんですが。
言い忘れてましたがCEditViewは分割ウィンドウに入ってます。
共有スクロールバーはもちろん外してます。
0585デフォルトの名無しさん
NGNG読んで数えて足りなければまた読んで・・・
0586デフォルトの名無しさん
NGNGマジ萎えた。
0587デフォルトの名無しさん
NGNG0588561
NGNG0589デフォルトの名無しさん
NGNG1.VC立ち上げる
2.[編集]メニューかツールバーで[ファイルから検索]を出す
3.調べたい名前を入れる(「CPoint」とか「CSize」)
4.ファイルの種類をソースとかヘッダにする − 4'.[単語単位]にチェック
したりする − 4''.[サブフォルダも探す]にしておく
5.[検索するフォルダ]に
”C:\Program Files\Microsoft Visual Studio\VC98\MFC”あたりを選ぶ
6.[検索]ボタンを押す
以上
0590デフォルトの名無しさん
NGNGBOOL CMyEditView::PreCreateWindow(CREATESTRUCT& cs)
{
BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL | WS_HSCROLL); // 水平スクロールバーを出さない
cs.style &= ~(ES_AUTOVSCROLL | WS_VSCROLL); // 垂直スクロールバーを出さない
return bPreCreated;
}
という風にやれば出なくなるはずだけど。
ちなみにAppWizardの作ってくれたスケルトンほとんどそのまま。
0591デフォルトの名無しさん
NGNGありがとうございます。いや、やっと消えましたよ。
やれやれだぜ、です。
0592デフォルトの名無しさん
NGNGウィンドウ作らずにCWinAppに関数組み込んで作ってるんですが
注意する点は何かありますか?
0593デフォルトの名無しさん
NGNGなんでWinMainからにしないのかと問い詰めたい。
0594デフォルトの名無しさん
NGNGあっ、やっぱりそうですか。MFCは使いたかったんです。
それで、
MFCを使ってSDKを組むって気づいたのが、
プログラムがなかなか出来上がってときだっだんです。
0595デフォルトの名無しさん
NGNG0596592
NGNGでバッチ処理の関数読んで
関数抜けたらそのまま終了。って感じなんですがそれでいいのかなと、
CWinApp::InitInstanceって初期化関数なので。
0597デフォルトの名無しさん
NGNGなんで初期化中に全部の処理が終わってるんだ?
なんで初期化中に全部の処理が終わってるんだ?
なんで初期化中に全部の処理が終わってるんだ?
なんで初期化中に全部の処理が終わってるんだ?
お前が小説読み始めたとき、「序文」で物語が終わってたら
どうおもうんだ?
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNGMFC7使ってるんだけど、ビルドしようとすると
このユーザーのセキュリティ設定が原因で、プロセスを作成できません。これらの設定はビルドで必要です
というエラーが出てビルドできねっす(^_^;;
win2kのセキュリティ関係らしいんだけど、ユーザーのグループはVSデベロッパーでアドミンなのに・・・
VC++系だけ駄目で、VBやVC#ではビルドできます
おまけに統合環境のプログラムがCPU100%食ったままになって、タスクマネージャで殺さないと残ったままになるし
同じ2kでもノートでやってみるとちゃんとビルドできるんです
BCBとの相性が悪いんだろか?
同じような事になった人居ませんか?
解決策求ム
0600デフォルトの名無しさん
NGNGこれ?
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q313363
0601デフォルトの名無しさん
NGNG10万回の繰り返しにかかった時間を計測する.
のような事をしたいのですが,どうすれば良いのでしょうか.
どこかにサンプルはありませんでしょうか?
0602デフォルトの名無しさん
NGNGアルゴリズム10万回実行();
時間を取得()−変数1;
0603デフォルトの名無しさん
NGNG>>ms-help://MS.VSCC/MS.MSDNVS.1041/vclib/html/_crt_clock.htm
0604SSE2
NGNGhttp://pc.2ch.net/test/read.cgi/avi/1018368846/
Windows Media Audio and Videoを語ろう【part1】
http://pc.2ch.net/test/read.cgi/avi/976722195/
オフィシャルサンプルビデオ
http://www.microsoft.com/japan/windows/windowsmedia/WM8/video.asp
Windows Media エンコーダ 7.1
http://www.microsoft.com/japan/windows/windowsmedia/WM7/encoder.asp
Windows Media エンコーダ 7.1 日本語FAQ
http://www.microsoft.com/japan/windows/windowsmedia/WM7/encoder/faq.asp
Windows Media 8 Encoding Utility(英語のみ)
http://www.microsoft.com/japan/windows/windowsmedia/download/default_1.htm
Windows Media 8 Encoding Utility アスロンXP_SSEパッチ
http://www.geocities.co.jp/SiliconValley-Oakland/8071/wmv.html
Windows Media 8 Encoding Utility GUI
http://www.abdn.ac.uk/~u71ds/wm8egui/
http://www.alcv.f2s.com/file/WM8EUtl_GUI.lzh
WindowsXP用のWindows Media Bonus Pack
http://www.microsoft.com/presspass/press/2001/Dec01/12-13XPBonusPackPR.asp
http://www.microsoft.com/windows/windowsmedia/download/bonuspack.asp
コーデック
http://codecs.microsoft.com/codecs/i386/wmv8ax.cab
wme Batch Encoding
http://users.hoops.ne.jp/marumesoft/soft02.htm#03
上下逆さまのファイルができるのを解消できるレジストリファイル。
http://www.abdn.ac.uk/~u71ds/wm8egui/VerticalYUVFlipOn.reg
Windows Media Player 7.01 for Mac
www.microsoft.com/japan/windows/windowsmedia/download/mac7.asp
Asftools
ttp://cool.sj.net.cn/~souxin/software/asftools230-souxin.exe
ttp://go.to/asftools
flaskmpgのwmv変換
ttp://www.dvd-digest.net/downloads/files/flaskmpeg/wmvcreator.zip
M4U -MPEG4U-
ShortURL: http://m4u.uni.cc
RealURL: http://www.oak.dti.ne.jp/~oak/m4u/
Corona関連ニュース
http://pcweb.mycom.co.jp/news/2001/12/12/27.html
http://www.watch.impress.co.jp/av/docs/20011212/ms.htm
http://www.watch.impress.co.jp/pc/docs/article/20011212/ms.htm
dvdチップメーカーのWMV対応発表
http://www.zdnet.co.jp/news/0112/12/e_dvd.html
0606599
NGNGhttp://support.microsoft.com/default.aspx?scid=kb;EN-US;q151176
0607デフォルトの名無しさん
NGNG左右に分割してそのどちらか一方をさらに上下に分割する方法はうまくいく。
たとえば左側が1行右側が2行。
でも右側を3行や4行に増やすとエラーになるのはなぜ?
CreateView()の記述は右側の行数分増やしてあるのに。
0608607
NGNG↓この例を見て
CreateStatic( this , 1 , 2 );
CreateStatic( &this->m_wndSplitter1, 2, 1, ...
↓こうする物だと勘違いしてた。
CreateStatic( this , 1 , 4 );
CreateStatic( &this->m_wndSplitter1, 4, 1, ...
↓これが正解だね
CreateStatic( this , 1 , 2 );
CreateStatic( &this->m_wndSplitter1, 4, 1, ...
0609デフォルトの名無しさん
NGNG「保存しますか」って聞いてきますけど、これって自由に変えられないんでしょうか?
未保存でも警告を出さないようにしたりとか、逆に変更がなくても出るようにしたりとか。
あと「保存する必要の可能性を示すフラグ」って何か名称あります?
0610デフォルトの名無しさん
NGNGCDocument::SetModifiedFlag()
CDocument::IsModified()
CDocument::SaveModified()
0611デフォルトの名無しさん
NGNGCEdit::GetModify
CEdit::SetModify
0612デフォルトの名無しさん
NGNGファイルから、
"CMD(5,7)\n"を取り出しました
5の部分をATOIでint型にするにはどうしたらいいでしょうか?
ヘルプをみるとatoiはconst char*を受け取るようになっているみたいなんで
5文字目である'5'を指定するように
atoi(FileString[4]);
とすると怒られてしまいます
どうしたらいいでしょうか?
ご教授お願いします
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG以下のようなコードを記述しました。
void CPropertyDlg::DisableCheckBox()
{
CWnd *pWnd;
pWnd = GetDlgItem( IDC_CHECK1 );
pWnd->EnableWindow( FALSE );
}
これをリストビューから呼び出すために
CPropertyDlg dlg;
dlg.DisableCheckBox();
としていますが、
pWnd->EnableWindow( FALSE );
を実行した時点で強制終了してしまいます。
pWndが正しく取得できていないようなんですが、
原因がわからず困っています。
皆様の知恵を貸していただけないでしょうか。
よろしくお願いします。
開発環境はVC++6.0 SDIです。
0616デフォルトの名無しさん
NGNG最低限pWndのNULLチェックはしとけよ。
0617デフォルトの名無しさん
NGNGdlgを宣言しただけではダイアログはできていない。
当然その上のチェックボックスもまだ存在しないナリよ。
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGIEみたいにメニューをCoolBarの中に入れる方法がわかりません。
CoolBarの上にメニューが表示されるカタチになってしまいます。
どうしたらいいんでしょ?
(VBスレでも同じ質問があったような ^^;)
0621デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/faq/iemenubar.asp
IEは、Windows標準のメニューを使っていません。
あのメニューは、Coolbar内のバンドの1つです。
0622デフォルトの名無しさん
NGNGダイアログ上のコントロール(チェックボックスやボタン等)に
フォーカスが移った時にそのコントロールの説明をスタティックテキストで
表示したいんですけどやり方がわかりません。
メニューやツールバーならプロンプトで簡単に出せるんですけど
それ以外のコントロールだとお手上げです。
SPYで見てもへんなメッセージ(WM_KICKIDLEとか)しか来てないみたいです。
どうしたらいいんでしょうか?
0623デフォルトの名無しさん
NGNGプロンプト?
0624622
NGNGリソースエディタでプロパティを開いてプロンプトという項目を書いてやると
それがステータスバーに出てくるんです。
名前よくわかりません。
0625622
NGNGサブクラス化とかいうのをやれば良いようです。
ただ、コントロールが沢山あるので大変です・・。
コントロールの種類ごとにサブクラス化しなきゃならないんでしょうか。
もっと良い方法は無いでしょうか。
0626デフォルトの名無しさん
NGNG0627622
NGNGありがとうございます。
とりあえずClassWizardでOnNotifyを追加してみたんですけど
色々触ってみてもそこに実行が移りません。
なにか設定が必要でしょうか?
0628デフォルトの名無しさん
NGNGコントロールのスタイルの「通知」にチェック
0629622
NGNGそれでもダメなようです・・。
チェックボックスやボタンコントロールで試しています。
0630デフォルトの名無しさん
NGNGWM_NOTIFYではなくて、WM_COMMAND で BN_* が来てるハズ。
0631622
NGNGBN_SETFOCUSで動きました。大感謝です。
これでコントロールごとに関数分けられたら最高なんですけど
WM_NOTIFYをサポートしてるのは最近のコントロールだけなんですね・・
ともかく長々とありがとうございました。
0632デフォルトの名無しさん
NGNG普通、コントロールごとにハンドラ分けられてしまうのが
鬱陶しいんだけど。
で、まとめて処理する方法が載ってたりするんだけど。
0633デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNGこのツールバーのボタンをラジオボタンのように使いたいのですが
どうすればよいですか?
0636デフォルトの名無しさん
NGNGどれかが押されたら、それのメッセージハンドラで他のものを戻しちゃだめ?
MFCのフレームワークで作業しているなら、
OnUpdate〜(CCmdUI* pCmdUI)
で処理しても良いのでわ?
0637635
NGNGありがとうございます。(遅くなったけど)
なんかグループ化して他のボタンが押されるまで押下状態を保持するとかフラグがあるんですが
どうも設定しても上手く動かないので・・。メッセージハンドラで他のモノを戻す方法を試そうと思います
0638デフォルトの名無しさん
NGNGをクリックしたときのセーバーの設定はどのようにしてクリックされたと検出するんですか?
というか、設定をクリックしたときに実行されるプログラムはどうかくのですか?
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNG[画面のプロパティ]の[スクリーンセーバ]から↓の様に起動(コマンドライン)される。
(scrsaver.scrがWinnt、Windowsのフォルダにあるとする)
[設定(T)]をクリック
scrsaver.scr /c:hWnd
ダイアログHWND(多分)を10進表記
プレビューwnd(上中央の小さいスクリンセーバ画面)
scrsaver.scr /p hWnd
プレビューwndのHWNDを10進表記
スクリーンセーバ(本番:自分で全画面を取得する)
scrsaver.scr /s
パスワード(使ったことないので良く知らん)
scrsaver.scr /a
scrsaver.scr は自分で作成したscrsaver.exe を単純にリネームすればOK。
コマンドラインは、main(argc, argv)でもCCommandLineInfoでもGetCommandLine()受けとれる。
それからVC6のMSDNにはSAVERというサンプルがある。こっちの方が参考になるかもしれん。
(他にscrnsave.libを使う方法があるが、良く知らん)
0642デフォルトの名無しさん
NGNG[プロジェクト]→[プロジェクトへ追加]→[コンポーネント及びコントロール]で、
「Microsoft Coolbar Control, version 6.0.lnk」を挿入。
それをダイアログに貼り付けてとりあえず実行したところ、
例外処理 (初回) は BBSExpDlg.exe (KERNEL32.DLL) にあります: 0xC000008F: Float Inexact Result。
という例外が発生しているようです。(アウトプットウィンドウにて)
プロパティをみても「このコントロールはContainedControlsコレクションをサポートしていません」と
言われてしまうのですが、ひょっとしてVCからは使用できないのでしょうか?
だとしたらどうすりゃいいんだろう…
VC6.0(SP5)+Win2k
0643デフォルトの名無しさん
NGNGShow/Hide駆使するしかないかなあ…
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNGcodeprojectにサンプルがいくつかある
0647麗恵香
NGNG0648えいこ
NGNGデフォルトで設定されているプリンタの用紙サイズと用紙の向きを取得するという
プログラムを組んでいるのですが、超初心者なので、まったく、どこをどうしたら
いいのかもわからずに悩んでいます。わかる方がいらっしゃたら、詳しく教えて
いただけないでしょうか?よろしくおねがいします。
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNGCToolBarでボタンをラジオボタンのように使えないでしょうか?
ツールバーのスタイルにTBSTYLE_CHECKGROUPというのがあって、これが使えないか?と思い
ウイザード(SDI)が最初から作り出すツールバー(m_wndToolBar)にボタンを追加してみました。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_ALTDRAG , WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // 作成に失敗
}
//ここから追加
TBBUTTON button[5];
for(int i = 0 ; i < 5 ; i++){
button[i].fsState = TBSTATE_ENABLED;
button[i].fsStyle = TBSTYLE_CHECKGROUP;
button[i].iBitmap = 0;
button[i].idCommand = m_wndToolBar.GetItemID(10);
button[i].iString = 0;
}
CToolBarCtrl &ToolBarCtrl = m_wndToolBar.GetToolBarCtrl();
ToolBarCtrl.AddButtons(5,button);
//ここまで
これだと一応他のグループのボタンが押されるまで押下状態をキープしてくれるみたいです。
ただし、ボタン一つ一つが一つのグループになっているらしく、
グループに他のボタンがないので結局押したら押しっぱなしらしいです。
問題はどうやって複数のボタンをグループ化させるのか?だと思うのですが。。。
どなたか教えてください。
0652デフォルトの名無しさん
NGNG自分で持って、updateハンドラで処理したほうがいいんじゃない。
メニューとかと整合が取れなくなるし、
それにこういう情報って、MFCのフレームワークの中で勝手に
いろいろしててうまく言ってないってことも考えられるし。
0653651
NGNGスタイルがTBSTYLE_CHECKだとチェックボタンになってくれます。
なのでTBSTYLE_CHECKGROUPも使い方がちゃんとあると思うのですが。
0654652
NGNGとりあえず、IDが同じじゃまずいと思う。
0655デフォルトの名無しさん
NGNGm_wndToolBar.SetButtonStyle(i, TBBS_CHECKGROUP);
}
または
ボタンの更新ハンドラでCCmdUI::SetCheckを使ってチェックの制御。
0657デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG0660635
NGNG0661652
NGNGAddButtonsだろうが、SetButtonStyleだろうが
ボタンのIDが同じだったら、チェックグループ
なんて動かないんじゃないの?
0662デフォルトの名無しさん
NGNG> for(int i=0; i<5; i++){
> m_wndToolBar.SetButtonStyle(i, TBBS_CHECKGROUP);
> }
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG> button[i].idCommand = m_wndToolBar.GetItemID(10);
はループでインデックス10のIDしか取ってない(=同じID)でしょ。
だから
> for(int i=0; i<5; i++){
> m_wndToolBar.SetButtonStyle(i, TBBS_CHECKGROUP);
> }
でインデックス変えてるから問題ないだろって言ってんの
0665デフォルトの名無しさん
NGNG>はループでインデックス10のIDしか取ってない(=同じID)でしょ。
これが問題だっていってんの。
他のボタンいじったってしょうがないだろ。
0666デフォルトの名無しさん
NGNG> for(int i=0; i<5; i++){
> m_wndToolBar.SetButtonStyle(i, TBBS_CHECKGROUP);
> }
に変更することで解決したっての。
iの値は質問者がボタンに合わせて変えてるはずだろ。
だから>>656で「できました」って言ってんだろ。
0667デフォルトの名無しさん
NGNGだから、iの値をちゃんと設定したって直らないんだよ。
直るってんならソースみせてくれ。
0668デフォルトの名無しさん
NGNGリソースエディタでボタン作ってそれぞれにユニークなIDつけて
それをグループ化するだけなんだから。
ソースはさっきから載せてるから実際やってくれ。
> for(int i=0; i<5; i++){
> m_wndToolBar.SetButtonStyle(i, TBBS_CHECKGROUP);
> }
0669デフォルトの名無しさん
NGNGAddButtonsしたボタンをさすように変更するんだろ。
AddButtonsではIDを同じに設定してるんだから
直らないっていってんの。
0670デフォルトの名無しさん
NGNGAddButtonsなんか使わないって言ってんだろ。
> //ここから追加
> TBBUTTON button[5];
> for(int i = 0 ; i < 5 ; i++){
> button[i].fsState = TBSTATE_ENABLED;
> button[i].fsStyle = TBSTYLE_CHECKGROUP;
> button[i].iBitmap = 0;
> button[i].idCommand = m_wndToolBar.GetItemID(10);
> button[i].iString = 0;
> }
> CToolBarCtrl &ToolBarCtrl = m_wndToolBar.GetToolBarCtrl();
> ToolBarCtrl.AddButtons(5,button);
> //ここまで
の部分を
> for(int i=0; i<5; i++){
> m_wndToolBar.SetButtonStyle(i, TBBS_CHECKGROUP);
> }
に変えるんだよ。
iの初期値は10か?それでi<15か?
さっきも言ったがこれらの値は質問者が
グループ化したいインデックスに直してコーディングしてるはずだろ。
0671デフォルトの名無しさん
NGNGハァ、話すりかえんなよ。
AddButtonsしたボタンをどうやってグループさせるかって
問題だろ。
リソースで追加してるならちゃんと動くに決まってる。
0672デフォルトの名無しさん
NGNG>>651をよく読め。
AddButtonsしなければならないなんてどこにも書いてない。
問題は「ラジオボタンのようにしたい」ってことだ。
AddButtonsは質問者がたまたま最初に使っただけ。
現に質問者が解決してるんだからAddButtonsなんて必要条件には入ってない。
0673デフォルトの名無しさん
NGNG良く読めば、問題はIDが同じってだけなんだよ。
暗黙のうちにリソースなんて持ち出して、SetButtonStyle
して解決するまでもないだろ。
0674デフォルトの名無しさん
NGNGでも質問者はSetButtonStyleの方法を選んでそれでできたんだとよ。
そんなもんどっちの方法を使うかなんて質問者の勝手だろ。
どうせコード量が少なくて済むとかそんな理由じゃねーの。
つーか解決してんのにどうしてその方法にこだわるのかが謎。
0675デフォルトの名無しさん
NGNGぶぶぶ
0676651
NGNG> for(int i=0; i<5; i++){
> m_wndToolBar.SetButtonStyle(i, TBBS_CHECKGROUP);
> }
をやって、追加したボタンではなくindex=0〜4の元からあるボタンでラジオボタンになってることを
確認したんです・・。
ご両人には感謝してますので、お騒がせしました。
0677デフォルトの名無しさん
NGNGStaticコントロールを派生させて
コントロール(クラス)一個作ったんですど
(これをCStaticXとします)
このクラスに MouseMoveやDown のハンドラ作っても
取れないんでしょうか?
Paintはとれていて意図した描画は行うのですが・・・
やっぱり親(ダイアログ)で処理しなくちゃ
駄目なんでしょうか?
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGクライアント座標の同じ位置に再描画されて真っ黒になってしまいます。
普通にスクロールしたいのですが、どうしたらよいのでしょうか。
CSclollviewクラスを使っています。
わかるかたおられましたらよろしくおねがいします。
こんな感じで書いております。
CClientDC dc(this);
CPen pen, *pOldPen;
pen.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
pOldPen = dc.SelectObject(&pen);
dc.MoveTo(0, 20);
dc.LineTo(50,20);
dc.SelectObject(pOldPen);
pen.DeleteObject();
0680デフォルトの名無しさん
NGNG五郎や、そういうときにはOnDrawを使うのですよ。
0681デフォルトの名無しさん
NGNGOnDrawの中に書いているのですが・・・・また違うのでしょうか??
表示はできています。
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNGスクロールされた座標とDCの座標は違うんだよ。
スクロール分足して座標を指定しろ。
0684デフォルトの名無しさん
NGNGおまえの方が問題点が違う。
OnDrawに
CPen pen, *pOldPen;
pen.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
pOldPen = pDC->SelectObject(&pen);
pDC->MoveTo(0, 20);
pDC->LineTo(50,20);
pDC->SelectObject(pOldPen);
と書くだけでできるが。
0685デフォルトの名無しさん
NGNGスクロールが起きたらInvalidate(FALSE)とかやればいいと思うよ?
MFCってのはそう言うやり方をするのです。
0686デフォルトの名無しさん
NGNGどうすればうまくいくのでしょうか?
CreateWindow(
TEXT("EDIT") , NULL ,
WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |
ES_AUTOHSCROLL | ES_AUTOVSCROLL |
ES_LEFT | ES_MULTILINE ,
0 , 49 , 290, 70, hwnd , (HMENU)EDIT_ID1 ,
((LPCREATESTRUCT)(lp))->hInstance , NULL
);
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG0691686
NGNG失礼しました。
うまく問題なく動いてるんですが。
VBのRichTextみたいに、大きなファイルも表示させたいんですけど、
64Kまでしか開かないので、どうするのかなと思いまして、
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNGこたえてみろよ
いえねーだろ
そうだよな
おまえもVCつかってんだから
0695686
NGNG0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGもうアフォとしか言いようがないな
0698相談室2の941
NGNG楽にやる方法ありませんか?
0699デフォルトの名無しさん
NGNGURLエンコードは、IE5以降が入っている環境ではUrlEscape()。IE4以前なら自前で。
その前に文字コードを変換する必要があるなら、適当な変換ライブラリを拾ってくる。
0700698
NGNGサンクスです。早速やってみます。
0702いつでもどこでも名無しさん
NGNGCSplitterWnd を使って分割ウィンドウを作ったのですが、
分割したウィンドウそれぞれに異なった ツールバー を付けたいのです。
フレーム作成時( CFrameWndの派生クラス内の OnCreateClientメンバ )に
CSplitterWnd::CreateStaticして
CSplitterWnd::CreateView でヴューを作成後に
CToolBar::CreateEX 引数に CSplitterWnd::GetPane(0,0) とかして
いるのですが、
コンパイルは通り、動きはするのですが、
分割ウィンドウ内にはビューしか表示されず、目的のツールバーが表示されません。
どなたかご存知の方、宜しくお願いします。
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNGおちるんですが、そういうものですか?
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNGヲイヲイ…
0707デフォルトの名無しさん
NGNGぉぃぉぃ
0708デフォルトの名無しさん
NGNGはいい奴だ。
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711709
NGNGサンクス。やっぱりそうっすか!ってレス速いよ(笑
ちなみにボタンの文字色はオーナードローでどうにかってことでOK?
つか、むやみに色換えるなってことか?
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNGどのタイミングでやればよいのでしょうか?
OnCreateでやっても実行するとエラーが出てしまいます。
0714デフォルトの名無しさん
NGNG>>710は嘘。タブコントロールはオーナードロー出来なかった気がするけど、
WM_CTLCOLOR系をいじれば変えられた気がする
0715709
NGNGって〜ことは、サブクラス化しないと駄目ってことですか?
0716709
NGNG>714
CTLCOLOR定数にタブ無いんだけど…
やっぱむりっぽい?
0717デフォルトの名無しさん
NGNGTCS_OWNERDRAWFIXED
>>713
OnCreateで自分自身に適当なメッセージをPost。
そのメッセージが届いたところで初期化する。
0718702
NGNGすばやいレス有難うございます。
お返事遅れて申し訳ありません。
さっそく試してみます。
0720デフォルトの名無しさん
NGNGCString型の文字を16進コードに変換するにはどうすればいいですか?
sprintfみたいなことをしたいのですが
0721デフォルトの名無しさん
NGNGCString b = CString().Format("%02x %02x %02x", str[0], str[1], str[2]);
CStringは普通の文字列ポインタと同じような読み出しができるようになっている。
ってお父さんに教わらなかったのか?
MSDNしっかり嫁。
入門本なんか読むなバカ。
0722720
NGNGおお〜すばらしいっすね
ありがとうございました。
確かに入門書ばかり読んでました
0723デフォルトの名無しさん
NGNGしっかり読めよ。
0724デフォルトの名無しさん
NGNG0725デフォルトの名無しさん
NGNGそれよりFormatの使い方が・・・
多分説明用に書くときにミスったんだと思うが。
0726デフォルトの名無しさん
NGNG神
0727デフォルトの名無しさん
NGNGCString に文字列リテラル (const char *) を代入できることを説明してるんでしょう。
0728デフォルトの名無しさん
NGNGCString a = _T("ABCDFG");
CString b;
b.Format(_T("%02x %02x %02x"), a[0], a[1], a[2]);
0729初心者
NGNG教えてもらえますか?スピンコントロール2個を連動させるという
設定をしようと思っているのですが、どうもうまくいきません。
合計の最大値が決まっていて最大値から片方のスピンの値をマイナスした
値がもう一方のスピンの最大値になる、という形を作りたいんです。
今のところ下記のようなコードを書いたのですが、なぜかエラーが・・・
どこか間違っている所などあったら教えてください。
BOOL CDialog2::OnInitDialog()
{
CSpinButtonCtrl* pSB1 = (CSpinButtonCtrl*) GetDlgItem(IDC_SPIN1);
CSpinButtonCtrl* pSB2 = (CSpinButtonCtrl*) GetDlgItem(IDC_SPIN2);
pSB1->SetRange(0,40);
pSB2->SetRange(0,40);
return FALSE;
}
void CDialog2::OnKillfocusEdit1()
{
max1 = GetDlgItemInt(IDC_EDIT1,NULL,FALSE);
mm_max2 = 40-max1;
pSB2 -> SetRange(0,mm_max2);//ここで問題が起きてるみたい・・
}
void CDialog2::OnKillfocusEdit2()
{
max2 = GetDlgItemInt(IDC_EDIT2,NULL,FALSE);
mm_max1 = 40-max2;
pSB1 -> SetRange(0,mm_max1);
}
長くなってしまってすいません・・・よろしくお願いします。
0730デフォルトの名無しさん
NGNG>pSB2->SetRange(0,mm_max2);//ここで問題が起きてるみたい・・
単に
CSpinButtonCtrl* pSB2 = (CSpinButtonCtrl*) GetDlgItem(IDC_SPIN2);
pSB2->SetRange(0,mm_max2);
にするってことじゃなくて?
0731初心者
NGNG取れているようだし、SetRangeの実行時になにやら問題があるようで・・
0732デフォルトの名無しさん
NGNG実際にそのコードを(max1などはint max1などとして)書いてやってみたけど
問題なくできたよ。
別の部分に原因があるか、それかリビルドしてみるとか。
0733デフォルトの名無しさん
NGNG俺はMFCをまったく触ったことないから、もしかしたらまるで見当はずれかもしれんけど。
>pSB1->SetRange(0,40);
>pSB2->SetRange(0,40);
ってことは、二つとも、範囲が0〜40なんだろ?
んで、
>合計の最大値が決まっていて最大値から片方のスピンの値をマイナスした
>値がもう一方のスピンの最大値になる、という形を作りたいんです。
ってことは、
>mm_max2 = 40-max1;
これは、80-max1が正しいんじゃないのか?
0734初心者
NGNG悩み続けてここだけに20時間ほど付きっきりだった(笑)
他の部分をチェックしてみようと思います。ほんとうにありがとう。
0735初心者
NGNGえっと、どちらも合計の最大値が40で、一方のスピンが30まで行った場合
だったらもう一方がRangeを(0,10)にするという意味でした。分かりづら
かったかもしれないです。わざわざレスありがとうございました。
0736初心者
NGNG立て続けに質問で申し訳ありません・・・。
CPropertyPageの派生クラスCDialog1でpublicに宣言された
int m_radio;の値を返す関数Getm_radioの戻り値を
public:
int m_radio;
int CDialog1::Getm_radio();
//class CDialog1 : public CPropertyPageで宣言
__________________________
int CDialog1::Getm_radio()
{
return m_radio;
}
という関数を使って戻り値をCFrameWndの派生クラスCMainFrameから
void CMainFrame::OnOpenDialog()
{
int m_radio = CDialog1::Getm_radio();
//(以下略)
こんな感じで呼び出そうとコーディングしているのですが、
コンパイル時に"error C2352: 'CDialog1::Getm_radio' :
静的でないメンバ関数の中で呼び出しが正しくありません。"
と言うエラーが出てしまいます。あまりに初心者なので根本的に
何か大間違いをしている可能性があるような気がするのですが・・・
問題などありましたら教えてください。お願いします。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGどうやってWinのソフトウェアを作ればいいのか全然わからない。
Visual C++を使ってなんか作りたいんだけど、
どのように勉強したらいいでしょうか?
お勧め本とかホームページ教えてくれますか?
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGpublic:
int m_radio;
//↓int CDialog1::Getm_radio();
int Getm_radio();
//class CDialog1 : public CPropertyPageで宣言
__________________________
int CDialog1::Getm_radio()
{
return m_radio;
}
という関数を使って戻り値をCFrameWndの派生クラスCMainFrameから
void CMainFrame::OnOpenDialog()
{
//↓int m_radio = CDialog1::Getm_radio();
CDialog1 dlg;
int m_radio = dlg.Getm_radio();
//(以下略)
俺ならこんな感じに書く
0741デフォルトの名無しさん
NGNGボックス内の文字列を選択するようにしたいのですがいい方法ありますか?
SetFocusメッセージでCEdit.SetSel(0,-1)をやってみましたが
だめみたいっす・・・クリックのメッセージないし・・
0742デフォルトの名無しさん
NGNGCEdit派生クラスのOnLButtonUpでSetSel(0,-1)
0743741
NGNGレスありがとうございます。
たすかりました。
0744sin
NGNG月が変わってしますがこれを出来ないようにする方法はありますか。
NewMonthメッセージで対応しようとしても月が変更されたことを取得できず
どうしていいのやら分かりません。
0745デフォルトの名無しさん
NGNGワーカースレッド作るときに CHogeWnd (:CWnd)の thisポインタを渡す代わりに、
this->m_hWnd を渡してやって、ワーカースレッド側で
CHogeWnd* m_pHogeWnd = (CHogeWnd*)CWnd::FromHandle(hWnd)
とやって CHogeWndオブジェクトへのポインタを取得します。
ワーカスレッド内では「ずーっと」このポインタで CHogeWndのメンバを呼び出し
たりしています。これってもしかして危険? NG大将?
というのも、CHogeWndのメンバ変数に m_pHogeWnd->m_xxx とアクセスすると、
おかしな値になっているんです。テンポラリオブジェクトとか、パーマネント
オブジェクトとかその辺の絡みですか?
0746デフォルトの名無しさん
NGNGC++インスタンスとHWNDのマップはスレッドローカルなので、
>>CHogeWnd* m_pHogeWnd = (CHogeWnd*)CWnd::FromHandle(hWnd)
こんなことしても、インスタンスのポインタは取得できないと思うYO。
0747デフォルトの名無しさん
NGNGわたくし初心者本で一通り勉強したけどほとんど初心者です。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNGこれ。
http://www.ascii.co.jp/books/detail/4-7561/4-7561-1749-X.html
基礎部分を網羅的に教えてくれる。
これ読んでから、ウイザード無しでも組めるようになった。
0750デフォルトの名無しさん
NGNGよさげな本なのにamazonで調べたら在庫がないよー。
探してみる。
0751745
NGNGなるほど。
じゃ、親(CHogeWnd)のメンバ変数にアクセスしようと思ったら、CHogeWnd の this ポインタを渡してやらないとだめだけど、それが危険だ(?)、ということですね。
//WINCORE.CPP には CWnd::FromHandle を使えというコメントが書かれているんで、それを使えば万事OKと思っていたんですが。
まぁ、今は親の HWNDにメッセージを送っていろいろやってます。
0752デフォルトの名無しさん
NGNGSetRange で選択できる範囲を制限すればいいんじゃない?
0753デフォルトの名無しさん
NGNGFromHandleで返ってくるポインタはDeleteTempMapで殺されるから、で正解?
以下、MSDNの CWnd::DeleteTempMap の解説。
「CWinApp オブジェクトの入力待ち処理から自動的に呼び出され、
FromHandle メンバ関数で作成された一時的な CWnd オブジェクトを削除します」
0754
NGNG0755超初心者
NGNGエラーが出てしまいました。どうしても原因が分かりません。
スペルミスでないのなら原因を教えてもらえませんか?
プログラム:
#include <afxwin.h>
class CHelloWindow : public CFrameWnd
{
public:
CHelloWindow();
void OnPaint();
DECLARE_MASSAGE_MAP()
};
class CHelloApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
BEGIN_MASSAGE_MAP( CHelloWindow, CFrameWnd )
ON_WM_PAINT()
END_MESSAGE_MAP()
CHelloApp theApp;
CHelloWindow::CHelloWindow()
{
Create( NULL, "My Hello!!" );
}
void CHelloWindow::OnPaint()
{
CString s = "こんちわ WINDOWS!!";
CPaintDC dc( this );
CRect rect;
GetClientRect( rect );
dc.SetTextAlign( TA_BASELINE | TA_CENTER );
dc.TextOut( (rect.right / 2), (rect.bottom / 2), s );
}
BOOL CHelloApp::InitInstance()
{
m_pMainWnd = new CHelloWindow();
m_pMainWnd->ShowWindow( m_nCmdShow );
m_pMainWnd->UpdateWindow();
return TRUE;
}
0756超初心者
NGNG--------------------構成: hello_windows - Win32 Debug--------------------
コンパイル中...
hello_windows.cpp
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(9) : error C2143: 構文エラー : ';' が '}' の前に必要です。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(18) : error C2065: 'OnPaint' : 定義されていない識別子です。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(18) : error C2440: 'type cast' : 'int *' から 'void (__thiscall CWnd::*)(void)' に変換することはできません。(新しい動作 ; ヘルプを参照)
この変換が可能なコンテキストはありません。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(18) : error C2143: 構文エラー : ';' が '}' の前に必要です。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(18) : warning C4508: 'BEGIN_MASSAGE_MAP' : 関数に戻り値の型が指定されていません。戻り値を void 型と見なします。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(18) : error C2143: 構文エラー : ';' が ',' の前に必要です。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(19) : error C2143: 構文エラー : ';' が '{' の前に必要です。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(19) : error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関数ヘッダーがありません。
C:\Windows\デスクトップ\hello_windows\hello_windows.cpp(19) : error C2143: 構文エラー : ';' が '}' の前に必要です。
cl.exe の実行エラー
hello_windows.obj - エラー 8、警告 1
0757デフォルトの名無しさん
NGNG0758超初心者
NGNG0759デフォルトの名無しさん
NGNG2.void型なのにreturn;が無い。(この場合は不定なint値が返るのでエラー。)
なのか?
0760デフォルトの名無しさん
NGNG結局のところ試行錯誤だ!
0761デフォルトの名無しさん
NGNGスペルミスですが何か?
0762デフォルトの名無しさん
NGNG...
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG探してみます。
0765超初心者
NGNGわかりませんでした。
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG・・・・・・・・・・・。
void *の間違いだろうか・・・・・
0768デフォルトの名無しさん
NGNGC:\Windows\デスクトップ\hello_windows\hello_windows.cpp(9) : error C2143: 構文エラー : ';' が '}' の前に必要です。
たとえば、
こういうエラーメッセージがあったら、hello_windows.cppってファイルの9行目に
エラーがあるってこと。
9行目とその前後をチェックしてみ。
0769デフォルトの名無しさん
NGNG/subsystem:console を /subsystem:windows に直してビルドだ。
それで動いた。
初心者でも超でも丸投げはどんなもんよ。
0770デフォルトの名無しさん
NGNGMS-IMEのカタカナ語英語辞書を有効にしておけよ…。
0771初心者
NGNGみなさまが優しくてほんと助かりました。ありがとうございます。
0772デフォルトの名無しさん
NGNG0773
NGNGCString b;
b.Format(_T("%02x %02x %02x"), a[0], a[1], a[2]);
のように_T は付けた方がいいんですか?
0774デフォルトの名無しさん
NGNG他はしらん
0775デフォルトの名無しさん
NGNGUNICODEとMBCSで同じコード使いたかったらつけろ。
UNICODEにするつもりが無いならつけなくてもいいし。
0776デフォルトの名無しさん
NGNGリストビューを表示する前に項目をあらかじめ選択させたいのですがどうしたらいいでしょうか?
以下の2つの方法を試したのですがうまくいかないんです
・アイテムをInsertする前に
InsertするLV_ITEM構造体のstateにLVIS_SELECTEDをセットする
setItem.state |= LVIS_SELECTED;
・int SetSelectionMark( int iIndex );を使用する
どうしたらいいでしょうか?
あと、CPropertySeatでウィンドウの下にあるヘルプのボタンを隠したいのですが
m_psh.dwFlagsのPSH_HASHELPをオフにするにはどうしたらいいでしょうか?
0777デフォルトの名無しさん
NGNGCPropertySeat ってなんだ ?
0778デフォルトの名無しさん
NGNGm_psh.dwFlags &= ~PSH_HASHELP
か?
0779デフォルトの名無しさん
NGNG表示更新を停止した状態で作成して選択。
その後、更新する。
やり方忘れたんで、わかる奴書いてくれ
0780デフォルトの名無しさん
NGNG最初(アイテムを追加する前)にこれで更新停止しておいて、
追加後、選択。それからまたWM_SETREDRAW
0781デフォルトの名無しさん
NGNG同様にツリービューや、エディットボックスを組み込むにはどうすればいいでしょうか?
0782デフォルトの名無しさん
NGNGクラスウィザードのメンバ変数の追加でやろうとするとうまく行きません。
要は
while(i<20){
if(m_chk1[i]){...}
i++;
}
という感じでチェックボックスが
チェックされているか判定したいわけなんですが、どうしたもんでしょうか
0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNGなぜ for() 文使わんのかと小一時間...。i の初期化も忘れないように。
0785デフォルトの名無しさん
NGNGID配列要らないから、いいかもね。
0786デフォルトの名無しさん
NGNGウィザード使わずに自分でやれば?
0787デフォルトの名無しさん
NGNGこのクラスのメンバCreate(CDC *pDC)にクライアントのDCポインタを渡したいのです。
これはアプリ起動時に一回しかCreateしません。こういうのは何処に持つべきでしょうか?
ドキュメントに持ったとしてCreate(CDC*pDC)を呼び出すタイミングって??
あとCDocumentやCWinAppやCMainFrameからViewクラスのオブジェクトってどうやって参照するんですか?
そもそもView派生クラスのオブジェクトって何処にあるの??
0788デフォルトの名無しさん
NGNGこの二つのツールバーの状態をファイルに保存/復元するには
どうすればよいのでしょうか?
SaveBarState/LoadBarStateではレジストリまたはプライベートiniに
保存することになるので、
CFile fileWrite;
if(fileWrite.Open(_T("state.ini"), CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite)){
CArchive ar(&fileWrite, CArchive::store);
CDockState state;
GetDockState(state);
ar.WriteObject(&state);
ar.Close();
fileWrite.Close();
}
などとして状態を保存してみたのですが、これを
CFile fileRead;
if(fileRead.Open(_T("state.ini"), CFile::modeRead)){
CArchive ar(&fileRead, CArchive::load);
CDockState* state = (CDockState*)(ar.ReadObject(RUNTIME_CLASS(CDockState)));
SetDockState(*state);
ar.Close();
fileRead.Close();
}
で復元すると二つのツールバーの位置が逆になってしまうのです。
0789782
NGNGレスありがとうです。
なんとか
CButton* m_chk[0]=(CButton*)GetDlgItem(IDC_CHECK1)
CButton* m_chk[1]=(CButton*)GetDlgItem(IDC_CHECK2)
:
:
でできましたが、ID配列てどうやるんでしょうか。
なんか便利そうなので良かったら教えてください。>>783
それとIDが連番なら配列的に使えるんですか?どのように?>>785
0790785じゃねーけど
NGNG> それとIDが連番なら配列的に使えるんですか?どのように?>>785
「どのように ?」と来たか、応用が利かない奴と見られてちょっと痛い
ぞ。
ID 配列作る時でも...
for(i = 0; i < ...; i++){
CButton* m_chk[i] = (CButton *)GetDlgItem(IDC_CHECK1 + i);
}
と書けるだろ ? ちょっとした操作だけなら、配列に入れる必要もないよ
な。
0791ひよこプログラマ
NGNGそこの表示部分にCHtmlViewを使って横着しようと考えて悩んでいます。
CHtmlViewのターゲットとなるURLは、リソースかファイルか、
あるいはネット上に存在しなければならないとありますが、
これを、「何か文字列を与えればそれをHTMLと解釈して表示してくれる」みたいな
使い方はできないものでしょうか?
今のところ、テンポラリファイルに一度書き出して
それをfile://で読み出しているのですが、
どうも格好が悪いものです。
なんとかなりませんかねぇ?
0792デフォルトの名無しさん
NGNGIDC_CHECK1,
IDC_CHECK2,
IDC_CHECK3,
};
int i;
for (i = 0; i < sizeof(id_hairetu) / sizeof(id_hairetu[0]) ++i)
{
;
}
コントロールのIDをきちっと整列しておけばわざわざ配列を作らなくても
連番で処理できるってだけ。
コントロールも全部自分で作成してるなら、IDをそろえるのが楽。
共同作業とかでやってるなら、どんな変更が入るかもしれないから
ID配列みたいのをわざわざ作って確実に処理をする。
連番もいいけど、今まで見た中で最悪だった社内ライブラリ(藁)では
BOOL GetCheck(BOOL **fCheckTbl, int idStart, int idCnt);
みたいのあった。
ID連番にしなきゃいけねえだろばか
結果は結局配列で受け取るんだろばか
いちいち中でGlobalAllocすんなばか
なかんじ
くれぐれもこんなばかなのつくらんように。
Wizardの作ったコントロール名をそのまま使うのやめれ。
0793デフォルトの名無しさん
NGNGGetCheck() てーのは、何を返すんだろう ?
俺なら BOOL *GetCheck(int idStart, int idCnt); にするが...。
連番にするかは、プロジェクトのポリシーだと思うから、連番にすると決
めてあるなら、これでも良いとおもう。
結果を配列にするかどうかは、結果の使い方しだい。どれか一つでも
チェックされていたらとか、5 個以上チェックされていたらとかいろいろ
やるなら、とりあえず配列で返すのが良いとおもう。
要は、これだけ見て良いか悪いかは >>792 以外にはわからん。
0795788
NGNG二つのツールバーのそれぞれのCreateExの第5引数でIDを指定すると、
>>788のコードで保存/復元ができた。
もっと簡単な方法はないかな?
0796デフォルトの名無しさん
NGNG手書きでプログラム組めた方が良いのでしょうか?
0797デフォルトの名無しさん
NGNG普通手書きじゃない?
0798デフォルトの名無しさん
NGNGまず、
MFCで出来あがるアプリを見て、
それで満足するのならば、それを使え。
0799デフォルトの名無しさん
NGNG手書きでコーディングしても、結局はキーボードで打ち込まないとビルドできないから
最初からキーボードを使ったらいいんじゃないですか?
0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNGなんだ MFC 専用ってのは ? C++ 専用って言うんだったらまだわかるが...。
0804787
NGNG0805デフォルトの名無しさん
NGNG俺は疲れている。
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGほかにどこにあると思うのですか?
0809デフォルトの名無しさん
NGNGかわいそうに。知識が無くてそんなことしか書き込めないんですね。
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG本当に理由が知りたいわけでもないのに、
そんな質問をするのと同じ理由からですよ。
素直に、>>801というとか、あなたが的確な
答えをだしてあげればよろしかろうに。
0812デフォルトの名無しさん
NGNGそれはちがうな。スレと関係ないことを書くなって意味だよ。質問スレで
「その質問は飽きた」これを弁護して、>810を非難する神経ならスレから出てってくれ。
0813デフォルトの名無しさん
NGNGそれだったら、GetNextViewで得たビューがViewオブジェクトだから、
目的の(CView派生)クラスにDYNAMIC_DOWNCASTをするべし。
0814デフォルトの名無しさん
NGNG「張り紙するな」という張り紙のある壁を見た思いです。
0815デフォルトの名無しさん
NGNGたしかにそうだが、言いたい放題の奴より注意する奴が文句言われるのは何か違う
0816デフォルトの名無しさん
NGNG張り紙するなと言う張り紙はしても問題ないよバカ
0817デフォルトの名無しさん
NGNG張り紙するなとラクガキしてください
0818デフォルトの名無しさん
NGNGそのときに、起動するとどうしても淡色表示になってしまいます。
あれを、なくすにはどうすればいいでしょうか。
0819デフォルトの名無しさん
NGNGその前に何が作りたいの?
「〜みたいなアプリケーションのウィンドウが作りたい」
っていった方が絶対わかると思われ。
例えば、
「フォトショップの横っちょに出るウィンドウみたいなのが
作りたいです。」
とか。
0820デフォルトの名無しさん
NGNGクラスウィザードなりで
そのメニューのハンドラ作れば
淡色表示じゃなくなる
0821デフォルトの名無しさん
NGNGそれだとそのアプリ持ってない人にはわからないと思われ。
つーか>>818みたいな簡単な質問ならそんなこと聞かなくても(略
0822デフォルトの名無しさん
NGNG前にどこかのHPで見たのですが・・・
検索しても見つかりませんでした。
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG違うんです。
例えば
拡張子がdocだとMicrosoft Word 文書とかです。
0825デフォルトの名無しさん
NGNGhttp://www.asia.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/vcug/_asug_overview.3a_.version_information_editor.htm
0826デフォルトの名無しさん
NGNGSHGetFileInfo
0827デフォルトの名無しさん
NGNGレスありがとうございます。
SHGetFileInfoを調べてみたのですがアイコンの取得しかありませんでした。
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNG分かりました。
けど英語しかなっかた・・・
まあがんばってみます!
0830822=824=827=829
NGNGSHGetFileInfoで目的のことが出来ました。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGでもさ、MFCの一番最初にぶつかる壁に、
「まず、VC++のドッキングウィンドウや
フォトショップの小さいウィンドウやフラッシュの小さいウィンドウは
実はViewじゃなくてControlBarです。」
っていう最強の罠がはってあるジャン。
いまじゃ、みんなの共通の知識になってるみたいだけど
始めたばっかりのころはいろんなMFC関連の書籍をあさっても
全然のってなかったことに激怒したよ。
んでさ、見た目に複数のウィンドウがあるアプリをみると
MFC初心者の人達はMDIで作ろうとするんだけど上手くいかないし、
そもそもアプローチがまじぃっつーところから教えてほしいなと、
あの頃は思ったわけよ。でもいらんおせわだったらすまんこ。
0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGどんな方法があるだろうか?
■■□□
■■回回
■■回回
○○回回
0835デフォルトの名無しさん
NGNG縦に二つ -> 左右を上下に分割
0836うと
NGNGダイアログでPreTranslateMessageを継承して、WM_CHARで処理した
んですが、最初はちゃんと動くんですが、その内にWM_CHARがこなく
なってしまいます。
どうしたら良いのでしょうか、なんかが根本的に違うような気も
するんですが。なにかヒント欲しいです。
0837デフォルトの名無しさん
NGNGショートカットキーの実現にはWM_CHARじゃなくてアクセラレータを使う
ダイアログでアクセラレータを使う場合は
PreTranslateMessageでTranslateAcceleratorを呼び出す
0839デフォルトの名無しさん
NGNGそもそもPreTranslateMessageにWM_CHARはこないのでは?
でも最初は動くんですか?
WM_CHARてのはTranslateMessageして生成されるもんだと
思ってたんですが、違う?
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGSetCheck()
0842デフォルトの名無しさん
NGNG0843sage
NGNG0844デフォルトの名無しさん
NGNGうるさい。ばか
0845デフォルトの名無しさん
NGNGその位sageていこうよ。
0846デフォルトの名無しさん
NGNG0xBEみたいなんですけど、ヘッダにはありませんでした。
KeyPadの.ならVK_DECIMALがあるらしいですけど・・・
0847デフォルトの名無しさん
NGNGVK_PERIOD
0848デフォルトの名無しさん
NGNG0849846
NGNGそれ見当たらないですよ??
たしかVJ++ではVK_PERIODはあったような気がするんですけど・・・
WINUSER.Hでいいんですよね??
0850デフォルトの名無しさん
NGNG存在しないなら、決まってないと言うことだ。
たとえば、;の仮想キーコードも106/101で違ったはず。
その辺はキーボードドライバでWM_CHARに変換される
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG#define VK_OEM_PERIOD 0xBE // '.' any country
WinUser.h の VK_ を define してるとこのコメント、ちゃんと読もうぜ。
0853デフォルトの名無しさん
NGNGあんたこそ嫁
OEMはインプリメントに依存する
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGASCIIコードと同じヤツはヘッダに無いから
'.' か '>' のどっちかでよかったハズ
0856デフォルトの名無しさん
NGNG9xのDDKドキュメントにも「VK_OEM_PERIOD 0BEh」って書いてあるぞ。
0857856
NGNG0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGOnIdleをClassWizardで追加してもOnIdleが呼ばれてないようです。
(OnIdle内でTRACEして確認。)
どうすればアイドルタイム処理ができるのでしょうか。
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNGサイトありませんか?
ハマっちゃて・・・
0862デフォルトの名無しさん
NGNGMSDN で WM_KICKIDLE を検索すれば何か見つかるかも
0863デフォルトの名無しさん
NGNGUpdateDialogControls(this, TRUE);
とやってもON_UPDATE_COMMAND_UIがSDIアプリのように来ないんですよねぇ。
ダイアログアプリでもメニュー更新ハンドラで
pCmdUI->SetCheck(1);
のようにしたいだけなんですけど。
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGそれやるならWM_INITMENUPOPUPでいいんじゃないかってのと、
同じcodeguruのdialogカテゴリで言うならなぜ
ttp://codeguru.earthweb.com/dialog/dialog_updateui.shtml
の方法(>>863と同じ方法)ではできないのかと。
0866デフォルトの名無しさん
NGNG後者のttp://codeguru.earthweb.com/dialog/dialog_updateui.shtml
ができないのはなぜ?
0867デフォルトの名無しさん
NGNGUpdateDialogControlsはコントロール向けか…
ぐだぐだになったけど要するに>>864で解決ってことで。
0868デフォルトの名無しさん
NGNGボタンを押すごとに前に描いた線を消して、新しい線を描きたいのですが、
それを 200 回くらい繰り返すと途中でメモリが足りなくなってしまいます。
今は、背景と同じ色で塗りつぶしてから新しい線を描いています。
他によい方法があれば教えてください。
よろしくお願いします。
0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGpenとかDCとかブラシとか開放わすれてません?
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGCDC* pDC;
pDC = GetDC();
CPen newPen;
CPen *pOldPen;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap(pDC, 520, 200);
CBitmap *pMemBmp=MemDC.SelectObject(&MemBitmap);
MemDC.BitBlt(r_t_x, r_t_y, 520, 200, pDC, r_t_x, r_t_y, SRCAND);
MemDC.SelectObject(pMemBmp);
pDC->SelectStockObject(NULL_PEN);
pDC->Rectangle(rx, ry, lx, ly);
pDC->SelectStockObject(BLACK_PEN);
newPen.CreatePen(PS_DOT, 1, BLUE);
pOldPen=pDC->SelectObject(&newPen);
pDC->MoveTo(x_r_x, x_r_y);
pDC->LineTo(x_l_x, x_l_y);
pDC->MoveTo(y_t_x, y_t_y);
pDC->LineTo(y_u_x, y_u_y);
MemDC.SelectObject(&MemBitmap);
pDC->BitBlt(r_t_x, r_t_y, 500, 200, &MemDC, r_t_x, r_t_y, SRCAND);
MemDC.SelectObject(pMemBmp);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
newPen.DeleteObject();
ReleaseDC(pDC);
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNG忘れてました…
できました。
ありがとうございます。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG適当なファイルを読んだ後にタイトルにファイル名を表示させたいのですが、
ドキュメントの Serialize の読込みの後、CDocument::SetTitle() では
違うのでしょうか? 変更されない……。
0877876
NGNG0878876
NGNG0879876
NGNGSetWindowText するという方法で目的は達成できませした。
が、OnUpdateFrameTitle を MSDN で引いてみると COleClientItem の
メンバとなっているようなのですが、CMainFrame の親と COleClientItem って
何か関係あるんでしょうか?
0880デフォルトの名無しさん
NGNGCFrameWndのドキュメントが不完全なだけ。
ありがち。
(一応MFCのバージョンが変わったら、そこが変わってないかどうか
確認する必要がある)
0881デフォルトの名無しさん
NGNG複雑な図形上をマウスで押した際の判定に
CRgnとPtInRegionを使っているんだけど
Win2KではOKなのに、Win98、Meじゃだめでした。
直前にViewに対してFillRgnで描画を行っているんだけど
それはちゃんと表示されてます。
原因がつかめず、難儀してます。
お知恵を拝借
0882デフォルトの名無しさん
NGNG引数にPOINT構造体を渡してみたらどう?
0883デフォルトの名無しさん
NGNGCStatusBarCtrlの中からCProgressCtrlをCreateすれば上手くいきます。
ただ、できればApp Wizardの作ったスケルトンを大幅に変えないで
実装したいのですが、どうするのがスマートでしょうか?
CStatasBarの派生クラス内からCProgressCtrlをCreateできればいいのですが
上手くいきません。
見当違いのことを書いているのかもしれませんが、その指摘も含めて
よろしくお願いします。
0884デフォルトの名無しさん
NGNG使えないんですか?
0885デフォルトの名無しさん
NGNGヘッダーファイルをインクルードしたらでけますた
0886デフォルトの名無しさん
NGNGどう設定すればTab文字が入力出来ますか?
0887デフォルトの名無しさん
NGNGシリアライズってどーやるんだ。。。。
0888デフォルトの名無しさん
NGNGこの手のものは、MDIの子ウィンドウに複数の種類がありますでしょう?
ソース用のテキストだったり、コントロールデザイン用であったり…。
新規作成を押すと、そのあたりが全て初期化されますよね。
そのような、MDIのアプリケーションの複数の子ウィンドウの取り扱いはどのように
すればよいのでしょうか?
0889デフォルトの名無しさん
NGNGしたいことがよく判らんが取りあえずこのあたりでも読んでみれば?
http://www.microsoft.com/JAPAN/developer/library/jpbkgnd/TechArt/VTools/vc/MFCFAQ.htm#mfcfaqdocs
0890デフォルトの名無しさん
NGNGDocumentをツリー上にして出来たよ。
>>889
面白そうなので読もう、いまさらMFCとか言われそうだけど・・・
0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG用は、VC++のようにMDIの子ウィンドウに複数の種類を持たせたいのです。
そして、それを取り扱いたいわけです。
0893デフォルトの名無しさん
NGNG0894887
NGNGシリアライズは実装したんですが、
実際にファイルのオープンや書き込みは
ダイアログベースではどの関数でやればよいのですか?
0895デフォルトの名無しさん
NGNG0896887
NGNGその後なんですが・・・・ウウウ
0897デフォルトの名無しさん
NGNG�@CFileDialogからファイル名を取得
�ACFileでオープン
�BCArchive ar
�CCxxDocと関連
�DオブジェクトのSerialize ar<< CObjectxx
0898887
NGNG0899デフォルトの名無しさん
NGNG奴等って....(゚д゚)ポカーン
まあ...時代の風に乗り遅れるなよとしか
言いようがないが....
0900デフォルトの名無しさん
NGNG.NETではドライバは書けません。
そう言うことです。
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNG.NETでCPLは書けません。
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNGサイドで.netに取って代わられるんでしょ?
つまりMFCはデバドラでもしこしこ書いてろ
ということでよろしいか?
0905デフォルトの名無しさん
NGNGMFCはともかくネイティブコンパイラは残るでしょ。
取りあえず.NETを支えてるのがWin32である以上。
0906デフォルトの名無しさん
NGNGだったら.NETでもいいと思われ
0907デフォルトの名無しさん
NGNGWin32が残る以上、皮一枚のMFCは残るでしょう
0908デフォルトの名無しさん
NGNG.NETのクラスライブラリは最終的には
Win32APIを呼び出しているということですか
0909デフォルトの名無しさん
NGNGそらそうでしょう。Widowsプログラミングとはそう言うものでしょう。
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNGは成り立つか?
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNGGetActiveIndex()を使ってアクティブだったpageのインデックスを
取得したいんだけど、なぜか0しか返ってこない。
SetActiveIndexなら、DoModal前に指定すればちゃんとそのpageが
アクティブになって表示されるのに。なぜ?
0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNGMDIでChildWindowにダイアログで設計したものを挿入することは出来ますでしょうか?
SDIでは出来るんですけども、MDIではどうにもなりません。ソースとして挿入できれば
便利かなと思います。
0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNGDoModalが終わった後ではすでにプロパテーシートが消えてるからじゃない。
0920デフォルトの名無しさん
NGNG・途中で用紙サイズを変更することは可能でしょうか(同じスプールにです)
->Wordとかは出来るようなので可能かとも思うのですが
・各企業は自社プリンタ用の拡張機能の仕様を公開しているのでしょうか
0921デフォルトの名無しさん
NGNGかなぁ? じゃあどうやって取得したらいいんだろう。
ぐーぐってもヒット数は10件に満たない数だし。
それとSetActivePageだったね。Indexじゃなくて。
0922デフォルトの名無しさん
NGNGGetActivePageじゃ取れないんだね?
だったらプロパティシートのOnOKハンドラとかで
GetActivePageでもしてメンバ変数m_nIndexとか作って
その変数に入れておけばいい。それで
if(sheet.DoModal() == IDOK){
int nIndex = sheet.m_nIndex;
}
とか。
0923デフォルトの名無しさん
NGNGCPaintDC dc(this); // 描画用のデバイス コンテキスト
// デスクトップを取る
CWnd* pwndDeskTop = GetDesktopWindow();
CDC* pDeskTopDC = pwndDeskTop->GetDC();
// 自分の領域にデスクトップからコピー
dc.BitBlt( 0,0, 200, 200, pDeskTopDC, 0, 0, SRCCOPY );
pwndDeskTop->ReleaseDC(pDeskTopDC);
これでデスクトップの画像を取得し,表示。
この後に、
for(j=0;j<yh;j++)
for(i=0;i<xw;i++){
color=pDC->GetPixel(x0+i,y0+j);
r=GetRValue(color);
g=GetGValue(color);
b=GetBValue(color);
c=(r+g+b)/3;
pDC->SetPixel(x1+i,y0+j,RGB(c,c,c));
}
のような操作で白黒化を試したのですが、
1度ワークスペースに描写してからGetPixelでは
無駄な処理(ワークスペース内に描写)があって効率が悪い気がします。
デスクトップ上から直接RGB値をとりこみ、メモリ上で処理(この場合は白黒化)、
その後にワークスペース内に描写させるにはどうすれば良いのでしょうか?
質問ばかりですいません。
0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNGCPropertySheetにはOnOKはないので、DestroyWindow時にメンバ変数に格納してみた。
で、DoModalから処理が戻ってきたときにそれを指定、で成功。蟻が父さんっ。
0926デフォルトの名無しさん
NGNGDIB
0927デフォルトの名無しさん
NGNG各リストにチェックボックスを表示するにはどうすればいいですか?
0928デフォルトの名無しさん
NGNGlist.SetExtendedStyle(LVS_EX_CHECKBOXES);
のこと?
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNGチェックされているかどうか調べるにはどうすればいいですか?
0931デフォルトの名無しさん
NGNG最初に全フォルダを調べてViewに登録しようとすると、ありえないと思いますが
フォルダが数万とかあった場合に、マズイ気がします。
何か他にやり方はないものでしょうか?
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG自己解決しました。
0934デフォルトの名無しさん
NGNGアイドル処理を行い、その経過をダイアログ上にプログレスバーで表示しています。
メッセージハンドラ内で処理が終了したらEndDialog()を呼びたいのですが
ASSERTにひっかかって落ちてしまいます。
どうしたらうまく処理を抜けるんでしょうか?
0935934
NGNGでもなんか納得イカン!!
0937デフォルトの名無しさん
NGNG処理が終わったらユーザ定義メッセージをポストするとか
0938デフォルトの名無しさん
NGNGIEの「お気に入り」みたく、開いてるフォルダ以外は全て閉じるとか。
つまりフォルダを開くときだけサブフォルダを走査する。
フォルダの階層って制限あったような気がするけどなぁ。
0940デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 4■
http://pc.2ch.net/test/read.cgi/tech/1021620974/
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1021620974/
0943旧スレ埋め
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1021620974/
0944デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1021620974/
レス数が900を超えています。1000を超えると表示できなくなるよ。