■ MFC相談室 MFC12.dll■
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNG前スレ
■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
関連リンクは >>2-10 の辺り。
0002デフォルトの名無しさん
NGNG>■ VisualC++(MFC限定)相談室 MFC10.dll■
■ VisualC++(MFC限定)相談室 MFC11.dll■
0003デフォルトの名無しさん
NGNG>■ VisualC++(MFC限定)相談室 MFC11.dll■
■ MFC相談室 MFC11.dll■
0004デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/
■ VisualC++(MFC限定)相談室 MFC9.dll■
http://pc2.2ch.net/test/read.cgi/tech/1062098350/
■ VisualC++(MFC限定)相談室 MFC8.dll■ (スレタイ壊れているけど前スレ)
http://pc2.2ch.net/test/read.cgi/tech/1056584836/
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc2.2ch.net/test/read.cgi/tech/1039607377/
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/tech/kako/1028/10285/1028553308.html
■ VisualC++(MFC限定)相談室 4■
http://pc3.2ch.net/tech/kako/1021/10216/1021620974.html
■ VisualC++(MFC限定)相談室 3■
http://pc.2ch.net/tech/kako/1014/10140/1014057520.html
■ VisualC++(MFC限定)相談室 2■
http://pc.2ch.net/tech/kako/1008/10080/1008031675.html
■ VisualC++(MFC限定)相談室 ■
http://pc.2ch.net/tech/kako/989/989902845.html
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG乙
0007デフォルトの名無しさん
NGNG本当です。
0008デフォルトの名無しさん
NGNGシニ
で命運尽きたと見るべきだろう
0009デフォルトの名無しさん
NGNGいつの時代の話だ。
いまはMFC70.dllだぞ。
0010デフォルトの名無しさん
NGNGこれテンプレの一部かと思って貼ったんだけど違ったのかな?
0011デフォルトの名無しさん
NGNGCDialogの継承クラスにおいて
ワーカスレッドからメインスレッドに15msecおきに
SendNotifyでユーザ定義メッセージを送って
関数を実行させようとしています
しかし、どうしてもランダムに
200msec前後の遅延が発生します
どうにか15msecぐらい間隔で目的の関数を
呼び出すことはできないでしょうか?
どうか、アドバイスをよろしくお願いします
0012デフォルトの名無しさん
NGNG厳密なタイマーを使うには、マルチメディアタイマー関数を使うしかない。
しかし、200mSecも遅延しているから、そういう問題じゃないと思う。
多分、メッセージループのコールバックで時間がかかっている。
過剰な描画要求・過剰な計算をコールバックプロシージャで行っていないか確認するのが先決。
マルチスレッドにできるかどうか検討するのはその後。
0013デフォルトの名無しさん
NGNGアドバイスありがとうございます
2chは初めてで、嫌悪感をもってましたが
思い切って質問してよかったです。
0014デフォルトの名無しさん
NGNG一言余計
0015デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1095534704/320-
マルチ。おまえに嫌悪感を抱いた。
0016デフォルトの名無しさん
NGNGこちらに書き込みさせていただきます。
Visual C++ で MFC を使ったアプリケーションを作成しています。
IE コンポーネント(IWebBrowser2)を貼り付けて、
そこから(ExecWB で)印刷を行わせているのですが
印刷完了イベントのようなものはないのでしょうか?
DWebBrowserEvents2 には該当するような
イベントを見つけることが出来ませんでした。
なにか OLE 汎用のイベントのようなものがあるのでしょうか。
よろしくお願いします。
0017デフォルトの名無しさん
NGNG今やってるのは日本語を入力したらそのキーワードで検索をするという
もので、インクリメンタル検索になってます。入力欄はコンボボックスです。
CBN_EDITUPDATEでやっていたのですが、これだとIMEで入力を確定すると
文字数分だけ呼ばれてしまいます。(「こんにちは」を確定すると5回)
もちろんIMEの入力確定でインクリメンタルに検索してもなんのメリットも
ないので、一回で済ませたいのですが、今はCBN_EDITUPDATEを
処理する代わりにユーザー定義メッセージで処理することにし、
コンボボックスサブクラス化(CComboBoxを継承)・コンボボックス中の
エディットボックスサブクラス化(CEditを継承)して、エディットに
WM_IME_CHARが来た回数分だけWM_CHARを無視し、残った分の
WM_CHARとWM_IME_COMPOSITOINにLPARAMでGCS_RESULTSTRが
来た時にユーザー定義メッセージを親のコンボボックスに送り、
それをさらに親に転送するという形でなんとか実現はできました。
ただこれではMBCS環境では使えないし、何よりたかが日本語の
インクリメンタル検索でこんなに手間がかかるのは直感的におかしいと
思うので、誰かいい方法をご存知の方がいらっしゃったら教えてください。
001817
NGNG0019デフォルトの名無しさん
NGNGマルチメディアタイマを使ってみたのですが
コールバック関数内で呼び出している関数が
イベント発生時に呼び出されていないように
見える現象が10000回に一度程度発生します
一度発生すると5回前後スルーされているようです
イベントインターバルを100msec、
コールバック関数内の処理を軽くしても改善されません
どうしてでしょうか?
心当たりがありましたらアドバイスよろしくお願いします。
0021デフォルトの名無しさん
NGNG起動したプログラムの絶対パスがわかる方法ありますかね?
自分で調べればいいのですがどうも見つからなくて、わかりません
全てのディレクトリを検索する場合だとうまくないのでいい方法ご教授おねがいします
0022デフォルトの名無しさん
NGNGGetModuleFileName
0023デフォルトの名無しさん
NGNG子ウィンドウにタブとかスライダーなどいろいろ配置したいのですが
何かいい方法ってあるでしょうか?
プロパティシートを使えばとも思いましたが、[OK]ボタン等が必要ないので
他の方法を考えております。
いい方法をご存知の方、アドバイスよろしくお願いします。
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGサイズの変更がめんどくさいなら、タブに WS_MAXIMIZE
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG知りましたorz
COMのDLLにするときには、ATLオブジェクトは利用したいクラスをラップする形で実装するのが
デザインとして正しいんでしょうか?
たとえば、通常のクラスHogeがあったとして、ATLオブジェクトCHogeを派生させるのが正しい
使い方でしょうか。
0028デフォルトの名無しさん
NGNGウィザードが作った雛形どおりにすればよいと思う。
0029デフォルトの名無しさん
NGNGATLオブジェクトに内部的なメソッドも実装してしまって、VC++からでもCOM呼び出しで使うようにすべきだ、
という理解でいいんでしょうか。
DLLにATLでないクラスも定義している場合なんかは、デフォルトで作られるヘッダファイルでは
それらが利用できませんよね?
あ、ひょっとしてそのヘッダに書き加えればいいのか?
0030デフォルトの名無しさん
NGNG外部から使用される対象のクラスをCOMオブジェクトにすればよい。
0031デフォルトの名無しさん
NGNGあるサンプルを見ながら書いてみたのですが"+","-"が表示されません。
そのソースを見る限りでは
InsertItem("asfd", 0, 0, hParent );
InsertItem("", 0, 0, hParent );
これだけで+マークが表示されてるようですが。
同じようにやっているつもりでも表示されません
なんでですか?
0032デフォルトの名無しさん
NGNGTreeControlのプロパティを 「ボタンあり」
または
windowスタイル += TVS_HASBUTTONS
のどちらか。
0033デフォルトの名無しさん
NGNGダイアログクラスのメンバとして確保しました。その後、ダイアログクラスの
OnInitDialog()でCEdit型変数のCreate()を呼び出してものっぺりとしてしまって
リソースエディタで張り付けたときのような窪みを作れません。どうやったら
窪みを付けられますか?実際のCreateは以下のようにしてます。
m_cEdit.Create(WS_VISIBLE|ES_WANTRETURN|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE,
cRect, this, IDC_ED_TEST);
0034デフォルトの名無しさん
NGNGWS_EX_CLIENTEDGEあたりじゃないのかなぁ
003533
NGNGとりあえず
m_cEdit.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
m_cEdit.ShowWindow(SW_SHOW);
を直後に入れてみましたが相も変わらずです。@WinXPSP1 VC6SP6
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGCreateWindowで指定できないよな
003833
NGNGcx.dwStyleEx|=WS_EX_CLIENTEDGE;
としたところ無事に窪みが発生しました。
CreateWindowEx()の方は引数をどうしたらいいのかさっぱりです
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNGWin32 プロジェクトを作成し、
「コンソールアプリケーション」「MFC」を選ぶ。
コードは
try {
CStdioFile fin("in.txt", CFile::modeRead);
} catch(CException* e) {
e->ReportError();
e->Delete();
}
これを "in.txt" がない状態で実行すると、
「in.txt が見つかりませんでした。」とうまく表示されます。
しかし、MFC の使用を
「共有 DLL で MFC を使う」から「スタティック ライブラリで MFC を使用する」にすると、
ReportError() はなにもメッセージを表示しません。(空文字で、[OK] ボタンのみ)
debug / Release どちらもだめでした。
スタティック ライブラリで ReportError はだめなのでしょうか?
004241
NGNG環境:Visual Studio .NET 2002 です
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNGマクロと機能がかぶってるのって、どっちつかうか迷う。
0045デフォルトの名無しさん
NGNG文字列リソースのAFX_IDP_FILE_NOT_FOUNDが見つからないから。
debugモードだとアサート出なかったか?
0046デフォルトの名無しさん
NGNG004917
NGNGなんだかとてもよくありそうな処理の気がするんですが。
ちなみに今はWM_IME_COMPOSITIONでGCS_RESULTSTRが
立ってるとき(変換確定)に確定文字列の長さを数えて、
その分だけWM_CHARを無視する方法に変えました(CEで
WM_IME_CHARが送られないため)。
でも相変わらずUnicode依存だし(今回はそれでいいんですが)、
直感的に「この処理は汚い」と思うので、アドバイスいただけたら
うれしいです。または、「前そんな処理やったけどそれしか方法が
なかった」というのでもいいです。
0050デフォルトの名無しさん
NGNGいるんですが、1行2列で一列目がさらに2行に分割されているような
ウィンドウを作る場合、1列めの二つのビューの列幅がどうしても極狭に
なります。これを任意の幅にしたい場合、ウィンドウを作ったあとにリサイズ
するしか方法はないでしょうか?
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGやっぱそれしかないですか・・・
せっかくサイズ設定できるのに、あとでSetColumnInfo とかつかうと
なんか二度手間でかっこわるいんですよねぇ・・・
0053デフォルトの名無しさん
NGNGできるの?
ったく、わけわかんね
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGサイズを固定し、分割ウィンドウの境界線を補足したいのですがどうすればいいのですか?
0056デフォルトの名無しさん
NGNGサイズ変更しないんなら単にペインを子ウィンドウとして配置するだけだと思うが。
0057デフォルトの名無しさん
NGNGなにをキーワードにMSDNを引けばいいの?
0058デフォルトの名無しさん
NGNG・・・。
CWnd・・・かな・・・。
0059デフォルトの名無しさん
NGNG方法ってありますか?
0060デフォルトの名無しさん
NGNGCSplitterWndを入力禁止にするのはどう?
0061デフォルトの名無しさん
NGNGアドバイス頂けるのはありがたいでのすが、造語?を使われると意味がわかりません。
入力禁止ってなんですか?
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGすると、スクロールも出来なくなりました
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGわかないならはなっから口出しすなよ、ぼけ
0066おれおれ
NGNGOnLButtonDown()とOnMouseMove()をオーバーライドする。
void CHogeWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
CWnd::OnLButtonDown(nFlags, point);
}
void CHogeWnd::OnMouseMove(UINT nFlags, CPoint point)
{
CWnd::OnMouseMove(nFlags, point);
}
0067デフォルトの名無しさん
NGNGこれだけだとマウスカーソルの変化が食い止められないです
006867
NGNG0069デフォルトの名無しさん
NGNGフォルダのみ選択できるダイアログを作りたいのですが
OnFolderChange関数をオーバーライドして、
選択中のフォルダ名は取得できるようになったのですが、
ファイルを選択しているわけではないので、開くボタンを押してもダイアログを閉じられません
どういう方法でダイアログを閉じる事ができるんでしょうか
0070デフォルトの名無しさん
NGNG開くボタンに対するイベントハンドラ作れば
0071デフォルトの名無しさん
NGNGhttp://ahiru2.zive.net/joyful/img/3944.zip
0073デフォルトの名無しさん
NGNGフォルダ選択だけが目的なら
SHBrowseForFolder使うのは?
0074デフォルトの名無しさん
NGNG私もググってみたところそのやり方を見つけたのですが、
なるべくCFileDialogと見た目を近づけたいので質問しました
CFileDialogでやってみてダメならその方向でいこうと思います
007569
NGNG素直にSHBrowseForFolderで行きます
・・なんでFolderDialogみたいなクラスないんだろ・・
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNGATL、MFC、VCLすべて糞だよ
自作のフレームワークでOK
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGライブラリを作るのもアリだと思うけど
よっぽど出来がよくない限り仕事には使えんわな
0081デフォルトの名無しさん
NGNG既存の他人が作ったライブラリは使いこなせず
自作の物しか理解できない典型的な無能タイプでしょ。
0082デフォルトの名無しさん
NGNG設定したのですが、
ボタンが押されたときに、エディットボックスに範囲外の値が入力されているか
知りたいのですが、どのようにしたらよいのでしょうか。
0083デフォルトの名無しさん
NGNG入門書持ってる?
本見ながらやればできる。
0084デフォルトの名無しさん
NGNG検索のヒント。
・UpdateData()
・DDX
0085デフォルトの名無しさん
NGNGヒントになってないと思う。
DDXなんてわざわざ学習する必要ないし。
初心者相手にムダで遠回りな回答するのは止めろ。
悪質だぞ。
0086デフォルトの名無しさん
NGNGあーそうか、自分が知らなかったもんだから必死なのか。
0087デフォルトの名無しさん
NGNGボタンが押されたときに、エディットボックスに範囲外の値が入力されているか調べるようにする。
0088デフォルトの名無しさん
NGNGとかやった後
tmp中の改行コードを"\n"という文字列に変換してくれるクラス関数はありますか?
0089デフォルトの名無しさん
NGNGMSDNでCStringのメンバ眺めろよ
CString::Replace
と言いたい所だけど2バイト文字を考慮しないバグがあった気がする。
0090デフォルトの名無しさん
NGNG当たり前のように出してしまうのもどうかと思う
0091デフォルトの名無しさん
NGNGCPenの種類を見てみましたがありませんでした。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGモードレスダイアログ上に「裏画面」を使ったビットマップを表示したいんですが
旨くいきません。
OnPaint() {
// トーフ表示テスト
CPaintDC dc(this);
CDC mydc;
mydc = this->CreateCompatibleDC(NULL);
mydc.FillSolidRect(0,0, 10,10, RGB(0,0,0));// 沢山書いておいて・・・
dc.BitBlt(0,0,10,10, &mydc, 0,0, SRCCOPY);// 一気に転送!
mydc.DeleteDC();
}
009493
NGNG【質問】
BitBlt() は 1 を返しますがウィンドウは灰色のままです。
どこがマズいのでしょうか?
0095デフォルトの名無しさん
NGNG> mydc = this->CreateCompatibleDC(NULL);
これコンパイル通らんだろ。
あと裏画面用のビットマップはどこ?
009693
NGNGはぅ!すいません。
mydc.CreateCompatibleDC(NULL);
でした。
あと、ビットマップはビットマップファイル(.bmp)では無く
DC上に描画したグラフ画像のことです。分かり難くてすいません。
実際には
mydc.MoveTo();
mydc.LineTo();
で色々描いてますが今回はテストのためFillSolidRect()を使いました。
(これでも豆腐が描画できるはずですよね?)
0097デフォルトの名無しさん
NGNGいやそういうことじゃなくて、裏DCが描画する領域のこと。
作成したDCに最初に選択されているのは1x1のモノクロビットマップ。
だから必要な大きさのビットマップを作ってSelectObjectしないと。
009893
NGNGえ゛っ・・・?
FillSolidRect()やLineTo()はベースとなる(?)ビットマップが必要なんですか?
ということで、
mydc.CreateCompatibleDC(NULL);
CBitmap bitmap;//追加
bitmap.CreateCompatibleBitmap(&mydc, 10,10);//追加
CBitmap* pbitmapOld = mydc.SelectObject(&bitmap);//追加
mydc.FillSolidRect(0,0, 10,10, RGB(0,0,0));
dc.BitBlt(0,0,10,10, &mydc, 0,0, SRCCOPY);
mydc.SelectObject(pbitmapOld); //追加
でできました。
きっとはじめから見越されてたんでしょうね・・・本当にありがとうございました。
0099デフォルトの名無しさん
NGNGいろいろ調べたけど、どうしても分からないので質問させてもらいます。
CTreeViewを基本クラスとしたプロジェクトで、
CImageList image_list;
image_list.Create( 16 , 16 , ILC_COLOR4 , 1 , 0 );
image_list.Add( AfxGetApp()->LoadIcon( (LPCTSTR)IDI_ICON1 );
GetTreeCtrl().SetImageList( &image_list , TVSIL_NORMAL );
GetTreeCtrl().InsertItem( "test" );
というようにしても、16×16ほど項目の左に空白ができるだけで、アイコン自体が表示されません。
お願いします。教えてください。
環境は、
WindowsXP
VisualC++.NET 2003
です
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG(LPCTRSTR)
をなくしてもだめでした。
0102デフォルトの名無しさん
NGNGAfxGetApp()->LoadIconで有効なアイコンハンドルが得られているか確認。
image_list.Addの戻り値を確認。
これ基本。
0103デフォルトの名無しさん
NGNGだと読み込み失敗で、
AfxGetApp()->LoadIcon( (LPCTSTR)IDI_ICON1 );
だと読み込みが成功していました。
でも、後者でも表示されませんでした
0104デフォルトの名無しさん
NGNG根本的な問題はCImageList image_list;がローカルにあるのでスコープを抜けると破棄されること。
0105デフォルトの名無しさん
NGNGありがとうございました!!
image_listをメンバ変数に加えたら成功しました。!!
0106デフォルトの名無しさん
NGNG関数説明ドキュメントのどこにも「ローカル変数を指定しないで下さい。」とは書かれてないので、
入門者が必ず一度は通る落とし穴だ。
0107デフォルトの名無しさん
NGNGCDC::SelectClipRgn はコピーを使うから元のオブジェクトは削除しなきゃいけないし。
CWnd::SetWindowRgn はオブジェクトをそのまま使うから削除しちゃいけないし。
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNGVisualC++.NET 2003
CTeeCtrlでチェックボックス付きのツリーを作ってます。
任意の階層のチェックをした時に、そのアイテム以下の階層を
全部グレー表示というか操作できないようにさせたいのですが
良い方法は無いでしょうか?
0110デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGフラグがfalseの場合はカスタムドローかなにかでアイテムをグレーに描画し、
アイテムをクリックしても何もしないようにする。
フラグがtrueの場合は通常処理。
と思いつきで答えてみる。
0113デフォルトの名無しさん
NGNG再描画されます。原因わかる人いませんか?
まだコントロールを並べて動きを考えているだけで中身は全然ないんですが...
怪しいのはコントロールやメインダイアログの中に貼った子ダイアログとかを
MoveWindowやShowWindow、UpdateWindowで動かしたり表示切り替えしてることぐらいです。
でも全体を再描画するようなコードは書いてないし、発生タイミングも全然違うみたい。
OSが勝手に再描画をするタイミングって、制御できないんですかね?
0114デフォルトの名無しさん
NGNGもしご存じの人がいたら教えてください。
ActiveXコントロールはバージョンアップに対応するため(?)に
インターフェースを複数持てる、みたいなことを聞きかじったのですが、
MFCで作るActiveXコントロールで複数インターフェースを持たせるには
どうすればいいんでしょうか?
&
MFCで作ったActiveXコントロールをVBで使ったときに、プロパティの値を
コンボボックスで指定できるようにしたり、内容の説明の追加や項目の順序
指定をしたいのですが、どうやればできるのでしょうか?
普通に作るとすべてカスタムプロパティになってしまいます。
0115デフォルトの名無しさん
NGNGinterface IMyControl{};
interface IMyControl2 : IMyControl{};
0116デフォルトの名無しさん
NGNGVC++.NET 2003
MFCDLLについての質問です。
class CDllTest{
CString strDll;
public:
CDllTest(){}
~CDllTest(){}
void SetString( LPCTSTR );
void GetString( CString & );
}
この様に、MFCオブジェクトを引数にとる、または戻り値に持つ関数をエクスポートして、
.lib .dll を作って他のプロジェクトでインポートして使用すると、
MFCオブジェクトを引数にもつ CDllTest::GetString( CString& ) だけが「LNK2019: 未解決の外部シンボル」
のリンクエラーが発生します。
どうすればいいのでしょうか。教えてください。
0117デフォルトの名無しさん
NGNGDLLを利用する側のプロジェクトは何で作った?
0118デフォルトの名無しさん
NGNGMFCアプリケーションです
0119デフォルトの名無しさん
NGNGんで、ファイルダイアログでファイルを選択して表示するところまで作ったのですが、
ファイルを選択してダイアログが消えた直後に画像が表示されなくて、ウインドウサイズ
の変更などをすると画像が表示されます。
ちなみに、ダイアログはメインのAppクラスから呼んでて、CViewの派生クラスのOnDraw()が実行されない
のが原因じゃないかなと、訳がわからないながらもいろいろ考えております。
ダイアログが消えた直後に画像を表示させるにはどうすればいいんでしょうか?
すんごく初心者の質問で申し訳ありません。
0120デフォルトの名無しさん
NGNGCWnd::Invalidate
フレームワークに従って処理すれば勝手に呼ばれたと思ったけど違ったかな…
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGスタイルを設定する
0123デフォルトの名無しさん
NGNGラベルしか編集できないので、各セルを編集したいならCodeGuru辺りで手頃なのを探すこと。
#最近作ったばかりだw
0124デフォルトの名無しさん
NGNGってDebugモードとReleaseモードでinlineか否かをわけてるの?
どっちもinlineでいいじゃん
0125デフォルトの名無しさん
NGNG通常、Debugビルドは最適化しないから、inline指定の有無に関わらずインライン展開されない。
0126デフォルトの名無しさん
NGNGCxxxView::OnDrawで無効化された部分だけ再描画したいのですがどうすればいいの?
0127デフォルトの名無しさん
NGNGInvalidateRectで指定したRECTを覚えておく。
0128デフォルトの名無しさん
NGNGマジですか?
それしかないのですか?
0129デフォルトの名無しさん
NGNGCDCにクリッピング矩形を取得するメソッドがある。
0130デフォルトの名無しさん
NGNGGetUpdateRect
GetUpdateRgn
0131デフォルトの名無しさん
NGNGGetClipBox
こっちだろ
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGm_wndStatusBar.SetPaneText(0,"hoge");
で駄目なのですか?
0134デフォルトの名無しさん
NGNGを引くコントロールってありますか?
0135デフォルトの名無しさん
NGNGないと思う
DCに直接、MoveTO() してLineTo() かなぁ。
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNG高さの無いフレームとか。
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGばかかおめー
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG外注になげろよ
0143デフォルトの名無しさん
NGNG外注に金払うこと自体馬鹿馬鹿しいだろ。
仕事とって来んなよ。
0144デフォルトの名無しさん
NGNGピクチャコントロール
Type=水平(垂直)縁取り
0145デフォルトの名無しさん
NGNGおまえばかだろ?
普通プロパーと外注だと半分くらいの費用だぞ
プログラマなんて肉体労働者は時間4000円程度で雇えるんだよ
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNGカスタムコントロール以外の手段が書いてあるのは読めないのかな?
0148デフォルトの名無しさん
NGNG時間4000円払うこと自体馬鹿馬鹿しいだろ。
仕事とって来んなよ。
0149デフォルトの名無しさん
NGNG::SetWindowLong(
GetDlgItem(IDD_DIALOGBAR)->m_hWnd,GWL_STYLE,
::GetWindowLong(GetDlgItem(IDD_DIALOGBAR)->m_hWnd,GWL_STYLE) ^ WS_VISIBLE
);
じゃ駄目かしらん?
0150デフォルトの名無しさん
NGNGおまい生きてること自体馬鹿馬鹿しいだろ。
死ねよ
0151デフォルトの名無しさん
NGNGそれだけじゃ、非表示にはできないんだな〜
ここの連中も大したことないねw
0152デフォルトの名無しさん
NGNGわざわざ自殺すること自体馬鹿馬鹿しいだろ。
ボーッとしとけよ。
0153デフォルトの名無しさん
NGNGおまえら邪魔。
0154146
NGNG0155デフォルトの名無しさん
NGNGShowWindow(SW_HIDE);
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGなんでいちいちお前のために試さなきゃいけないんだ。
また思いつきでレスしてやるけど、
CFrameWnd::RecalcLayout()を試せ。
0160デフォルトの名無しさん
NGNGあなたはこちらのスレの方がふさわしいですね。
http://pc5.2ch.net/test/read.cgi/tech/1097880265/
0161デフォルトの名無しさん
NGNGとっちにそっちでも暴れてますよ
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG表示/非表示きりかえできるぞ
0164デフォルトの名無しさん
NGNGこちらに投稿させて頂きました。スレ違いだったらすいません。
開発環境:Windows2000 SP4 + eVc 3.0 + HPC-2000 SDK
端末:X86CPU互換 WindowsCE 3.0
ある文字列(SendStr)を、今現在開いているブラウザ(Internet Explorer固定)で
フォーカスの当たっているインプットボックスへ挿入する機能を実現しようとしています。
以下のようなコードを書きました(一部)。
BOOL CDlg::SendBrowser(CString SendStr)
{
CWnd* BrowseWnd;
int i;
if(SendStr.IsEmpty())
return FALSE;
BrowseWnd = FindWindow(NULL, TEXT("Yahoo! JAPAN - Microsoft Internet Explorer"));
if(BrowseWnd == NULL)
{
return FALSE;
}
BrowseWnd->SetForegroundWindow();
for(i = 0; i < SendStr.GetLength(); i++)
{
SendKey(BrowseWnd, SendStr.GetAt(i));
}
return TRUE;
}
0165デフォルトの名無しさん
NGNG{
int vk;
vk = GetVirtualKeyCode(CharCode);
ActWnd->SendMessage(WM_KEYDOWN, vk, (long)m_Scan[0]);
ActWnd->SendMessage(WM_CHAR, CharCode, (long)m_Scan[0]);
ActWnd->SendMessage(WM_KEYUP, vk, (long)m_Scan[1]);
return 0;
}
int CDlg::GetVirtualKeyCode(TCHAR x)
{
if(x >= 'a' && x <= 'z')
x -= ('a' - 'A');
return((int)x);
}
正しく実行されれば、SendStrの内容の文字列が、
Yahoo!JAPANトップページの検索テキストボックスに挿入される筈です。
実行すると、CDlg::SendBrowserからCDlg::SendKey、CDlg::GetVirtualKeyCodeを
それぞれトレースするのですが、肝心のフォーカスが当たっているインプットボックスに
文字列がインサートされません。
WM_KEYDOWNとWM_CHAR、WM_KEYUPにより擬似的にそのキーを入力するように
しているのですが…。
現在フォーカスの当たっている部分の指定方法が違うのでしょうか?
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG知ることができますか?
0168165
NGNGBOOL CDlg::SendBrowser(CString SendStr)
{
CWnd* BrowseWnd;
int i;
if(SendStr.IsEmpty())
return FALSE;
BrowseWnd = FindWindow(NULL, TEXT("Yahoo! JAPAN - Microsoft Internet Explorer"));
if(BrowseWnd == NULL){
return FALSE;
}
BrowseWnd->SetForegroundWindow();
INPUT srINP[3];
srINP[0].type = INPUT_KEYBOARD;
srINP[0].ki.wVk = '0';
srINP[0].ki.dwFlags = 0;
srINP[1].type = INPUT_KEYBOARD;
srINP[1].ki.wVk = '1';
srINP[1].ki.dwFlags = 0;
srINP[2].type = INPUT_KEYBOARD;
srINP[2].ki.wVk = '2';
srINP[2].ki.dwFlags = 0;
for(i = 0; i < 3; i++){
SendInput(3, &srINP[i], sizeof(srINP));
}
return TRUE;
}
上のように書いてみましたが、SendInputでも送信されないようです。
クリップボードか何かを使い、インプットボックスに文字列の値が
一括して挿入できれば最良なのですが…。
0169デフォルトの名無しさん
NGNGCREATE_SUSPENDEDでAfxBeginThread
CWinThread::m_bAutoDeleteをFALSEに
CWinThread::m_hThreadがシグナル状態になるまでWaitForSingleObjectで待つ
スレッドオブジェクトをdeleteする
0170デフォルトの名無しさん
NGNG謝謝
0171165
NGNGSendInputを利用して書き換えました。
INPUT srINP[16];
for(i = 0; i < 16; i++){
srINP[i].type = INPUT_KEYBOARD;
srINP[i].ki.wVk = WORD(SendStr.GetAt(i));
srINP[i].ki.dwFlags = 0;
srINP[i].ki.time = 0;
SendInput(1, &srINP[i], sizeof(srINP));
}
このようにして、CString型のSendStrに格納された文字列を
一文字ずつSendInputにて出力するように記述したところ、成功しました。
…成功したのですが、1回目と2回目ではなぜか値が異なります。
SendStrの値
1254002369000541
一回目
1254002369000541 (問題なし)
二回目
1254023690541 (0が2個以上続くと、2個目以降が表示されない)
WORD()の型変換をchar()にしたり、外してみたりしましたが、改善されませんでした。
1回目に正常な出力が行われているので、何が原因になっているのか見当がつきません。
どなたか気付いた点がございましたら、ご教授下さい。
0172165
NGNGINPUT srINP[16];
for(i = 0; i < 16; i++){
//キーを押す
srINP[i].type = INPUT_KEYBOARD;
srINP[i].ki.wVk = WORD(SendStr.GetAt(i));
srINP[i].ki.dwFlags = 0;
srINP[i].ki.time = 0;
SendInput(1, &srINP[i], sizeof(srINP));
//キーを離す
srINP[i].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &srINP[i], sizeof(srINP));
}
単純に離すのを忘れていただけのようでした。
SendInputの情報がWebに殆ど載ってない…。
0173デフォルトの名無しさん
NGNG水平スライダーコントロールの値がうまく取得できないんです。
VC++6.0でMFCでやってんすけどググって調べたとおり
OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
から
int iPos = pScrollBar->GetScrollPos();
で値取得して
switch(nSBCode) {
で条件分岐してるんだけど
case SB_PAGELEFT:
case SB_PAGERIGHT:
のとき、つまりスライダーのつまみをドラッグせずにつまみの近辺をクリック
したときにiPosに入ってくる値が無茶苦茶なんですよ。他の条件の時は
いいみたいなんですけど。
ちなみに同じことをスクロールバーコントロールでやると思ったとおりの
動きになります。
誰か教えて下さい。おながいします。
0174デフォルトの名無しさん
NGNGCScrollBar*はCSliderCtrl*にキャストしないとダメでは?
CSliderCtrl* pSliderCtrl = (CSliderCtrl*)pScrollBar;
int iPos = pSliderCtrl->GetPos();
あと、SB_**ってのはTB_** (同じ値がdefineされてるけど)
0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG以下スルーでよろぴく
0177デフォルトの名無しさん
NGNGたくさんのところに助けを求めたほうが
解決が早いことに疑問を挟む余地はないじゃん
おまいらばか?
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG調べるべき範囲は非現実的だし、途中でやめて帰ってきた報告が誰の役に立つのかも疑問だ
結局、自分の個人的な好みでじたばた喚いてるがきんちょそのまんまやん
腐ってもム板の住人が恥を知れやまったく
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGスルーしとけばいいだろ。
いちいち報告してる奴の方がウザイ。
0182デフォルトの名無しさん
NGNGだから、それはオマエ個人のブックマークだろうがよwww
0183デフォルトの名無しさん
NGNGだから「こいつはマルチ(つまり関わるとDQNレスが返ってくる)なのでスルーしろ」と各スレの住人に報告されます。
0184デフォルトの名無しさん
NGNGマルチうさい
0185デフォルトの名無しさん
NGNG禿藁
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG逆切れと言うからには、自分が正だという前提があるらしいな。
誰がどこで何を聞こうが、それは個人の主権だぞ。
仮にあんたが科学的な統計調査を行っていてそこから得た相関係数に基づいて発言していても、
173という個人がこのあと無礼を働くと決めてかかるのはステレオタイプであり、
人格に対するそれを行う者こそ無礼者のレッテルを免れない。
と、ずいぶん買いかぶってやったが
おおかた某コミュニティの流行に乗って喜んでるだけの軽薄野郎だろw
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG2行目は読んだか?
あと俺は173じゃないぜ
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG・・・もともと定型句のみが骨子でハリボテが吹っ飛んだだけだが・・・
0193マイク ◆yrBrqfF1Ew
NGNG0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG0.1違う
0197デフォルトの名無しさん
NGNGどうすればいいの?
クラシックだとOnCtlColor()でCTLCOLOR_STATICの時、色を変えたら変わったんだけど..
ラジオボタンの絵の部分はスタイルに連動させたいんで、オーナードローは使えないし。
0198デフォルトの名無しさん
NGNGラジオボタンの文字を使わず、そこにStaticTextを貼り付ける。
イベント処理をどこまで真面目にやるかはお好みで。
0199デフォルトの名無しさん
NGNGプロジェクトのアプリケーションウィザードで
MDI、基本クラスをCFormViewクラスにしてFormViewダイアログに
ボタンを配置して、OwnerDrawをtrueにして
CAboutDialogにプライベートメンバを追加して、
オーバーライドしたOnInitDialogで
VERIFY(m_editRec.AutoLoad(IDC_REC, this));
としたのですが、FormViewである子ウインドウに
ボタンが描写されません。
どうしたらようでしょうか?
0200デフォルトの名無しさん
NGNGオーナードローなんだから、自分で描画処理を記述する必要があるんでしょ。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGオーナードローではなくて、CBitmapButtonでした。
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNGを利用してパケットを自作するプログラムをMFCで作りたいのですが、
このCBuildPacketクラスを利用するためにはどのように設定すればいいでしょうか?
コンパイルがうまくできなくて困っています。
0205204
NGNGhttp://www.codeguru.com/dbfiles/get_file/CBuildPacket.zip?id=6861&lbl=CBUILDPACKET_ZIP&ds=20040331
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGだから何?
0208デフォルトの名無しさん
NGNGどうしたらよいでしょうか?
0209デフォルトの名無しさん
NGNGOnDestroy()をオーバーライド
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG気のせいです
0212デフォルトの名無しさん
NGNGCChildFrmのデクストラクタで解放したのでいいのでしょうか?
0213デフォルトの名無しさん
NGNGCWndの関数のようですが、
MDIの子ウインドウなのでCMDIChildWndかCFrameWndに関係した関数だと思うのですが。
どうでしょうか?
0214デフォルトの名無しさん
NGNGMFCの継承図をよく見ましょう。
つーか、これだけヒントがあればMSDNでも解説サイトでも見つかるだろうに。
0215デフォルトの名無しさん
NGNGプロパティウインドウからでないとオーバーライドできないと思い込んでました。
アドバイスありがとうございます。
CMDIChildWndもCFrameWndもCWndから派生しているということですね。
0216デフォルトの名無しさん
NGNGどうすれば良いのでしょうか?
0217デフォルトの名無しさん
NGNGメッセージループじゃなくて?
0218デフォルトの名無しさん
NGNGコンソールか? afx.h
0219デフォルトの名無しさん
NGNG1 プログレスバーあり
2 途中キャンセル可能
3 その間アニメーションが動く
を実現しようとしてます
12まではどうにかできたんですが、3のやり方がいまいちわかりません
参考になるサイト等を教えてもらえませんか
ちなみに1,2は進捗表示用のダイアログを作って、
時間のかかる処理を別スレッドで起動、
スレッドから進捗ダイアログに進捗状況を送るようにしています
こういうやり方でいいんですかね
0220デフォルトの名無しさん
NGNG再生しているだけじゃないのか?そういうことではなくて?
0221デフォルトの名無しさん
NGNGCScrollViewから派生させたCGLChartViewをメインに使ってるのですが
やっぱり、CFormViewから派生させなきゃいけないの?
0222デフォルトの名無しさん
NGNG0: void CChildView::OnPaint()
1: {
2: CPaintDC dc(this); // 描画のデバイス コンテキスト
3:
4: // TODO : ここにメッセージ ハンドラ コードを追加します。
5:
6: // 夜空を表示する
7: CBrush NightBrush;
8: CBrush *pOldBrush;
9: NightBrush.CreateSolidBrush(RGB(0, 0, 128));
10: pOldBrush = dc.SelectObject(&NightBrush);
11: dc.Rectangle(0, 0, 400, 400);
12: dc.SelectObject(pOldBrush);
13: NightBrush.DeleteObject();
14: }
というコードが載っていて、解説によるとNightBrushオブジェクトを作成し、紺色のブラシとして初期化し
10行目でNightBrushをデバイス・コンテキストの「現在のブラシ」として選択してpOldBrushに以前のブラシの
ポインタを保存して、11行目で紺色を塗り、12行目で以前のブラシに戻す。とあるのですが10行目のようにすると
紺色になってしまった状態をpOldBrushに代入してしまうのではないのでしょうか?
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGそういう仕様になってるから大丈夫。
喩えて言えばこんなコード。
int setValue(int newValue)
{
int oldValue = getSystemValue();
setSystemValue(newValue);
return oldValue;
}
0225デフォルトの名無しさん
NGNG本来はこんな流れ
紺.CreateSolidBrush();
白 = dc.SelectObject(紺);
紺 = dc.SelectObject(白);
紺.DeleteObject();
紺 = を省略しているから
この流れが見えにくくなっている
入門書にあるまじき怠慢なコード
0226デフォルトの名無しさん
NGNGカード [] deck = new カード("全部"); // 配列の中にカードを全部生成
for (int n = 0;n < (deck.length - 1);m += 1) {
m = n 以上 deck.length 未満の乱数;
deck[m] と deck[n] を swap; // m == n の場合も気にせず実行。
}
※ deck を class として定義して、
swap を private なメソッド化としておいて、
shaffle を呼ぶようにすると綺麗になるかも。
693 名前:M.B. :04/11/06 09:53:09
【雑談】JavaっぽいけどJVMで走らず【ぬるぽ】
……狙いすぎたか。orz
0227デフォルトの名無しさん
NGNGそんなすっとこどっこいなコードの方が問題だろ。
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231222
NGNGふむふむ、別にきにしなくていいんですね。ありがとうございました
0232デフォルトの名無しさん
NGNGよっぽど悔しかったんだね (プププ
まあせいぜいマルチ叩きにがんばれや
1人も逃すなよ、どうやって検出するのかは謎だがw
0233デフォルトの名無しさん
NGNGそのようなコントロールをしりませんか?
0234デフォルトの名無しさん
NGNG無理矢理やるとすればCListCtrlでグリッドラインを表示するとか
波形表示とか言ってる時点で自分で描くしかないビューのような気がする
0235デフォルトの名無しさん
NGNG少しきついかもしれません。
よく画像編集ソフトや波形編集そふとで画面上方にルーラーがついているのを
見るのですが、あれはActiveXコントロールなのですか?
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG問題は描いた画面を保存(jpg,tif,bmpなど)したいのですが、、
方法をご存知の方、お教えくださいm(__)m
また複数描いて動画(aviなど)にもしたいのです。
環境はVC.net2003です
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG何か設定が必要なのでしょうか?
そのままではクリックしてもOnNotifyがコールされないのですが、
どなたか教えてください
0243デフォルトの名無しさん
NGNGListCtrlをクラスにして、LVN_CLUMNCLICKメッセージからイベント関数を作る。
0244本田
NGNGClasses to read and write BMP, JPEG and JPEG 2000
By Tony Lin
http://www.cis.pku.edu.cn/teacher/vision/lintong/webpages/The%20Code%20Project%20-%20Classes%20to%20read%20and%20write%20BMP,%20JPEG%20and%20JPEG%202000%20-%20Bitmaps%20&%20Palettes.htm
0245デフォルトの名無しさん
NGNG0246本田
NGNG>>245
>MFCでCImage使えなかったっけ。
使えるみたい。
CImage クラス
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/vcrefCImage.asp
0247デフォルトの名無しさん
NGNG0248本田
NGNGGDI+は必須では無いみたい。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/vcconCImageLimitationsWithEarlierOperatingSystems.asp
0249デフォルトの名無しさん
NGNGOnPaint()でBitBltするためにCPaintDCを使ってるんですが、
こやつはコンストラクタでBeginPaintを呼び出し無効領域を
クリップしてしまいます。
無効領域の有無によらず常に全領域をクリップするにはどう
すればいいでしょうか?
ちなみに、CDC::IntersectClipRectではダメでした。
0250デフォルトの名無しさん
NGNGCClientDC
0251249
NGNG�d
でも、OnPaint内だとCClientDC, CWindowDCはダメなんですよ。
(WM_PAINTが再発行されてループする感じ)
どうも、this->GetDC()したらダメみたい。
ちなみに環境は
W2K+VC6で、モードレスダイアログです。
0252デフォルトの名無しさん
NGNGCPaintDCはそのままで、追加でCClientDCした?
CPaintDC(BeginPaint, EndPaint)が無効領域をクリアしてるから
消したら駄目よ。
0253249
NGNGできました!
CPaintDC dc_dummy(this); //未使用
CClientDC dc(this);
のようにしたんですが、順番も関係なくインスタンスがあれば良いようです。
後学のために教えて頂きたいんですが、「〜が無効領域をクリアしてるから」は
「セットしてるから」では無くていいんですよね?今までずっとBeginPaintが
無効領域をセットしてる、と考えていたもので。
0254デフォルトの名無しさん
NGNGCStringの使い方についてお聞きしたいのですが
CString strText;
::GetWindowText(hwnd, strText.GetBuffer(_MAX_PATH), _MAX_PATH);
strText.ReleaseBuffer();
このような使い方は妥当でしょうか?
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG>>254
良いんじゃないの
でもCWndのGetWindowText使えばGetBufferしなくて良いよ
0257デフォルトの名無しさん
NGNG無効領域=再描画する必要がある領域。
他のウィンドウで隠された部分が現れたり、InvalidateRectが呼ばれると追加される。
無効領域があるとシステムはWM_PAINTを発行する。
0258デフォルトの名無しさん
NGNG問題ないみたいで安心しました。
ありがとうございました。
0259デフォルトの名無しさん
NGNG::GetWindowText(hwnd, strText.GetBuffer(_MAX_PATH), _MAX_PATH + 1);
0260デフォルトの名無しさん
NGNG...
0261デフォルトの名無しさん
NGNGrebarのバンドにIEやエクスプローラのような、コンボボックスと移動ボタンがあるアドレスバーを作ろうとしています。
ダイアログバーにコンボボックスを乗せたのですが、このままではコンボボックスがバンドの横幅に合わせてリサイズされません。
コンボボックスの幅を自動的にバンドの長さに合わせるようにするには、どのようにすればいいでしょうか?
バンドにそのままコンボボックスを乗せればうまく行くのですが・・それでは移動ボタンが同じバンドに置けなくなってしまいます。
0262デフォルトの名無しさん
NGNGRBN_AUTOSIZEとかRBN_LAYOUTCHANGEDとかをキャッチして
自分でコンボボックスのサイズ変更をすればいいんじゃなかろうか。
0263デフォルトの名無しさん
NGNGレスありがとうございます。
やっぱり自分で処理するしか方法はないみたいですね・・・
0264デフォルトの名無しさん
NGNGどのようにすればいいかわかりません
ダイアログ自体に対してのドロップはWM_DROPFILESで大丈夫でしたが、
ピクチャボックスなどのコントロールに対してドロップした場合には、このメッセージは送られてきませんでした。
どうしたらいいか教えていただけないでしょうか?
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNGPreTranslateMessage ドロップ あたりでぐぐれば?
0267デフォルトの名無しさん
NGNG子にWM_DROPFILESが飛んでこない。
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271264
NGNG0272デフォルトの名無しさん
NGNGifstreamなどのopenではファイル名をchar*型で指定します
ところがCString→char*変換が見当たりません。
現在はCString→std::string→char* (c_str())としています
何かよりよい方法はないでしょうか?
0273デフォルトの名無しさん
NGNGCString オブジェクトは、連結操作で拡張できます。
CString オブジェクトは、"値を重視" します。つまり、CString を文字列へのポインタとして考えるのではなく、実際の文字列として考えます。
関数の引数 const char* や LPCTSTR の代わりに自由に CString を使うことができます。
変換演算子を使って、読み込み専用の文字配列 (C スタイルの文字列) として、文字列内の文字に直接アクセスできます。
0274デフォルトの名無しさん
NGNGありがとうございます
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG自分で調べろ
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGだな
0279デフォルトの名無しさん
NGNG自分で調べろ
0280デフォルトの名無しさん
NGNGお前が>>275の為に必死こいて調べろ
0281デフォルトの名無しさん
NGNG調べなくても知ってる
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNG0285272
NGNGconst char *_Filename,
ios_base::openmode _Mode
);
0286デフォルトの名無しさん
NGNG////////////////////////
class test
{
int someValue
test();
};
test::test()
{
someValue=0;
}
////////////////////
つまりクラスの定義と実装をひとつのファイル(test.h)に書くとコンパイルエラーで、
二つのファイル(test.h,test.cpp)に分けるとコンパイルできます。
どうもMFCを使うとtest.hだけではコンパイルできなくて、コンソールアプリではコンパイル可能です
なぜかご存知のかた、ご教授ください。
0287286
NGNG↑
訂正します
0288デフォルトの名無しさん
NGNGGetBufferとReleaseBufferでいいんじゃないの
0289デフォルトの名無しさん
NGNG{
int someValue
test() { someValue = 0; }
};
0290デフォルトの名無しさん
NGNGそもそもなんで *.h に定義も突っ込もうとしてるんでしょうか?
0291286
NGNGその方が見通しがよく、きれいな設計かと思ったのですが、、、
有名なTNT(http://math.nist.gov/tnt/index.html)はヘッダーに定義も書いてあります
はやり*.hと*.cppは分けたほうかいいのでしょうか?
0292286
NGNG実はTNT(http://math.nist.gov/tnt/index.html)をまねてみました
TNTはヘッダーに宣言と定義を書いていて、非常に使いやすいです
ただやはり*.hと*.cppは分けるべきでしょうか?
0293286
NGNG申し訳ありません。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGTNTが良いと思ったんならなんでTNTと同じようにクラス内で定義しないんだ。
TNTと違う書き方してエラーが出ますとか言われても
そら違う書き方してるんだから当たり前だろとしか答えられん。
0296デフォルトの名無しさん
NGNG宣言は何回あっても構わないですが、定義は一度だけです。
*.h には宣言を、*.cpp には定義を記述します。
テンプレート周りはいろんな理由で *.h にまとめて書く場合があります。
MFCスレで聞くよりは C++ スレかくだ質で聞く方が良いのでは。
0297デフォルトの名無しさん
NGNGinline test::test()
{
...
}
まぁ上のコーディングだと意味合いが変わってくるけど、
その辺は自分で調べませう
0298デフォルトの名無しさん
NGNGコラ、もったいぶらずに教えろや。カスが。
0299286
NGNGやっぱり*hと*cppに分けて書くことにします
ありがとうございました
↑は私ではありません
0300デフォルトの名無しさん
NGNGUPDATE_COMMAND_UIでpCmdUI->SetCheck(TRUE);
としてるのですがメニューにチェックがつきません。
メニューはC〜Dlgの既存クラスを選択しました。
どのようにすればチェックが付けられますか?
0301デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG消えろ。
0306デフォルトの名無しさん
NGNGどうしたら動いてくれるのでしょうか?
0307306
NGNG0308telnes
NGNGTCPサーバの作成パターンをいくつか考えたのでどれが安定して動作しそうかなど意見を下さい。
▼条件と環境
・作成したTCPサーバ、TCPクライアントは24時間あげっぱなし
・TCPクライアントとコネクション確立しっぱなし
・接続、切断はボタンをダイアログに実装して行うかコマンドプロンプトから入力してできるようにする。
・非同期通信に対応する(selectかWSAAsyncSelectを使用する)
・実装形式は自由(COM、EXE、DLLなんでもOK)
・MFCを使用しなくてはならない
・Winsock2.0
・OSはWindows XP
▼選んでください
(1) TCPサーバをMFC AppWizardで作成する(起動はEXEダブクリ、インターフェースはダイアログ)
(2) TCPサーバをConsole Applicationで作成する(起動はEXEダブクリ、インターフェースもコマンドライン)
(3) TCPサーバをATLプロジェクトで作成する(サービスとして動作、OS起動時に自動実行)
(4) それ以外(作り方を教えてください)
0309デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
マルチすなや。
0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGなら(1)でいいじゃない。
0315デフォルトの名無しさん
NGNG向こうで拾ってるからこっちはスルーで。
0317デフォルトの名無しさん
NGNG本人なら向こうのフォローをお忘れなく。
つーか、こっちのフォローより先にするべきっしょや。
0318telnes
NGNGhttp://www.cty-net.ne.jp/~taitiro/imgboard/data/img20040825044524.jpg
0319デフォルトの名無しさん
NGNGエディットボックスでドラッグ&ドロップをしたいと思い
エディットボックスをサブクラス化しました。
ttp://www.ne.jp/asahi/hishidama/home/tech/vcpp/subclsi.html
上記方法でうまくいきましたが、エディットボックスを
メンバ変数として割り当てた場合、SubclassDlgItemの時に
Debug Assertion Feiledエラーが発生してしまいました。
メンバ変数として割り当てているコントロールではサブクラス化
はできないのでしょうか?
0320デフォルトの名無しさん
NGNGメンバ変数の型をCMyEditにするだけで済むが。
0321デフォルトの名無しさん
NGNGなんだと。
0322デフォルトの名無しさん
NGNGそれはウィザード使ってDDX利用した場合だろ。
その例はDDX使ってねーから。
0323デフォルトの名無しさん
NGNG独り言は楽しいかい?
0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNG>318はVirusなど。触った人はよく手を洗うように。
0326デフォルトの名無しさん
NGNGとりあえずタブを作成してみたのですがMDIの子ウィンドウの下に表示されてしまうのです。
もし解決方法ご存じの方が居たら是非教えて下さい。
0327デフォルトの名無しさん
NGNGプロジェクトの追加でヘッダーとcppを自分で作る以外に方法はないでしょうか?
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGタブをコントロールバーにして表示する。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGでもVCのバージョンも言わないやつには教えてあーげない。
0332デフォルトの名無しさん
NGNG6デス6デス6デスVC++6デス
オスエテオスエテ
ミステナイデ
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG出来ました。
どうも有り難う御座いました。
0336デフォルトの名無しさん
NGNGクラスビューで右クリックしてクラスの追加
クラスの種類をGenericクラス
に設定
0337デフォルトの名無しさん
NGNGありがとうございます。(≧▽≦)
0338デフォルトの名無しさん
NGNGその際、doModal()で子ウィンドウを生成し、そこのエディットボックスで
数値入力をしています。 このエディットボックスにスピンコントロールを
つけたのですが、挙動がおかしくなってしまいます。
通常、setRange()やsetPos()による初期設定を行なうと思いますが、
メインウィンドウのOnInitDialog()で行なう初期化は、子ウィンドウの場合は
どこで行なえばよいのでしょうか? 子ウィンドウのコンストラクタやdoModal
呼び出し元での設定を試みましたが、どれもだめでした。
よろしくお願いします。
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNGSpinButtonのスタイルとか
0341デフォルトの名無しさん
NGNGばいらすばすたー
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNGhdc = BeginPaint(hWnd, &ps);
という行は
1.GDI HDC BeginPaint(HWND, LPPAINTSTRUCT);
2.MFC CDC* BeginPaint(LPPAINTSTRUCT);
のうち,2と判断され,コンパイルできません
どうしたら1と判断されるでしょうか?
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNGhdc = BeginPaint(hWnd, &ps);
という行は
1.GDI HDC BeginPaint(HWND, LPPAINTSTRUCT);
2.MFC CDC* BeginPaint(LPPAINTSTRUCT);
のうち,2と判断され,コンパイルできません
どうしたら1と判断されるでしょうか?
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGC++ の多重定義解決は1つのスコープしか見ないんだよ
0350デフォルトの名無しさん
NGNGできました!!!!!!
ありがとうございます
ヘッダーをインクルードする順番などをいじってもできなかったので,,
0351338
NGNGタブオーダーも正しく設定しました。
メインのウィンドウで正常に動作しているスピンコントロールがあるので、
それと同様のプロパティにしています。
おかしな挙動というのは、例えば m_spin.SetPos(10) としても
1回目だけ値が0になり、次からは11として動くというものです。
ちなみに、100ずつ増やす動作をさせているので、WM_VSCROLLを
処理しています。
>>339
はい、そのとおりです。 その場合どうなるのでしょうか?
0352デフォルトの名無しさん
NGNGOnDeltaposSpinHOGEHOGE()を生成して
(SpinButtonのUDN_DELTAPOS NOTIFYハンドラ)
//TODO: ・・・
pNMUpDown->iDelta *= 100;
とすると自動的に100ステップになる。
WM_VSCROLLの処理のしかたわからん。
0353338
NGNGこの方法は知りませんでした。ありがとうございます。
しかし、子ウィンドウではだめでした。
子ウィンドウでの SetRange()やSetPos() を行なうタイミングが分かりません。
子ウィンドウのコンストラクタではやはりだめなんですよね?
0354デフォルトの名無しさん
NGNG親でやってるように子でもOnInitに書けば良いだろ
0355デフォルトの名無しさん
NGNG0356338
NGNGダイアログのダブルクリックで生成されたクラスのコードに
OnInitがなかったので、それを自分で書くという発想がでませんでした。
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNGいいこと教えちゃう。MSDNでScreenToClientのページを見ると、
下のほうにMapWindowPointsへのリンクがある。
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_screentoclient.asp
0359デフォルトの名無しさん
NGNG気づかなかった・・・すみませんでした
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG→それはチェックボックス使うべき。
0362デフォルトの名無しさん
NGNGそーゆーもん。ラジオボタンのグループに一つの変数を割り当てると考えればいい。
ボタン0を選択すると変数=0
ボタン1を選択すると変数=1
ボタン2を選択すると変数=2
という感じ。
0363デフォルトの名無しさん
NGNGCReBar使ってるんですけどReBarに設定した各コントロールの位置をどうやって保存・読み込みするのか分かりません。
GetReBarCtrl().GetRect()かとも思いましたが設定する関数が見あたらないし……。
検索しても見つかりませんでした。
教えて下さい、お願いします。
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNG後端が切れてしまう現象で悩んでいます。
ドロップダウン属性をつけた以外のボタンのサイズも勝手に一回り大きく
なっているのが原因のようです・・・。CToolBar::SetSizeでそのサイズに変更すると、
切れなくなるのですが、ボタンが重なったり等表示がおかしくなってしまいます。
識者の方お助けください。
環境はVC7.1+XPです。
0367デフォルトの名無しさん
NGNGフォント、文字色、背景色を変更できるようにしています。
現在、CStaticからの派生クラスCStaticExのコンストラクタで、
HFONT hFont = (HFONT)::GetStockObject(DEFAULT_GUI_FONT);
::GetObject(hFont, sizeof(LOGFONT), &m_LogFont);
のようにしてLOGFONT構造体を初期化しているのですが、
これを親ダイアログのフォントを引き継いでLOGFONT構造体を
初期化するにはどうしたらいいのでしょうか?
初歩的は質問だと思いますが、宜しくお願いします。
0368367
NGNGGetParent()->GetFont()->GetLogFont(&m_LogFont);
何がいけないのでしょうか?
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGダイアログテンプレートにあるフォントは、各コントロールにはセットされているが
ダイアログ自身にはセットされない。
なので、
1. ダイアログテンプレートを読む
2. てきとーな兄弟からフォントをゲットしてくる
くらいしか無いのではなかろうか
0371デフォルトの名無しさん
NGNG各APIの戻値を確認すれば、ここに書き込んでいる時間内に
原因がわかるだろうに。
0372367
NGNGなるほど、そういうことなのですか。
ありがとうございました。 m(_ _)m
>1. ダイアログテンプレートを読む
ちなみにこれはどのようにすればよいのでしょうか?
0373367
NGNG肝心のフォント情報へアクセスできませんでした…(;_;)
HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDD_TEST_DLG), RT_DIALOG);
HRSRC hResource = ::FindResource(hInst, MAKEINTRESOURCE(IDD_TEST_DLG), RT_DIALOG);
HGLOBAL hDialogTemplate = LoadResource(hInst, hResource);
if (hDialogTemplate != NULL) {
LPCDLGTEMPLATE lpDialogTemplate = (LPCDLGTEMPLATE)LockResource(hDialogTemplate);
// DLGTEMPLATE構造体にはフォント名やサイズ情報が無いみたい…
}
ダイアログテンプレートからフォント情報を取得する方法をご存知の方、
宜しくお願いします。
0374デフォルトの名無しさん
NGNG0375367
NGNGネットで調べたところ、LPCDLGTEMPLATE以降の構造解説があったので
参考にしたところ、無事フォント情報を取得することができました。
>374
後ほど教えていただいたソースファイルも覗いてみたいと思います。
レス下さった方々、本当にありがとうございました。
0376367
NGNGCDialogTemplateクラスを試してみました。
す・すばらしいです。
苦労して同等のソースを書いたことに思わず笑ってしまいました。
CDialogTemplateクラスを使った方法で行きたいと思います。
ありがとうございました。
0377デフォルトの名無しさん
NGNGいう意味だったんだが。
非公開クラスはMFCの都合で使われている物なので、MFCのバージョンが変わると
無くなる可能性もあることに注意しなよ。
って、MFC自体が(ry
0378デフォルトの名無しさん
NGNGあるんでしょうか?
存知の方、宜しくお願いします。
0379デフォルトの名無しさん
NGNG0380378
NGNGその方法をご教授願えないでしょうか。
お願いいたします。
0381デフォルトの名無しさん
NGNGWM_CREATEでGetWindowTextを呼んでも上手くいきません。
WM_CREATEはどうやらタイミング的にタイトルが設定される前のようなのですが、どのタイミングでやれば上手くいくのでしょうか?
バージョンは.netです。
0382デフォルトの名無しさん
NGNGなんでタイトルのテキストを取得したいの?
0383デフォルトの名無しさん
NGNGCWnd::PreCreateWindow の CREATESTRUCT.lpszName で取得できるんでは?
0384デフォルトの名無しさん
NGNGそんなもん人の勝手
0385デフォルトの名無しさん
NGNGタブのエディタ作ってるので。
対応するタブに表示する文字をウィンドウと同じにしたいんです。
タイトルには開いたファイル名が表示されるので……。
>>383
試してみましたが駄目でした。
PreCreateWindow時点でのlpszNameの中身は空です。
これはMDIで子ウィンドウに表示されるファイル名は生成時に引数として渡されているのではなく、
後付でSetWindowText等が使われているという事何でしょうかね……?
タイトルの取得するのではなくOnOpenDocument等から持ってきた方が楽でしょうか。
もし何かアイデアややり方ご存じの方居たら、是非お願いします。
0386デフォルトの名無しさん
NGNGCDocument::GetTitle()は?
0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNGこの場合のDefWindowProcとは基底クラスであるCMDIChildWndのOnCreate呼び出し、という事でしょうか?
念のため自分でOnCreate内でDefWindowProcをやってみましたが、その後に処理しても結果は同じでした。タイトルは空です。
>>386で言われているようにドキュメントの方では捕まえられるのでとりあえずはこれで行こうと思います。
ビューの方の初期化を別でやっているのであまり美しいとは言えないのですが……。
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG> ・一般的に親ダイアログにフォントは設定されていない
> ダイアログテンプレートにあるフォントは、各コントロールにはセットされているが
> ダイアログ自身にはセットされない。
ダイアログはフォントのオーナー、WM_NCDESTROYでフォントを削除する。
フォントはWM_GETFONTで取得可。
0391デフォルトの名無しさん
NGNG::AfxWinInit()をコールすれば動くんかなあ?
0392デフォルトの名無しさん
NGNGサービスの場合、初期化関数の呼び出し自体もさることながらそれを呼び出す場所も重要。
main()、WinMain()の最初で呼んでも無効なものもあるので注意汁。
0393デフォルトの名無しさん
NGNG試してみたら?
CStringなら私も使ってるからそのまま使えるはず。
#適当なインクルードとリンクをした上で。
CWinThread系は使ってないので悪しからず。
0394デフォルトの名無しさん
NGNGたとえばOnMouseMove(UINT nFlag, CPoint point)
とかありますが,
この場合,このハンドラが呼び出される原因となった
WM_MOUSEMOVEメッセージ自体を見たい場合は
どのようにすればよいのでしょうか?
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGWindowProcも引数がUINTで
ただのメッセージの識別子をとるだけですが
MSG構造体の形でメッセージを見たい場合はどうすればいいのでしょうか?
やりたいことを言ってしまうと
MSG構造体のtimeパラメータで
メッセージのポストされた時間を見たいのです
0397デフォルトの名無しさん
NGNG関数の頭でGetMessageTimeを呼ぶか、それが使えなければGetTickCountを呼ぶのはどう?
0398デフォルトの名無しさん
NGNGpMsg
処理するメッセージを含む MSG 構造体へのポインタ。
解説
Windows 関数TranslateMessage やDispatchMessage にディスパッチされる前に、ウィンドウ メッセージをフィルタ処理するために、この関数をオーバーライドします。
0399デフォルトの名無しさん
NGNGおこんばんは、お願いいたします。
ステップ実行時、「ほにゃららDllが見つかりません」と言われます。
とあるexeから、自分の作っているdllを呼ぶ処理です。
プロジェクトの「設定」で、とあるexeを指定して、
そのexeでファイル選択をすると、
自分のdllのソースのブレークポイントで止まってくれる予定なのですが。。。
プロジェクトの「設定」のどこかに、
関連するdllを列挙する必要って、ありましたっけ?
何が設定不足なのでしょうか?
よろしくお願いいたします。
0401デフォルトの名無しさん
NGNGそのexeがどこにDLLがあるかわからないってことです。
exeの実行フォルダにDLLをコピーすればとりあえず動くかと。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGMFC拡張DLLにてCObjectから派生させたクラスをエクスポートしてます。
DEFファイルは使わずに、AFX_EXT_CLASSでクラス全部をエクスポート
してます。
WinXPProだと、AfxLoadLibrary()でHINSTANCEもらえるんですけど、
Win2KProだと、Entrypoint not foundとかって怒られて蹴られてしまう
んです。
もちろん、実装したクラス定義とクラスメソッドも対比させて見回した
んですけど足りないモノがないようで、困ってます。
こういう現象の問題として何が考えられるでしょうか?
0404デフォルトの名無しさん
NGNG2k上で。
0405デフォルトの名無しさん
NGNG解決しますた
PlatformSDKの関数で2k非対応なものがコッソリ...
VC6を2Kに入れて発覚.ちょっとブルー入りましたが
MSに一問一答\29400円也を払わずに済みました
0406デフォルトの名無しさん
NGNGスクリーンのデバイスコンテキストを取得し,
デスクトップ上に落書きをしたのですが,
この落書きをクリアするなにか良い方法はあるでしょうか?
スクリーン全体を再描画したいのです
0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNGとりあえず画面イメージを4倍角でテスト印刷しようと思い
下記のようにしてみたのですが、にじんだイメージの印刷しかできません。
(貼り付けるソースが長いとエラーになったので、主要部分のみ)
CClientDC dc(this);
CDC memDC;
CBitmap memBmp;
CRect rect;
GetClientRect(rect);
memDC.CreateCompatibleDC(&dc);
memBmp.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
memDC.SelectObject(&memBmp);
memDC.BitBlt(0, 0, rect.Width(), rect.Height(), &dc, 0, 0, SRCCOPY);
〜中略〜
CDC *pdcDlg = GetDC();
dcPrint.StartDoc(&di);
dcPrint.StartPage();
if (!dcPrint.StretchBlt(0, 0, rect.Width() * 2, rect.Height() * 2, &memDC, 0, 0, rect.Width(), rect.Height(), SRCCOPY)) {
dcPrint.TextOut(0, 0, "StretchBlt() error");
}
dcPrint.EndPage();
dcPrint.EndDoc();
dcPrint.Detach();
画面イメージの印刷をするには、どのようにすればいいのでしょうか?
宜しくお願いします。
0409408
NGNG用紙を節約して、AcrobatでPDFで出力した結果、にじんだ印刷になっていたのですが、
なんと印字品質の設定が問題だったようです…
大変お騒がせしました。 m(_ _)m
0410デフォルトの名無しさん
NGNG内部的な変数が変わらないとかバーの位置が変わらないとかではなくて、クリックしても反応しないと言った感じです。
どなたか治す方法が分かる方いらっしゃいましたら、教えていただけないでしょうか?
0411デフォルトの名無しさん
NGNGメッセージハンドラは?
0413デフォルトの名無しさん
NGNGエラーが発生してうまくいきません。
インクルード文をどこに追加すればいいのでしょうか?
教えてください。お願いします。
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG昔同じことで困ったことがあるから助けてみる。
スレッドクラスのヘッダにもビューのヘッダにも互いを include する。
その上でビューのヘッダに
class スレッドクラス;
class ビュークラス{
0417デフォルトの名無しさん
NGNGclass ビュークラス{
ビューのメンバの定義
};
と言った形で書く。
詳しくは「クラス」「前方参照」とかでググるヨロシ。
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNGApp.CreateDispatch()を行うと失敗してしまいます。
OLEオートメーションのサーバオブジェクト作成って
ワーカースレッドからできないのでしょうか?
何かヒントでもいいのでご存知の方教えてください。お願いします。
・ビルド出力にはエラー警告は出ていません。
・VC++.NET2003、WinXP、MFCアプリ(ダイアログ)
0420デフォルトの名無しさん
NGNGワーカスレッドでAfxWinApp()は使えないけど、ちゃんとCWinAppのポインタは取れてる?
0421デフォルトの名無しさん
NGNGMFCN40D.dllってどこで手に入る?
0422デフォルトの名無しさん
NGNGCWinApp* pApp= AfxGetApp();
でワーカスレッド内でポインタはとれましたが
何かすべきことがあるのでしょうか?
・AfxOleInit()はInitInstance(メインスレッド)でやっています。
0423デフォルトの名無しさん
NGNG_beginthread() → AfxBeginThread()
0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG0426410
NGNG410のスクロールバーなのですが、まだ解決できません。
どなたかわかる方いらっしゃいませんか?
0427デフォルトの名無しさん
NGNG多分、Focusが合ってないから。Dialog中のControlの場合は、GotoDlgCtrl。
それ以外の場合はSetFocusで合わせれば良いかと。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG細かく柔らかな下地クリームか。
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGワロタ
0438デフォルトの名無しさん
NGNG作成したSDKのプログラムをMFCに変更しなさい」という課題が
出されましたが、今までMFCを習った事がなく(前回の授業一回
のみ)検索していたのですが、わかりやすいサイトを見つける事
が出来ませんでした。「猫でもわかる〜」も参照してみたのです
が、途中で終わってしまっているようです。「SDKではこう記述
するところはMFCではこのように書く」といったような説明がさ
れているサイトがありましたら、どうかご教授ください。
それか直接教えていただけるようでしたら、課題のSDKのプログラム
(簡単な描画プログラム)をUpします。
0439デフォルトの名無しさん
NGNG正直、やっても意味の無い課題だな。
0440デフォルトの名無しさん
NGNG・MFCアプリケーション(SDI)をウィザードに従って作成。
・ViewクラスのOnDraw(あるいはOnPaint)にその描画プログラムでの描画部を実装。
だけで済むかと。
0441デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGLoadImage() から ビットマップハンドルを得て、
それから GetObject() でビットマップのヘッダー情報を
得ようとしています。(下のようなカンジです。)
HBITMAP hBitmap;
hBitmap = (HBITMAP)LoadImage( 0, lpFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
BITMAP bitmap;
GetObject( hBitmap, sizeof( BITMAP ), &bitmap );
ここで、256色ビットマップを食わせても、
bitmap.bmBitsPixel の値が 32 となってしまいます。
この理由がわかる方、ご教授お願いします。
0445デフォルトの名無しさん
NGNGで?
0446デフォルトの名無しさん
NGNG0448446
NGNG0451デフォルトの名無しさん
NGNGSetWindowPos(&wndTopMost, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE);
とやっても、ちらちらと映るだけでうまくいきません。
どのようにすればよいのでしょうか?
0452デフォルトの名無しさん
NGNGCScroolViewから派生させたクラスでWM_MOUSEWHEELを拾おうと思ってます。が、
スクロールバーが出てくるまではオーバーライドしたOnMouseWheelできちんと
拾えるのに、スクロールバーが出てくるとPreTranslateMessageですら拾えなく
なってしまいます。CMainFrameでも拾えません。ホイールを回すと勝手に
スクロールが実現されている状態です。WM_VSCROLLなどが来ているのは
確認できています。
環境によってはCScroolViewのスクロールが上手くいかないと聞くので自前で
スクロールさせようと試みているのですが、結局のところどこにWM_MOUSEWHEELが
拾われているのかさっぱり分からない状態です。CSplitterWndでウィンドウ分割
しているのが少々怪しいと踏んでいるのですが、勘止まりです。
Spy++で「すべてのウィンドウ」を対象にしてみると、CViewから派生させたウィンドウのみ
WM_MOUSEWHEELが発生しているようでした。他にCListView、CTreeViewから派生させた
ウィンドウなどではCScroolViewから派生させたクラスと同様WM_MOUSEWHEELが発生
している様子はありません。なお、VisualC++のエディタやアウトプットでやってみても
同じようです(Spy++のメッセージ監視ウィンドウにWM_MOUSEWHEELが出ない)。
どこにWM_MOUSEWHEELが拾われているのか調べる上手い方法はないでしょうか?
0453デフォルトの名無しさん
NGNG考えられることとして
・_WIN32_WINNTや_WIN32_WINDOWSの定義
(現象から言ってこれは無いと思うが念のため)
・対象ウィンドウにフォーカスが当たっていない。
・マウスドライバ(ユーティリティソフト等も含む)が勝手にフックしている。
(WM_MOUSEWHEELを自動的にWM_VSCROLLやWM_HSCROLLに変換してしまっている)
0454デフォルトの名無しさん
NGNGマウスドライバの設定を「Office準拠」とやらにしてみたら拾えるようになりました。ありがとうございます。
ちなみに、elecomの
http://www2.elecom.co.jp/products/M-PGUP2RGNN.html
このマウスでした。
実装ではオプションでホイールの設定を出来るようにした上で、「変更が反映されない場合はコントロール
パネルのマウスから云々…」とでもするしかないですかね。
0455453
NGNGそれか、アプリごとに設定を切替可能なドライバであれば、
ユーザーにそのように設定してもらうとか
それと、ELECOMホイールユーティリティだとポインタの下にあるウィンドウに
ホイールメッセージが届きますが、MSDNに書いてある通り
本来はフォーカスが当たっていないウィンドウには届きません。
今は、この機能を実装している他社ユーティリティもありますが、
その辺も注意が必要。
ついでに
そのようなユーティリティは他社マウスでも使える場合があります。
うちのはMITSUMIマウスでELECOMのユーティリティ
0456デフォルトの名無しさん
NGNG実行中のデータを逐次表示させようとスレッドのなかで
GetDlgItem()関数でピクチャーコントロールのポインタを取得しようとしているのですが
上手くいきません。
CWnd* h = (CWnd*)GetDlgItem(IDD_WAITQSIM_DIALOG,IDC_GRAPH);
こう書くと「1 番目の引数を 'const int' から 'struct HWND__ *' に変換できません。」
と言われます
CWnd* h = (CWnd*)GetDlgItem((HWND)IDD_WAITQSIM_DIALOG,IDC_GRAPH);
と書いたり
CWnd* h = (CWnd*)GetDlgItem((HWND__ *)IDD_WAITQSIM_DIALOG,IDC_GRAPH);
と書いたりするとコンパイルはビルドは上手くいくのですが、
実行中にポインタが全然違うところを指しているというような類のエラーが出ます。
GetDlgItem()の第一引数の渡し方が悪いようですが、どうすれば正しいのか分りません。
ダイアログボックスのハンドルはどうやって渡せばいいのでしょうか。
環境は[VC++ 6.0(MFCダイアログベースアプリケーション) OS:Win2000]です。
0457デフォルトの名無しさん
NGNGダイアログクラスのメンバ関数版のGetDlgItem()を使えば引き数はIDC_GRAPHのみ。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG宿題スレで、C++の基本を勉強しろと言われてなかったか?
0461デフォルトの名無しさん
NGNGCWnd* ptr = (CWnd *) MsObjPtr;
CEdit* h = (CEdit*)ptr->GetDlgItem(IDC_GRAPH);
CDC* pDC=h->GetDC();
で上手くいきました
0462デフォルトの名無しさん
NGNGお前が言ったんだろ
わざわざ粘着して来るなよ
キモイ
0463デフォルトの名無しさん
NGNGCHtmlViewつかってとりあえずほかのところは作ったんですが
Proxyをこのブラウザを使ったときだけはさみたいのですが
(インターネットオプションで設定〜、ではなく。)
ぐぐってもいまいちどうしたらいいかちゃんとのってるところが見つかりません
どうしたらいいか、あるいは解説サイトなどを、教えていただきたい。
よろしくおねがいします。
0464デフォルトの名無しさん
NGNGなんでCEdit*にするの?
0465デフォルトの名無しさん
NGNGInternetSetOption
0467デフォルトの名無しさん
NGNGttp://www.physci.org/codes/tame/screenshot/landscape/table1.gif
方法ありますか?
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG俺の場合タブが階層っぽくなってる方に興味があるけど
それっぽい解説が載ってるページがあったら教えてくだちい。
0470デフォルトの名無しさん
NGNG467はWindows上でこれを実現したいといっているのかも知れないけど。
0471デフォルトの名無しさん
NGNGラベルの編集が可能なので、そのときのオーナードローで編集位置をあたかもセルであるかの如く見せかければよい。
CodeGuruに色々応用例がある。
#が、多機能すぎて使いづらいか表示がおかしくなるかのどちらかのものが多い。
>>469
直接知っているわけではないが、画像に書かれているキーワードで検索してみたら?
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNG正規品ならヘルプのユーザーズガイドに書いてあるはずだけど
0474デフォルトの名無しさん
NGNG入力はそれでOKだけれど、その、多段階になってるヘッダが難しいと思われ。
つか、出来るのか?これ。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNGメンドクセ
0477デフォルトの名無しさん
NGNG(そのダイアログには、ボタンが一つあります)
class CMyDialog : public CDialog
{
DECLARE_DYNAMIC(CMyDialog)
public:
CMyDialog(CWnd* pParent = NULL); // 標準コンストラクタ
virtual ~CMyDialog();
// ダイアログ データ
enum { IDD = IDR_MAINFRAME };
ボタンを押した際のイベント処理を追加したくて、
プロパティからOnBnClickedButtonを追加しましたが、
ボタンを押しても、まったく無反応です。
そういう仕様なのでしょうか?
0478478
NGNG0479デフォルトの名無しさん
NGNGサブクラス化するか
クラスを作らないでCMainFrameでやる
0481デフォルトの名無しさん
NGNGお世話になっております
VC++でMFCのプロジェクトを作っているんですが、
CSVファイルを読み込んで、1カラムずつ
取得してファイルの最後まで読み込むというロジックをつくりたいんです
�@ Readfile で、 file のEOF 検出ってできますでしょうか?
�A 1カラムずつの取得ってどうやるんでしょうか?
readfile だと、バイト取得しかできないのでしょうか?
2点お願いします
0482481
NGNG0483デフォルトの名無しさん
NGNG0484481
NGNGあれ?
CSVファイルをCreateFile でオープンして、readfileで要素を
取得するということではダメでしょうか?
0485デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNGそれぞれRebarを装着させることはできるのでしょうか?
たとえば、OpenJaneSytleというソフトのように、
ウィンドウ内がエリアごとに分割されてます。
そして一つのエリアが、書き込み用のエリアとなっていて、
そのエリアの上側にツールバーが装着されてますよね。
http://janestyle.s11.xrea.com/images/index.html
このようにツールバー(Rebar)を装着させたいのです。
できるのなら、簡潔で構いませんので
方法を教えていただきたいのですが。
初歩的な質問で申し訳ございませんが、
宜しくお願いします。
0488デフォルトの名無しさん
NGNG要するにCViewにCRebarを付けるということか。
俺にもわからん。
0489デフォルトの名無しさん
NGNGこんなん参考にならない?
http://www.codeproject.com/splitter/toolbar_splitter.asp
0490デフォルトの名無しさん
NGNGほかにもコーユー癖がある
ムズカシイやね
0491デフォルトの名無しさん
NGNGMainFrame(CFrameWnd)だからToolbarを付けれたんだよ
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNGこれなんかどう?
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200310/03100017.txt
0496デフォルトの名無しさん
NGNGその派生クラスのOnCreateでCRebarをCreateする。
でもOpenJaneみたくしたいならFormViewでやってもいいかも。
0497デフォルトの名無しさん
NGNGお前が答えろよ
0498478
NGNG>>495さんのリンク先の内容で試してみましたらうまくいきました。
あと、
>その派生クラスのOnCreateでCRebarをCreateする。
ではうまくいきませんでした。
本当にありがとうございました。
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGウルセーよ
0502デフォルトの名無しさん
NGNGアレ片手に電車の中で勉強してたら注目された。
俺がイケメンだからってのもあるが。
0503デフォルトの名無しさん
NGNG言語解説の本ならいざしらず、ライブラリ解説書など「読む」とは言わないのでは?
周りの乗客からは、電話帳を読むのと同じくらいアフォな光景として写ったに違いない。
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNGTRACE("%u\n", m_Btn.GetState() & 0x0003);
この様にボタンの状態(ON/OFF)を調べているのですが
ボタンをON/OFFしても常に0しか返ってきません…
ヘルプには、OFF=0 ON=1 不確定=2 と記載されているのですが…
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNGただのPUSHBUTTONだったら、ON/OFF状態は無いぞ。
0508505
NGNG今回は外部から押された状態を取得したいものでして…
>>507
えっ、そうなんですか!?
一応、MSDNに「オプション ボタンはチェック マーク () になっているときがオン状態です」
と記載されているのですが…「チェック マーク ()」とは何なのでしょうか?
今回は単純に、ボタンのON/OFF(クリックではない)を取得していんですが
通常はどの様にして状態を取得するものなんでしょうか?
0509デフォルトの名無しさん
NGNG0510505
NGNGそうなんですか??
でもオーナードローにすると通常のボタンでもON/OFFを取得出来るのですが…
CWnd::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
switch(nIDCtl){
case IDC_BUTTON1:
if(lpDrawItemStruct->itemState & ODS_SELECTED)
…
else
…
}
}
0511デフォルトの名無しさん
NGNG0512505
NGNGオーナードローになるとまた別なんですか…
すみません、なんか変な事言っちゃったようで…
わかりました。プッシュボタンでは無理だという事ですね。
親切に答えて頂き、ありがとうございました。
0513デフォルトの名無しさん
NGNGたてとけばいいんじゃ無かろうかと思われるが。
0514デフォルトの名無しさん
NGNGlpHttpFile->SendRequest(〜をして、パケットキャプチャーでヘッダを覗き見たところ、
「Cookie: PON=nttkyo******.tkyo.nt.adsl.ppp.infoweb.ne.jp;」が勝手に挿入されてました。
CHttpFileが勝手にCookieを挿入しないようにするためにはどうすればいいのでしょうか?
(こちら側がSendRequestに指定しているのは、下記のものだけです)
Content-Length:
Host:
Referer:
User-Agent:
初歩的な質問で申し訳ございませんがよろしくお願いいたします。
0515デフォルトの名無しさん
NGNGINTERNET_FLAG_NO_COOKIES
0516デフォルトの名無しさん
NGNG来年もMFC関連でよろしく!
0517デフォルトの名無しさん
NGNG自分の尻くらい自分で拭けよ
二度と来るな
0518デフォルトの名無しさん
NGNGxxさん、ありがとうございます。
これからもよろしくお願いしますって書く香具師。
完全に教えて君だもんな。
ベリューションとか、高橋とかに沢山いるのも
ウゼー
0519デフォルトの名無しさん
NGNG仕方ねーべ。本人は謙虚にしているつもりなんだろう。
しかし、それ以上に鬱陶しいのは、
以前〜〜でお世話になった●●です。
とか言い出す奴だな。
お前なんか誰も覚えてねーよ、って。w
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG上手く配置して表示できません。
どうすればできるのでしょうか?
0522デフォルトの名無しさん
NGNG上手く配置してなんてどういうのが
上手いのか分かるわけねーじゃん。
どうすればって、どういう配置なのか
全然書いてねーじゃん。これで答えて欲しいのかよ。
質問する態度じゃねーぞ。
0523デフォルトの名無しさん
NGNGどうもすいませんでした。
上手く配置するとは、この場合は、ツールバーの下にタブコントロールを配置表示することなのですが。
ただ単にフレームにタブコントロールを追加するとそうはならないので、
どうすればいいのでしょうか?
0524デフォルトの名無しさん
NGNG>522はただの荒らしだから気にしないように。
0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNGツールバーの下にタブコントロールを表示すれば?
0527デフォルトの名無しさん
NGNG別の方法はありませんか?
0528デフォルトの名無しさん
NGNGどうやってツールバーの下で表示すればよいのでしょうか?(^^;
RecalcLayoutをオーバーライドして何かするのでしょうか?
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGそうですか。
でも同様にするという分からないんです。
重ね重ねすいません。m(_ _)m
0531デフォルトの名無しさん
NGNGぷっ。この板にその質問答えられる程のスキル持った奴なんていないよ。m9(^Д^)プギャー
0532デフォルトの名無しさん
NGNG分割ウィンドウを作成するとき、Viewを指定できますが、
例えば、あるFrameWnd内に3つの分割されたエリアがあるとして、それぞれ上記のCreateViewでViewを固定させました。
その固定させたViewを変更したいのですが、どのようにすればいいのでしょうか?
ひとつの分割されたエリアに、メニュー操作によっていろんなViewを表示させるようにしたいのです。
ご返答をいただけると助かります。
0533532
NGNG知りたいことが書いてあります。
http://www.google.co.jp/search?q=cache:L-cBvD_ftPgJ:www.interq.or.jp/jazz/iijima/mfc/iijima/12dynsplit.html+CSplitterWnd%E3%80%80CView%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B&hl=ja
あとは自分で学習します。
どうもご迷惑おかけしました。
0534デフォルトの名無しさん
NGNGかなり基本的な質問ですが・・・。
0535デフォルトの名無しさん
NGNGUpdateWindow()
0536デフォルトの名無しさん
NGNGタイトル行はCenter位置に、
値が入る行はLeft位置に、それぞれ表記したいのですが方法はあるのでしょうか?
例) ずれなきゃいいけど・・・
タイトル行→| 名前 | 中央表示
値行 →|a.txt | 左詰
0537デフォルトの名無しさん
NGNG真ん中は不明
0538デフォルトの名無しさん
NGNGCViewへの再描画は、その関数ではできない。
MFCの仕様。
0539デフォルトの名無しさん
NGNGぷっ。まちがえてやんの。m9(^Д^)プギャー
0540536
NGNGレスさんく。
うまく理解できていないような気がするので一応書いときます。
タイトル行と値行の両方を 中央配置(左詰、右詰)にすることはできてます。
問題は、タイトル行と値行の表示位置を違うものにできるか?ということです。
タイトル行作成時には、中央、左、右と配置する箇所を指定する変数が存在するのですが
値行に追加するときには、配置箇所を指定する変数が見当たりません。
0541デフォルトの名無しさん
NGNGで、どうすればいいわけ?
0542デフォルトの名無しさん
NGNGそれかOnPaint()
でも>>538が何を言いたいのか気になるな
void CView::OnPaint()
{
// standard paint routine
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
void CView::OnInitialUpdate()
{
OnUpdate(NULL, 0, NULL); // initial update
}
void CView::OnUpdate(CView* pSender, LPARAM /*lHint*/, CObject* /*pHint*/)
{
ASSERT(pSender != this);
UNUSED(pSender); // unused in release builds
// invalidate the entire pane, erase background too
Invalidate(TRUE);
}
0543デフォルトの名無しさん
NGNGビューが乗ってるフレームにInvalidateしてできないと言ってる予感
0544デフォルトの名無しさん
NGNGカスタムドローするとか空白を自分で入れるとかして調整しないといけないんでなかろか。
0545デフォルトの名無しさん
NGNGぷっ。まちがえてやんの。m9(^Д^)プギャー
0546デフォルトの名無しさん
NGNGRebar上のコントロールボタンを押したときだけ、分割される(分割無し→2分割)ようにするにはどうすればいいのでしょうか?
Windowsフォルダウィンドウの検索ボタンを押したら、左側に検索分割ウィンドウが表示されるようなことをしたいのです。
動的に分割を操作したい。
0547デフォルトの名無しさん
NGNG・Windowサイズ変更
・Window表示・非表示
0548デフォルトの名無しさん
NGNGぷっ。まちがえてやんの。m9(^Д^)プギャー
0549デフォルトの名無しさん
NGNGぷっ。回答出来ないでやんの。m9(^Д^)プギャー
0550デフォルトの名無しさん
NGNG・「みんなの意見」「他の人もそう思ってる」など、自分の意見なのに他人もそう思ってると力説する人
他人が自分とは違うという事実が受け入れられない人です。自分の意見が通らないとコピペや荒らしなど
無茶をし始めるので見かけたら放置してください。
・根拠もなく、他人を卑下したり、差別したりする人、自分で自分を褒める人
他人を卑下することで自分を慰めようとする人です。実生活で他人に褒めてもらう機会がないが
プライドだけは高いとか、匿名の掲示板しか話し相手のいない人です。可哀想なので放置してください。
・自分の感情だけ書く人
「〜〜がムカツク」とか自分の感情を掲示板に書くことに意味があると思っている人です。
何がどのようにムカツクのか論理的に書いてあれば、他人が読んでも意味のある文章になりますが、
そういった論理的思考の出来ない人です。もうちょっと賢くなるまでは放置してあげてください。
0551デフォルトの名無しさん
NGNGExplorer Bar
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/bands.asp
0552デフォルトの名無しさん
NGNGそれってシェルエクステンションの作り方だろ
0553デフォルトの名無しさん
NGNGとあるコマンドボタンを押したら、
別の画面が表示されるという風にしたいのですが、以下のようにコーディングしたら、
押した瞬間に消えてしまうようになってしまいます。
どうか、ご教授ください
void CXXXX::OnSubmit() { // コマンドボタン押下
遷移したいダイアログ tmpdlg;
tmpdlg.Show(ID);
}
void CXXXX::Show(unsigned int uID)
{
Create(uID);
ShowWindow(SW_SHOW);
CenterWindow();
}
0554デフォルトの名無しさん
NGNGモーダルにするか変数のスコープを広くする
0555553
NGNGありがとうございます。
ちょっと モーダル使うほうで組みなおしてみます
アクティブウィンドウになってないと、すぐ消えるんですね
ShowWindowって
0556デフォルトの名無しさん
NGNGおいおい、変数のスコープの問題だってばさ。
0557デフォルトの名無しさん
NGNGぷっ。ちゃんと教えてもらってるのに解釈間違えてやんの。m9(^Д^)プギャー
0558デフォルトの名無しさん
NGNGレス番555だった(´・_・`)
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNGバカか?
0561デフォルトの名無しさん
NGNG>>557-558
バカか?
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGぷっ。みんなが分かってて誰も口にしないこといってやんの。m9(^д^)プギャ
0564デフォルトの名無しさん
NGNG同じようなことを何度も書くな。ヴォケが。駄スレ化するだろうがっ!!!
0565デフォルトの名無しさん
NGNGその dll で定義されているダイアログを呼び出そうとしたところ,
エラーが出ました.
調べてみると,DoModal() が OnInitDialog() を呼ばず,
明示的に OnInitDialog() を呼んでやると,
CDialog::OnInitDialog() を実行しようとしてエラーが出ます.
なぜでしょうか?
0566デフォルトの名無しさん
NGNGそのエラーが何なのかわからんことには
0567デフォルトの名無しさん
NGNG以下のようなメッセージです
Debug Assertion Failed!
Program: ...****.exe
File: f:\vs70builds\3077\vc\MFCATL\ship\atlmfc\include\afxwin1.inl
Line: 26
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
0568デフォルトの名無しさん
NGNGそのメッセージが指してる場所見てみ。
ASSERT(なんたら) とか VERIFY(なんたら) とか書いてあるから。
その「なんたら」の部分が0(false)になるとそのエラーメッセージ出して止まるようになってるの。
逆に言うと「なんたら」の部分が0(false)になってはいけないということで
そうなった原因は君のプログラムにあるわけだ。
0569デフォルトの名無しさん
NGNGCDialog を使った dll を呼びだして
ダイアログを表示するには,
呼びだし側は MFC アプリでなければ
ならないのでしょうか?
0570デフォルトの名無しさん
NGNGんなことはない
0571デフォルトの名無しさん
NGNGsanta.exeが、A.dllとB.dllを呼んでいます。
それぞれ別々にプロジェクトを作りました。
まず、A.dllをテストしました。
santa.exeに呼び出させて、ステップ実行しました。問題なさそうです。
でも、そのあとで、どうも他のメモリを書き潰しているようです。
そこでB.dllやsanta.exeをステップ実行でながめたいです。
でも、他のプロジェクトのソースをステップ実行する方法が分かりません。
どうすればよろしいでしょうか?
初心者ですいません、バカですいません。
でも冷やかしはゴメンなさい。よろしくお願いします。
0572デフォルトの名無しさん
NGNG一番良い&正しい方法かわからないので、突っ込み待ちつつ、
とりあえず、以下の方法で可能。
1.DLLをデバッグバージョンでコンパイル。できあがったDLLファイルを呼び出す正位置に移動
2.santaのプロジェクトを、デバッグモードで開始
3.A.dllやB.dllの関数を呼び出すところでブレイクする。(DLLをLoadするところじゃないよ)
4.F11キーで関数の中に入るとA.dll、B.dllのソースが開くので、そこからステップ実行できる。
注:
ようするに、デバッグでコンパイルすると、できあがったファイルにソースの位置もわかるようになっているのでこれができるようです。
逆に、デバッグでコンパイルしたあと、ソースを移動させるとF11で関数の中にはいれずふつーに実行される
また、そのままDLL側のソースをいじることも可能だが、DLLを再コンパイルには、DLLのプロジェクトをVCで開いてそっちでやること
VCを複数立ち上げておくのが楽。
0573571
NGNGつまり、
私はA.dllのプロジェクトを開いて、
A.dllのソースを眺めながら悩んでいたわけだけれども、
正解は、
大もとのsanta.exeのプロジェクトを開けば、
それをステップ実行していけば、
呼んでいる関数にドンドン入っていける、
という事なのですか?
呼び出し先のソースのありかを
santa.exeのプロジェクトが分からない場合は、
ダイアログが出て、指定するように催促される、
のですかね?
だとすると、{ディレクトリ/ソース/プロジェクトファイル}、
どれを聞かれるのでしょうかね?
0574デフォルトの名無しさん
NGNGいや、何をもって正解というのかわからんです。
ほかにもっといい方法があるかもしれないし、
用途によってやり方を選べばいいだけ。
>呼び出し先のソースのありかを
>santa.exeのプロジェクトが分からない場合は、
>ダイアログが出て、指定するように催促される、
>のですかね?
んと…
>逆に、デバッグでコンパイルしたあと、ソースを移動させるとF11で関数の中に
>はいれずふつーに実行される
って書いたけど、「ふつーに実行される」が伝わらなかったのかな
場所がわからない場合は、F11を押しても、F10のように、
処理を実行後、次の行に行くだけで、場所指定するようなことはありません。
0575571
NGNG0576デフォルトの名無しさん
NGNG結論:MFC使え。
366 名前:デフォルトの名無しさん[sage] 投稿日:05/01/08 19:20:45
MFCって、広く使われてるクラスライブラリの中では最悪の部類に属するよね。
0577デフォルトの名無しさん
NGNGいいんだよ、なんでも。どーせwindowsは誰が作ってもよく落ちるんだw
0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNG結論:MFC使え。
578 :デフォルトの名無しさん :05/01/09 18:07:36
MFCって、広く使われてるクラスライブラリの中では最良の部類に属するよね。
0580デフォルトの名無しさん
NGNGオリジナルのテキストエディタを作ろうと思ってます。
で、ひらがなを漢字変換にするさい、通常のテキストエディタだと、スペースキーを押すことで、「漢字変換のサブメニュー」
が表示されて、その中から漢字を選び出しますが、
そういう仕様をMFCで作るには、どうすればいいのでしょうか?
要するに、「ひらがな」を「漢字」に変換したいから、IMEの漢字選択サブメニュー?(正式な名称がわかりませんすいません)を開くための
クラスを知りたいのです。
そういうIME関連のクラスってあります?
0581デフォルトの名無しさん
NGNGCEditそのまんまじゃだめ?
0582580
NGNG返答のほど、ありがとうです。
Windowsで用意されているテキストエディタ機能ではなくて、
自分でテキストエディタのシステムを作りたいのです。
ただ、そうすると、漢字変換とかの問題が出てきますよね。
その漢字変換システムを自分で作るのはさすがに無理なので、
それだけはWindowsのシステムを利用したいのです。
で、漢字変換をライブラリーで扱えるMFCクラスはないのでしょうか?
それをぜひお聞きしたいのです。
0583デフォルトの名無しさん
NGNGよく知らんがImmで始まるAPI使うんじゃないかな?
0584デフォルトの名無しさん
NGNGMSDNにサンプルあるぜ
0585デフォルトの名無しさん
NGNGもし本当に、まともなオリジナルのテキストエディタを開発しようとしていると言うのなら、
漢字の入力なんて瑣末な問題に拘泥せずに取り敢えず英文をまともに入力できるものを目指したら?
#つーか、そのレベルでまともなものが作れるとは思わんのだが。
0586デフォルトの名無しさん
NGNG>英文をまともに入力できるものを目指したら
漢字変換って書いてあるだろ。
近眼か?
0587デフォルトの名無しさん
NGNGhttp://home.h07.itscom.net/buruturi/VCTIPS_008.html
これが参考になる。
ちなみに(3)の(F)のImm〜の次の行にreturn 0;と書けば(4)は省略できるはず。
0588デフォルトの名無しさん
NGNG第282章 IMEの操作 その5
http://www.kumei.ne.jp/c_lang/sdk3/sdk_282.htm
猫さんのHPにありましたよ。
ここを参照するべし!うしうし!
0589デフォルトの名無しさん
NGNG敢えてそう書いているんだろ。
池沼か?
0591MFCでは勘が上手く働かん・・・
NGNGclass宣言にあるAFX_***等ののコメントは消しちゃだめなの?
ClassWizardが参照してるのか?
消してからClassWizardがエラーメッセージっぽい
ダイアログを出すようになったんだが・・・
ほかにも消したらだめなコメントってあるの?
0592デフォルトの名無しさん
NGNG0593592
NGNGEDITSTREAMを使ってできました。
すいませんです。
0594デフォルトの名無しさん
NGNG0595AYANA
NGNG下記の画像のように、ひとつのバーにいろんなコントロールをつけるのと、
特定のコントロールを左寄せまたは右寄せにしたいのですが、どうしても方法がわかりません。
http://www.geocities.jp/ayana_city/rebar.JPG
誰かわかる方いますか?
1)ひとつのバーにいろんなコントロールをつける
2)特定のコントロールを左寄せまたは右寄せにしたい
0596AYANA
NGNGそうすると、DialogBarだと、2)が出来ないと思うんですけども。
DialogBarで特定のコントロールを右寄せにしたりできます?
たしか位置は固定なはずでしたが・・・(勘違いならすいません
0597AYANA
NGNG↑で解決。
ども〜でした。
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNGリソースエディタで貼り付けたり、CButtonで直接作ったり。
0601デフォルトの名無しさん
NGNGCreateWindow 関数をぐぐるなり MSDN なり、何でもいいから調べてみろ
ウインドウクラスに "BUTTON" を指定する場合の説明をよく読め
0602デフォルトの名無しさん
NGNG便利ですか?
0603デフォルトの名無しさん
NGNGJavaに比べたら、すげー使いにくい。
最悪。
Win32なんてもって最悪だけど。
最近、初めてWindowsプログラミング始めたが、なんじゃこりゃってな具合の使いにくさ。
なんで、ツールバーにボタンを追加するだけで、こんな遠回りなことしなきゃならんのか疑問。
今、ツールバーにテキストだけのボタンをつけようとしてるが、そういうメンバ関数が見当たらない。
AddButtonというのがあるが、なんかTBBUTTONという構造体を使って詳細に指定してから作れと・・・・・。
しかも、TBBUTTONに文字列を指定するとこないしw
あるのは「INT_PTR iString; // テキストのインデックス」
>0 から始まるボタンテキストのインデックスが格納されます。または、ボタンテキストが格納されたバッファのアドレスが格納されます
0から始まるテキストのインデックスはいいけど・・・、どこのテキストの事を指してるのかまったくわからん。
どこにあるテキスト情報のインデックスなのか?
Javaのほうがほんと、つくりがしっかりしてるよ。
0604デフォルトの名無しさん
NGNGプ
0605デフォルトの名無しさん
NGNGWindowsでは文字列だけのボタンは基本的に作れないんです。
仕様です。
作りたいならDialogリソース経由で作れといいたいらしぃ。>Microsoft
0606デフォルトの名無しさん
NGNG何を寝言言ってる
CButton::Create
BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
引数
lpszCaption
ボタン コントロールのテキストを指定します。
0607デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_mfc_ctoolbarctrl.3a3a.addbuttons.asp
>>603
俺はWindowsプログラマーじゃないが、VS持ってるから
一緒に考えてやろう。(今暇だから^^
0608デフォルトの名無しさん
NGNGおよび AddStrings を使用してあらかじめツール バー コントロールのリストに追加しておく必要があります
ツールバーの文字は絵の下に出るやつだろ(IEみたいなやつ)
0609デフォルトの名無しさん
NGNGこいうのもあるけどな
0610デフォルトの名無しさん
NGNGWin32から操作するしかないんとちゃう?
0611607
NGNGわかりましたよ^^
CButtonをCToolBarにのっける形にするです
CButtonをCreateしますよね。
そのとき指定する親ウィンドウを、「CToolBar」にすれば、そのままToolbar上にのっかります。
そのCreateする前に重要なPointがありまして、
指定した位置にそのボタンを挿入したいですよね?
そうすると、SetButtonInfo(nIndex, nID, TBBS_SEPARATOR, nWidth);をCreateの前に呼び出して、
区切りを入れるんです。
そうすることで、そのあとCreateすると、その区切りを入れた箇所にそのボタンが入ります。
nIndexは挿入したいインデックス値、iIDはコマンドIDです。nWidthはいうまでもない^^
確かにとっつきにくいですね。
MFCっていつごろ生まれたものなんですか?
0612607
NGNGこれが、ツールバーに様々なコントロールを搭載する答えなんでしょうかね。
(でも、間違った解説だったらスマソ^^ いちおーWindowsプログラマーではないので^^)
0613デフォルトの名無しさん
NGNGただ全部のボタンがそうなるから
部分的に変えたい場合は>611-612のやりかたで
あとMFCも中でWin32呼んでるから
Win32もMFCもやってることは同じだよ
0614603
NGNGそのやり方で作れましたが、
私が今回実現したい方法は、
まず、初めの状態では空のツールバー(コントロールが無いただのバー)を作っておき、
あとで任意にボタンを追加していくものを作りたいのです。
それを試しているんですが、なかなかうまくいきません。
空のツールバーを作成したとしても、そのあとCButtonをCToolBarを親としてCreateしても、Toolbarに挿入されません。
if (!m_wndToolBar1.CreateEx(this, TBSTYLE_FLAT,
WS_CHILD | WS_VISIBLE | CBRS_BOTTOM |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1))
上記の方法でLoadToolBarでリソースを呼びこんでボタンを挿入していく方法を試しにしてみました。
(IDR_TOOLBAR1にはボタンが5個しかないとします)
そして、その後、DeleteButtonでリソースにあるボタンを5個削除して、空のツールバーにした後に、
CButtonのCreateでボタンを作っていきましたが、なぜかボタンが5個までしか作成できず、6個以上は作れません。
この辺、難しいですね。。。
かなり困ってます。
0615デフォルトの名無しさん
NGNGあきらめろ
Win32APIでもややこしーんだから(ぷ
0616デフォルトの名無しさん
NGNGリストビューのアイテムを取得して、
ソートをしたいのですがリストビューのアイテムを取得してくれません
リストビューは、サブウィンドウにあるので、
?? CWriteList* pDlg = (CWriteList*)AfxGetMainWnd();
CString str1 = pDlg->リストビューのメンバ変数.GetItemText(param1, 1);
??のところが間違っていると思うのですが、
よければ御教授ください
リストビューにはデータは入っています
ブレイクしたら、str1は"" とNULL でした
0617デフォルトの名無しさん
NGNGhttp://techtips.belution.com/ja/vc/0055/
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG選択できなようにできますか?
0621デフォルトの名無しさん
NGNGスタイル設定
0622こんばんは
NGNGある構造体を一個分、allocしました。
そこに、ファイルから構造体3個分、コピーしました。
(void)&Data, size というような指定でデータを読み込みました。
これって、人のメモリ領域を書き潰していますよね?
でも、落ちないです。
ま、当然自分の処理には被害がないから、すぐには落ちませんね。
そこで、BoundsCheckerにチェックさせたんです。
「人のメモリを書き潰しているよ。」
ってレポートしてくれると思ったら、「エラーなし」なんです。
(つーか、微妙に大きく領域切ってあって、
無理くりキャストしてallocしてるンですよね。)
BoundsCheckerでチェックしても、
(Void)使ってファイルから書き込んだら、
ちゃんとチェックしきれないモンなのでしょうか?
0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNGBoundsCheckerはコードレベルでチェックするツールだからある意味当然。
でも、実際に壊すケースはきちんと検出できるからソースの品質に問題がある場合は役に立つ。
0625デフォルトの名無しさん
NGNGキーボード入力を判別したいのでPreTranslateMessage()で
BOOL COrenoDialog::PreTranslateMessage(MSG* pMsg){
if(pMsg->message==WM_KEYDOWN){
int iVKeyCode=(int)pMsg->wParam;
switch(iVKeyCode){
case VK_0: ....
....
と書いてるのですが、windows.hやwinuser.hをインクルードしても
case VK_0 のところ "error C2065: 'VK_0' : 定義されていない識別子です。"
とコンパイルが通りません。このエラーを無くすにはどうしたらいいですか。
0626デフォルトの名無しさん
NGNG#define VK_0 0x30
と自分で定義しておけば、エラーは消える
とりあえず、winuser.hの中身を読んでおくと、面白いことが書いてある
(「VK_0」で検索かけると該当箇所はすぐ見つかる)
0627622
NGNG>>624
しかし
「BoundsCheckerがモンク言わないように」
って考えで、
10バイトだけ大きくしたって、
500バイトを10個も放り込まれたら、
BoundsCheckerで訳の分からないリークがもーゴロゴロ・・・
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNGdll の中の CDialog の派生クラスから AfxGetApp() を呼んで,
呼び出し側の CWinApp* を得ようとしたところ,
NULL しか返ってきません.
なぜでしょうか?
0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG中
出
し
0632デフォルトの名無しさん
NGNGCMyView::OnDraw(CDC* pDC)
{
CBitmap bitmap;
CDC dcDisplayMemory; ←関数内にローカルに宣言した場合、正常に処理される。
bitmap.LoadBitmap(IDB_REDBLOCKS);
dcDisplayMemory.CreateCompatibleDC(pDC);
dcDisplayMemory.SelectObject(&bitmap);
pDC->BitBlt(100, 100, 54, 96, &dcDisplayMemory, 0, 0, SRCCOPY);
}
この「CDC dcDisplayMemory;」を、関数内のローカル変数として使うと、問題なく処理できますが、
これを、下記のクラス内のメンバ変数として宣言したものを使って、上記と同じような処理をするとエラーが出ます。
どうしてでしょうか?
class CMyView{
public:
CDC dcDisplayMemory; ←ヘッダファイルのクラス内のpublicで宣言した場合、なぜかエラーが出る。
}
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG<OnDrawなら1回のWM_PAINTメッセージ処理がその範囲>
0635デフォルトの名無しさん
NGNG0636632
NGNGオフスクリーンバッファとして使いたいので
一度宣言したらアプリが終了するまで使えるようにしたいのですが
他によい方法はございますか?
0637デフォルトの名無しさん
NGNG0638632
NGNGなのでローカル変数やグローバル変数では困るのです
0639デフォルトの名無しさん
NGNGさあ、次の患者さんドゾー
0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG0642632
NGNG↑こういうエラーダイアログが出ます
0643632
NGNGいえ、deleteはしません。
create(new)1回のみです。
それをクラス内のメンバ変数として宣言してます。
要するに、オフスクリーンバッファを作りたいだけなんですが、
メモリデバイスコンテキスト以外でMFCで作れる方法ってありますか?
0644デフォルトの名無しさん
NGNGまずデバッガ使って落ちたところを特定してからいらっしゃい。
0645デフォルトの名無しさん
NGNG外に出したら自分で後始末しないとだめだろ
0646632
NGNGやはり、デバイスコンテキストは保持の時間制限があるので、無理なんでしょうか。
0647デフォルトの名無しさん
NGNG{
if (m_hDC != NULL)
::DeleteDC(Detach());
}
0648632
NGNGdeleteはしないので、デストラクタが呼び出されることはないです。
クラス内に宣言しているだけです。
class CXSFrm : public CXSObject
{
public:
CXSFrm();
~CXSFrm();
(省略)
CDC dcDisplayMemory; ←これ
};
ちなみに、CXSFrmクラス自体もアプリケーションが終了するまで削除されることはありません。
0649632
NGNG0650デフォルトの名無しさん
NGNG他のお客さんの迷惑です。
0651632
NGNGCMyView::OnDraw(CDC* pDC)
{
CBitmap bitmap;
bitmap.LoadBitmap(IDB_REDBLOCKS);
dcDisplayMemory.CreateCompatibleDC(pDC);
dcDisplayMemory.SelectObject(&bitmap);
pDC->BitBlt(100, 100, 54, 96, &dcDisplayMemory, 0, 0, SRCCOPY);
}
0652632
NGNGCMyView::OnDraw(CDC* pDC)
{
CBitmap bitmap;
CDC dcDisplayMemory; ←ローカルに宣言した場合、正常に処理される。
bitmap.LoadBitmap(IDB_REDBLOCKS);
dcDisplayMemory.CreateCompatibleDC(pDC);
dcDisplayMemory.SelectObject(&bitmap);
pDC->BitBlt(100, 100, 54, 96, &dcDisplayMemory, 0, 0, SRCCOPY);
}
0653632
NGNGCMyView();
~CMyView();
(省略)
public:
CDC dcDisplayMemory; ←メンバ変数として宣言したものを、OnDraw内で使うとエラーに!
}
CMyView::OnDraw(CDC* pDC)
{
CBitmap bitmap;
bitmap.LoadBitmap(IDB_REDBLOCKS);
dcDisplayMemory.CreateCompatibleDC(pDC);
dcDisplayMemory.SelectObject(&bitmap);
pDC->BitBlt(100, 100, 54, 96, &dcDisplayMemory, 0, 0, SRCCOPY);
}
グローバル変数だと問題ないのに、メンバ変数だと問題ある(エラー)なのが納得いかない。
0654デフォルトの名無しさん
NGNG0655632
NGNGですよね。
私もそう。
なぜかグローバルだとエラーが出ないです。ずっと。
0656デフォルトの名無しさん
NGNG毎回デストラクタが呼ばれてdeleteしてる(馬鹿にはそう見えないだろうけど)
0657デフォルトの名無しさん
NGNGまた明日来ます
0658632
NGNGオフスクリーン(裏バッファ)は、皆さんどのようにしてますか?
DirectXを使わないと行けないのかな・・w
0659デフォルトの名無しさん
NGNG>>633
>>637
>>644
0660632
NGNGpDC->BitBlt(0, 0, 500, 500, &dcDisplayMemory, 0, 0, SRCCOPY);
どうやら、dcDisplay〜のアドレスが不正値になってます。
0661632
NGNGBitBltする直前ですが
-dcDisplayMemory{hDC=??? attrib=???}CDC
+m_hDCCXX0030: エラーです : 式を評価できませんHDC__ *
0662デフォルトの名無しさん
NGNGclass CMainWin : public CFrameWnd
{
public:
int m_X, m_Y; // 現在の表示位置
char m_str[255]; // 表示文字列
CDC m_memDC; // 仮想ウィンドウのデバイスコンテキスト
CBitmap m_bmp; // 仮想ウィンドウのビットマップ
CBrush m_bkbrush; // 仮想ウィンドウのブラシ
-----(略)
CClientDC DC(this);
// 仮想ウィンドウのビットマップを作成する
m_memDC.CreateCompatibleDC(&DC);
m_bmp.CreateCompatibleBitmap(&DC, maxX, maxY);
m_memDC.SelectObject(&m_bmp);
0663デフォルトの名無しさん
NGNG毎回CreateCompatibleDCしてるしSelectObjectしたものを戻してないし
もうグダグダ
0664デフォルトの名無しさん
NGNGDCなんか後生大事にとっといても無意味。
0665デフォルトの名無しさん
NGNGWindowsAPI Programming
... 再描画には大きく分けて2つの手法があり、WM_PAINT命令が発行されるたびに再度
描き直す方法と、仮想ウィンドウを作成して(CreateCompatibleBitmap関数を使用)
描画処理は仮想ウィンドウに行い、再描画のときにビットマップ ...
0666デフォルトの名無しさん
NGNG自分は落ちないからな。ウソコ撒き散らしているようなものだからね。
書き潰されたほうは、正しいデータだと思ってウソコ食べちゃう・・・。
するとどっかで段々と変な動きに。でも次起動した時って再現しない。
なぜなら、その時々でとなりに誰のデータが割り当てられるは、
CPU任せだからだ。でも、放っておくと客は逃げるし、ライバルはほくそえむ。
チェッカーでメモリをチェックしても、文法チェックだから、
ファイルからの読込みのようにvoidやchar*を使われると、
チェッカーは読込み毎に異なるファイルのサイズまでは計算しないわけよ。
でも、担当者は「手順に基づき」「チェッカー異常なし」と済ます。
すると、もう絶対に出てこないね。消えることのない数百byteのリーク・・・
そんな時、アナタはどうする? プロの意見を聞こう↓
0667632
NGNG解決するまで寝ないで続行したいと思います。
初心者でスマソ!
>>663
いえ、それは大まかなソースで。
実際には、
CreateCompatibleDCは一回だけ呼び出して、メモリDCを作成。
最後にSelectしたものを戻してますよ。
それでも駄目なんです。
基本的に繰り返すのは、(メモリDC)→(CView)へのビットマップ転送(BitBlt)
void CXSFrmMain::Draw(CDC* pDC){
pDC->BitBlt(0, 0, 500, 500, &m_memDC, 0, 0, SRCCOPY);
}
ま、自己解決できるよう頑張ります。
ご迷惑おかけしました。
どうも。
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG>>667
デバイスコンテキストは、OSが完全にメモリ管理しているから、
「OSを使わせていただく」って感じになる。
だから、自分のクラスに取り込む、なんてことは出来ない。
これから生成するクラスが既にあるシステムを生み出す、って変でしょ?
だから今後も「使わせていただく」リソースは、
できるだけすぐにお返ししましょう。
うっかりすると、マシンが固まります。意外とリソースは少ないものです。
0670632
NGNGそうすると、アプリケーションを起動してから、終了するまで、ずっと保持していたいオフスクリーンバッファはどのように作ればいいのでしょうか?
MFCにおいては、(Win32もそうですが)メモリDCを使う以外に無いはずです。。。
ビットマップとして持っておくとなると、Update描画のたびに、ビットマップからメモリDCへSelect、そしてBitBlt。
終わったら、メモリDCからビットマップへ転送。
見たいなことをしないといけないみたいなので、無駄な処理が増えますよね。
0671デフォルトの名無しさん
NGNGどっちかつーと DC はポインタのようなものだぞ
hdc = &hbitmap; 的なイメージで
SelectObject(hdc, hbitmap);
代入と違って元の値を返すがな
0672デフォルトの名無しさん
NGNG本気で迷ってるなら、本当に迷っているソースをそのまま貼り付けろ。
0673デフォルトの名無しさん
NGNG普通に書きたくないと駄々を捏ねたりするような香具師のソースなぞ見たくもないわ。
0674デフォルトの名無しさん
NGNG>そんな時、アナタはどうする? プロの意見を聞こう↓
わたしも是非聞きたいです。
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNGおまえの言ってること矛盾だらけなんで
再現実験してみた
ローカルに宣言→OK
メンバ変数として宣言→死亡
グローバルに宣言→死亡
0677デフォルトの名無しさん
NGNGDebug Assertion Failed!
File:wingdi.cpp
Line:109
BOOL CDC::Attach(HDC hDC)
{
ASSERT(m_hDC == NULL); // only attach once, detach on destroy //←Line:109
ASSERT(m_hAttribDC == NULL); // only attach to an empty DC
警告を無視して実行すると、一瞬うまく行く場合もあるが、何回か再描画すると死亡
0678デフォルトの名無しさん
NGNGメンバ変数、グローバルで宣言するのが悪いんじゃなくて、
その場合はローカルで宣言する場合とやり方を変えないとダメ
0679デフォルトの名無しさん
NGNGその現在のシステムカラーの色とかはどうやってGETするんですか?
あと、プロパティーでシステムカラーを変更したことがわかる方法ってあるんですか?
0680デフォルトの名無しさん
NGNGGetSysColorってまんまな名前のAPIがあるんだけど。
変更通知は知らん。Spy++でそれらしいメッセージが来ないか調べてみれば?
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG呼び出し側 exe のアプリケーション名を
取得しようとしましたが,
例外にひっかかってしまいました.
なぜでしょう?
0683デフォルトの名無しさん
NGNGAfxGetAppNameの中のどこで例外が出たか
デバッガで追いかければわかる。
0684674
NGNG使いたい。だけどきっと675は知らない予感。そんなヤツばっかだものな。
0685デフォルトの名無しさん
NGNG市販ソフトの使い方はサポートで聞きましょう。
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG.dllの拡張子のファイルの中身を見てみたいのですが
メモ帳とかだと、変な文字列が出て(暗号化?)さっぱりなのですが
ちゃんと中身を見る方法や、見れるソフトとかないのでしょうか?
もしあれば紹介していただきたいです。
簡潔でも構いませんのでよろしくお願いします。
0688デフォルトの名無しさん
NGNGバイナリエディタで見ればいいんじゃないの。
0689デフォルトの名無しさん
NGNGレスありがとうございます。
バイナリエディタで見てみましたが、やはり同じような感じでした。
何がやりたいかということをかくと、PC初心者の考えそうなことで
理解しがたいことだと思いますので、仕様だと思ってあきらめます。
お騒がせしました。
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG「仕様」という言葉の使い方をまちがいてる
0692デフォルトの名無しさん
NGNGシンボルは Dependency Walker で見られるし
コードやリソースは Visual Studio で見られるだろうが
一体何を見たいのか…
0693デフォルトの名無しさん
NGNG画面作ったんですが、とあるところからもらったDLLの
ライブラリAPIを使いたいのに、LNK2001エラーがコンパイル時に
出てしまいます
lib ファイルを、プロジェクトに追加して、APIのプロトタイプ
宣言のあるヘッダファイルをパスでinclude するだけで
なく、何か抜けている手順があるでしょうか?
エラーメッセージ
error LNK2001: 外部シンボル ""int __stdcall XXX は未解決です ってでます
0694693
NGNG0695デフォルトの名無しさん
NGNG回避策があれば、教えてください。
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGMFCでint値をCString(もしくは、unsigned char*)に変換する方法はどのようにするんですか?
0698697
NGNG.NETにはConvetクラスという便利なものがありますが、
MFCにはそれが見当たらないですね。
すいません、自己解決ということで。
0699
NGNGCString str;
int value = 100;
str.Format("%d",str,value);
0700デフォルトの名無しさん
NGNGconst char * Convert(int val)
{
static char buf[20];
sprintf(buf, "%d", val);
return buf;
}
0701デフォルトの名無しさん
NGNGGetSelectedItem() すると、「一つ前」に選択された
ツリーアイテムが取れてしまいますよね。
マウスでクリックしたアイテムのツリーアイテムを
取得するにはどうしたらよいのでしょうか?
0702デフォルトの名無しさん
05/01/17 18:34:32こうなると CFontDialog に CHARFORMAT 構造体の szFaceName が上手く渡せません。(フォントダイアログのフォント名の初期値として処理されない)
これは WideCharToMultiByte なんかを使用して ASCII に直し、szFaceName に入れなおさないとダメってことですか?
0703デフォルトの名無しさん
05/01/17 19:40:25,WCHARなのにWideCharToMultiByte?
0704デフォルトの名無しさん
05/01/17 20:22:40そうみたい。CFontDialog::CFontDialog(const CHARFORMAT &,〜)が内部で
szFaceNameをMBCS→UNICODE変換している。
ので、入力値はMBCSじゃなきゃならない。
以上はVC6の話ね。
0705デフォルトの名無しさん
05/01/17 21:11:55ええと・・・WCHARで Unicode のまま WCHAR* szFaceName 状態の変数に "MS UI Gothic" なんて文字列を入れても、
CFontDialog 自体が読み取れる変数は Unicode じゃなくて MultiByte文字らしくて、WCHAR*な "MS UI Gothic" が認識されないというか・・・
CHARFORMAT cf;
cf.cbSize = 10;
cf.dwMask = CFM_FACE;
lstrcpy( cf.szFaceName, CString("MS UI Gothic") ); // 実際にはシステムから受けた WCHAR[] な変数のフォント名がszFaceNameにコピーされる
#if (defined (UNICODE) || defined (_UNICODE))
char strFontName[LF_FACESIZE]="";
WideCharToMultiByte(CP_ACP, 0, cf.szFaceName, -1, strFontName, LF_FACESIZE, NULL, NULL);
strcpy( (char*)cf.szFaceName, strFontName );
#endif
CFontDialog dlg(cf);
今はこんな感じになっています。
Unicodeでコンパイルするとき #if の中で書かれているヤツが抜けていると今回のように。
Dlg.DoModal() の後 dlg.GetCharFormat(cfsave) で cfsave を保持しといたとして、
もう一度 cfsave で CFontDialog を作ると、フォント名の欄が空になってる(Unicodeに変換されたフォント名に該当するフォントが無い)・・・と。
>>704
サンクス
とりあえずはこのまま条件で分けときます。
0706デフォルトの名無しさん
05/01/17 21:56:59MBCS->UNICODE変換かけるように変わってるな。
CHARFORMATじゃどうやってもUNICODEで設定できない。
何を考えてこんな実装になっているのやら。
0707デフォルトの名無しさん
05/01/18 08:36:39VC7以上なら、CT2A()を使うとスマートに変換処理が書ける。
0708デフォルトの名無しさん
05/01/18 18:31:05バグなんだけど互換性に問題出るから今更直せなくて仕様って事になったんだろ。
0709デフォルトの名無しさん
05/01/18 18:46:42CWnd* をとって,それをダイアログの親ウィンドウとしますが,
あたえられたウィンドウのハンドルを HWND を親ウィンドウとして
設定するにはどうしたらいいのでしょうか?
0710デフォルトの名無しさん
05/01/18 19:08:59CWnd::FromHandle
0711デフォルトの名無しさん
05/01/18 20:13:42VC6では MSFlexGrid という ActiveX を使ってグリッド表示のアプリを書いていましたが、
VS.NET 2002/2003になるとデザインタイムライセンスがない、ということで使えなくなったようです。
VS.NETでMFCアプリを記述するのにお勧めのコントロールは何になるのでしょうか?
それとも、デザイン時に MSFlexGrid コントロールがポトペタできないだけで
自前でインスタンス生成コードとかを記述してプログラミングできるのでしょうか?
厨な質問ですいませんが、教えてください。
0712デフォルトの名無しさん
05/01/18 20:14:03CListCtrl コントロールで、リストのすでにあるレコードの
あるカラムの値を上書き編集したいのですが、
メンバはありますでしょうか?
SetItemTextや、SetItemなどでは新規レコード挿入してしまいます
よろしくご教授ください
0713デフォルトの名無しさん
05/01/18 22:00:14VC6ならなんとか出来るのですが…。
0714デフォルトの名無しさん
05/01/18 23:41:59OfficeインストールしているならExcel使うとか。それならOCXでできるし。
MSFlexGridはdll自体ないと思った。GrapeCityから正規版を買うのも手かも。
>>712
普通にSetItemでできると思うが。いっそコードさらしてみ。
0715712
05/01/19 09:01:22遅くなりましてすみません
上書きできました インデックス間違ってただけでした すみません
0716デフォルトの名無しさん
05/01/19 13:14:32エラーメッセージが英語で表示されるようになっちゃった。
どうすれば日本語になるの?
0717デフォルトの名無しさん
05/01/19 13:57:000718デフォルトの名無しさん
05/01/19 19:58:54わけあって、水平、垂直スクロールバーが表示されているかどうか知りたいのですが、
どのようにすればわかるでしょうか?
ググったら ::GetWindowLong 使ってウインドウ状態を調べろ、というのがあったのですが、
わたしの技術力、想像力が乏しくて、具体的にどうすればいいかわかりませんでした。
0719デフォルトの名無しさん
05/01/19 20:08:43711です。レスありがとうございます。
そんなに高価でもないようなのでVSFlexGridを買ってみます。
ただ、VS2002/2003などでMFCアプリを開発する人は、
どのようにしてグリッドを扱うのでしょうか?
全部自前で描画するのでしょうか?
それとも何らかのコントロールを継承してグリッドっぽいものを作るのでしょうか?
0720デフォルトの名無しさん
05/01/19 21:00:01GetStyle() & (WS_HSCROLL|WS_VSCROLL)
0721デフォルトの名無しさん
05/01/20 01:21:18一般的にはね。
0722デフォルトの名無しさん
05/01/20 01:59:20今やってるプロジェクトではListViewを拡張してお茶を濁した。
その前のプロジェクトではVC6だったのでFlexGridを使った。
今度のプロジェクトではFlexGridを買うことになりそうだ。
0723デフォルトの名無しさん
05/01/20 08:15:01codeprojectやcodeguruにGrid系のコードあるよ
0725デフォルトの名無しさん
05/01/20 21:18:49メインウインドウから別ダイアログを表示するときに、
ダイアログを DoModal するほうで、ダイアログのタイトルをセットすることは可能でしょうか?
今は、ダイアログのクラスに public: な CString 型メンバを作成して、
ダイアログの OnInitDialog() のコードの中で SetWindowText(); して実現しています。
できれば、独自定義のメンバ変数をなるべく減らしたいと考えております。
//=========================================================
void CtheappApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.m_myWindowText = "だいあろぐ";
//-------------------------------------------------------
// ほんとは、ここでダイアログに対して SetWindowText 的なことをしたい。
//-------------------------------------------------------
aboutDlg.DoModal();
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
this->SetWindowText( this->m_myWindowText );
return TRUE;
}
0726デフォルトの名無しさん
05/01/20 21:25:08GetStyle() & (WS_HSCROLL|WS_VSCROLL) でビットを調べて、
スクロールバーの表示状態を調べました。
CScrollView だとそれだけじゃだめだ、というカキコもしていただいたのですが、
いまのところ私の実現したいことには支障がないようですので、
問題が出たら再び考えることにします。ありがとうございました。
0727デフォルトの名無しさん
05/01/20 21:38:33たとえば.....
ビュークラスのOnDraw内でフォントを設定するには CreateFontIndirect(LOGFONT*) を使いますが、
SelectObject する前のデフォルトのフォントの LOGFONT 構造体データを取得する方法はありませんか?
寸前の HFONT だったら SelectObject の戻り値に入るので、
HFONT から LOGFONT を導く方法でもあるのでしょうか?
0728デフォルトの名無しさん
05/01/20 21:47:060729デフォルトの名無しさん
05/01/20 21:47:30DataGridというコントロールが標準で用意されているので問題ないですが、
あと2、3年ぐらいは純MFCでの開発も続くでしょうからグリッドについては悩むトコですね。
0730デフォルトの名無しさん
05/01/20 21:54:16727です。すばやいご回答感謝いたします。
int GetObject(
HGDIOBJ hgdiobj, // グラフィックオブジェクトのハンドル
int cbBuffer, // オブジェクト情報を格納するバッファのサイズ
LPVOID lpvObject // オブジェクト情報を格納するバッファ
);
0731デフォルトの名無しさん
05/01/20 21:55:570732デフォルトの名無しさん
05/01/20 22:00:480733デフォルトの名無しさん
05/01/22 17:06:02MFC42D.DLL
を必要とするのですが、これらのファイルを添付する以外で起動する方法ってあるのでしょうか?
出来ればEXEに埋め込むみたいな方法がよいのですが。。。
0734デフォルトの名無しさん
05/01/22 17:11:020735デフォルトの名無しさん
05/01/22 17:25:230736デフォルトの名無しさん
05/01/22 17:26:01PC全部VC入ってたので全部普通にビルドしてましたorz
>>734
ありがとうございました。
これってリリースでビルドするとサイズ凄く小さくなりますけど、何か変わるんですかね?
0737デフォルトの名無しさん
05/01/22 17:30:10デバッグに必要な情報が要らなくなったり最適化したりするから。
0738デフォルトの名無しさん
05/01/22 18:06:34テストも十分にしておくように。
リリースしてからとんでもないことではまることがあるから。
0739デフォルトの名無しさん
05/01/22 18:48:00単体で起動してみてきちんとうごくかどうか試さないと危険。
0740デフォルトの名無しさん
05/01/22 18:55:45それだけでは足りない場合もある。
MFCのリンク方法が違うと挙動が変わる。
納品物の仕様にあわせたビルド版のテストを早い段階で行う必要がある。
デバッグ版の存在価値は、
対話デバッグテストによる例外処理強制終了の位置確認ぐらいしかあるまい。
とはいえ、例外処理強制終了の位置確認できるのはそれなりに美味しいけどな。
0741デフォルトの名無しさん
05/01/22 19:03:59メモリリークの調査にもいいぞ。
デバッグ版というより、デバッグモードだが。
0742デフォルトの名無しさん
05/01/22 19:06:19よほど古くなけりゃ入ってると思うけど。
MFCを実行ファイルに埋め込む(スタティックリンク)スイッチは
プロジェクト -> 設定 -> [一般]タブ
にあるよ。
これStandard版は無いんだっけ?
0743デフォルトの名無しさん
05/01/22 19:09:33つーか、テスト計画ない時点で終わってるw
0744デフォルトの名無しさん
05/01/22 19:25:40ビルド版じゃなくて、「納品物の仕様にあわせたビルド」版という意味で書いた。
送信してから「わかりにくいな。しまった・・。」と思ったが
誰もそんなところまで突っ込むほど暇人じゃないだろうと勝手に思い込んだ俺が甘かった。
0745デフォルトの名無しさん
05/01/22 19:40:410746デフォルトの名無しさん
05/01/22 19:42:590747デフォルトの名無しさん
05/01/22 21:09:55コンボボックスで選択した値+100してIDC_EDIT1に表示するみたいな事をしたいのですが、
これをボタンが押された時、とかではなくリアルタイムでコンボボックスの中の値が別の値に選択された直後に
IDC_EDIT1に計算結果を表示するにはどうしたらよろしいのでしょうか?
0748デフォルトの名無しさん
05/01/22 21:44:59対象となるコンボボックスで、以下のメッセージを受ければよい
================================================
ON_CBN_SELCHANGE
ユーザーがリスト ボックス内でクリックするか、方向キーを使って選択を変更した結果、コンボ ボックスのリスト
ボックスで選択されている内容が変わることを通知します。このメッセージを処理するとき、コンボ ボックスのエディット
コントロール内のテキストを取得するには、GetLBText 関数または別の同種の関数を使います。
GetWindowText 関数は使用できません。
================================================
0749デフォルトの名無しさん
05/01/22 22:27:23教えて頂いた方法で解決しました。
ありがとうございましたm(_ _)m
0750デフォルトの名無しさん
05/01/23 01:27:42思いっきり使ってた。どうりで上手く行くときと行かないときがあるんだ・・・
0751デフォルトの名無しさん
05/01/23 02:18:320752デフォルトの名無しさん
05/01/23 06:05:360753デフォルトの名無しさん
05/01/23 12:15:480754デフォルトの名無しさん
05/01/23 18:09:45処理ゲージを表示する画面をつくったのですが、
これをshow で表示すると、タイトルバーにタイトルが表示されないんです
これ表示するようにするには、どうしたらいいのでしょうか?
setWindowText だと、その画面が終わったあとに出てきますので
show で画面が消える間(画面が表示されたときから)
タイトルがでていればいいのですが。
0755デフォルトの名無しさん
05/01/23 18:15:540756754
05/01/23 18:21:22えーと レスありがとうございます
処理ゲージ画面をshow関数をコールした後、
呼ばれたほうのshow 関数で何か処理を
行うということでしょうか?
具体的に、どんなメッセージ処理をすればいいのでしょうか
0757デフォルトの名無しさん
05/01/23 18:50:22知らない言葉がでてきて自分が不勉強なのかとあせった
0758デフォルトの名無しさん
05/01/23 20:27:430759754
05/01/23 21:54:48一応、別の関数に分けて処理していますので、
それは大丈夫と思います
やはり、show だと DoModalと違って出力直後に
処理はできないものでしょうか?
0760デフォルトの名無しさん
05/01/23 22:13:51show関数ってなんだっけ?
まぁいいや、DoModalを使ってないなら、開くダイアログをどっかでCreateしてるはず。
そのCreateを見せて、
ついでに、設定したウィンドウスタイルとかもあわせて
0761デフォルトの名無しさん
05/01/23 23:48:43ttp://www.nitoyon.com/vc/tips/ie_component.htm
こちらを参考にして、AtlAxWinInit()を読んだあとに
クラス名に 『AtlAxWin』のウィンドウをCreateWindowで作成したのですが、
戻り値がNULLで返ってきます。
WinMain関数で何か初期化処理をしている事を紹介しているサイトが有ったのですが、
プロジェクト内にWinMain関数が無いため試すことが出来ませんでした。
どうすればうまくいくでしょうか。
0762759
05/01/24 08:48:40Create(uID);
ShowWindow(SW_SHOW);
CenterWindow();
これだけです
ちなみに、Createの前で SetWindowTextを実行すると、
メモリリークを起こして死にます
Createの後にSetWindowTextを入れると、ゲージ処理が終了してから
タイトルが表示されます
Window スタイルは、デフォルトでした(チェックとかは特についてないです)
0763デフォルトの名無しさん
05/01/24 10:25:13だったらCDialogの初期化でやればいい
0765デフォルトの名無しさん
05/01/25 12:30:25ViewやFrame等各クラスのメンバに設定を反映させるコードが非常に見苦しくなってしまいます。
設定ダイアログはまあ、大抵のアプリには付いている物なので、美しいやり方などがあるのかも、と思っているのですが……。
皆さんどの様にコーディングしているのでしょうか。
アイデアのある方、アドバイスなどお願いします。
0766デフォルトの名無しさん
05/01/25 15:08:550767デフォルトの名無しさん
05/01/29 17:15:370768デフォルトの名無しさん
05/01/29 17:41:41ない
0769デフォルトの名無しさん
05/01/29 17:46:380770デフォルトの名無しさん
05/01/29 18:49:18ゲーム画面をフルスクリーンにしたいのですがどうすればいいのでしょうか?
0771デフォルトの名無しさん
05/01/29 19:16:06画面いっぱいにウィンドウを広げる
0772デフォルトの名無しさん
05/01/29 19:17:37> ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
> Javascript は Web 制作板、CGI は Web プログラミング板へ。
> 業界談義、愚痴はプログラマ板へどうぞ。
> ゲーム関係の話題はゲーム製作板へどうぞ。← ← ← ← ← ← ←
> ネタ、板とは関係の無い話題はご遠慮ください。
0773デフォルトの名無しさん
05/01/30 00:29:49CHtmlViewを使えば表示する事はできるのは解かるのですが他にもコントロールを使いたいのです…。
ご教授お願い致します。
0774デフォルトの名無しさん
05/01/30 00:31:310775デフォルトの名無しさん
05/01/30 00:40:22レスありがとうございます。
仰る通りの方法で解決できました。ありがとうございました
0776デフォルトの名無しさん
05/01/30 02:00:45CoInitializeしてないとかいうオチじゃないだろうね?
0777デフォルトの名無しさん
05/01/30 08:37:51BCGみたいなやつ。
結構大変だなw
http://www.bcgsoft.com/bcgcontrolbar.htm
VSみたいなものを作ってます。
0778デフォルトの名無しさん
05/01/30 10:43:490779デフォルトの名無しさん
05/01/30 10:58:31CDC
0780デフォルトの名無しさん
05/01/30 10:59:080781鳥取県推進委員会
05/01/30 18:09:580782デフォルトの名無しさん
05/01/30 18:26:40死ね馬鹿
0783デフォルトの名無しさん
05/01/30 19:12:52ttp://homepage2.nifty.com/DSS/VCPP/MFC/Other/CBitmapDesktop.htm
0784デフォルトの名無しさん
05/01/30 21:07:56分からない人には尋ねていません
0785デフォルトの名無しさん
05/01/30 21:33:410786よし子
05/01/31 16:46:58分からない奴が答えんな糞グラマーが
0787デフォルトの名無しさん
05/01/31 17:10:250788デフォルトの名無しさん
05/01/31 18:29:05ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample98/html/_sample_mfc_saver.asp
0789デフォルトの名無しさん
05/01/31 22:30:11好きに作れ。SDKで作れるならMFCでも作れるだろ?
0790デフォルトの名無しさん
05/02/01 04:59:01USBメモリのデバイス名を取得することはできてるんだけども、そこからどやってドライブレターを取得していいのやら。
ぐぐって同じような質問を見つけても、コレだという回答はされていないようだし。
教えてエロい人。
0791デフォルトの名無しさん
05/02/01 09:13:110792デフォルトの名無しさん
05/02/01 09:29:29CUsbMemory
0793デフォルトの名無しさん
05/02/02 22:23:37大まかでかまいません
どんな手順で作るんですか
0794デフォルトの名無しさん
05/02/02 22:26:091.VC++を立ち上げる
2.作る
0795デフォルトの名無しさん
05/02/02 22:29:030796デフォルトの名無しさん
05/02/02 22:29:27おそらく作り方がわかんないから聞きにきてるんだろ
>>793
0.ぐぐる
1.VC++を立ち上げる
2.作る
0797デフォルトの名無しさん
05/02/02 22:32:42一度、ディレクトリをツリー表示にするのと
ファイルをリスト表示するのは作ったんです
次はそれを発展させたいなと思って。
0798デフォルトの名無しさん
05/02/02 22:47:220799デフォルトの名無しさん
05/02/02 22:51:210800デフォルトの名無しさん
05/02/03 00:59:09なかなかうまくいきません。
初歩的な質問になりますが、どこが間違っているのでしょうか?
//
WNDCLASS stWndClass;
stWndClass.style = CS_BYTEALIGNWINDOW;
stWndClass.lpfnWndProc = &AfxWndProc;
stWndClass.cbClsExtra = 0;
stWndClass.cbWndExtra = 0;
stWndClass.hInstance = AfxGetInstanceHandle();
stWndClass.hIcon = NULL;
stWndClass.hCursor = NULL;
stWndClass.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
stWndClass.lpszMenuName = NULL;
stWndClass.lpszClassName = "TestWClass";
AfxRegisterClass( &stWndClass );
//
CRect stRect( 0, 0, 300, 200 );
xsWnd.CreateEx( WS_EX_TOOLWINDOW,
"TestWClass"
, _T( "てすとですぅ" )
, WS_POPUP
, stRect
, NULL
, 1000 );
xsWnd.ShowWindow(SW_SHOW);
0801デフォルトの名無しさん
05/02/03 01:04:010802デフォルトの名無しさん
05/02/03 01:16:510803デフォルトの名無しさん
05/02/03 01:18:130804デフォルトの名無しさん
05/02/03 04:52:21方法論としてはこれ使えるんじゃ?
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/042/042468.html
>>797
とりあえずコピー貼り付け機能とかを盛り込む。
0805デフォルトの名無しさん
05/02/03 17:14:250806デフォルトの名無しさん
05/02/04 12:18:20オーナードロー
0807デフォルトの名無しさん
05/02/04 17:30:49どうしたらよいのでしょうか?
0808デフォルトの名無しさん
05/02/04 18:12:32MapWindowPoints
ClientToScreen
ScreenToClient
0809デフォルトの名無しさん
05/02/04 23:51:36設定をすべて保持するクラスなりモジュールなりを定義して,あらゆるところからそこを読み書きするようにしてる。
きれいはきれいだがコードは増える。
0810デフォルトの名無しさん
05/02/05 02:32:34どうしてなのでしょうか?
私のほうで調べてみましたが、まったくわかりません。
よろしくお願いいたします。
BOOL CMyFrameMenu::Create(CWnd* pWnd,CRect GlobalRect)
{
LPCTSTR lpszClassName;
HCURSOR hCursor = ::LoadCursor( NULL, IDC_ARROW);
DWORD dwStyle;
DWORD dwExStyle;
lpszClassName = AfxRegisterWndClass( CS_HREDRAW | CS_VREDRAW, hCursor);
dwExStyle = WS_EX_TOPMOST;
dwStyle = WS_CHILD;
return CreateEx( dwExStyle, lpszClassName, _T("タイトルバー"), dwStyle, GlobalRect, pWnd, NULL, NULL);
}
0811デフォルトの名無しさん
05/02/05 09:28:440812デフォルトの名無しさん
05/02/05 10:32:040813810
05/02/05 10:40:46エラー内容はこれです。
http://www.geocities.jp/ayana_city/error.JPG
素人なもので、このエラーを見て解決する方法がわかりません
CMyFrameMenuはCFrameWndから派生されたものです。
pWndは、CFrameWndが入ってます。
0814810
05/02/05 10:43:35ウィンドウスタイルは、WS_CHILDとしたいのです。
ちなみに、
WS_POPUPで親ウィンドウをNULLとした場合、アプリケーションを終了させたらエラーは出ませんでした。
dwExStyle = WS_EX_TOPMOST;
dwStyle = WS_POPUP;
return CreateEx( dwExStyle, lpszClassName, _T("タイトルバー"), dwStyle, GlobalRect, NULL, NULL, NULL);
0815デフォルトの名無しさん
05/02/05 10:49:340816810
05/02/05 10:58:00それを試してみましたが、駄目でした。
他の部分に問題があるわけではなく、そのBOOL CMyFrameMenu::Create(CWnd* pWnd,CRect GlobalRect) を呼び出したら、
エラーが出ます。
そのBOOL CMyFrameMenu::Create(CWnd* pWnd,CRect GlobalRect) を呼び出さないと、エラーも出ません。
私の乏しい知識では難しいですね。・・・・・・・
0817デフォルトの名無しさん
05/02/05 11:13:000818810
05/02/05 11:17:11CRect rect( 0, 0, 300, 200);
0819デフォルトの名無しさん
05/02/05 11:37:210820810
05/02/05 11:41:41CreateExは上記の一回のみの呼び出しです。
0821810
05/02/05 11:57:55WS_CHILDで親をCMainFrameをしてCreateExすると→アプリケーション終了時エラーが出る
何に問題が起きてるのかがわかりません。
0822デフォルトの名無しさん
05/02/05 12:05:210823810
05/02/05 12:13:22いえ、別のCFrameWndですが。
親、CMainFrame
子、CMyFrameMenu
両方とも、CFrameWndから派生されたもの。
子にCFrameWndを指定してはいけないのでしょうか?
0824デフォルトの名無しさん
05/02/05 12:30:28情報小出しでわかりにくい。
まず、クラス図かけ。
0825デフォルトの名無しさん
05/02/05 16:20:10CFrameWnd
→CMainFrame
→CMyFrameMenu
相関関係
CMainFrame
→CMyFrameMenu
0826デフォルトの名無しさん
05/02/05 16:25:53まったく描いてくれん orz
dc.FillRect(&rect,&bbb);だと描かれるのに
ワケワカメ
0827デフォルトの名無しさん
05/02/05 16:35:24描画のたびにCRgnを生成させないといけない。
CPaintDC dc(this); // device context for painting
// TODO : ここにメッセージ ハンドラ コードを追加します。
// 描画メッセージで CXSFrameWnd::OnPaint() を呼び出さないでください。
rgn = new CRgn();
rgn->CreateRoundRectRgn(0,0,300,200,15,15);
CBrush bbb;
bbb.CreateSolidBrush(RGB(255,0,0));
dc.FillRgn(rgn,&bbb);
delete rgn;
0828デフォルトの名無しさん
05/02/05 22:45:01ちゃんとヒープにメモリ確保してからCreateしてる?
0829デフォルトの名無しさん
05/02/06 07:51:020830デフォルトの名無しさん
05/02/06 08:54:170831デフォルトの名無しさん
05/02/06 09:26:460832デフォルトの名無しさん
05/02/06 09:36:540833デフォルトの名無しさん
05/02/06 09:38:09オーバーライドして中で無かった事にすればおk
0834デフォルトの名無しさん
05/02/06 09:44:440835デフォルトの名無しさん
05/02/06 09:46:130836デフォルトの名無しさん
05/02/06 10:04:40↑
只のコメントキーワード
0837デフォルトの名無しさん
05/02/06 10:06:05C++ でオーバーライドを実現するには、オーバーライドする基本クラスのメソッドに virtual 修飾子をつけて仮想関数として定義しなければいけません。
0838デフォルトの名無しさん
05/02/06 10:29:500839デフォルトの名無しさん
05/02/06 10:35:33SetWindowsHookExはお嫌いですか?
0840デフォルトの名無しさん
05/02/06 12:28:25それはMFCじゃないから・・・
0841829
05/02/06 12:58:36FloatingWindow(WS_EX_TOOLWINDOW)を作ったんだが、
そのFloatingWindowをクリックすると、CFrameWndが非アクティブになってしまう。
FloatingWindowをクリックしても、CFrameWndはアクティブのまま(一切非アクティブへ切り替わらない)にしたいんだ。
0842デフォルトの名無しさん
05/02/06 14:32:300843デフォルトの名無しさん
05/02/06 16:15:55んー、コンボボックスとかってそうじゃん。それ系のカスタムコントロールを参考にしてみたら?
0844デフォルトの名無しさん
05/02/06 17:23:59が、なんだったかわすれた(つ∀`テヘ
SPY++でスクリーンキーボードみればたしかでてくるのだが、今の環境にVCないのでわからん。
0845829
05/02/06 18:19:29↓こんな感じ
http://www.geocities.jp/devil_man_kekeke/sample.JPG
アウトプットウィンドウ(WS_EX_TOOLWINDOW)をクリックしても、その下のウィンドウが非アクティブ化されないようにするには、どうすればいいんだい?
度々スマソ
0846829
05/02/06 18:21:39SPYでスタイル調べて、試したんだが、どうもうまくいかん orz
0847デフォルトの名無しさん
05/02/06 19:04:340848829
05/02/06 20:59:19WS_DISABLEDとなってる。
でもマウス入力は受け付けるよね。
この辺のカラクリが知りたい。
0849デフォルトの名無しさん
05/02/06 21:40:31と適当に答えてみる。
0850デフォルトの名無しさん
05/02/06 22:17:18// clicking on floating frame when it does not have
// focus itself -- activate the toplevel frame instead.
0851デフォルトの名無しさん
05/02/07 02:01:42VC.NETでダイアログベースのアプリを作っています。
ダイアログを任意の数だけ表示させたかったのでポインタでCDialogを宣言して
new→create→ShowWindow(SW_SHOW)の手順で表示させているのですが
消すとき、OnOKまたはOnCancelでDestroyWindowしてPostNcDestroyで
delte thisしているのですがメモリが完全に元に戻りません。(少し残ります)
これはこういうもんなんでしょうか
0852デフォルトの名無しさん
05/02/07 06:49:33それが何なんだ???
0853デフォルトの名無しさん
05/02/07 07:06:49この人と同じ系統の質問ぽいね
たぶんそうだとおもうけど
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200405/04050029.txt
もやも・/B> 2004/05/19(水) 23:59:59
Adobe Photoshop のツールやレイヤーなどの小さいウィンドウは
これをクリックしてもメインのウィンドウが非アクティブになりません。
Visual Studioのツールバーを切り離したときもそうですが、
このようなOVERLAPPEDまたはPOPUPで親と一緒にアクティブになる
子ウィンドウはどのように作るのでしょうか。
APIのみでやりたいのですが、
CreateWindowEx時のスタイルや拡張スタイルで
指定できるのでしょうか。
それともキーボードフォーカスの関係でしょうか。
よろしくお願いします。
0854デフォルトの名無しさん
05/02/07 09:42:16MFCの中でAPI呼んでるからAPIのみでも同じ
ツールバーを切り離す
クリックでブレーク
そこのソース見る
0855デフォルトの名無しさん
05/02/07 12:25:58探してみる。
ファイル名はなんだい?
0856デフォルトの名無しさん
05/02/07 13:22:590857デフォルトの名無しさん
05/02/07 15:37:30>クリックでブレーク
がどこにあるかわからんね。
莫大すぎて。
砂漠でアリ探すようだ。
0858デフォルトの名無しさん
05/02/07 17:11:46void CMiniDockFrameWnd::OnNcLButtonDown(UINT nHitTest, CPoint point)
void CMiniDockFrameWnd::OnNcLButtonDblClk(UINT nHitTest, CPoint point)
void CWnd::ActivateTopParent()
0859デフォルトの名無しさん
05/02/07 20:08:21ごめんなさい。
難しすぎて。
それをどうしろと?
0860デフォルトの名無しさん
05/02/08 00:13:190861デフォルトの名無しさん
05/02/08 00:30:44デストラクタはvirtualになってるか?
0862デフォルトの名無しさん
05/02/08 00:40:11なんで OnOK で DestroyWindow するんだよ?
モードレスかと思いきやダイアログベースらしいし・・・ >EndDialog
0863デフォルトの名無しさん
05/02/08 00:55:51[[最近使ったファイル] のファイル数] や
[ファイル拡張子][フィルタ名]などを
後から変更するにはどうしたらいいんでしょうか。
0864デフォルトの名無しさん
05/02/08 01:03:340865デフォルトの名無しさん
05/02/08 01:26:35[[最近使ったファイル] のファイル数] はInitInstanceのLoadStdProfileSettingsに必要な数を(デフォルト引数は4)
[ファイル拡張子][フィルタ名]は
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_mfc_cdoctemplate.3a3a.cdoctemplate.asp
を参考にリソース編集。
0866デフォルトの名無しさん
05/02/08 12:50:03VC++で、画面起動後にCEditコントロールの背景色を変更する
にはどうしたらよいのでしょうか?
画面起動時ならOnCtlColorの中で設定できるのですが・・・。
よろしくお願いします。
0867デフォルトの名無しさん
05/02/08 15:30:12変えたいタイミングで色を変えてInvalidateなりなんなりしてやれば良いんじゃ寝?
0869デフォルトの名無しさん
05/02/09 08:34:34リソースエディタでメニューを作り、ClassWizardを実行すると
関連付けする既存または新規のクラスの選択を求められます。
このとき、関連付けするクラスはやはりCViewの派生クラスが適当でしょうか?
その場合、複数あるビュークラスのうちどれに関連付けるべきでしょうか?
足りない脳味噌しぼったところ、以下のような方法を思いつきました。
1. 一番メインとなるCView派生クラス
(クリック検出のコード等とかもあるのでメンバ関数がかなり多くなる)
2. 新規に、メニュー関係のイベントを扱うCView派生クラスを作成
(1に比べると1クラスあたりのメンバ関数は減るが、メモリ上に余計なものが増える気がする)
3. CDocumentやCWinAppあたりの派生クラス
(なんか反則っぽい)
#アプリケーションのバージョン情報ダイアログって、最初からCWinApp派生クラスに関連付けられてるような…?
0870デフォルトの名無しさん
05/02/09 10:12:190871デフォルトの名無しさん
05/02/09 12:35:450872869
05/02/09 16:04:01何もウィザードや本の指示通り、CView派生クラスに関連付けなくても特に問題は無いのですね。
>>870
例えば「ファイル」メニューはドキュメントクラスに、「表示」メニューはビュークラスに、
バージョン情報やヘルプはメインフレームに、という感じでしょうか?
>>871
なるほど、やってみたいと思います。
でもなんでClassWizardはわざわざCViewを指定してくるんでしょうね。
0873871
05/02/09 17:12:14メニューの項目(ボタン)の追加のような気もするけど
最初からあるメニューのリソース名はIDR_MAINFRAMEになってるし、
メニューの表示もメインフレームでやってるからそう思ったんだけど、
もうひとつメニューのリソースを追加すると
たしかにウイザードはviewとか言ってくるね。
その辺はよくわからん。
0874デフォルトの名無しさん
05/02/09 18:29:380875デフォルトの名無しさん
05/02/09 18:31:13CDialogで言うOnInitDialogみたいな
メッセージってありますか?
作成された時のみ1度だけ呼ばれるやつ。
0876デフォルトの名無しさん
05/02/09 18:53:06OnCreate
0877デフォルトの名無しさん
05/02/09 22:01:02呼ばれないです。
0878デフォルトの名無しさん
05/02/09 22:10:480879デフォルトの名無しさん
05/02/09 23:23:34ちゃんとVCで
CEditTest ってクラスを CEdit 継承して作って
WM_CREATEをマップしたOnCreateに処理を書いたが
通らないみたいなのです。
デバッガ使って調べても通ってないみたい。
Editは、WM_Createを受け取らないのかなと。
0880デフォルトの名無しさん
05/02/09 23:30:05サブ暮らすか
0881デフォルトの名無しさん
05/02/09 23:51:530882デフォルトの名無しさん
05/02/10 00:15:520883デフォルトの名無しさん
05/02/10 10:03:16PreSubclassWindow
0884デフォルトの名無しさん
05/02/10 13:39:01別な方法でもいいんでお願いします。
MFCたまにしか使わないんで、いつも
この方法に悩まされます。
0885デフォルトの名無しさん
05/02/10 13:45:01HWND hwnd = wnd;
0886デフォルトの名無しさん
05/02/10 14:02:22CWnd::GetSafeHwnd()
0887デフォルトの名無しさん
05/02/10 17:53:05CWnd wnd;
(HWND)wnd
0888デフォルトの名無しさん
05/02/10 17:53:42CWnd wnd;
wnd.m_hwnd;
0889デフォルトの名無しさん
05/02/10 19:38:12なぜでしょう?
error C2664: 'SystemParametersInfoA' : 3 番目の引数を 'DWORD' から 'PVOID' に変換できません。
void CXSystemApp::SetAbsoluteForegroundWindow(CWnd *pWnd)
{
int nTargetID, nForegroundID;
DWORD sp_time;
// フォアグラウンドウィンドウを作成したスレッドのIDを取得
nForegroundID = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
// 目的のウィンドウを作成したスレッドのIDを取得
nTargetID = GetWindowThreadProcessId(pWnd->GetSafeHwnd(), NULL );
// スレッドのインプット状態を結び付ける
AttachThreadInput(nTargetID, nForegroundID, TRUE ); // TRUE で結び付け
// 現在の設定を sp_time に保存
SystemParametersInfo( SPI_GETFOREGROUNDLOCKTIMEOUT,0,&sp_time,0);
// ウィンドウの切り替え時間を 0ms にする
SystemParametersInfo( SPI_SETFOREGROUNDLOCKTIMEOUT,0,(LPVOID)0,0);
// ウィンドウをフォアグラウンドに持ってくる
pWnd->SetForegroundWindow();
// 設定を元に戻す
SystemParametersInfo( SPI_SETFOREGROUNDLOCKTIMEOUT,0,sp_time,0);
// スレッドのインプット状態を切り離す
AttachThreadInput(nTargetID, nForegroundID, FALSE ); // FALSE で切り離し
}
0890デフォルトの名無しさん
05/02/10 19:50:59システムに関するパラメータを取得 (または設定) します。
BOOL SystemParametersInfo(
UINT uiAction, // system parameter to query or set
UINT uiParam, // depends on action to be taken
PVOID pvParam, // depends on action to be taken
UINT fWinIni // user profile update flag
);
これの解説探して読め
0891デフォルトの名無しさん
05/02/10 20:37:430892デフォルトの名無しさん
05/02/10 22:39:26Thanks!!
0894デフォルトの名無しさん
05/02/11 05:25:51すげー参考になった。サンクス!
CWnd::ActivateTopParent()
こんな便利な関数がなんでマニュアルにのってないんだろう。
protectedメンバなんだからさあ、隠さずに俺にも使わせろっ!って思った。
0895デフォルトの名無しさん
05/02/11 13:01:590896デフォルトの名無しさん
05/02/11 13:20:45WM_NCRBUTTONDOWN
WM_NCMBUTTONDOWN
0897デフォルトの名無しさん
05/02/12 01:12:47このコントロールはMFCに入っているのでしょうか。
あるいはどこかにいいサンプルはありませんか?
0898デフォルトの名無しさん
05/02/12 01:20:47リストコントロール
0899897
05/02/12 04:34:06たとえばフォルダのパスを指定するとそのフォルダの中身を表示してくれるような、
つまりエクスプローラの右側そのままです。
0900デフォルトの名無しさん
05/02/12 08:22:35リストコントロール
0901デフォルトの名無しさん
05/02/12 11:19:14リストコントロールでそのような機能を自分で実装する。
どこかのメーカーがそんなActiveXコントロールを売ってるかもしれない。売ってないかもしれない。
0902デフォルトの名無しさん
05/02/12 12:05:13Windowsエクスプローラスタイルというのがあるな
0903デフォルトの名無しさん
05/02/12 15:47:07codeprojectかcodeguruにあるんでは?
アイコンとか右クリックメニューとかファイル変更の監視とか
細かく作りこむのは結構大変だと思うが。
手抜きしたければCHtmlViewで
file:///c:/hogehogeにNavigateすればいいよ
0904デフォルトの名無しさん
05/02/12 16:50:19GetDIBitsの行のコメントを外すと、下記エラーが出ます・・・
「Run-Time Check Failure #2 - Stack around the variable 'binfo' was corrupted.」
なぜ、binfoが怒られているのでしょうか?
BITMAPINFO binfo;
HBITMAP hbmp = (HBITMAP)LoadImage(NULL, "Test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
BITMAP bmp;
GetObject(hbmp, sizeof(BITMAP), &bmp);
unsigned char *pixelBuf;
LONG xBytes = (bmp.bmWidth + 31) / 32 * 4;
pixelBuf = (unsigned char *)malloc(bmp.bmHeight * xBytes * 1);
binfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
binfo.bmiHeader.biHeight = bmp.bmHeight;
binfo.bmiHeader.biWidth = bmp.bmWidth;
binfo.bmiHeader.biPlanes = 1;
binfo.bmiHeader.biBitCount = 1;
binfo.bmiHeader.biSizeImage = 1;
binfo.bmiHeader.biCompression = 0;
CDC memDC;
memDC.CreateCompatibleDC(NULL);
// int ret = GetDIBits(memDC.GetSafeHdc(), hbmp, 0, bmp.bmHeight, pixelBuf, &binfo, DIB_RGB_COLORS);
free(pixelBuf);
0905デフォルトの名無しさん
05/02/12 18:57:13BITMAPINFOは不完全な構造体。
GetDIBitsは動的に確保したpacked DIBこそ
0906904
05/02/12 23:30:04ありがとうございます
BITMAPINFOをポインタ変数で宣言し
malllocでメモリ確保したら、エラーが出なくなりました。
free()すると、何故かエラー吐きますが・・・
がんばってみます
0907デフォルトの名無しさん
05/02/12 23:35:28んで delete
0908??
05/02/13 22:31:56拾いたいんだけど、pls. advise。
GetClientRectやGetWindowRectは、RECT/CRectの
戻り値が??なのです。。。 Appreciate。
0909デフォルトの名無しさん
05/02/13 22:56:51君の日本語はmystery
0910デフォルトの名無しさん
05/02/13 23:00:52BITMAPINFO,BITMAPINFOHEADER,GetDIBitsのMSDNページとサンプルコードを下ろせ。GetDIBitsに特殊な引数を渡したり、カラーテーブル用意したり、スキャン行数を変えるとか…。
>907 &rc
0911904
05/02/14 10:18:20ご指摘ありがとうございます。
やはりメモリサイズが間違っていた様です。
LPBITMAPINFOHEADER lpInfo;
×lpInfo = (LPBITMAPINFOHEADER)malloc(sizeof(BITMAPINFOHEADER));
○lpInfo = (LPBITMAPINFOHEADER)malloc(sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256);
これでfree(lpInfo)が通る様になりましたm(_ _)m
0912デフォルトの名無しさん
05/02/14 14:57:00CRichEditCtrlは、任意の場所に文字列を挿入するということはできないのでしょうか?
もしできるなら、その際に使用する関数(方法)を教えていただきたいのですが。
宜しくお願いいたします。
0913デフォルトの名無しさん
05/02/14 15:00:520914デフォルトの名無しさん
05/02/14 15:13:17EM_REPLACESEL
0915デフォルトの名無しさん
05/02/14 15:14:03http://pc5.2ch.net/test/read.cgi/tech/1108199304/50に聞け。
0916デフォルトの名無しさん
05/02/14 16:21:440917デフォルトの名無しさん
05/02/14 16:48:30どぞ つOnWndMsg
0919デフォルトの名無しさん
05/02/17 19:11:30或いは任意の解像度のDC作成する方法とか。
あったら教えてくださいおながいします。
0920デフォルトの名無しさん
05/02/17 19:15:000921デフォルトの名無しさん
05/02/18 15:22:39コールバック関数群)に沿ってpluginを開発してます。
既に多数のpluginが公開されていて、自分でも作ってみましたが意図した
ように動かず困っています。
スレ違いでしょうか?
コンパイルエラーや実行時エラーはなく、とあるメニュー項目をグレイアウト
したいのに変わらない、といった内容です。
0922デフォルトの名無しさん
05/02/18 15:32:410924デフォルトの名無しさん
05/02/18 16:56:04そういうスレは見あたらないね
0925921
05/02/18 17:04:57もう少し自分でデバッグしてみることにします。
ありがとうございました。
0926デフォルトの名無しさん
05/02/19 20:10:59それともフレームに付けるメニュー?
0927デフォルトの名無しさん
05/02/19 20:22:190928デフォルトの名無しさん
05/02/19 21:04:40あるなら他のプラグイン作者もいるかもしれないから
そこで情報交換できるかも。
0929デフォルトの名無しさん
05/02/19 21:12:07ム板はデベロッパ
てな棲み分けはあったほうがいいと思うか? それともないほうがいいと思う?
俺は・・・うーん、どっちとも言えん・・・
0930デフォルトの名無しさん
05/02/19 21:46:37そうじゃない場合は作者のサイト、ユーザーグループ、メーリングリストとかが
どこかに存在するはず。
0931アホな質問かもしれんが
05/02/20 01:09:53aButton = (CButton*)etDlgItem(IDD_HOGE);
こんな感じでキャストしても大丈夫なんだよな?
デバッガで見るとC戻り値の型がCTempWndだし
dynamic_castも駄目だし、DYNAMIC_DOWNCASTでも変換できないし、なぜ???
0932デフォルトの名無しさん
05/02/20 01:36:05class A
{
public:
HWND h;
};
class B : public A
{
public:
HWND get_handle() { return h; }
};
A a;
B* pb = (B*)&a;
HWND h = pb->get_handle(); // a.hが返る
というのと同じ。
C++的には良くないやり方だと思うが。
0933デフォルトの名無しさん
05/02/20 02:25:27通常のexeで、UIスレッドから測定のためのワーカスレッドを
生成しています。そのワーカスレッドの作業状況をステータスバー
に表示するためにUIスレッドのメインウィンドウにユーザ定義の
メッセージ(WM_UPDATESTATUSBARみたいなの)を投げている
のですが、これをPostMessageでやるとOKなのですがSendMessage
でやると固まってしまいます。いくつか書籍も読んだのですが、
SendMessageすると呼び出しが帰ってくるまではワーカスレッドは
スリープ状態になるが固まってしまう現象は報告されていません。
ご教授お願いいたします。。。
0934デフォルトの名無しさん
05/02/20 02:32:100935デフォルトの名無しさん
05/02/20 02:33:31PostMessageはキューに投げるだけ
0936933
05/02/20 02:44:46レスどうもありがとうございます。
そうなのですが、そのSendMessageしたメッセージのハンドラではたいした
作業はしてないのです。(ステータスバーをリフレッシュするだけ)
すぐに制御が帰ってくるはずなのでフリーズするのはおかしい
と思うのですが。。。
0937デフォルトの名無しさん
05/02/20 04:00:29もしUIスレッドのメソッドを呼び出してるのだとしたら
ちゃんとHWND渡してる?
0938デフォルトの名無しさん
05/02/20 11:42:49詳しくは下記のMessage Deadlocksを参照
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/aboutmessagesandmessagequeues.asp
0939933
05/02/20 14:03:07>>937
::AfxGetApp()->GetMainWnd()->SendMessage(WM_UPDATESTATUSBAR, ...)
みたいな感じでメッセージを投げています。(WM_UPDATESTATUSBARはユーザメッセージ
です)
>>938
WaitForSingleObjectで測定終了を待っていました。これが原因のようです。
教えていただいたMSDN読んだのですがデッドロックの項目にWait〜の件は
書かれてないですね。
Win32マルチスレッドプログラミングという書籍も読んだのですがやはり書かれて
ませんでした。
Wait〜で待っている以上、SendMessageといえどもOSはCPU時間を割いてくれないのですね。
勉強になりますた。
レスくださったみなさんどうもありがとうございました。。。
0940デフォルトの名無しさん
05/02/20 15:55:12クラスウィザードでCEdtiにint型の変数を設定すると、
実行時にDoDataExchangeで以下のような警告が出力されます。
Warning: initial dialog data is out of range.
変数の範囲を1-9999にすると警告が出ます。0-9999だと出ません。
解決方法をご存知の方がいらっしゃいましたらお願いします。
0941デフォルトの名無しさん
05/02/20 16:04:45コンストラクタで1(つーか自分の指定した範囲内の数値)を入れて味噌。
0942デフォルトの名無しさん
05/02/20 16:08:15変数の初期化をしてないからでは?
0943942
05/02/20 16:10:19意図するところは同じです orz
0945??
05/02/20 20:40:01IDR_MAINFRAMEの、
MENUITEM "ツール バー(&T)", ID_VIEW_TOOLBARや、
MENUITEM "ステータス バー(&S)", ID_VIEW_STATUS_BAR
は、MFCのどこでハンドルされているのでしょうか?
−− 消去や再表示など。
又はデバッガでトレースする方法(適当なブレーク
ポイントなど)を教えて下さい。
0946デフォルトの名無しさん
05/02/20 20:59:52MFCソース内をID_VIEW_TOOLBARやID_VIEW_STATUS_BARで検索してみる気はないのかい?
0947デフォルトの名無しさん
05/02/21 02:06:38検索する気がないから尋ねているんです。
0948デフォルトの名無しさん
05/02/21 02:31:180949デフォルトの名無しさん
05/02/21 22:22:14回答者も答えるかどうかで自らの主張を示せばいい。
0953デフォルトの名無しさん
05/02/22 17:01:24動き始めるんですが、これをワーカースレッドとして使うのは問題ないですか?
0954デフォルトの名無しさん
05/02/22 17:36:54多分永遠にメッセージを待つことになるのでスレッドが終わらなくなる。
InitInstanceがFALSEを返せばRunは呼ばれない。
0955デフォルトの名無しさん
05/02/22 17:45:05そうなんですか・・・ありがとう御座います。
続けざまの質問且つCWinThreadの理解不足で申し訳ないのですが、
CWinThread::CreateThreadというのはどういう用途で使われるのでしょうか?
AfxBeginThreadのようにスレッド関数のポインタを渡したりはしないのですよね?
0956デフォルトの名無しさん
05/02/22 18:31:13以下、MSDN
| 呼び出したプロセスのアドレス空間内で実行されるスレッドを作成します。
| 1 ステップでスレッドを作成し実行するには AfxBeginThread 関数を使います。
| 連続したスレッドの作成とスレッドの実行を繰り返すときに
| スレッド オブジェクトを再利用したいときは CreateThread を使います。
0957デフォルトの名無しさん
05/02/22 18:38:25私もそれはMSDNで読んだのですが、どうも下記の
| 連続したスレッドの作成とスレッドの実行を繰り返すときに
| スレッド オブジェクトを再利用したいときは CreateThread を使います。
この意味がよくわからなかったんですよね・・・。
CreateThreadを呼び出す事でどのスレッドが起動されるのかと言う所が
わからないと言った感じです。抽象的な物言いで申し訳ありません。
0958デフォルトの名無しさん
05/02/22 19:38:46CString str = "0x12345678";
これをDWORD型に格納したいのですが、
何か良い関数等ありますでしょうか?
テキストファイルに出力された値を読み込みたいのですが…
0959958
05/02/22 20:07:56失礼しました。
0960デフォルトの名無しさん
05/02/22 20:20:070961デフォルトの名無しさん
05/02/22 21:02:09AfxBeginThread() って、
CWinThread 作って CreateThread 呼び出すくらいしか
やってなくて、で生成したスレッドが実行するのは
ワーカースレッド: AfxBeginThread に渡した関数
インタフェーススレッド:_AfxThreadEntry() 関数(非公開)
この _AfxThreadEntry() の中で、CWinThread の InitInstance() だの
Run() だのが呼び出されてる。
0962デフォルトの名無しさん
05/02/22 21:36:43成る程ですね!ありがとうございました。
0963デフォルトの名無しさん
05/02/23 18:07:520964963
05/02/23 19:11:560965デフォルトの名無しさん
05/02/24 15:47:07ファイルの読み込み中など、モーダルなダイアログを出して
逐次表示を更新→終わったら即ダイアログ閉 をやりたいのですが、
CDialog::DoModal()で呼び出すとどこに実行が移るのかわかりません。
DoDataExchange()だとウインドウを開いたときと閉じるときに2回実行されてうまくないです。
いちいちOKボタンを押してダイアログを閉じるのも嫌です。
こういう場合は自分でメンバ関数を作って、CDialog::Create()、CDialog::ShowWindow()したあと
そのメンバ関数を呼び出すのがいいのでしょうか?
0966デフォルトの名無しさん
05/02/24 15:50:240967デフォルトの名無しさん
05/02/24 16:17:090968デフォルトの名無しさん
05/02/24 16:31:06だね。DoModalするとダイアログ側に実行権が移っちゃうんで。
0969デフォルトの名無しさん
05/02/24 16:45:500970デフォルトの名無しさん
05/02/24 21:33:05for (aPlaying = TRUE; aPlaying; ) {
//Do somethig
if (::PeekMessage(&message, NULL, 0, 0, PM_REMOVE)) {
::TranslateMessage(&message);
::DispatchMessage(&message);
}
Sleep(1);
}
こんな感じで擬似スレッドつくれば?
0971デフォルトの名無しさん
05/02/24 23:22:370972デフォルトの名無しさん
05/02/24 23:30:290973デフォルトの名無しさん
05/02/24 23:54:380974デフォルトの名無しさん
05/02/25 16:09:51例えば「1」「2」「3」「4」「5」という文字をを識別して表示するみたいな事って出来るんでしょうか?
0975デフォルトの名無しさん
05/02/25 16:11:250976デフォルトの名無しさん
05/02/25 19:37:300977デフォルトの名無しさん
05/02/25 23:19:430978デフォルトの名無しさん
05/02/26 01:07:210979デフォルトの名無しさん
05/02/27 15:57:03CText(ラベルという?)に表示されている文字を画面から
はみ出たら改行されるようにしたいのですが、設定の仕
方が分かりません。
大きな文字をウィンドウ上に表示したいのですが、
SetFontでフォントサイズを大きくしたのですが、
ウィンドウ上に収まりきらない文字の場合、文字
切れしてしまいます。
これを解決する良い方法はないのでしょうか?
0980デフォルトの名無しさん
05/02/27 16:04:25CTextなんてものはMFCには無い
0981デフォルトの名無しさん
05/02/27 16:28:00スタティックテキストです。
スマソ
これは通常内部でいじったりはしないのですか?
0982デフォルトの名無しさん
05/02/27 18:50:26何べんも同じこと質問するなドアホ
http://pc5.2ch.net/test/read.cgi/tech/1107926989/274-280n
0983デフォルトの名無しさん
05/02/27 19:00:020984デフォルトの名無しさん
05/02/27 19:02:29ないから質問してるんです
知らない人は黙っててください
0985デフォルトの名無しさん
05/02/27 19:05:370986デフォルトの名無しさん
05/02/27 20:08:150987デフォルトの名無しさん
05/02/27 20:09:44MFCを行うのは初めてで、どのやり方が一番適切か
分からなかったため聞きました。
ありがとうございました。
レス数が950を超えています。1000を超えると書き込みができなくなります。