■ VisualC++(MFC限定)相談室 MFC6.dll■
2 :
デフォルトの名無しさん :02/12/11 20:50
2
ld ./mfc6.dll ?
スレタイがダサい。削除依頼行きだね。
皆様申し訳ございません。 目立ちたくてスレたてますた。 今後このようなことがないよう致します。
8 :
デフォルトの名無しさん :02/12/11 22:09
8
つーか俺が
>>1 でほとんどのMFC過去スレも俺が立ててきたんだけど
そろそろちょっと変えてみようかなーと思っただけで・・・
10 :
デフォルトの名無しさん :02/12/11 22:11
まあ、本質が変わるわけでなし。
>>10 名前変えると荒らされるぞ。どっかみたいに。
このスレが生き続けてくれるということは、正直、うれしいというかほっとする というか・・・
まだまだ、需要があるんだなぁと・・・
14 :
デフォルトの名無しさん :02/12/13 00:37
ウィンドウを2列に分けて、左の列は2行、右の列は1行 に分けて、それぞれにビューを表示したいのですが、 以下のようにすると最初に表示した段階で左の列が潰れてしまいます 左の列幅と右の列幅を3:1で最初は表示したいのですが どう修正すればいいか教えてもらえないでしょうか CSplitterWnd m_split; CSplitterWnd m_subSplit; BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { CRect rect; GetClientRect(rect); m_split.CreateStatic(this, 1, 2); m_subSplit.CreateStatic(&m_split, 2, 1, WS_CHILD | WS_VISIBLE | WS_BORDER, m_split.IdFromRowCol(0, 0)); m_subSplit.CreateView(0, 0, RUNTIME_CLASS(CView1), CSize(3*rect.Width()/4, rect.Height()/2), pContext); m_subSplit.CreateView(1, 0, RUNTIME_CLASS(CView2), CSize(3*rect.Width()/4, rect.Height()/2), pContext); m_split.CreateView(0, 1, RUNTIME_CLASS(CView3), CSize(1*rect.Width()/4, rect.Height()), pContext); return TRUE; }
m_split.SetColumnInfo(0, 全体の75%, 適当) でどうよ。
16 :
デフォルトの名無しさん :02/12/13 00:53
質問です。 ファイルからビットマップを読み込んで ダイアログボックスのピクチャボックスで表示したいのですが、 ピクチャボックスのサイズがわからずフォームにあふれてしまいます。 ピクチャボックスのサイズってどうやったらわかるのでしょうか? よろしくお願いします。
19 :
デフォルトの名無しさん :02/12/13 01:55
20 :
デフォルトの名無しさん :02/12/13 13:17
スプリッタウィンドウで 複数のビューを表示するときに 入力するキーによって 受け取るビューを変えたいのですが どうしたらいいでしょうか たとえば数字キーなら左のビュー エンターキーなら右のビューといった感じです
>>20 フォーカスがあるビューがメッセージ受け取るから、
両方でWM_KEYDOWNとか受け取ってキーによって振り分けりゃいいんじゃない?
例えば右のビューにフォーカスがあって数字キーが押された場合、
左のビューへSendMessageするとか。
>>21 他のビューのSendMessageを起動するには
どのように記述すればいいのでしょうか
CView1とCView2があった場合
CView1のOnKeyDown内から
CView2のSendMessageを呼び出すことができません
>>22 他のビューへのポインタを取得してSendMessageすりゃいいじゃん。
WM_KEYDOWN受け取るのもキーによって振り分けるのも CMainFrameでやった方が楽では?
CMainFrameで受け取れるならどうぞ。
あ、WM_KEYDOWNをそのままSendするのか。
>>24 は無し。聞かなかったことにして。
そして他のビューへのポインタの取得方法がわからんとか言われる罠 CDocument::GetNextView()とか知ってんのかな……
>>27 有難うございます
その通りでした
GetDocumentとかと同じでGetViewとかあるのかと思って
調べてたらCRichEditViewのだったりするしで
悩んでるところでした
>>27 すいません。また問題が出てきました。
GetNextView でゲトしたビューがどのビューなのかは
どのようにすればわかるのでしょうか。
すべてのビューにそれぞれが区別できる名前のようなものを
返す関数を作っといて、GetNextViewで得るごとにそれを呼び出して
調べていくという方法を考えているのですが、
もっと手っ取り早い方法があるのでしょうか
GetRuntimeClass を知らないのだろうか
MSDNライブラリを調べようという気はないのだろうか
32 :
デフォルトの名無しさん :02/12/13 21:23
ダイアログにピクチャボックスがあります。 そのピクチャボックスの中をOpenGLを使って描画しているのですが アニメーションするとちらついてしまいます。 このチラツキをなくすにはどうすればよいでしょうか?
33 :
デフォルトの名無しさん :02/12/13 21:47
Titleバーなしのポップアップウインドウを作ったのですが、 これをマウスで移動できるようにする方法ってあるでしょうか? 左右の枠の部分をつかんで移動できるようにしたいのです。 ご存知の方教えてください
>>32 OpenGLはよくわからんけど、InvalidateRectとかその辺が役に立つかもしれない。
>>33 WM_LBUTTONDOWN捕まえればいいと思うけど。
35 :
デフォルトの名無しさん :02/12/13 22:57
>>33 OnNcHitTestでおまじない唱える
>>30 知りませんでした
どうもありがとうございます
>>31 MSDNライブラリ調べてますよ
ただ他人のソース読んでて知らない関数やら出てきたときは
役に立つんですが、このような動きをする関数を知りたいってときに
うまく調べられません。検索時にキーワードとなるようなものを
まだあまり知らないので
37 :
デフォルトの名無しさん :02/12/14 14:04
CHtmlViewのWebBrowserって右クリックするとIEと同じ右クリックメニューが出ますが これを右クリックしても出ないようにする方法ってありますか? あとHTML表示用のコントロールってないんですかね?
38 :
デフォルトの名無しさん :02/12/14 14:13
pinkserverってアダルトサイトじゃなかったっけ? 宣伝か?
>>38 ネチケットどころか常識的な事ですら理解してないのが一杯いる2chで言われても…
42 :
デフォルトの名無しさん :02/12/14 20:41
ダイアログで DragAcceptFiles(TRUE)を呼ぶ のと WS_EX_ACCEPTFILES をつける のはどう違うんですかね?
>>40 うぉ!サンクス!
ただisThisOurBrowser()うんたらのとこがよくわからなかった・・・
別にこれでいいと思うんだけどどうかな。
-------------------------------------------------------
BOOL CHtmlTestView::PreTranslateMessage(MSG* pMsg)
{
if ( (WM_RBUTTONDOWN == pMsg->message) ||
(WM_RBUTTONDBLCLK == pMsg->message) ){
return TRUE;
}
return CHtmlView::PreTranslateMessage(pMsg);
}
-------------------------------------------------------
>>43 isThisOurBrowser()の上の説明を読むと、ネストされたフレームの場合を考慮してるみたいね。
<FRAMESET>とかのことじゃないかな?
45 :
デフォルトの名無しさん :02/12/15 11:27
前スレが冬厨により上げられたのでage
>45 うるせえ!冬坊が!
47 :
デフォルトの名無しさん :02/12/15 15:59
すみません VC6.0でSDI環境で作業したいのですが 手段はないでしょうか
nmakeと、自分の好きなSDIなエディタ使う
49 :
デフォルトの名無しさん :02/12/15 16:55
別プロセスでコンソールアプリが動いていて そいつがあるファイルを出力するまで もう一方のプロセスで「しばらくお待ちください」と書かれた ダイアログを表示しておいて、ファイルが出力されれば それを自動的に消したいのですがどのようにしたらいいのでしょうか。 しばらくお待ちくださいとだけ書いてOKボタンとキャンセルボタンを取り去った ダイアログをCDialogの派生でCWaitDlgとして作って 表示するのはDoModal()みたいだったので、DoModal()中に 以下のようにして一定時間ごとにファイルが出来てるかチェック して、できてればダイアログを閉じようとしてるんですが、 呼び出してもダイアログが表示されません。 たぶんDoModal()に書いてることがおかしいんだとは思ってるんですが、 どうすればいいのかわかりません。 int CWaitDlg::DoModal() { while(1){ if( ::GetFileAttributes(ファイル名) != 0xFFFFFFFF ){ remove(ファイル名); break; } Sleep(1000); } return 0; }
50 :
デフォルトの名無しさん :02/12/15 17:15
>>49 DoModalを抜けてからじゃないとダイアログ表示されないよ。
ダイアログを表示してから何か処理したかったらWM_INITDIALOGのハンドラに書こう。
あまり上手な設計とは思えんが…。
>>49 思わず笑ってしまった。
プログラムは練習のために書いてんだよな?
52 :
デフォルトの名無しさん :02/12/15 17:32
>>50 下のようにしてみて
DoModal()を呼び出してみても
止まってる感じはするんですが
ダイアログが表示してくれません。
BOOL CWaitDlg::OnInitDialog()
{
CDialog::OnInitDialog();
while(1){
if( FileExist("visu_finish") ){
remove("visu_finish");
break;
}
Sleep(1000);
}
EndDialog(0);
return TRUE;
}
>>51 ヽ(`Д´)ノウワァァァァン練習のためじゃないんだよぅ
でも人に渡したりするようなものじゃないです
自分が使うためのソフトです
53 :
デフォルトの名無しさん :02/12/15 17:34
ごめんなさいさっきと変わりました #define FileExist(s) ::GetFileAttributes(s) != 0xFFFFFFFF こういうことです
>>52 お前馬鹿だろ…
OnInitDialogで無限ループ組んでていつWM_PAINTとか受け取るつもりだ?
ワーカースレッド作れよ。
>>54 ダイアログ表示中はユーザに何もしてほしくなくて
スレッドみたいに並列処理のイメージをもっていなかったので
ダイアログ表示、ファイルチェック、ダイアログ消去の順番で
出来ると思ってました。
スレッドにしたらできました。ありがとうございます
56 :
デフォルトの名無しさん :02/12/16 15:55
C++.netでMFC6を使用したプログラムの動作について質問です。 Windows2000+ServicePack2ではきちんと動くのですが Windows2000のノーマルだと動作があやしくなってしまいます。 具体的には リストボックスがパチパチ点滅してしまい、選択できない。 どっかで暴走してるように重くなる。 という現象がおきています。 これはどのようなことが考えられますでしょうか?
57 :
デフォルトの名無しさん :02/12/16 17:36
58 :
デフォルトの名無しさん :02/12/16 20:44
なるほどServicePackのバグということで解決と思ったのですが、 windows2000のノーマルでも動いてしまいました・・・(TT) またいままでとはまったく別のマシン win2000+ServicePack2 XPノーマル でも動作できませんでした。 これにはどのような原因が考えられますでしょうか? もちろんともにVS.netは入れていません
MFCのスタティックライブラリを使ってもそうなる?
>>58 > これにはどのような原因が考えられますでしょうか?
多分、貴方のバグ。
>リストボックスがパチパチ点滅してしまい、選択できない。 ふつうにリストボックス貼り付けただけのダイアログでもそうなりますか? >どっかで暴走してるように重くなる。 これは自分のバグでしょ。
点滅ってのは再描画のことだろうな。 どっかで無限ループしてるぽい。だから入力も受け付けないんだろう<選択できない。
63 :
デフォルトの名無しさん :02/12/17 00:38
IEコンポーネント使わずにローカルにあるHTMLファイルを解析して 任意の位置に表示したいんだけど、やっぱ自作するしかない? その場合はリッチテキストコントロールを継承して作るのかな。 どこかのサイトで、そういった自作クラス公開してないかな・・・ 結構需要あるように思うんだけど。
www.mozilla.orgにありますよ
>>63 て何かMFCと関係あったのかな。独り言なら他に逝って欲しいな。
>>64 どのクラスがそれに当たるのか簡単にわかるもんかな。
とりあえずソースダウンロードしてみようっと。
67 :
デフォルトの名無しさん :02/12/17 01:29
VC.netってどうなの?
ぼちぼちでんな。
69 :
デフォルトの名無しさん :02/12/17 02:09
OpenSSLをラッピングしたようなクラス 転がってませんか? www.openssl.org
>>69 調べてないけどCodeGuruにないか?
71 :
MFC使ってるとかの判定 :02/12/17 17:32
.cpp内でプロジェクトが「MFCを使っている」・「MFCのstaticリンク」・「MFCの共有DLL使用」の 判定にはどのようにすればよいのでしょうか? MFCのDLL使用の場合は #ifdef _AFXDLL で、できるようですけど。 よろしくお願いします。
「MFCを使っている」は「MFCを使っていない」の間違いです。
*.cppじゃムリだろ… *.dspファイルに書かれていることだし。 何か間違った認識をしているような気がしてならない。
>>73 やりたいのはプログラムのソースを使いまわしたいときに
#include "stdafx.h"
がいるときといらないときがあるためです。
アップウィザードでMFCのプロジェクトを作った場合 stdafx.h が必要ですけど(pchの設定そのままの時)
そうでない場合や他のコンパイラを使用する場合には stdafx.h は不要ですので、
#ifdef _AFX
#include "stdafx.h"
#endif
こんな感じで使いたかったんですけど。(ダミーの stdafx.h 作ったほうがはやい?)
>>74 おいおいstdafx.hはMFCを使っているかどうかは関係ないぞ。
MFCを使わないWin32アプリでも使う。
>>71 _MT
_DLL
_AFX
これで大抵いける。
だが、これと
>>74 のpchの話のつながりが分からないぞっと。
>>74 プリコンパイル済みヘッダって知ってますか(藁
レスどーもです
>>75 スマソ、他のコンパイラを使用する場合とかです。
>>76 もう帰っちゃったので明日試してみます。でも、_AFXは AfxVer.h で定義されていて
stdafx.hをインクルードしたあとでなければ判断できないのでは
それとも自分でコンパイルオプション(/D)を指定したほうがいいんでしょうか?
>>77 すんません、どうゆうつっこみかよくわからないんで説明してください。
なんか質問の主旨が変わってきてる。 最初はMFC不使用/使用/DLLを区別したいとあったはずだが いつのまにかプリコンパイル済みヘッダの使用/不使用の話に。 とりあえずMFCスレとは関係ないということはわかったが・・・ コンパイラを変えるならVC固有のマクロに頼ること自体おかしいと思う。
>>80 やりたいことは
>>74 での stdafx.h のインクルードをする・しないの判断です。
VCのアップウィザードでプロジェクトを作るとプリコンパイルドヘッダーの設定で stdafx.h が
指定されます。そのため .cpp に #include "stdafx.h" が必要になります。
で、この .cpp(1つぐらい) を他のプロジェクトでも使用するとき、そのプロジェクトが
BC++Builderとかの場合は、ふつう #include "stdafx.h" は、いりませんし、ありません。
このようにVCプロジェクトとBCBプロジェクトが.cppを共有しているような場合に
stdafx.h のインクルードをする・しないの判断ができるのかしりたかったのです。
>最初はMFC不使用/使用/DLL
これはVCの時はほとんどMFCばかり使ってるのと、アップウィザードでMFC、DLLを使用に
するとコンパイルオプションで /D _AFXDLL が指定されるのがわかったので、ほかの場合にも
なにか定義されているのかもと思ったからです。
スレ違いになってきたので、このことについてはこれまでにします。
82 :
すごくしょしんしゃ :02/12/18 18:45
MFCを使っています。 マイコンピュータのようなものを作りたいのですが、どういう風に作ったらいいかわかりません。 具体的には、今リストコントロールを用いてそれらしいものを作っていたつもりだったのですが、 「大きいアイコン」や「小さいアイコン」の表示の時にマイコンピュータのように、マウスでアイコンを動かして規則的でない任意の位置に動かせません。ドラッグ状態にもならんです。 それと、ドラッグについて質問です。外からドラッグしてこられたものが、ドロップされた、というのは OnDropFiles(HDROP hDropInfo) を利用することでなんとか処理することができましたが、逆に、自分の作っているアプリから、(デスクトップや他のアプリケーションなどに)外にドラッグしてドロップする、という方法がわかりません。 方法を知ってらっしゃる方がいましたら、お願いします。。
>>82 >リストビュー
作成時にLVS_AUTOARRANGEを外す。
>ドラッグ
COleDropSourceとかその辺調べてみな。
84 :
すごくしょしんしゃ :02/12/18 21:08
>>83 どうも、ご親切にありがとうございます。
キーワードを頼りにもう一度調べてみます!!
85 :
すごくしょしんしゃ :02/12/18 21:50
>>83 void C***List::PreSubclassWindow()
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
this->ModifyStyle(LVS_AUTOARRANGE,NULL);
CListCtrl::PreSubclassWindow();
}
のようにしてLVS_AUTOARRANGEを削除したつもりなんですが、どうも変化がないです。
ここで他のスタイル変更などは試してうまくいっているので、恐らく変更のタイミングじゃないと思うんですが・・・
ちょっと板違いなきもしますがプラットフォームがMFCなので。。 LANにぶら下がっているマシンの自分のアドレスが欲しいのですが欲しいのはネットワークアドレスじゃなく グローバルアドレス。gethostname→getbyname(だったかな?)でとるとネットワークアドレスになってしまいます。 この状態でも確認くんなどにつなぎに行くとちゃんとGIPがみれますがこれが欲しい。 この場合HTTPでつなぎに行ったときにルータのNATやらで与えられるIPだからアプリからはどうしようもないのかな。 どうなんでしょ。この変詳しい人いますか?
>この状態でも確認くんなどにつなぎに行くとちゃんとGIPがみれますがこれが欲しい。 そりゃゲートウェイやルータのIPアドレスでしょ?
90 :
すごくしょしんしゃ :02/12/18 22:47
>>86 半透明になってアイコンがドラックされた状態になってマウスカーソルとともに動いていくっ
っていう動くではなく、
>>85 で言いたいのは、自動整列になっていないデスクトップやマイコンピュータのように、
自由にアイコンを配置できるようなことです。
>>85 PreCreateWindowじゃなくて?
PreSubclassWindowが呼ばれたときってまだCreateは呼ばれてないと思うけど…。
93 :
すごくしょしんしゃ :02/12/18 23:04
>>92 ダイアログにVCのエディタで作った(配置した?)リストコントロールなんですけど・・。
LVS_* の変更って、SetExtendedStyle() じゃなかった?
どこまで実装されているかわからないから答えるほうも大変だな…
>>87 > 欲しいのはネットワークアドレスじゃなくグローバルアドレス。
最近は、こういう言い方するのか ?
分かってない奴は昔からそういう言い方をする
だからMFC使ってるからってだけでこのスレで質問するのはやめた方がいいって。
ネットワークプログラミングスレあるんだから。
自分の質問の要点はどこなのか冷静に切り分けていこうや。
>>85 そのソースみたところリストコントロールの派生クラスなんだから
>>92 の通りだ。
つーかスタイル変更したいだけならOnInitDialogあたりで
m_list.ModifyStyle(・・・); // m_listはCListCtrl
でいいじゃないか。
100 :
デフォルトの名無しさん :02/12/19 00:21
はぁ・・・こいつは今後またここでMFCと関係ない質問するよ・・・
>>87 で「板違い(スレ違いの間違いだろうな)なきもしますが」と
自覚してるのかと思いきや、ちょっと指摘されたらこの態度かよ・・・
102 :
デフォルトの名無しさん :02/12/19 00:51
>101 いいから消えろよ。テイノウ。 すこしは役に立つこと書けや。 スレ違いの間違い?ばかオマエ? 板違いのつもりで書いたんだよ。とっとと逝けや
>>102 ( ´,_ゝ`) 煽り・叩きは厨房板へどうぞ。
(´-`)。oO( 本当に板違いだったというオチか…<厨房板へ )
105 :
デフォルトの名無しさん :02/12/19 01:05
まだ、VC6を使ってるものですけど、.netvcの新mfc(mfc70?)では、 Office2000や.netみたいなツールバー(Rebarっぽいツールバーバンドでのリサイズ& フローティング&ツ-ルバーの自動サイズ変更)はサポートされてるんでしょうか?
>103 >104 うっさい、ハゲ
>>106 いいから消えろよ。テイノウ。
少しは役に立つこと書けや。
>>107 VC6だとやっぱり、CToolberにツールバーバンドでのリサイズ&
ツ-ルバーの自動サイズ変更の処理をオーバーライズさせるですよね。
(Rebar使うとフローティングにならなかった様な気がするので・・・)
110 :
デフォルトの名無しさん :02/12/19 15:54
ビットマップの再描画の方法おしえてください 6.0です
111 :
デフォルトの名無しさん :02/12/19 16:16
読み直しゃいいんでない?
>>110 まったく状況がわからん。
質問するならもっと状況を説明しろよ。
悪い質問の仕方の見本だな。
>>110 は単発スレまで立っているので答える価値なしです
VC++6.0SP5 & Win2000です。 サイズ可変ダイアログでタブコントロールがリサイズ時にちらつくのは何故でしょう? 同じダイアログに貼り付けたツリーコントロールはリサイズしても全くちらつきません。
>>116 ですよねぇ。
ツリーコントロールがちらつかないのは内部でちらつかないように処理してるのかな?
ちなみにCWnd::MoveWindow()でリサイズしてます。
bRepaintをFALSEにするとちらつかないけど再描画もされない…(当たり前か)。
118 :
デフォルトの名無しさん :02/12/19 23:45
>>119 おおー、なるほどReBarのほうをオーバーライズするんだ。
うん?フローティング時のSIZE_DYNAMICは効かなくなるのか?
早速TearoffReBarを移植してみよっと!♪
本当に助かります。ありがとうございます。
オーバーライズ…なんか(・∀・)カコイイ!
複数形だな 聞 い た こ と な い け ど
>>122 三単現だろう。
本人とVC++以外の第三者がオーバーライドするのだ。
コワー。
>108 謝れとは言いませんがこちらもちょっと大人気ないのですが ムカついたので友達のハッカーに頼んであなたの個人情報を 探してもらうことにしました。あ、もう遅いですよ。 もうすでに友達解析始めちゃってますから・・・(^^; ちなみにこれは自慢じゃないんですがその友達は日本でも 5の指に入るくらいの凄腕のハッカーです。 この前彼の家に遊びに行ったらものの5分で他人の個人情報を 抜き取っていました。 彼にとってそれくらい赤子の指をひねるくらいの行いなんですよね(爆) これであなたもいっかんの終わりってやつですね(^^; まあせいぜい後悔してくださいね。 それからもう二度と荒らしはしないこと(その友達は荒らしが大嫌いらしいです。 荒らしを見つけたら即解析に入るみたいです。(^^;) それでは、う~ん二日後くらいかな?また例のところに来てくださいね。 あなたの住所本名住所その他もろもろのせておきますんで(笑) あ、警察とかに言ったって無駄ですよ。 あなたは荒らし(犯罪)なんだから通報したところで捕まるのは アナタです 友達は掲示板のログを自在に操ることができるんです。 と、いうことでbye♪(^O^)/~~
125 :
デフォルトの名無しさん :02/12/20 19:21
>124 漏れもハックしてくれ。頼む。
なつかしいコピペだな 最近増えてるけど、リバイバルブーム?
MFCのCReBarで使うことのできるメニューバーの 作り方をご存知の方いませんか? codeguruやcodeproject探したが見つかりませんでした
>>127 codeguruのサンプルをちょっとだけ改造すればできるよ
>>128 codeguruを見てみましたが、見当がつきませんでした。
何かヒントをいただけないでしょうか。
よろしくお願いします。
130 :
デフォルトの名無しさん :02/12/21 02:41
132 :
デフォルトの名無しさん :02/12/21 15:36
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) はすでに LIBCMTD.lib(new.obj) で定義されています
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに LIBCMTD.lib(dbgdel.obj) で定義されています
Debug/mm2080.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました
このようなエラーがたびたび出てくるんですが解決方法は
ttp://hornet-web.hp.infoseek.co.jp/tips/tips.html#10 こちらで正解なんでしょうか?
一度ワークスペースからファイルを外して、再度構築したら直ってしまったりと、
ちょっとよくわかりません。
133 :
デフォルトの名無しさん :02/12/21 18:25
JavaのGUIアプリを移植したいです mainで常に走っているスレッドがあります そのスレッドはどこで生成すればよいのでしょうか? InitInstance()でしょうか? またはmainの内容を InitInstance()に書けばよいのでしょうか? あと,キー入力を そのスレッドに渡したいのですが どのように実装すべきでしょうか? MFCはイベントドリブンとききました 上のようなことは不可能でしょうか?
>>133 Javaにできることだったら、多少めんどくさくなろうともなんでもできる。
詳しいことがわからないから断言はできないけど・・・
>スレッド
InitInstanceで多分大丈夫。InitInstance中でもいろいろな
処理がWizardによって追加されてるので、前後関係をよくみながら。
>キー
やり方はいろいろあると思うが、スレッド中でメッセージループ作って、
PostThreadMessageで投げるとか
135 :
デフォルトの名無しさん :02/12/21 20:27
プッシュボタンを「押しっぱなし」というのはどうやって見るんでしょうか? ClassWizardでメッセージマップを開いても「クリック」と「ダブルクリック」の イベントしか出てこないし、「クリック」だと離した後に起こるイベントですし。
えーと、もしかして CButtonを派生させてクラスを作って そのクラスで PreTranslateMessageをオーバーライドして WM_KEYDOWNとか捕まえて処理する、んでしょうか?
あぁ・・・WM_KEYDOWNじゃないですよね。 少しもちつきます。
一人で勝手にすみません。 PreTranslateMessageじゃなくて、CButtonを派生させたクラスの WM_LBUTTONDOWNやらWM_LBUTTONUPでやるっぽいすね。
そしてそれを、ボタンを配置してる親ウィンドウに どうやって押されてる/離された を通知してイベントを起こすのかが、 今の悩みなわけですが・・・教えていただけませんでしょうか。
140 :
デフォルトの名無しさん :02/12/21 23:00
なんか適当なメッセージを定義して、 親ウィンドウにSendMessageしてやったらいいんでないかね。
>>140 おーやっぱそうですか。
実は SendMessageは今までに何度か使おうとして
挫折してたから、今いろいろ使い方を調べてるとこです。
142 :
デフォルトの名無しさん :02/12/21 23:37
もうちょっとでクリスマス。。★彡
パートナーは見つかりました?(o^.^o)
http://petitmomo.com/mm/ ここがちょっぴりエッチ系のめぐが運営している出会いサイトです。
もしよかったら使ってみて、、、
ヨロシクです。
めぐ(^o^)-☆
ヽ(´∇`)ノウワァァァイできたー はじめてSendMessageつかえたよー
プログラム内でユーザー定義メッセージ使う場合はWM_APPより大きな値を使おう。 #define XXXX (WM_APP+1) とか。
WM_APPとWM_USERの使い分けは、 前者はプロセス間、後者はプロセス内で使うといいかなー、 とか思ってたけど違うのか?
WM_USER through 0x7FFF Integer messages for use by private window classes. WM_APP through 0xBFFF Messages available for use by applications. らしい。
漏れは基本的にSDKプログラマだからSendMessageは日常茶飯事なんだが
MFCプログラマだとやっぱり
>>141 みたいなかんじなのかな?
(悪い意味じゃなくてね)
なんで
>>141 がMFCプログラマの代表であるかのように受け取ったのか問いたい
>>147 俺はSDKほとんどつかったことないけどSendMessageはよく使うぞ。
皆がみんな「わかんない」だったらそういう印象受けるけど、
分かってないのは質問者だけっしょ?w
YESかNOかでお答えください。
CWndにもSendMessageあるんだから、 MFC=SendMessage使わないじゃないよ、知らない人向けに言っておくと。 メッセージ関連はクラスメンバとして隠蔽化されてるから 内部的にSendMessage使いまくりなのを知らない人も初心者にはいるだろうけど。
MFCのソースコード追いかけるとSendMessageだらけだね。
154 :
デフォルトの名無しさん :02/12/22 20:51
CFileExceptionのエラーコードを日本語に代える方法を教えてください。
155 :
デフォルトの名無しさん :02/12/22 20:57
エラーコードは数値ですが?
>>155 だからそれを日本語に変換する方法をおしえてと・・・
日本語っていってもエラーコード13を文字列の13に変換したいっていってるんじゃないよ。
158 :
デフォルトの名無しさん :02/12/22 22:08
特に仕事で使う目的はないんだけど VC++でTCP/IPを扱うお勉強するには どんなプログラムを試作するのがいいと思いますか?
>>156 例外クラスのGetErrorMessageか、
APIのFormatMessageだよ、カス
>>146 あそっか。ウィンドウクラスを基準にするってことか。
WM_USERの方はそれでいいけどWM_APPの方は何度読んでも分からない
文章だよね。"available for use by applications"って
当たり前じゃん!まあMFCに作らせたウィンドウならWM_APPの方が
安全ってことかな。
>>154 , -──--- 、..____
,、-‐'"::::::::::::::::::::::::::::::::::::::::::::::`` ー---、
/:::::::::::::::::::/:::::::::::::::::::::::::::/::::::;:ィ´:::::::::::|
/:::::::::::::::::::/:::::::::::::::::::::::::::/:::::::/:/::::::::::::ミヽ
/::::::::::::::::/:::::::::::::::::::::::::::::/::::::::::/::::/:::::::::/:/:ハr'ヽ
/::::::::::::::::/:::::::::::::::::::::::::::::::/::::::::::/::::/::::::/:/:::レ::イ::T:l
/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;ィ:::|:::::ハ::::::|::|::/|::::::|:::::::|
/::::::::::::::::::::::::::::::::::::::::__::::::::::::::://|::ト、::L|::::|!:||:!/::::/::::|::!
|:::::::::::::::::::::::::::::::::::::r'rヘヽ::::彡 |:! v!|--,.、`゙//:::::/リ
|:::::::::::::/::::::::::/:::::::{ (⌒ |:r'´ ` 、l:/ ///l:/〃
/:::::::::::/::::::::::/::::::::;ハヽ. |:! |'´ '′
/::::::::::/:::::::::::/:::::::/:::::::L° ゙、
/::::::::/:::::::/:::/::::::/::::::::::| l _ ヽ
/::::::::/:::::::/:::/::::::/::::::::::::| l ____r'´ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/:::::/:::::::/::::::::::::/::::::::::::::| `7′ < よくわからないモノを
/::::::/::::::::::/:::::::::::::/ :::::::::::/ / | 無理して使うからよ
/:::::/::::/::::/::::::::::::::/ :::::::::::/二`ヽ、 `iヽ 、____/ \_________
/:::::::::/:::/::::::::/::::::::::::彡.:::::::::::/三ミヽ、 ``=ヽ
|:::::::::|::/::::::::::::/:::::::/:::/彡:::::∧`ヽ、 \三ミr'ヽ、
俺、この間まで WM_APPを使うべきところで、全部 WM_USER 使ってた。鬱。
>>158 勉強目的だったら既存のクラス使わないでAPIからソケットを扱う方がいいかも
165 :
デフォルトの名無しさん :02/12/23 18:14
CFontDialogで、 下線と取り消し線設定のチェックボックス表示は有効で、 色選択リストの表示を無しにするにはどうしたらよい? (CF_EFFECTSは両方いっしょに制御しちゃう‥‥) 簡単な方法はあるだろうか?
166 :
デフォルトの名無しさん :02/12/23 20:31
>>165 簡単な方法・CFontDialogのところをダブルクリックしてF1を押しなさい。
クリックでも可
168 :
デフォルトの名無しさん :02/12/25 00:27
クラスの中でメンバ変数 CArray<CHoge, CHoge&> m_arrHoge; が定義されているとして、 あるメンバ関数のなかで、 m_arrHoge.add(CHoge()); というようなことをした場合、 CHogeの実体はどこにあるの?
arrHogeのなか。
CTreeCtrlで、特定の子アイテムのみチェックボックスを 付けることは出来るのでしょうか?
>>172 CTreeCtrlはSetCheckでチェックボックスが表示されないバグがある。
さらに、イメージリストを設定するとなぜか直るというバグ付き。
だからSetImageListでイメージリストを設定すればちゃんと動くのだが…
結構有名なバグだと思ったのに(´Д`;
#って、そこにかいてあるじゃん…
174 :
デフォルトの名無しさん :02/12/29 04:25
日本語の文字コードの変換処理に
http://www.vector.co.jp/soft/dl/win95/util/se020949.html のnkf32.dllを使用しようとしているのですが、実行する時に
「序数 3 がダイナミック ライブラリ NKF32.dll から見つかりませんでした。 」
と出てうまくいきません。下のやり方は間違っているのでしょうか?
//-- test. cpp --
extern "C" {
#include <nkf32.h>
};
int main(){
char buf[256];
GetNkfVersion(buf);
cout << buf << endl;
return 0;
}
>>174 DLLの場所がおかしいだけだろ。
俺はできたぞ。
(Win2000SP2&VC++6SP5)
んでどこがMFCなのよ
>>175 大ボケしてました。(´Д`;)
ありがとうございました。
>>176 スレタイの "DLL" を見て脊髄反射的に…
178 :
デフォルトの名無しさん :03/01/01 04:48
スレッドの停止について質問です OnDestroy()にてスレッドと、その内部で使っているオブジェクト(m_obj)を破棄します。 現在は以下のようにsleepで無理矢理同期させていますが、 正しくはスレッドが完全に停止し破棄された時のイベントか何かを待つのだと思います。 WaitForSingleObjectを入れていますが全く効いてません。 現在は停止イベント後もm_objのメソッドをスレッドが呼び出してしまいアクセスバイオレーションになります。 どうしたらいいですか? XXX::OnDestroy() { ~途中略~ if(m_EventThreadStop) { SetEvent(m_EventThreadStop); m_EventThreadStop = NULL; } if(m_pThread) { WaitForSingleObject(m_pThread, INFINITE); m_pThread = NULL; } ::Sleep(500); if(m_obj != NULL) { delete m_obj; m_obj = NULL; } }
>>178 WaitForSingleObject(m_pThread->m_hThread, INFINITE); ?
VC++のスタンダード版なんですけど、 SP5のファイルをインストーラ使わずに直接cabを解凍して 適当にぶち込んだらMFCのスタティックリンク版が使えるように なったり、最適化が出来るようになっちゃいました、で再びやろうと 思ったのですが、どうやってやったのか忘れちゃって。 誰か分かりますか?
181 :
デフォルトの名無しさん :03/01/01 18:25
今まで非MFCでやってたんですけど、仕事でMFCを使うことになりました。 ダイアログボックスの各コントロール扱い方なんですけども、 MFCのクラスウィザードでメンバ変数を作ってやるのと、それを使わないで やるのと、どちらが一般的なのでしょうか? 私はとりあえず、クラスウィザードでメンバ変数を作成せずに、 下記のような感じでやりました。 class CDialog{省略 public: struct Data{ CString strA; BOOL bB; }; private: Data m_data; };
>>181 MFCを使うんなら、DDX,DDV使える既成のもの使ったほうがいいんじゃね?
>>181 >ダイアログボックスの各コントロール扱い方なんですけども、
>MFCのクラスウィザードでメンバ変数を作ってやるのと、それを使わないで
MFCのダイアログはコントロールに CString や int, BOOL などの変数を
結びつけることができるのが便利、コントロールのクラスを結びつけることもできる。
ダイアログのリソース作って、クラスウィザードでそのリソースのCDialog派生クラス作って
メンバ変数ページでコントロール選択して変数の追加でダイアログ上のコントロールに
結び付けられた変数を追加できる。カテゴリでコントロールを選択するとコントロールのクラスを
結び付けられる。エディットコントロールに文字列・数値などを入力するだけならカテゴリで
値を選択するのが楽。
自力でコードを書くこともできるけど、ウィザードを使うと楽。
変数とコントロールを結び付けてるのはDDX/DDVサポートのDoDataExchange()関数
エディット・ラジオボタン・チェックボックス・ボタンコントロールしか使わなかったら楽にできる
ボタンはメッセージBN_CLICKEDとかの処理。
>>183 ,134
どうもありがとうございます。
自分でコード書いちゃったよ。
こいつメンドウなことやってるなーって思われそうです。
時間あったら直しとこ。
ダイアログに貼り付けたCRichEditCtrlからの NM_SETFOCUS、NM_KILLFOCUS、EN_SETFOCUS、EN_KILLFOCUSが いずれも受け取れないのはどうして?
クラス生成してないとか?w
クラスウィザード使わずに手で打ってるとか?w コモンコントロールでも取れないメッセージがあるみたいだからOnNotifyでぶんどりなされ。
189 :
デフォルトの名無しさん :03/01/06 18:25
VC++初心者です。 阿呆な質問かもしれませんが、VC++では例えばリストボックス を改造してエディットボックスに変更したり出来るのですか?
192 :
デフォルトの名無しさん :03/01/07 18:22
CDCクラスのRoundRectについて質問させて下さい! CRect myRect; CPoint myPoint; の時、 (1) pDC->RoundRect(myRect, myPoint) (2) pDC->RoundRect(&myRect, myPoint) (2)の方が実行スピードは速いですか?
sample.dsp sample.cpp sample.rc sample.clw sapleDoc.cpp sampleView.cpp Stdafx.cpp とこのようなもともとあるファイルで、 どのファイルをいじくれば編集できるのですか?(画像処理で色変換がしたいです) 初心すぎてすみません、教えてください
>>192 PerformanceCounter でも使って計測してみなはれ
ただ、最適化するのが目的ならもっと他に最適化する部分があると思うがな
PerformanceCounterってやつ調べてみます。 何分まだ覚えたてなので、 どうせなら、少しでも効率の良い方を覚えようと思いまして・・・ なんかでポインタを渡した方が速いっていうのを、 見た気がしたもので・・・ 最適化なんてまだまだまだ先です。 レスありがと!
196 :
デフォルトの名無しさん :03/01/08 03:44
VC++6.0をSP5にあげてSDKバージョンアップして #define WINVER 0x0500も加えたのですが、 CWnd::FlashWindowEx が見つからないのです。どうすればいいですか?
>>196 FlashWindowExてWin32APIやん。
198 :
デフォルトの名無しさん :03/01/08 11:22
C/C++とは関係ないんですが VisualC++(Ver6.0)にてCソース以外のファイルでも(拡張子がplとかjsとか) キーワードに応じてテキストにカラーを付ける方法はないでしょうか? perl固有のキーワードに個別に対応しないまでも Cのキーワードに割り振ったテキストカラーだけでも表示してくれればいいんですが・・
199 :
デフォルトの名無しさん :03/01/08 14:47
自作のライブラリファイル(mylib.h, mylib.lib)の関数や構造体が IntelliSenseやClassViewで表示されたり表示されなかったりします。 .libではなくソースを直接プロジェクトに登録すると表示されます。 どうすれば確実に表示されるようになりますか? 環境はVC6.0Pro SP5です。
200 :
デフォルトの名無しさん :03/01/08 19:24
Win2000上でMDIアプリを動かしているのですが、ウィンドウを切り替えたりすると 少しずつ使用メモリが増えていくのですが、こういうものなんでしょうか? 一度切り替えて表示したウィンドウを再度表示したりした場合は増えなかったりします。
>>200 子ウィンドウを作ったらその分使用メモリは増えるが、切り替えるだけなら変わらないはず。
>>198 言語を追加する方法は見つけられなかったが、
HKEY_CURRENT_USER\Software\Microsoft\Devstudio\6.0\Text Editor\Tabs/Language Settings\C/C++
以下のFileExtensionsに拡張子を追加するとC/C++のソースと見なされる。
あとはusertype.datに書いておけばいい。
>>199 ヘッダをプロジェクトに入れれば出ると思う。
Intellisenseだけ出したいのなら、そのクラス・関数の情報が入ってる*.ncbを持ってきて、
自分のプロジェクトのncbとすげ替えると出たりする。
205 :
デフォルトの名無しさん :03/01/08 21:04
>>202 メモリリークは起こってない・・・・と自信をもって言えないのが情けないのですが、
普通はやっぱりウィンドウを切り替えた位ではメモリ使用量は増えないですか・・・。
>>203 例えばあるボタンを押した時にダイアログを表示するような処理で、ダイアログを表示して
ダイアログ上でOKボタンなどを押して消した場合、メモリ使用量はダイアログ表示前と
同じでなければ、何かしら問題があると考えた方がいいですか?
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
207 :
デフォルトの名無しさん :03/01/08 21:49
デバイスコンテキストの取得について教えてください。 ビュークラスの中で取得するのは簡単なのですが、他の場所、例えば自作クラスの中で取得するには どうしたらいいんでしょうか。自作クラスにビューに描画させる機能を付けたのですが、 そのメンバ関数を呼ぶ度にいちいち引数としてビューで取得したデバイスコンテキストを渡しています。 これを自作クラスの中で取得させたほうがよりスマートだと思うのですが方法がわかりません。 どなたかよろしくお願いします。
208 :
デフォルトの名無しさん :03/01/08 23:15
ほしゅ
209 :
デフォルトの名無しさん :03/01/09 00:01
>>207 GetDC
CreateDC
ClientDC
ガ━━(゚Д゚;)━━ン!
ガ━━(゚Д゚;)━━ン!
まぁアレだな。 キタ━━━━(゚∀゚)━━━━━!!!
213 :
デフォルトの名無しさん :03/01/09 00:38
最小化時にシステムトレイに格納し、タスクバーを削除したいのですが LRESULT CTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_SYSCOMMAND: switch( wParam & 0xFFF0 ) { case SC_MINIMIZE://最小化されたら //システムトレイにアイコンを追加する処理 ~ ShowWindow(SW_HIDE);//タスクバー非表示? break; case SC_RESTORE://システムトレイから復帰したら //システムトレイからアイコンを削除する処理 ~ ShowWindow(SW_SHOW);//タスクバー表示? break; } break; } return CDialog::WindowProc(message, wParam, lParam); } こんな感じに書いて見たのですが、ほんの一瞬タスクバーが消えるものの、 再度タスクバーが表示されてしまいます。 内部のどこかでShowWindow(SW_SHOW)みたいな事をやっちょるんでしょうか?
ひろゆき好きです(ポ
>>213 SDK気分が抜けておらんからじゃ。
CWnd::WindowProc()はメッセージが通過するだけじゃ。
これでは、DefWindowProcが呼ばれてしまうんじゃ。
だから表示されるんじゃ。
MFC流儀に従って、OnSysCommand()をオーバー来度するんじゃ。
基底クラスのOnSysCommand()を呼ぶんじゃないんじゃ。
間違ったんじゃ。 DefWindowProc -> CallWindowProc
キャップでの書き込みは?やっぱりIPとられるの?
このスレで言うべきことではないが、 winnyチックな掲示板ができるだろうね。 もうできてるのか?
>473 アレ・・ちょっと・・・か? 「ちょっと」・・・じゃないような・・・。
>>215 なるほど!!言われたとおりに試して見たらうまく出来ました!!
どうも有難うございました!
>>201 それってクラスツリーたどっていくとCDHtmlDialogとかも載っているので
MFC7のリファレンスじゃ?
MFCは無料でバージョンアップできません。
つまりVC++6を使っているならMFCは6のままなので、SPやSDKをバージョンアップしても
MFC7の関数は使えない。
>>209 その3つの関数について調べてみましたがよくわかりません。
私の質問がちょっとわかりにくかったんだと思いますが、
私が知りたいのはビューのデバイスコンテキストの取得方法で、
新しく作りたいというわけではありません。
CClientDC dc(this);
と、ビュークラスの中でよくやったりしていますが、それを
自作クラスの中でやるにはどうすればよいか?という質問です。
このthisのところを他の適当なものにすればよさそうなのですが
それがわからないのです。もしくは他に適当な方法があるのでしょうか。
今までの暗黙の了解が公になっただけの話では。
敗北、だな。
>>223 コンストラクタとは何か
thisとは何か
GetDC()
これらを知らないと見た
/\ /\ /:::::::ヽ____/::::::::ヽ、 丿 ::.__ .::::::::::::: __ ::::ヽ_ / /。 ヽ_ヽv /: /。ヽ ::::::ヽ -┼- 丿~~~| / / ̄ ̄√___丶  ̄ ̄\ ::::| ■ ■ -┼- /~~~~/ ━━━ | .:::::::::: / / tーーー|ヽ ..::::: ::|━━━━━━ ▼ ▼ .| 丿 | .:::::. ..: | |ヽ ::| ● ● | ::: | |⊂ニヽ| | :::::| \ / /| : | | |:::T::::| ! .::| \ \\ / / \: ト--^^^^^┤ 丿 \\\ \\\ お、大阪・・・・
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
230 :
横レス スマソ :03/01/09 18:58
GetDC() ってAPIの?
231 :
デフォルトの名無しさん :03/01/09 20:14
「びじゅあるC++」を勉強するには何から始めればいいですか?
232 :
デフォルトの名無しさん :03/01/09 20:22
自己解決しました。 いろいろ試行錯誤した結果、 最初にビューの m_hWnd をクラスに渡しておいて、 必要なときに CDC *pDC=CDC::FromHandle(GetDC(m_hWnd)); とやって、どうにか目的のデバイスコンテキストを得ることができました。
>233 そんな回りくどいことしなくても CDC *pDC = pWnd->GetDC(); でいいんじゃない?
>>234 そのpWndってどうやって得ればいいんでしょう?
MFCでプログラムしていますが、そんなの定義されてないです。
236 :
デフォルトの名無しさん :03/01/09 22:04
CListCtrlのSortItems()でソートかましたんだけど SetItemData()で設定したアイテムデータはソートしやがらねぇ。 ソート比較関数の中で入れ替えるのもなぁ・・・ なんかスマートな方法無いものか。
ぐえっ!俺のバグだ・・・
238 :
名無し@沢村 :03/01/09 22:19
>>235 ヌヒよ、m_hWndを渡すのではなくViewへのポインタを渡しなさい。
>>235 AfxGetMainWnd()
CFrameWnd::GetActiveFrame()
CFrameWnd::GetActiveView()
その他いろいろウィンドウを取得するメソッド・関数は用意されているが。
>>238 たのむからこのスレへ来ないでくれ
>>238 私も最初そうしようと思ったのですが、
ビューのヘッダをインクルードしようとすると
変なところでコンパイルエラーが出ます。ひょっとして私だけですか?
241 :
名無し@沢村 :03/01/09 22:36
>>239 ヌヒよ、そうやって適当にウィンドウを取得しても正常に描画できるわけないだろ。
242 :
名無し@沢村 :03/01/09 22:40
>>240 ヌヒよ、別にViewのヘッダファイルをインクルードする必要は無いのではないか?
CWnd* を渡せばよいのだから。
>233 この定義をよくみて考えてみれ CDC* CWnd::GetDC() { return CDC::FromHandle(::GetDC(m_hWnd)); } わかんなくても別に>233の方法も 間違ってるわけじゃないからそれでいいさ
>>239 そんな関数があったのですか。なるほどその方法でもいけそうですね。
>>242 CWnd*ですか・・どうも私が勘違いしていたようですね・・・。
どうやらCWndあたりで私の理解が足りなかったようですね。
勉強しなおそうと思います。
_ヘ彡ヘ (,, ゚∀゚)<遅ればせながら記念パピコ
>>551 「コテハン戦隊ラウンジャー」に鑑定依頼してきますた
なんか笑えるスレだな
なんか笑えるスレだな
ばしばし誤爆が来てないか?
某○○は法律関係の仕事をしてるのですか? 単なる子供?
たった400万の罰金で、広告費に換算したら1億以上の大きな反響
今年こそ2ちゃんねるが潰れますように
ねえ、ひろゆきって400満ももってんの? いつもお仕事はなにしていらっしゃるのか?
裁判所or警察経由っすね>アクセスログが渡る場合 後は、羽田タートルのスレッドの中での粘着さん。
>>720 一般人はどうやってみるんだ?
掲示板といえるのか。
場所によるよね。 匿名重視の板では厨房どころか普通の客まで帰っちゃうという罠。 実況なんかだと逆に非常に便利(荒らしの特定)だろうけど。
このスレにちょいと書いてあるんですけど、 ダイアログでクラスウィザードを使いメンバ変数を作成すると 多数のメンバ変数ができてしまったときに扱いにくくないですか? 私としては構造体にまとめたいのですが、 そうすると自力でコード書く部分がかなり多くなってしまいます。 何か良い方法はないでしょうか?
幾つくらいメンバがあるの? あんましおおいなら、ダイアログを分割したりしたほうが よさそうだけど。
ポリタンクさん、「私のニュース」で活動して下さいって、 あれほど、あれほどお願いしたのに、、、
ひろゆきカマン。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
2ちゃんねらー達も伝えられないでもわかっていた。かつて、一度足りとも起らなかった事が、 自分達の上に降りかかろうとしている事を。 その重い沈黙を、広場の一角から上がった声が破った。 「言論規制、逝って良し!!」 だがその声は、それに続く声も無いままに切れてしまった。しかし、それとは別の声が、 再び沈黙を破ってひびいた。 「2ちゃんねる、逝って良し!!」 この叫びは、法廷前広場に掲げられたモナーの書かれた横断幕に、そして折りしも誰かの手によって 掲げられたギコ猫としぃの手旗に向かって、まるで海の波でもあるかのように、打ち寄せては去り、 再び打ち寄せては去るのを止めなかった。 残務処理に向かう管理人達は心配した。自分達の決定に反してまでも、攻撃に打って出るつもりかと 思ったのである。彼らの呼びかけで、多くのブラウザが一斉に開かれた。 だが、これは無用な心配に過ぎなかった。なぜならば、田代やネオ麦事件の時と同じく、 武器を持たない2ちゃんねらーたちの、彼らなりの礼砲だったからである。 彼らにも匿名体制の終焉は2ちゃんねるの滅亡と同じ事がわかっていたのである。 法廷前から始まった書き込みは、過去の祭りと同じように掲示板の書き込みを埋めていった。 「2ちゃんねる、逝って良し!」 「2ちゃんねらー、逝って良し!!」
ポイズン
ワラタ 生きろ!快速ストーカー
テレビにニュース速報が入る。 俺は慌ててパソコンを立ち上げ、そして気付く。 「あぁ、2chは閉鎖したんだっけ……」 テレビからは現場の慌しい状況が伝わってくる。 もし2chがあったら、どういうスレが立っているのだろう。 重複スレが沢山できて、それで荒らしとかやってきて…… テレビでは相変わらず、レポーターが必死で現場の状況を伝えている。 可愛いレポーターだ。俺は、頭の中で「萌え~」というレスを つけている自分を想像した。 後ろの群集がテレビに向かって挑発的なポーズを取っている。 「なんだ、あのドキュソ」「厨房氏ね」…… 俺はたまらなくなり、無いとは分かっていながら再び2chにアクセスした。 しかし、画面には一言「閉鎖したのです。。。」とだけしか表示されない。 何度リロードしても変わらない。あの日以来、2chは止まったのだ。 どうやら犯人が逮捕されたようだ。相変わらず可愛いレポーターが その状況を伝えている。 「さよなら、にちゃんねる」 俺はお気に入りから2chを削除し、そして騒がしいニュースを冷めた目で 見るのであった。
2chで内部告発的な事をするリスクが大きくなるのかな? 発信元がわかるんで、告発された側が「よーし金でねじ伏せちゃうぞー」 とか言って裁判でも起こしまくって。 そんな状況はガクブルだから、面白そうな(真実である事が前提の)投稿は、減る?のかな? 考え過ぎ?って言うか見当違い?どうだ?どうなんだ?
>>261 確かに100も200もあると大変だよなあ。
なーんか大変だな
あ~あ2ちゃんもこんなアホばっかになっちまったか これも時の流れかね もうだめぽ
275 :
デフォルトの名無しさん :03/01/12 00:29
>>261 DDX,DDVを使う変数のみウイザードで作成
それ以外は構造体なり、クラスなりにする
でいいんでは?
276 :
デフォルトの名無しさん :03/01/12 00:36
MFCのプログラミングでファイルをオープンしてテキストファイルを読み込む プログラムを作っているのですが、一回読み込んだファイルを再度読み込む ことができません。ソースは CString filename = "C:\\a.txt" //ファイルの位置 CStdioFile fin1(filename, CFile::modeRead);//概念見出し辞書をオープン while(fin1.ReadString(buf) != NULL){ : : } CStdioFile fin2(filename, CFile::modeRead);//概念見出し辞書をオープン while(fin2.ReadString(buf) != NULL){ : : } という感じです。 コンパイルは通るのですが、実際に動かしてみる(内容としては文字列検索)と どうも2回目のファイル読み込みが機能していないみたいで・・・。 何かよい方法はありませんか?
278 :
デフォルトの名無しさん :03/01/12 00:47
279 :
デフォルトの名無しさん :03/01/12 01:44
>>278 Closeは
fin1.Close();
という形でいいんですかね?
それを加えたら途中で止まってしまいました。
何度もすみません。
>>279 そんな感じ。
ところで、どこでcloseしたの?
whileの中じゃないよね?
あれなんでスレストかかったの? もう最後の方はさっぱり意味わかんなかったけど・・・ ってゆうかほろゆきが止めたのか?
(;´Д`)ハァハァ
つまんね
>>276 CStdioFile::ReadString の返り値ってBOOL型なんだからNULLと比較してはマズいような。
動作に影響はないかもしれないけど。
この場合ではwhileが終わったらfin1.Close();やfin2.Close();すべき。
(whileの後に処理があるなら別。)
286 :
デフォルトの名無しさん :03/01/12 13:27
CTime ct; cs = ct.GetCurrentTime("%H : %M : %S"); とあるときはCTimeのメンバー関数GetCurrentTimeはCTimeのオブジェクトを 返す関数と考えて良いでしょうか?
287 :
名無し@沢村 :03/01/12 13:56
>>286 ヌヒよ、それくらい自分ですぐ調べられるだろ。
>>286 その前にCTimeにそんな関数ないだろ。
>>286 どこかのアホサンプルをコピペでもしたのか?
GetCurrentTimeの返り値の型を見ろ。
290 :
デフォルトの名無しさん :03/01/12 16:32
厨な質問で申し訳ないですが、 データ型のboolとBOOLや、 例外処理のtryとTRYは 処理速度や機能面で何か違いがあるのでしょうか? それとも単に大文字小文字の違いだけ?
>>290 #define TRY { AFX_EXCEPTION_LINK _afxExceptionLink; try {
typedef int BOOL;
292 :
名無し@沢村 :03/01/12 17:49
>>291 ようするにTRYは単なるtryのマクロ定義で、
BOOL型はint型の変名に過ぎないわけですか。
VC++でboolを使うとなにか都合が悪いことがあるのでしょうか?
>>292 GetCurrentTime()
と
GetCurrentTime("%H : %M : %S")
が同じだとでも思ってるのか
>>293 //まずい!
if(b == TRUE)
//まずい!
hoge(int n);
hoge(BOOL b);
おっと逆か・・・ BOOLはVC5以前の名残で、互換性のため。
fusianasan
対応はともかく、確実に通知したという事実は残るよ。 メールや電話だと「届いていない」「読めなかった」「回線の調子が悪くて聞こえなかった」で抜けられるからね。
フーン
BOOLとboolの仕様が違うのが非常にむかつく(ノд`)
>>293 モノによってはWindowsのバージョンで違う宣言になってたり。。。
>300 BOOLだとTRUEが1なんだよな… boolは-1なのに。
いったいどこのboolなんだ……(;´Д`)
305 :
デフォルトの名無しさん :03/01/13 15:37
CHtmlViewクラスの画面にGDI描画がしたいのですが、 なんとかならないでしょうか? DCにペイント命令だしても全部無視されてしまいます・・・。
306 :
デフォルトの名無しさん :03/01/13 15:56
質問です。 ダイアログベースで作成しているのですが、ボタン操作でexeファイルを実行させることはできますか? その方法があれば、どなたかご教示ください。 環境はVC6.0です。
307 :
デフォルトの名無しさん :03/01/13 15:58
ceditviewでフォームに入力した文字列をいじるにはどうすれば良いんでしょうか。 検索したらシャドウバッファに格納されてるとあったのですが、シャドウバッファをどうすればいいのかわからず・・ アドバイスお願いします。
0のnotが1のBOOLは気持ち悪い。
いや、普通だと思うが
(^^)
法律は必要最小限のことしか決められんよ、あとはルールまかせだ。
>>312 アドバイスありがとうございます。
さっそく試してみようと思います。
>>307 GetEditCtrl()でEditコントロールを取得して操作。
>>308 同じく。
どうして-1じゃないんだろう?
おかげで(bool)!!check のような型キャストが要る…
318 :
デフォルトの名無しさん :03/01/14 19:59
ダイアログボックスベースでアプリを作っていますが、 整数型の変数の値を文字型にしてStaticコントロールに表示させたいのですが どのようにすれば良いのでしょうか? どうやら普通のC++とやり方が違うようで、、、。
×Staticコントロール ○StaticText すまそ
>>318 i = 10;
CString str;
str.Format( "%d", i );
>>318 脊髄反射でカキコしてしまったが
ひょっとして変換方法じゃなくて表示方法がわからないのかな?
だとしたら↓みたいな感じか。
int i = 10;
CString str;
str.Format( "i = %d", i );
m_wndStatic.SetWindowText( str );
>>320 >>321 どうもありがとうございます。
後半の部分は知ってましたが、前半部分が解りませんでした。
質問内容が不十分なのに答えてくださって有難うございました。
323 :
デフォルトの名無しさん :03/01/14 21:00
おながい!助けて! ツールボックスを2つ使いたいのですが、 2つ表示させるところまでは上手く行きました。 (CMainFrameクラスにCToolBarクラスのオブジェクトを追加した) メニューにツールバーの表示/非表示を選択できますが、 AppWizardが生成したコードのままだと、独自に追加した2つ目の ツールバーまで制御が効きません・・・ ツールバーの表示/非表示をプログラムでやるには、 どの様にしたらよろしいのでしょうか?
出来れば表示→非表示→表示にした時、 以前の状態(ツールバーの位置)を保ちたいです。
普通のC++とやり方が違うっていうかMFCの使い方を調べてないだけちゃうんかと
CFrameWnd::ShowControlBar
最近、関数一個で解決するような質問ばかりな予感
C++もWinAPIもしらずにMFCに突撃するからこのような状態になるのだよ。
そいつは悪かった(´・∀・`)
332 :
デフォルトの名無しさん :03/01/15 14:00
ファイルからCStringに直接文字列を読み込むことはできませんか? CString str; ifstream fi("hoge.txt"); fi >> str; てやるとエラーが出るのでいつも char tmp[100]; fi >> tmp; str = tmp; とかやってるんですが
fi.read( str.GetBuffer( BUFSIZE ), BUFSIZE ); str.ReleaseBuffer();
STL使ってるならstring使えって気もするが・・・
CString(MFC)使うなら
>>333 とかCArchiveとか
335 :
デフォルトの名無しさん :03/01/15 14:43
>>333 やっぱサイズ指定しないとだめですか?
STLのstringみたいにユーザはサイズを決めないで
読み込める方法があるとありがたいのですが
336 :
デフォルトの名無しさん :03/01/15 14:50
>>334 CArchiveって単なるテキストファイルを読み込むときとかにも
使うものなんですか?
>>336 使うもんだ。そして君のやりたい
CString str;
ar >> str;
とかやるもんだ。
MFCつかってるならCStdioFileってのがあるがな
339 :
デフォルトの名無しさん :03/01/15 15:09
>>337 そのやりかたはCStringをCArchiveに保存した時のみ有効。
ar << str;// strはCString
この時、ファイル上はテキストで保存されているわけではなく、バイナリで文字列長+文字列で構成される。
ar >> str;//復元できる
>>338 CStdioFileは1行読みのためのクラス。
テキスト全部読むとかだったら向いてないね。
>>340 ar >> str;
だと指摘どおりだな。
ただCArchive::ReadStringってのもあるYO
テキスト全部読むなら1行読みをループさせるしか思いつかないねぇ・・
なんかいい方法ある??
>CStdioFileは1行読みのためのクラス。 アホか。
(^^)
344 :
デフォルトの名無しさん :03/01/16 11:53
ツリーアイテムの一つをクリックした時にそのアイテムのテキストの位置に コンボボックスを表示させるようにしたいのですが、どなたかキーワード や情報のポインタだけでも教えてもらえないでしょうか。 おながいします。。。
その場所にコンボボックスをCreateするんだと思うけど。 CodeGuruとかにサンプルないかな。 リストビューではよくある話なのでリストビューのサンプルを参考にしても良いかも。
>>344 メンバ変数としてCComboBox持ってればいいんじゃないか?
CTreeCtrl::GetItemRect()で表示する位置はわかるし。
347 :
デフォルトの名無しさん :03/01/17 00:14
CListCtrlを継承してvirtual DrawItem()の実装を書いているんだけど { CDC* pDC = GetDC(); int saveDC = pDC->SaveDC(); pDC->DrawIcon(lpDrawItemStruct->rcItem.left, lpDrawItemStruct->rcItem.top, theApp.LoadIcon(IDI_MY_ICON)); pDC->RestoreDC(saveDC); } と書いてもアイコンが表示されません。 その代わり CImageList m_imageListにアイコン登録して m_imageList.DrawIndirect(pDC, 0, CPoint(rect.left, rect.top), CSize(ICON_SIZE_X, ICON_SIZE_Y), CPoint(0, 0)); とやると表示されるんですが、、、 でも、アイコンの透明色が背景が透けてくれません。 なにかおかしんでしょうか?
>>347 CImageList::SetBkColor
このスレってフィードバック少ないよね…
>>348 駄目でした。そのかわりCImageList::Create()の引数にILC_MASKを渡したら透けました。
でもやっぱりDrawIcon()は使えない・・・
>>350 そもそもLoadIconは成功しているのかと24時間(略
>>347 DrawIndirectの説明を穴のあくほど読め。
デフォルトではfStyle = ILD_NORMALだ。
354 :
デフォルトの名無しさん :03/01/18 11:10
CMenuについて質問させてください。 InsertMenuやAppendMenuで動的に作成したメニューがクリックされた時に 対応するメソッド(ハンドラ?)を定義するのにはどうしたらいいんでしょうか。 InsertMenuに渡すアイテムIDも動的に指定しています。(マクロでない) 事情により、クラスウィザードを用いないで実装しているコードをいじらなければ なりません。 厨房ですいませんがよろしくおねがいします。。。
テクニカル ノート 6 は見た? IDを手で捏造したくないんなら メニューエディタで隠しメニュー作ってそこに登録するといいyo
356 :
デフォルトの名無しさん :03/01/18 11:36
>>355 ありがとうございます。
テクニカルノートをまず読んでみます。
>>355 あらかじめメニューIDをいくつか予約しておいて、
ON_COMMAND_RANGEマクロを使ってそれらのIDに対応するメソッドを
定義し、その中でswitchすることでやりたいことが実現できそうです。
ありがとうございました!
358 :
デフォルトの名無しさん :03/01/18 15:05
すまそ・・・。 Static内の色を変えるにはどうするのでしょうか。 1週間くらい調べてますが解らなくて・・・オロロ・・・・。
>>358 スタティックコントロールにユニークなIDを付けて、後は他のコントロールの色を変えるのと同じ。
>>359 スマソ。
ダイアログボックスベースで作っているので、
アプリを実行した時点でStaticの色を白にしたいんです。
どこにソースを書けばよいのかも解らず・・・・・オロロ・・・。
>>360 >アプリを実行した時点でStaticの色を白にしたいんです。
>>359 コントロールの色変更は検索すればすぐ出てくると思うけど。
WM_CTLCOLORSTATIC
>>360 単純にやるならダイアログクラスのWM_CTLCOLORでウィンドウのポインタ比較して
変えたい色のブラシハンドルを返す。
VC++って、初めは色1つ変えるのにも苦労するよな。 それまでずっとVB派だった漏れは、かなり苦労した憶えが(´д⊂) まぁ、色変更とか、一般的な処理に関しては 検索すればすぐに見つかるし、あっさり解決したけど。
>>364 特にボタンがなー。
オーナードロー?あーん?なんだそりゃって感じだったよ。
>365 プッシュボタンの文字の色ぐらい簡単に変えられるようにして欲しかった。
367 :
デフォルトの名無しさん :03/01/20 18:04
オナドローハアハア(^o^)
368 :
デフォルトの名無しさん :03/01/21 11:20
オナドール(;´Д`)ハァハァ
369 :
デフォルトの名無しさん :03/01/21 23:31
マウスをダブルクリックしたらキーボードのENDを押したことにするような 処理はどうすれば良いのでしょう? 例えばIEを使ってる最中にダブルクリックしたらEND押したことに なるような感じです。 お願いします。
370 :
デフォルトの名無しさん :03/01/21 23:55
CSplitterWndで横3つに分割してウインドウのサイズを変更したとき、 通常は一番右のビューのサイズが変更されますが、 真ん中のビューのサイズが変わるようにするにはどうすれば良いですか? ┌┬┬┐→┌┬─┬┐ └┴┴┘ └┴─┴┘ こんな感じに。
>>370 WM_SIZE捕まえて自力でサイズ調整。
>>369 ダブルクリックのコマンコを受け取って処理すれば良いだけでは?
373 :
デフォルトの名無しさん :03/01/22 00:32
>>372 ENDボタンを押したことにする、という関数はどんなのなのでしょうか?
検索してもそれらしいのを発見できなかったので質問しました。
初心者用のVCの本を読んだ程度の知識しかないです。。
何か関数名か何か、検索のヒントとなる単語でも良いのでお願いします。
>>373 元がどういう構成かわからないんでなんとも言えないけど
ダイアログならOnOKなりEndDialogなり呼べば良いし、SDIやMDIなら
メインのウィンドウに対してSendMessage(WM_CLOSE)とかで行けないかな?
>>373 ENDボタンを押した時に呼ばれる関数を呼べば(ry
つーかコマンコって何よ俺・・・(´Д`;)
>>371 CMainFrame::OnSize() でやろうとしたのですが、
CSplitterWnd は CMainFrame に直接埋め込んでいて、
CMainFrame が作られてすぐに OnSize() が呼び出されたときには
CSplitterWnd はまだ Create されていないために
CSplitterWnd::Get(Set)ColumnInfo() を呼び出した時点で落ちるという状態です。
(分かりにくい説明ですみません)
方法としては CSplitterWnd をポインタとして埋め込んで OnCreate() で作成、
OnSize() の中で if(m_pSplitter != NULL) として回避するくらいしか思いつきませんが、
直接埋め込んだ状態で何とかする方法はないでしょうか?
コマンコ(;´Д`)ハァハァ
>>377 それはフラグなり何なりで回避できそうな気が。
380 :
デフォルトの名無しさん :03/01/22 00:45
>>377 ::IsWindow(m_pSplitter->m_hWnd)
これを使おう。
コマンコ(;´Д`)ハァハァ
>>379 Create した時点で bCreated = TRUE のようにする方法ですね。
確かにそれだと出来そうですが、イレギュラーな気がしていたので
もっとスマートな方法が無いかなと思って聞いてみた次第です。
>377 も含めて最初から書いておくべきでしたね。すみません。
>>381 その関数は知りませんでした。まだ試してませんがいけそうな気がします。
ありがとうございました。
383 :
デフォルトの名無しさん :03/01/22 01:13
CScrollViewを使用しているのですが、GetScrollPos等で得られる値が32767までしか得られません。(それ以上は0に戻ってしまう) それ以上(例えば100000等)の範囲の場合は自分で管理するしかないのでしょうか。 Windows2000, VC6SP5
たびたびすみません。 OnSize() は CreateStatic() のすぐあとに呼ばれていたことが分かりました。 そのため CSplitterWnd::GetColumnInfo() で まだ作られていない列を指定したせいで落ちていたみたいです。 m_wndSplitter.CreateStatic(this, 1, 3); // ここで呼ばれる m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(180, 0), pContext); これだとフラグを立てるしか方法はないでしょうね。 フラグの置き場所が非常に悩むところですが、なんとかやってみます。 皆さんありがとうございました。
あっ・・・、ENDボタンってキーボードのENDボタンです。。 ウインドウ右上の×ボタンじゃないです。。 いつもはシステムトレイに潜んでて、IEとか見てる時に、 マウスでダブルクリックするとキーボードのENDボタンとか PageDownとか押した事にするやつを作ってみたいと思ってます。 こういうのはどんな関数とか使えば良いのでしょう? お願いします。
>>384 フラグ以外にも方法はあるぞ。
行・列の総数から判断したらどうよ。
388 :
デフォルトの名無しさん :03/01/22 01:46
>>381 >::IsWindow(m_pSplitter->m_hWnd)
ヌヒよ、ここはMFCスレらしく
m_pSplitter->GetSafeHwnd()
だな。
ただヌヒよ、わざわざポインタにしなくても
m_wndSplitter.GetSafeHwnd()
でOKだが。
★あなたのお悩み解決致します!!
◎浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
◎盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
◎行方調査
行方不明になっている家族の消息を調査致します!!
◎電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
◎ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
24時間受付 090-8505-3086
URL
http://www.h5.dion.ne.jp/~grobal/ メール hentaimtt@k9.dion.ne.jp
グローバル探偵事務局
390 :
デフォルトの名無しさん :03/01/22 01:56
MFCでDLLを作り、そのDLL内の関数を別アプリから使用します。 その時にDLLからアプリにメッセージを送るにはどうすればいいんでしょうか? よろしくお願いします。
>>390 APIのSendMessageつかえば。
>>387 VC6 ヘルプより
> 分割ウィンドウの現在の列数を返します。静的分割ウィンドウでは、この値は列の最大値でもあります。
とあるので、ペインが作られているかいないかに関わらず同じ値が返ります。
CSplitterWnd::GetPane() などで NULL でも返ってくれれば楽なんですが、案の定落ちました。
>>392 × VC6 ヘルプ
○ MSDN ライブラリ
質問の追加なんですが、DLLからメッセージを送り アプリ側のある関数を呼び出したい時はどうすればいいんでしょうか? よろしくお願いします。
>>394 アプリ側の関数を呼び出すメッセージをDLLから送る。
メッセージはユーザー定義メッセージな。
>>392 悪い、性的分割ウィンドウだったか。
動的とまちがえてた。
397 :
名無し@沢村 :03/01/22 02:30
>>392 ヌヒにいいことを教えてやろう。
CSplitterWndの派生クラスを作ってGetPane()を以下のようにしたらお望みの動作になるぞ。
CWnd* CMySplitterWnd::GetPane(int row, int col) const
{
ASSERT_VALID(this);
CWnd* pView = GetDlgItem(IdFromRowCol(row, col));
//ASSERT(pView != NULL); // panes can be a CWnd, but are usually CViews
return pView;
}
398 :
デフォルトの名無しさん :03/01/22 02:43
性的分割ウィンドウ……
>>398 変な意味に捉えているようだが、男女で分けるってだけのことだ。
400 :
デフォルトの名無しさん :03/01/22 23:48
DLL内の関数で処理している文字列変数を、DLLを利用しているプログラム自体に渡すにはどうすればいいんでしょうか?
めもりまっぷど(ry
402 :
デフォルトの名無しさん :03/01/23 00:09
学校で動いてたソースを自宅にそのまま持ってきたのに動かないことってあるんでしょうか。 CEdit& ED = GetEditCtrl( ); LPTSTR testline = linedata.GetBuffer(1024); for(i=0;i<=ED.GetLineCount()-1;i++){ ED.GetLine(i,testline); } これでエディタ上(?)の文字列取得出来ていたのに自宅でビルドし直したとたん出来なくなりました。 くだらない質問ですがお手上げ状態です。どなたがアドバイスをおながいします。。
*(WORD *)testline = 1024; ED.GetLine(i,testline);
405 :
名無し@沢村 :03/01/23 00:38
>>402 ヌヒよ、そのコードは結局は最終行しか取得しないわけだから、以下のようにすべきだな。
CEdit& ED = GetEditCtrl();
TCHAR buf[1024];
ASSERT(ED.GetLineCount() > 0);
ED.GetLine(ED.GetLineCount() - 1, buf, sizeof(buf) / sizeof(TCHAR));
407 :
デフォルトの名無しさん :03/01/23 01:01
402です。
>>405 沢村さんのコードで無事動作しました。ホントありがとうございました!
しかしなぜ最終行しか取得してないとおわかりになったのでしょう?
>>404 アドバイスありがとうございます。
>>406 ダメでした。わけわかりません。VCのバージョンとか同じなんですけども・・
メッセージマップで調べてみたんですがよく分かりません。 まずは、RegisterWindowMessageで独自のメッセージを登録すればいいんでしょうか? よろしくお願いします。
409 :
名無し@沢村 :03/01/23 01:01
>>406 ヌヒよ、君に特別に教授してあげよう。
>404のコードは
ED.GetLine(i, testline, 1024);
と同じ意味だ。
まあ、人をバカにする前にMSDN嫁ってこった。はっはっは。
独自メッセージをDLLからアプリに飛ばしてメッセージのパラメータに文字列を渡すつもりじゃ
RegisterWindowMessageってアプリ間でメッセージやり取りするときに使うんじゃなかったっけ。 DLLからアプリにメッセージ投げれば済む話では? WM_APPとかWM_USERとかそのあたりがキーワードになりそうな予感。 複数アプリでDLLの文字列を共有したいならメモリマップドファイル使うんだろうけど。 とりあえず疑問丸投げじゃなくて自分でどこまでやった(調べた)のか書いて欲しいと思った。
説明不足で申し訳ないです。 現在DLL側で UINT intMessage=RegisterWindowMessage("WM_SOCKMESSAGE"); SendMessage(HWND_BROADCAST,intMessage,0,0); とし、 アプリ側で BEGIN_MESSAGE_MAP(CxxxDlg, CDialog) //{{AFX_MSG_MAP(CChatDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_MESSAGE(WM_SOCKMESSAGE,OnSockMessage)←ここを追加 //}}AFX_MSG_MAP END_MESSAGE_MAP() メッセージハンドラ void CChatDlg::OnSockMessage() { AfxMessageBox("Message OK!!"); } としています。 メッセージを投げるというのはPostMessage()を使うってことでしょうか? その場合、第一引数はどうすればいいんでしょうか?(アプリのハンドルの取得方法) この辺りが混乱しています。 よろしくお願いします。
414 :
レゴ其の一 :03/01/23 03:07
#include <iostream.h> #include<stdio.h> void main() { FILE *fp; fp=fopen("素数-実行結果.txt","a"); int i, j ,f,n=1000,c=0; // 1から1000までの数の素数を求める // i, jはループ変数 // fは一回でも割り切れたら1。 // 一度も割り切れなかったら0。 for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。 { f = 0; for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。 { if(i % j == 0) // あるjで割り切れたらfは1。 f = 1;
415 :
レゴ其の二 :03/01/23 03:08
} if(f == 0){// iを割り切るjがなかった場合 cout << i << "は素数です。" << endl; c++; } } printf("%d個です。",c); } 素数を表示するプログラムなんですが、 実行結果をテキストファイルに出力するにはどうしたら良いですか? 教えて下さい。御願いします。 ちなみに、コレを実行しても、作成されたテキストファイルは白紙になってしまいます。
>>414-415 MFC関係ないな。
とりあえずこの状態でファイルにも書きたかったら fprintf 使え。
あと、fopenしたファイルはfcloseで閉じろ。
>>413 SendMessageまで使えているのならなぜ第3/第4引数を0のままにしておく?
そこを使えば済む話だと思うのだが。
というか、そのコードは根本的に何かが違う……
マルチポストなのでIP抜いて通報しますた
MFC関係なくてすいません。 MFC自体知らないんで、すみません。 こっちは、もしかしたら、場違いかもしれないと思い。 移動してみた所、マルチポストと勘違いされたみたいでした。 迷惑掛けてすみません。 fprintfを使おうと思ったんですが、エラーがいっぱい出て分かりませんでした。 fopenとfcloseは、どんな関係なんですか? もしかして、その間のプログラムがファイルに出力されるんですか?
fprintfの使い方としては、どんな使い方をすれば、 実行結果をテキストに出力出来ますかね?
>>419 プロ㌘なんて知らんが、男が社会の窓を開けたら閉めるのと同じじゃないのか?
閉めないと恥ずかしいだろ?
そうですね。 やってみます。
FILE *fp,*fc; fp=fopen("素数-実行結果.txt","w"); int i, j ,f,n=1000,c=0; // 1から1000までの数の素数を求める // i, jはループ変数 // fは一回でも割り切れたら1。 // 一度も割り切れなかったら0。 for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。 { f = 0; for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。 { if(i % j == 0) // あるjで割り切れたらfは1。 f = 1; } if(f == 0){// iを割り切るjがなかった場合 cout << i << "は素数です。" << endl; c++; } } printf("%d個です。",c); fc=fclose("素数-実行結果.txt","w");
と書き換えたんですが、fcloseでエラーが出てしまいました。 エラーが出ない様にするには、どうすれば良いですか?
C言語なら私に聞いてYO! 49 に移動します。 失礼しました。
(^^)
428 :
デフォルトの名無しさん :03/01/24 09:03
メニューの1部分のポップアップメニューをメニューの変わりに、 ダイアログを表示したいです。 Cmenuを継承したクラスを作ればできるのかもしれませんが、ちょっとわかりません。 Wordの下線の色を選択するメニューのようなことをしたいので、 ダイアログ使えないのであれば、別な方法でもよいのでやりかた分かる方、 ご教授お願いします。
>>428 オーナードローで書くのかな?
DrawItemとMeasureItemをオーバーライドして……
430 :
デフォルトの名無しさん :03/01/24 13:41
あるメニューを押したら特定のダイアログを表示するとかそういう単純な問題ではないわけね?
>>428 WM_INITMENU(だったけな?)
もしくは、 WM_INITMENUPOPUP
MCIWndCreateでmpegを再生中にマウスイベントを拾う方法を教えてください。 左クリックでデモムービー停止させたいのです。
■ VisualC++(MFC限定)相談室 MFC6.dll■ ~~~~~~~~~
すいません。SDK限定的な回答を避けようと思っただけですけど。 やっぱり、範囲外ですね。失礼しました。
438 :
デフォルトの名無しさん :03/01/25 22:11
質問です。 まず、あるエディットボックスにDDXの変数を関連づけました(ed)。 そしてとあるスレッドをCreateThreadで作りました。 スレッドの引数にviewへのポインタを渡して、 内部でview->ed="hoge"とかやって、view->UpdateData(false)をすると落ちてしまいます。 なにがいけないんでしょうか?
439 :
デフォルトの名無しさん :03/01/25 22:15
DWORD WINAPI th_func(CMyView* view){ view->ed="hoge"; view->UpdateData(false); } void CMyView::OnButton(){ CreateThread(NULL,0,th_func,(LPVOID)this,0,NULL); } こんな感じです。
440 :
デフォルトの名無しさん :03/01/25 22:35
VC++でDLLファイルを作って、VB6で動かしたいんですが、やり方が 全く解りません。 そこで、 「VBのフォームにコマンドボタンを一つ付けて、 コマンドボタンを押したらDLLファイルから読み込んだ 1+1=2という計算をさせて、フォームに表示させる」 ということをしてみたいです。 何方かご教授をお願いします。
>>440 どこがわからないのかまず書け。
1. VC++ での DLL の作り方。
2. VB のフォーム/コマンドボタンの作り方。
3. VB での DLL の呼び出し方。
4. VB でのフォームへの表示の仕方。
442 :
デフォルトの名無しさん :03/01/25 22:44
全部わかりません。1から順番に教えてください。
>>441 有難うございます。
上記の「1、3」がわかりません。
よろしくお願いします。
一応yahooで検索はしたんですが・・・何も得られずという感じです。
>>442 お前には一生無理だから、あきらめて寝ろ。
>>443 まず、3 からやれ。
yahoo/google するなり、本屋/図書館 にでも行けば、VB から API (=xxxx.dll) を呼び出している例はいくらでもあるから、まずそっちをきちんと覚えること。
【要注意】
.dll 呼び出しでは、Visual Basic の多くのチェック機構が働かない。
プログラムを組んだら、まず「実行」すると痛い目にあうことが多い。
(VB 自体が異常終了することがある。)
実行の前に、必ず「保存」すること。
ツール(T) - オプション(O) の 環境 タブで、プログラムの実行時に 変更点を保存 にしておくといいぞ。
>>438 439
・MFCでは CreateThreadじゃなく AfxBeginThread 使う
・別スレッドに CWndオブジェクトの this を渡すと、ろくなことがない
wave再生なんかでもあるスレッドでwaveオープンして再生して別のスレッドで クローズしたりするとおかしくなるもんなあ・・・・。
どうもありがとうございました。 MFCは、標準のCやC++と違う機能がいっぱいで、 どこに落とし穴があるかわかんないので怖いですね。 以前もファイルを扱うとき、シリアライズを使わず FILE*とfwrite()、fread()という旧来の方法でやってたら おかしくなったりしたことがありましたし。
いまだにfopen、fcloseしか使えませんが何か?
>>451 それじゃ何もできんだろ。(空ファイルを作ることぐらいはできるか...。(w )
453 :
デフォルトの名無しさん :03/01/28 00:25
Window に投げられたメッセージを取得するにはどうやるのが一番いいのでしょうか。 MFC を使わなければ WndProc で Message と wParam と lParam が簡単に調べられるのですが、 MFC を使ったときにその 3 つを取得する方法が分かりません。 基本的な事だとは思うのですがよろしくお願いします。
>>453 メッセージの処理中に、GetCurrentMessage()。
が、余程のことがなければMFCアプリで直接生のMSGを触らねば
ならんような事態は、避ける設計にすべきだと思うが。
>>454 なるほど。
ON_COMMAND や ON_NOTIFY みたいに、メッセージを捕まえた上で
wParam と lParam と共に指定の関数を呼び出すといったことは出来ないのでしょうか。
それならそのものズバリの ON_MESSAGE というマクロが。
>>456 ああぁ、ズバリそれのことです。
ON_NOTIFY でなんとかならないかということばかり考えていました。
どうもありがとうございました。
SDK風に書きたいのなら、CWnd::WindowProcをオーバーライドするとよし。
459 :
デフォルトの名無しさん :03/01/29 08:54
ダイアログコントロールにアクセスする場合に (CEdit*)GetDlgItem("IDC_EDT")->SetWindowTest("aaa"); と書かれていますが、このCEditのインスタンスはどこで作られているのですか? ソースを見ていたら CObject* CHandleMap::FromHandle(HANDLE h) という関数が、インスタンスが存在しなくても自動的に生成してくれるようですが それとも、コンパイル時にどこかに埋め込まれているのですか?
>>459 別にCEditインスタンスが存在する必要はなくて、
ウィンドウハンドルさえわかれば操作は可能。
そもそもGetDlgItemで作られるのは CWnd で、
CEditはそれを継承したクラスでしょ。
参考にSetWindowTextってWin32APIもあるから調べてみれ。
461 :
名無し@沢村 :03/01/29 09:11
>>459 ヌヒよ、まず演算子の優先順位を勉強することをおすすめする。
CWndにしたって結局HWND周りをラッピングしたクラスだしな……
463 :
デフォルトの名無しさん :03/01/29 09:13
464 :
名無し@沢村 :03/01/29 09:17
なぜ演算子の優先順位を勉強することをおすすめするのか、ぜひ聞いてみたいもんだな(藁
>>460 Win32APIベースでのプログラミングは普段やっていますのでわかります。
CEditなりCWndのメンバを呼び出すには、インスタンスは必要になりませんでしょうか?
C++の知識が曖昧なので自身は無いですが。。。
>>461 ((CEdit*)GetDlgItem("IDC_EDT"))->SetWindowText("aaa");
でした。
>>465 (CEdit*)GetDlgItem("IDC_EDT")->SetWindowTest("aaa");
ここでSetWindowTest()はCEdit*ではなくCWnd*のメンバとして扱われる。
468 :
デフォルトの名無しさん :03/01/29 09:38
GetDlgItem()が返したCWnd型のポインタをCEdit型のポインタにキャストして、 そのメンバ関数であるSetWindowText()呼んでるだけだろ?
>>469 そのCWndの実体は何処にあるのですか?という質問です。
例えば、
CWnd temp;
temp.Atatch ( ::GetDlgItem ( this->m_hWnd, IDC_EDIT ); //←適当に作りました
temp.SetWindowText ( "aaa" );
みたいに実体がないとCWndのメンバ関数は使えないと思うのですが。。。
なんか混乱してきました。
そのへんはMFCフレームワークでうまくやっているんだろう。
473 :
名無し@沢村 :03/01/29 10:14
>>471 ヌヒよ、フレームワークはすべてのウィンドウを管理するリストかマップを内部に持っていて
そこでCWndのインスタンスを一元管理しているのだよ。
>>473 MFC初めていきなりのつまづきでしたが、
質問してからいろいろ調べている間にだんだん解ってきました。
DDXを用いた場合はDoDataExchangeでその辺のことが行なわれているのでしょうね。
ありがとうございました。
475 :
デフォルトの名無しさん :03/01/29 21:25
MFCの勉強サイトってどこが一番充実してますか ネコでもわかる~はMFC編は少ししか無いので・・・
>>475 何かしら簡単なもの作ってみて判らない部分があったらネットで
探すって方法がいい勉強になるよ。
478 :
デフォルトの名無しさん :03/01/30 01:22
ダイアログベースのMFCでデフォルトでのボタンのターゲットの変更ってどうやるんですか?
libcmtd.libが他のライブラリと競合してるとのメッセージが出ましたが どうやれば回避できるでしょうか? また競合している相手のライブラリは特定できるでしょうか? お願いします
>>479 Cランタイムライブラリ関数を使わない
>>478 質問が曖昧で非常に答えづらいが……
・TABキーでフォーカスを移動
・コントロールのプロパティで「標準のボタン」にチェック
このへんだと思う
>>478 動的に変えたいって意味なら、SetDefaultButton() "みたいな" 関数が
あるかもしれない。ないかもしれない。(調べてないので)
CWnd か CDialog のクラスメンバをひとつずつ確認して見れ。
482 :
デフォルトの名無しさん :03/01/31 15:24
MFC.netとC++でGUIアプリケーションを作ったのですが、 開発マシン上では正常に動作するのですが ほかのマシンの上ではウインドウがちかちかしてしまって 正常に動作できません。 .netの再配布パッケージを入れても同じでした。 このような現象がおきる原因とはどんなものがありますでしょうか?
OSとか
>MFC.net managedなんだかunmanagedなんだかよくわからんな・・・
.NET SDKの開発用バージョンも入れてみたんですが、 だめでした・・・プログラミングの問題かなあ・・・・
__FILE__,__DATA__,__LINE__ などのように今の行がどの関数に含まれているのか 置き換えてくれるマクロはありませんか?
>>486 __FUNCDNAME__, __FUNCSIG__, __FUNCTION__
見事にあるが、ヘルプ見たか?
む。 まさかVC++7からの新機能だったか?
E:\Projects\hoge\hoge.cpp(41) : error C2065: '__FUNCDNAME__' : 定義されていない識別子です。 E:\Projects\hoge\hoge.cpp(41) : error C2065: '__FUNCSIG__' : 定義されていない識別子です。 E:\Projects\hoge\hoge.cpp(41) : error C2065: '__FUNCTION__' : 定義されていない識別子です。 見事に定義されてませんでした。 (´・ω・`)ショボーン ともかくサンキュ~。
491 :
デフォルトの名無しさん :03/02/01 09:01
ちょっと複雑な話ですが誰かお相手して下さい。 ダイアログにMSFlexGridを直接貼らずに、間にCWndをはさんでその上からはっ付けているのですが、 カーソルキーでのセル間移動が行なわれなくなりました。 (親子関係は DialogBox → WS_VISIBLE|WS_CHILDのウィンドウ → MSFlexGrid) たぶん、MSFlexGridのPreTranslateMessageがCWndのメッセージを横取りしているだけで、 本来の機能をなしていないのだと思うのですが。違うかもしれません。 CWnd の PreTranslateMessage で SetCol(GetCol()+1) などとすると実装は出来ますが、何か解決策はないでしょうか? #同じような問題でMSFlexGridのチャイルドにフローターのEditBoxを貼りつけるとカーソルが利かなくなります。 #これはまずいかなと思い、CWndを親にFlexGrid、EditBox、ComboBoxなどをもたせてカプセル化したいのですが。
492 :
デフォルトの名無しさん :03/02/01 10:10
VCで作ったDLLについてなんですが、、 DLLとしてコーディングしていくとき、確保する配列が大きすぎるとエラーになるものなんでしょうか? 静的に(配列を使う)メモリ確保するとエラーになって、同サイズを動的に(malloc)確保するとうまくいくのですが?
>>491 CWnd::PreTranslateMessage内でMSFlexGridのPreTranslateMessageへ丸投げしたらどうだろう。
>>492 どんなエラーかわからないので答えようがありません。
>>493 なるほどと思って丸投げしたところ、戻り値ゼロ、即ちPre~は関係ないみたいです。
よってSDIフレームに貼り付けてみてもやはりだめでした。
コントロールをChildのChildにすると生じそうな問題ってなんでしょうか?
たびたびすいません。 現状を完結に書きますのでよろしくお願いします。 MFCダイアログボックスアプリ メインダイアログの OnInitDialog にて m_flexGrid.Create ( "test", WS_VISIBLE | WS_CHILD, CRect(~) , this, uID ); とした場合は正常に作動。普通の使い方です。 これを、間にひとつウィンドウをかませて m_window.Create ( NULL, "testwin", WS_VISIBLE | WS_CHILD, CRect(~), this, uID ); m_flexGrid.Create ( "test", WS_VISIBLE | WS_CHILD, CRect(10,10,300,200) ,&m_window, uID ); とすると、カーソルキーが応答しません。 SDIアプリの CMainFrame::OnCreate() に記述すると上記のどちらとも応答しませんでした。 ParentがDialogでなければならない理由があるのでしょうか?
>>495 >m_window.Create ( NULL, "testwin", WS_VISIBLE | WS_CHILD, CRect(~), this, uID );
>m_flexGrid.Create ( "test", WS_VISIBLE | WS_CHILD, CRect(10,10,300,200) ,&m_window, uID );
IDが一緒ですかぃ?
497 :
デフォルトの名無しさん :03/02/01 16:57
MFCアプリケーションによってA4縦やA4横でプリントアウトしたいのですが、 通常の印刷処理では、プリンタの設定で縦横自由に設定できてしまいます。 このあたりの設定を、せめてプリントアウト時にアプリケーションごとに デフォルトの設定値として行いたいのですが(変更はできても良い)、 具体的な方法が見つからないで困っています。 何かヒントでも構いませんので、ご存知の方いらっしゃいましたら教えていただけませんか? 環境は、 VC++6.0 WinXP、Win2000 です。よろしくお願いいたします。
498 :
名無し@沢村 :03/02/01 17:06
>>497 ヌヒよ、君に特別にヒントをあげよう。
CWinApp::GetPrinterDeviceDefaults()だ。
紙サイズ限定なんてイヤすぎる……
500 :
デフォルトの名無しさん :03/02/01 20:08
コマンドボタンを押したらマウスのカーソルが砂時計になるようにしたいのですが、 やり方が全く解りません。 ご教授お願いします。
>>500 #include <wincurs.h>
ChangeCursor(CUR_CLOCK);
502 :
デフォルトの名無しさん :03/02/01 20:37
AfxMessageBox関数でメッセージボックスを表示したんだけど、 どうしてもアイコンが表示されてしまう。 アイコンを表示させない方法ってあります?
503 :
デフォルトの名無しさん :03/02/01 20:50
タスクバーにアプリのダイアログ表示をさせないようにするのは どうすればよいですか? VBでは簡単にできたのですが・・・。
504 :
名無し@沢村 :03/02/01 21:07
最近のMSDNmagazineにメッセージボックスをフックでいろいろ変えるって記事が載って気がするけど MFCじゃないのでsage
>>505 ありがとうございます。
googleで調べる方法を忘れていました。
508 :
デフォルトの名無しさん :03/02/02 02:22
windowsでPCIMCAスロットルじゃなくて複数usbスロットルに差ささった コンパックとフラッシュ・カードのcis tupleを取得する方法がわからん・・・。 BSDのPAOていけたんかな・・
509 :
デフォルトの名無しさん :03/02/02 16:38
>>502 一箇所だけ消したいならAfxMessageBoxの代わりにCWnd::MessageBoxを使う。
アプリ全体のAfxMessageBoxで消したいならCWinApp::DoMessageBoxをオーバーライドする。
510 :
デフォルトの名無しさん :03/02/03 02:50
グループ化したラジオボタンの値を取得するには GetDlgItemを使うしかないのでしょうか? マイクロソフトサンプルのViewexを見るとラジオボタンもDDXを使っている のですが、どうやるのでしょうか?
>510 CWnd::GetCheckedRadioButton
>>496 IDはユニークです。コピペミスです。親子間でユニークである必要があるのかどうかはしりませんが。
どなたかMSFlexGridをウィンドウにに貼りつけた、もしくはATL等で貼りつけたことのある方はいらっしゃらないでしょうか?
MFCベースのDialogに貼ると上手くいきますが、CWndやATLのDialogに貼りつけると
カーソルキーに反応してくれません。
>>514 >親子間でユニークである必要があるのかどうかはしりませんが。
極端な話、1アプリ1IDでも問題ないと?
>>515 OnNotifyのなんでしょうか。できればもう少し詳しくお願いします。
>>516 >極端な話、1アプリ1IDでも問題ないと?
問題無いかどうかはしりません。申し訳ない。
ただコントロールIDはそれが属するウィンドウ内で一意であればいいように思ったので。
518 :
デフォルトの名無しさん :03/02/03 18:16
>>500 CCmdTarget::BeginWaitCursor()
CCmdTarget::RestoreWaitCursor()
CCmdTarget::EndWaitCursor()
もありまつ。
CWnd と CApp の基底クラス。
ダイアログのアプリでダイアログクラスにユーザーメッセージ飛ばそうとしたらコンパイルエラーが出て アプリケーションクラスにユーザーメッセージ飛ばそうとしたら問題なく通る。 こ ん な 事 あ る ?
520 :
デフォルトの名無しさん :03/02/04 05:33
てか、当たり前だろ。
ダイアログベースのプロジェクト。 子ダイアログのスタイルはチャイルドでタイトルバー付き。 子ダイアログにエディットボックスを配置。 親から子を表示。 こうすると、子ダイアログのエディットボックスにクリックでフォーカスを移せません。 タブ押せばフォーカスは移るし、入力も出来るのだけど…。 クリックで子ダイアログのエディットボックスにフォーカスを移せるようにするには、どうすればいいんでしょうか?
523 :
デフォルトの名無しさん :03/02/04 22:57
ウィザードで分割プロジェクトを作成するときに CEditViweを選択できないのはなぜでしょうか?
524 :
デフォルトの名無しさん :03/02/04 23:45
VC6では、bitmapのサイズ、プロパティーで変更できるけど vc++.net プロパティー開いてもサイズ変更の項目ない・・・・ netでリソースのbitmapのサイズ変更の仕方教えてたも~
やり方 わかったから、もういいや
>>522 なぜCHILD……?
>>523 ウィンドウ分割を使用せずにCEditViewを選択状態にして、
ステップ4まで戻って詳細設定からウィンドウ分割を選択すると理由が表示される
ありがとうございます。 参考になりました。 しかし、CEditViewとツリービューに分割したい場合 どうすればいいのでしょうか?
>>527 ウィザードじゃなくて後から自力で分割するとか、
とりあえずCTreeViewで作っておいて片方をCEditViewにするとか。
530 :
デフォルトの名無しさん :03/02/05 00:35
>>528 ,529
ありがとうございます。
ウィザードでサポートされていないので自力でも分割できないのかと
思ってしまいました。
マイクロソフトのものではなく CTreeViewのサンプルを見たいのですが、 良いものないでしょうか? またはCTreeViewを使っている簡単なオープンソースの フリーウェアなどはないでしょうか?
532 :
名無し@沢村 :03/02/05 00:43
533 :
デフォルトの名無しさん :03/02/05 01:19
CArchiveを使ってファイルを読み書きしています。 ループを使ってファイルの中身を全部読み取るとき、 ループ終了条件はどう記述するのがよいのでしょうか? CFile f(".\\test.dat", CFile::modeRead); CArchive ar(&f, CArchive::load); while(1){ ar >> test; if( 何か ) { TRACE("全部読み取った\n"); break; } } もしくは CFile f(".\\test.dat", CFile::modeRead); CArchive ar(&f, CArchive::load); while( 何か ){ ar >> test; } TRACE("全部読み取った\n");
好きにしれよ
535 :
デフォルトの名無しさん :03/02/05 02:19
ビットマップをウィンドウに表示せずにRGBを調べて、それをテキストファイルに出力させたいんだけどどうすればいいでしょうか? 普通ならリソースにビットマップの画像を登録して、BitBltで画面に表示してから1ピクセルごとにRGBをとるんだけど CBitmap newBitmap; CBitmap *pOldBitmap; newBitmap.LoadBitmap(IDB_BITMAP1); myDC.CreateCompatibleDC(pDC); pOldBitmap=myDC.SelectObject(&newBitmap); pDC->BitBlt(x0,y0,xw,yh,&myDC,0,0,SRCCOPY); //原画像を表示する myDC.SelectObject(pOldBitmap); for(j=0;j<yh;j++) for(i=0;i<xw;i++){ color=pDC->GetPixel(x0+i,y0+j); r=GetRValue(color); pDC->SetPixel(x1+i,y0+j,RGB(r,0,0)); g=GetGValue(color); pDC->SetPixel(x0+i,y1+j,RGB(0,g,0)); b=GetBValue(color); pDC->SetPixel(x1+i,y1+j,RGB(0,0,b)); } } これだと一旦表示してからなので、BitBltをコメントアウトして表示しないようにしたらRGBが取れなくなってしまった… 解決策を教えてください!!
536 :
デフォルトの名無しさん :03/02/05 02:33
>>535 画面のちらつきを押さえるために pDCのコピーを作ってそっちに
描画し、あとでコピーをpDCに写しますが、そういう風にpDCのコピーにビットマップを
描画してはどうですか。
537 :
名無し@沢村 :03/02/05 03:49
>>535 ヌヒよ、GetDIBits()を使いなさい。
>MFC.netとC++でGUIアプリケーションを作ったのですが、 >開発マシン上では正常に動作するのですが >ほかのマシンの上ではウインドウがちかちかしてしまって >正常に動作できません。 >.netの再配布パッケージを入れても同じでした。 >このような現象がおきる原因とはどんなものがありますでしょうか? この質問をしたものです。 いろいろ調査した結果、問題は何も処理をしていないのに onSizeが延々と呼ばれ続けることにあるようです。 そのため再描画が次々かかる模様です。 開発マシンではそのようなことはないのですが、これは どういう理由によるものと考えられますでしょうか?
すみません問題はOnsizeではなくて OnPaintが延々と呼ばれていることでした。 OnPaint内でPostMessage(WM_SIZE)していたのです。 どうもダイアログアプリケーション内でのOnPaintの扱いが よくわかっていないようです。 もう少し調べてみます。汚してすいません。
>>540 WM_SIZEだすとOnPaint呼ばれるというループ
>541 ありがとうございます。 PosMessage(WM_SIZE)をやめたら 全体がチカチカするのは何とか抑えられました。 リストビューやエディットボックスはきちんと使えるのですが、 今度はコンボボックスだけがクリックしても反応させることができません。 おそらくなにか余計なメッセージがでてじゃましているのかと検討をつけているのですが・・・
現在ActiveXコントロールを開発しているのですが、 コントロール内にいくつもボタンを配置する手段で 悩んでおります。 できるものならダイアログテンプレートを使用した いのですが、どうやってCOleControlにバインドさ せたらいいのかわかりません。 どなたか、このあたりの手練手管に長けた方、教え ていただけませんか? VC6、Win2000です。
545 :
デフォルトの名無しさん :03/02/06 16:11
>>499 >紙サイズ限定なんてイヤすぎる……
定型フォーマットの用紙に印刷したいときなどは必須ですね。
人間の操作のし忘れをウィンドウズでカバーできないというのも、
使い勝手が悪いことのひとつでしょうな。
546 :
デフォルトの名無しさん :03/02/06 16:49
バイナリエディタ作成で質問があります。 ただ、通常のMDIのタイプと違って、ダイアログベースで作っています。 まず、タブコントロールを用意して、一つのタブにバイナリエディタ を表示させようとしています。 別のタブには、たとえばプログラムを逆アセンブルしたリストなどを表示。 こんな感じで作っているのですが、バイナリエディタ部分は どのクラスを使うのが最適でしょうか?
>>546 強いて挙げるならEditコントロールかな……
ルーラーもできないことはない。
単純に貼り付けるだけで実現できるようなコントロールはないと思う。
ダイアログベースというのがそもそも間違いな気がしないでもない。
バイナリエディタだけなら、MDIとかで作ってるのがほとんどだと 思います。 だけど、今回は、バイナリエディタ以外にもいろいろと機能を 持った総合的なソフトを作ろうかと思ってるので困っています。 必須な機能としては ・タブで項目を選べること ・バイナリエディタ ・プログラムを逆アセンブルしたものを表示 ・ラジオボタンで選択したり、エディットボックスに入力したり。 こんな感じなので、各機能をタブで分けて表示するのが 便利かなぁと思っているのですが。
549 :
デフォルトの名無しさん :03/02/06 17:11
ウィザードに従ってエクスプローラ型のアプリケーションを 作成し実行しただけなのですが、 新規ファイルを開いただけでエラーが発生します。 何が悪いのでしょうか?
追加です。 右側のviewとしてCEditViewを選択しました。
>>549 いつも思うけど、どうして質問者は「エラーが起こります」としか書かんのかねぇ?
エラーって言ってもピンからキリまであるだろうに。
>>523-529 あたりを参考にしる。
>>548 いや、タブで切り替えにしてもダイアログベースにこだわる必要は全然ないよ……
ダイアログベースでないとタブとか使えないと思ってるのかな?
いや総合的なアプリを作ろうとしてるのにそんなわけはないよな。
>>551 失礼しました。とりあえず手動で分割したら
エラーは出なくなりました。
>>551 >
>>549 > いつも思うけど、どうして質問者は「エラーが起こります」としか書かんのかねぇ?
状況把握できないほどパニクってるから。
つーか「天は自ら助く者を助く」だと漏れは思うんだけどそんな香具師は自分で解決しちゃう率が高いっぽいのであとにはカスしか残らないのでわ?
次スレ立てるならテンプレに書いておいたほうがいいな。 幼稚園児レベルにもわかるように。
今からこのスレは次スレのテンプレを考えるスレに変わりました。 ではスタート↓
初心者にVC++を教えるスレも一緒に書いておけばいいべ。 ついでにWinAPI32スレとVC++スレも。ついでにCスレとC++スレ・・・
他のサイトじゃ初心者向けと言いつつ・・・って所が多いからねえ。 せめてここでは多少の厨的な質問にも答えてやって欲しい気がしないでもない。
わからなくもないが、 さすがに度を越えた香具師が多いしな・・・(;´Д`)
>>558 質問内容のレベルはどうでもいいんだけど、
質問の仕方を小学校で学びなおしたほうがいいヤツが大杉
561 :
デフォルトの名無しさん :03/02/08 13:09
スレ違いかと思いますが、、、VC++6.0の新規作成の時に、 「MFC Appwizard(exe)」 と「 Win32 Application」 がありますが、基本的には前者はMFCクラスライブラリを使うことが出来て 後者はそれが使えない、という程度の違いなのでしょうか?
>>561 実際に新規作成して違いを比べてみればいいよ
それでもわからなかったら質問して
>>561 後者でも自前で設定すりゃ使えるが面倒。
Wizardってのは、あくまで手動による手間とミスを減らすためのツールに過ぎん。
SDI。VC++6。 ID_FILE_SAVE_COPY_AS のハンドラを自前で用意したいのだが デフォルトのハンドラの殺し方&オーバライドの方法がわかりません。 ふつーに CWinAppやCFrameWndの派生クラスに ID_FILE_SAVE_COPY_ASのCommandハンドラを用意しても無反応。 どうすればよいのでしょう?
>>564 ID_FILE_SAVE_COPY_AS つかわずに自前でIDを用意する、っていうのはナシ?
>>565 な、なるほど‥‥。
ほかに手段がなければそうするしかないですが‥‥。
そして保存するときはWM_COMMANDとID_FILE_SAVEを投げる、と。
ああっ、やろうとしてるのは ID_FILE_SAVE_COPY_AS じゃなくてID_FILE_SAVE_AS でした。 (表記間違い)
>>565 さん案で、IDを追加して対応することにしました。
ありがとうございました。
570 :
デフォルトの名無しさん :03/02/08 23:07
>>564 >ふつーに CWinAppやCFrameWndの派生クラスに
それはちっともふつーじゃない。
MSDN の「検索」でID_FILE_SAVE_AS を検索してごらん。
無反応なのは、コマンドルーティングの優先順位の関係だろう。
Editboxの64K文字の文字数制限って変えられないんですか?
>>571 変えられるよ
頭にRichを付けるだけ
573 :
デフォルトの名無しさん :03/02/09 18:48
MFCをSDI形式でスケルトンを生成して、VBのようにボタンやテキストボックス を配置したいのですが、MFCが生成したコードのどこを追加したら配置処理ができますか? ダイアログを使わないやり方で教えて下さい。
>>573 MFC AppWizard ステップ1でSDI
MFC AppWizard ステップ6で基本クラスCFormView
もしくは…… CButton型の変数などをビュークラスのメンバ変数として持っておいて、 OnCreateで作成・OnSizeで配置。
576 :
デフォルトの名無しさん :03/02/10 18:46
MFCでDAOを使用しているのですが データベースのfield1というフィールドからdoubleの値を取り込みたいときに COleVariant olebaka; CString strbaka; olebaka = m_pRecordset->GetFieldValue("field1"); strbaka = V_BSTRT(&olebaka); のようにしてCString型に変換してからdoubleに変換するしかないのでしょうか? というかCStringからdoubleに変換する方法もわかりません。 V_BSTRT以外に何かよい方法はありませんか? どちらかでもいいのでよろしくお願いします。
型をもっと勉強しよう。 取り出すときは文字データとしてしか得られないからCStringなのは当り前。
578 :
デフォルトの名無しさん :03/02/11 13:51
AfxBeginThreadで開始したスレッドを強制終了させたいんですが WIN32APIのTerminateThreadみたいなやつありませんか?
というか、TerminateThread使えよ
>>580 API レベルで、TerminateThread を使っていいかという議論はさておき、MFC レベルだと絶対ダメ。
やっぱ無いのか・・・
素直にTerminateThreadつかいます
>>581 >MFC レベルだと絶対ダメ。
TerminateThread結構便利で、つい頼っちゃうんだけどまずいっすか?
ワーカースレッドならそもそも強制終了を頻繁にしなきゃならない設計に 問題があると疑った方がいいかも
584 :
名無し@沢村 :03/02/11 16:15
>>582 ヌヒよ、スレッド終了用のEventでも用意しなさい。
>>582 MFCのスレッドは扱いに気をつけませう
いろいろサイト回って勉強してきまふ 皆さんアドバイスどうもです
587 :
デフォルトの名無しさん :03/02/12 00:55
const CString& CString::operator=(LPCTSTR lpsz) { ASSERT(lpsz == NULL || AfxIsValidString(lpsz)); AssignCopy(SafeStrlen(lpsz), lpsz); return *this; } ここのASSERTで引っかかるんですがこれってどういう意味ですか? ちなみにstrcore.cppのline 344のところです。
>>587 ASSERTとAfxIsValidStringをヘルプで調べることをオススメする。
589 :
デフォルトの名無しさん :03/02/12 05:11
ビットマップを縮小して表示させるにはどうしたらいい? ちょうどサルネイルみたいな感じで表示させたいんだが… そういう関数ってある?
590 :
デフォルトの名無しさん :03/02/12 05:18
CDC::StretchBlt ビットマップを転送元の四角形から転送先の四角形に移動します。このとき、必要に応じて、転送先の四角形に合うように、ビットマップを拡大、縮小します。
591 :
デフォルトの名無しさん :03/02/12 06:48
590さん、さんくすです あとも1つ質問ですが、ビットマップを縮小したときに画像の絵ってやっぱり潰れてしまうのでしょうか? (例えば線が消えてしまうとか)
>>591 潰れないように縮小はムリだろ。
ベクトルデータでラインとかのデータを持ってりゃ別だが。
593 :
デフォルトの名無しさん :03/02/12 11:06
Power Users権限のユーザーが setup.exe とか install.exe を実行すると 自動的に「別のユーザーとしてプログラムをインストール」という画面が出てきて きますが、プログラムの中から system関数や_spawnl関数などででsetup.exeや install.exe を実行すると「別のユーザーとして…」の画面が出てきません。 プログラム中からsetup.exeやinstall.exeを実行して、「別のユーザーとして…」の 画面を出すにはどうしたらいいでしょうか? (ダメな例) system("setup.exe"); _spawnl(_P_WAIT, "install.exe", "install.exe", NULL); 開発環境:Windows2000SP3 VC++6
>>593 ちょっとすぐに試せないんで想像で悪いけど、ShellExecuteとかもダメかい?
>>594 できました!!ありがとうございます!!
(できる例)
ShellExecute(this->GetSafeHwnd(), "open", "c:\\setup.exe", NULL, NULL, SW_HIDE);
596 :
デフォルトの名無しさん :03/02/12 19:24
アップウイザードでSDIプロジェクトを生成しました。 このタイプのプログラムではメニューが最初から1つあると思うのですが、 メニューを使わないのでメニューを表示させないようにしたいです どうすれば良いでしょうか。 よろしくです。
SetMenu(NULL);
>>597 お礼が遅くなりました。どうもありがとうございます。m(__)m
Zオーダーについて質問です。 ダイアログベースで、エディットボックス(以下edit)の上に重ねて リストボックス(以下list)を配置しました。 タブオーダーでeditを1、listを2にするとリストは表示されるがマウスクリックを受け付けず、 逆にするとクリックは出来るが選択した項目だけ描画され、枠は表示されません。 listをeditに重なるように表示させ、 かつマウスで項目を選択できるようにするにはどうしたら良いのでしょうか? リストを再表示させようとInvalidate()やUpdateWindow()、 SetWindowPos()でwndTopMostをセットしてみたりもしたんですが、 どうにもうまく行きませんでした。
600 :
デフォルトの名無しさん :03/02/14 00:03
>>599 >ダイアログベースで、エディットボックス(以下edit)の上に重ねて
>リストボックス(以下list)を配置しました。
なにがやりたいわけ?
俺もそれが気になって返答しかねた。 コンボボックスじゃダメなんだろうか。
602 :
デフォルトの名無しさん :03/02/14 01:37
自動でプログラムをバージョンアップさせる仕様を作りたいのですが exeをサーバーから再ダウンロードして、自分自身を再起動させる感じで いいと思うのですが、 自分自身のexeを終了させてから、かわりに新しくダウンロードしたexe を起動させるにはどうしたらよいでしょうか? また、exeも同名、同位置で入れ替えたいのですが・・・ どなたかアドバイスください
バッチファイルか別のexe。
バッチファイルは考えてみたのですが、 そこで、リネームかコピーするにしても 元のexeから実行すると、それを書き換えることはできないですよね・・・ そこが悩みです
あーbatじゃまずいか。 じゃあ、別のexeを作ったら? a.exeの中でb.exe起動 -> bはaが死ぬまで待機 -> aが死んだら書き換え ->aを起動してbは終了。 こんな感じで。 a.exeの中でb.exeをリソースとして持ってb.exeを実行時に生成 すればbも更新する事も出来る。
>>605 ありがとうございます
姑息ですが、いけそうですね!
メッセンジャーのアップデートとか、ほかのプログラムも
やはり概ね、ほかのプロセスから制御ってのがポイントですかねーー
>>606 姑息っつーか普通はそうだと思うぞ、
b.exeとか言ってるから姑息っぽいけど普通はsetup.exeとかになるだろ
608 :
デフォルトの名無しさん :03/02/14 09:08
CToolBarを使って、アイコンの右に文字を出したいのですが、 どーにもこーにも出せません。 codeprojectのSizableReBar_demoがアイコンの右に文字をだしているので、 ソースを追っていて、下に文字を出すところまではできたのだけど、 右に出せないのです。どーしたらいいのか教えてください。 オーナードローとかしなきゃいけないのかなぁ。
>>600 説明不足でした
editはマルチラインです
要はVCやVBのコード補完機能のリストのように動作させたいわけです。
>>609 だからコンボボックスじゃいかんのかと。
>>609 それって重ねる必要なくない?
editの下にlistを置けば良いと思うが・・・
612 :
デフォルトの名無しさん :03/02/14 17:46
あるプログラム(exe)が実行されているかどうか調べたり それを終了させる方法を教えてください。 あと、任意のexeを起動させる方法教えてください
うーん、VCのコード補完機能をそのまま真似したいだけなんですが・・・
テキストエディタでカンマが入力されると、
カレット位置に次の候補リストが表示される、と。
>>610 コンボボックスのエディット部を利用するということですか?
でもあれって1行だけですし・・・テキストエディタにはならないかと
>>611 カレット位置にリストを持っていきたいので、
どうしてもエディットボックスに重なるようになります
一番納得のいかないことは、
タブオーダーでリストを最前面にする:フォーカス当たるが描画されない
エディットボックスを最前面にする :(リストに)フォーカスはないが描画されている
コレあべこべなんじゃないかと。
リスト云々は抜きにして・・・
コントロールが二つ重なったときに、
どちらかを最前面(フォーカス、描画ともに)にするにはどうすればいいのでしょうか
同じ親ウインドウを持つ子ウインドウ同士では不可能なのでしょうか
あるいは描画の順番の問題なのかも・・・
>>613 どっちも同じ子供なんだから、片方だけ特別扱いはできないだろ。
そういう使い方するんなら、リストボックスの方を独立したポップアップウィンドウにすれ。
子ウィンドウである限り、親ウィンドウの外には出られないという制約がつくわけだし。
615 :
名無し@沢村 :03/02/15 01:14
>>608 TBSTYLE_EX_MIXEDBUTTONS
TBSTYLE_LIST
BTNS_SHOWTEXT
少し自分で調べてがんばったのですが、 あるプロセス(というかEXE)が、実行中かどうかを調べたいのですが APIがわかりません。API名だけでもいいのでどなたか教えてください。
617 :
名無し@沢村 :03/02/15 03:02
>>617 ありがとうございます
しかし、、「列挙」なんて検索ワードは思いもつきませんでした。
1つ1つ比較するしかないですかー
単純に任意の「~.exe」が実行中かどうか一発で調べられる
便利なAPIはやっぱないんですかね
あーあ、沢村の虚言を間に受けたかわいそうな人がまた一人
>>618 DeleteFileしてみてエラーが出たら実行中だyo!
>>621 実行終了と同時にファイルが消えてしまうのは、いただけませんねー
623 :
デフォルトの名無しさん :03/02/15 19:01
オナニーのやりかたがわかりません!
624 :
デフォルトの名無しさん :03/02/16 17:36
625 :
デフォルトの名無しさん :03/02/17 18:58
MFCのダイアログエディタの使い方がよくわかりません。 どこかに詳しく載ってるサイトなどはありませんか? 書籍でもいいのですが・・・。 どうかよろしくお願いします。
MFC70で作られたプログラムを趣味で解析しているのですが、 MFC70.1432 って何の関数でしょうか。。。? .NETを買えばすむ話なんですが。。。(^^;
BMP背景の上に別のBMPをゲームのキャラクタのように配置、移動させていくには 通常どういう手順で行っていくんでしょうか?
>625 >626 >627 あんたら使うツールを間違えてるよ。 ぶちゃけ、その程度の質問をするようではまず、使いこなすのは無理でしょう。 時間のムダだと思うよ。w 多分参考となるレスはつかないでしょう。 恥ずかしくないですか?というより、は~ぁって感じだね。他のででつくれば・・
馬鹿を放置することを覚えて欲しい。
コンストラクタでSHGetMalloc()とSHGetDesktopFolder()を 呼び出して即Releaseしてみたら、戻り値のカウントがそれぞれ2,1と なってて、これ以上Releaseしてもカウントが減らないんですけど これはどういうことなんでしょうか? この状態でアプリを終了させて問題ないということでしょうか。
カウント逆ですた。デスクトップフォルダの方がリリース後2でした.
634 :
デフォルトの名無しさん :03/02/18 00:28
文字を入力して、それをテキストに吐き出すプログラムなのですが、 これをWindows風にしたいのです。 しかし、私はMFC等使ったことがないのでどうすればいいのかよくわかりません。 とりあえず自分でボタンの配置は作れたのですが、そこからどうすればいいのか・・・・。 このソースで、どうやればWindows風にできますか?DOS窓ではなくWindowsにしたいのです。 よろしくお願いします。 ボタンの配置は、テキスト入力欄があって、その下に 保存。キャンセルのボタンがあるだけです。 どうかよろしくお願いします。
ソースはこれです。 #include <stdio.h> int main(void) { char memo[100]; FILE *fp; fp = fopen("memo.txt", "w"); if(fp == NULL){ printf("ファイルをオープンできませんでした。\n"); return 1; } else{ printf("ファイルをオープンしました。\n"); } scanf("%s",memo); fputs(memo,fp); printf("ファイルに書き込みました。\n"); fclose(fp); printf("ファイルをクローズしました。\n"); return 0; }
GetWindowTextについて小一時間調べて。
>636 いやいや、それだけ調べたってどうにもならないでしょう。 >635 VC6なのか.NETなのか書いてないのでなんともいえないが、 6なら新規作成からAppWizardで MFCアプリケーションを作成する。 もちろんダイアログ。 途中で聞かれると思う。 んでリソースエディタ上でエディットボックスと保存ボタンを配置。 キャンセルボタンは初めからあったと思う。 んで配置した保存ボタンをダブルクリックすると 自動でコード書くところに飛ぶのでそこにそのコードを貼り付ける。 >printf("ファイルをオープンできませんでした。\n"); はMessageBox("ファイルをオープンできませんでした。"); に変更すること。これで動くんじゃない? VC6手元にないし無責任だけどw あと、returen 0;もいらない。
>>637 適切で丁寧なご回答ありがとうございます。
使っているのはVisualStudio.NET2002内のVisualC++7.0です。
今からそれをヒントに自分でがんばってみます。
>あと、returen 0;もいらない。
これはMFCだからいらないという意味ですか?
それともreturn 0;を書かなくてもmain関数には自動的に0で認識されるから
いらないと言ってるのです?
便乗質問すいませんがよろしくお願いします。
>634
新しいプロジェクト->Visual C++ プロジェクト->MFCアプリケーション
->アプリケーションの種類->ダイアログ ベースにチェック
->完了ボタン
出てきたリソースエディタ上のダイアログに
エディットコントロールとButtonを置く。
->Button1のCaptionをプロパティにて「保存」に変更する。
->エディタ上の保存ボタンをダブルクリック
->そこに書く
以上。
適当に書いた。時間ないから動く以上の動作は期待しないでください。
なんせ寝なきゃならんので時間がないんで。
んでUPもした。
わからん関数はF1で調べてください。
ttp://f6.aaacafe.ne.jp/~nich/phpup/upload.php の「VCsrc」ですのでダウンしたら消しておいてください。削除パス123
return 0;については単にボタン押した時にWindowsが呼ぶ関数がvoid型だから。
WindowsプログラミングはWindowsが呼んでくれる関数の中に
あらかじめコードを書いておく、って形式なんだよ。
じゃおやすみなさい。
>>634 こんなところで質問して解決しようとしているようじゃ、いつまでたっても上達しないよ。
参考書ぐらい買えば?
641 :
デフォルトの名無しさん :03/02/18 02:00
なんつーか、
>>634 とか見てると、ネタとしか思えないんだけど・・・
オブジェクト指向とか、イベントドリブンとかの意味は分かってますよね?
分かっていなければ、ここはまだあなたが来るべき場所ではありません。
>>632 Shell自体がまずいのかShellExtensionsがまずいのかは知らないけどよくある事
Shell関連は必要なら別プロセスに追い出して処理完了後にそのプロセスを終了させている
もっといい方法があるなら知りたいがMFCと無関係だからスレ違い
みなさん本当にどうもありがとうございました。
特に
>>639 氏、本当に感謝です。
ありがとうございました。
>640
>641
VisualStudioを使ってるのですが、VisualStudioに関する書籍は売ってないんですよ。
MFCの本も近所には売ってないし・・・
VisualStudioを使ってる…? VisualStudioってのはMSOfficeと同じように複数のソフトの集合体だよ? 主なものはVC++とVB。 そのうちのVC++なんだからVC++の本でいいんだってば。
あとMFCの本は本屋なんかで買っちゃロクなもんない。 お薦め本のスレがあるからそこ行って聞いて来てオンラインショッピングで買いなさい。 amazonあたりが無難でしょ。
>644 以前、VS.NETの使い方を覚えるのに VC++の本を買うのは正解か、ととあるスレで聞いたのですが 答えはノーでした。 ソフトの集合体ということは当然知ってますが・・・。 >645 わかりました。 今度、初めてアマゾンを利用してみます。
647 :
デフォルトの名無しさん :03/02/18 16:39
今MSが販売している言語製品は、 VC++ VB VC++.NET VC#.NET VB.NET の5種類あるという認識でいいの?
スレ違いだバカ。バカ野郎。大馬鹿野郎。くたばっちまえ。
とりあえず634はここに来る前にHelp見たり初心者スレ池でFA?
CListCtrlのアイテムの高さを動的に変えたいんだけどどうすればよいですか?
なんどもすいません。
実は、私はCしか使えないので、C++は読めないんです。
でも、デフォルトのままだとすべてがC++で書かれてますよね?
そのような場合はどう対処したらいいのでしょうか?
>>635 のソースをC++としたらコンパイルできないじゃないですか。
どうしたらいいのですか?
よろしくお願いします。
激しくスレ違い。
>>651 とりあえずスレタイ10回くらい読み直してから
参考書見てMFCって言葉の意味を理解してから出直してきてくれ。
そうですか・・・ じゃあ最後にこれだけ教えてください。 MFCはC++ができなくてもCだけで使えますか?
>>654 それすらわからないってことはCも使えないんじゃないですか?
>655 入門本より少し技術があるって程度です。
ネタは放置すること。 ネタじゃなくてもネタ相当の書き込みは放置すること。
>657 ネタじゃありません。 最初にも書いたとおり私はMFCを使うのが初めてで、 本もなく困ってるんです。 絶対にネタではありません。
まあ、ある程度のことははっきりさせておいてあげないと
いつまでもこのスレに未練を持っちゃうだろ。
>>654 MFCはC++用のクラスライブラリ。Cで扱うことは出来ない。
以上。
では、適したスレに移ってくれ。
>>658 お前がネタとは言ってないわけだが、
なんでそんなに必死なの?( ´,_ゝ`)
661 :
名無し~3.EXE :03/02/18 20:50
次へボタンを押すと次のダイアログへいくようなプログラムが書きたいんですが、 int nRetern = dlg.DoModal(); if(nRetern == IDC_NEXT){ CNextDialog dlgNext(&dlg); dlgNext.DoModal(); } ↑的なコードをかいてもdlgNextが表示されません。 いじくると出るんですが。。。 普通はどうやるんですか??? お願いします。
普通はプロパティシートをWizard97タイプで使うんじゃないかな<次へ フォームビューを切り換えるやり方ならCodeGuruにサンプルあるよ。
>>661 ぷろぱちーしーとのウィザード形式でどうよ?
664 :
名無し~3.EXE :03/02/18 21:07
なんていうサンプルですか? CodeGuruをちょとみただけなのでよく分かってないんですが、 いっぱいサンプルがあるみたいなので・・・。
>>664 MSDNのCPropertySheet読んで見たら?
666 :
名無し~3.EXE :03/02/18 21:15
>>665 はい。そうします。
ありがとうございました。
667 :
デフォルトの名無しさん :03/02/18 23:12
こんにちわ。複数言語の入力に関する質問があります。 リッチエディットコントロールはデフォルトでUnicodeを使っているようで、 事実複数言語(私の場合日本語とハングル)の入力と表示が可能になっています。 ところが、GetSel(0,-1)で全範囲選択してGetSelText()で得られた文字列の 日本語部分は、シフトJISになっていて、 他の言語で入力された部分は空白(0x20)が入っているだけです。 DDXを使ってCStringを関連づけても、同様の結果になってしまいました。 リッチエディットコントロールでの複数言語の扱いはどうなっているんでしょうか。
すいません、上の文章のGetSel()はSetSel()のまちがいです。
669 :
デフォルトの名無しさん :03/02/19 16:40
MFC の CHttpFile でRead(void * lpBuf, UINT nCount)関数を使おうと思ったのですが lpBuf のバッファの確保の仕方がわかりません。どうやったら確保できるのでしょうか。
普通にローカルで確保すりゃいいと思うが… newでやってもいいし、サンプル見たいならgoogleで「CHttpFile Read」とでも やればすぐ出てくるし、何を難しく考えることがあろうか。
つか、もっと基本的な勉強をしろってこったな。
672 :
デフォルトの名無しさん :03/02/19 17:16
VC++でSDIで、 ----------- | | | | | |------| | | | ----------- という感じの分割ウィンドウを作りたいのですが、 MainFrm.cppのメッセージハンドラのソースを教えてください。 -------- | | | |------| | | -------- だけとかならできるのですが・・・
673 :
デフォルトの名無しさん :03/02/19 17:19
↑ 図を間違えました。 四角を横に2分割→AとB Bを縦に2分割→C(上)とD(下) Cを横に2分割としたウィンドウを作りたいんです。
>ソースを教えてください ワロタ
リッチエディットをサブクラス化したんですが、 そのウインドウプロシージャ内にて WM_LBUTTONUPを拾おうとしたんですが出来ません。 どうすればできますか?
676 :
デフォルトの名無しさん :03/02/19 18:18
>>675 それは本当にMFCでやってるのかと小一時間・・・
>>675 リッチエディットは最初からCRichEditCtrlがありますよ。
でもリッチエディットのメッセージを拾うのは、最初わからなくて私も苦労しました。
デフォルトではメッセージを送らないようになっているので、
このクラスのSetEventMask()で使うメッセージのマスクを設定する必要があります。
また、初期化系の関数でAfxInitRichEdit()を使うのも忘れないでください。
ソースと違いましたわ。 教えてください(笑。
>>672 図がわからん。モナ板でAAの練習してこい。673の説明もわからん。
AAを作る上で重要なのは、
・フォントはMSPゴシック12pを基準としている
・行頭の半角スペースは無視される
・半角スペースが2つ以上連続すると1として数えられる
ということだ。
>>679 さん
ご指導ありがとうございます。
図は下記のようなものです。
隙間はつなげて、四角の中でやってると思ってください。
-----------
| | | |
| | | |
| |-------
| | |
| | |
-----------
図がわからん (w
----------- | | | | | | | | | |------- バーカ | | ◎ ◎.| | | ー | -----------
>>677 CRichEditCtrlを継承したクラスで
WindowProcをオーバーライドって方法でやっています。
ほかのメッセージ(WM_LBUTTONDOWNとかWM_KEYUPとか)はうまく動作してるのに
なぜWM_LBUTTONUPだけがだめなんだろうと悩んでいました
なるほど、イベントマスクというものがあったんですね
ありがとうございます
これについて勉強しようと思います
685 :
デフォルトの名無しさん :03/02/19 21:42
>>672 これでわからなけりゃあきらめろ。
#include "MyView.h"
class CMainFrame : public CFrameWnd
{
(略)
//以下を追加
CSplitterWnd spl1, spl2, spl3;
//デフォルトのビューは消す
//CChildView m_wndView;
(略)
}
686 :
デフォルトの名無しさん :03/02/19 21:42
OnCreateClientをオーバーライドして次のように書く。 BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { CRect rc; GetClientRect(rc); spl1.CreateStatic(this,1,2); spl2.CreateStatic(&spl1, 2,1, WS_CHILD|WS_VISIBLE|WS_BORDER, spl1.IdFromRowCol(0,1)); spl3.CreateStatic(&spl2, 1,2, WS_CHILD|WS_VISIBLE|WS_BORDER, spl2.IdFromRowCol(0,0)); spl3.CreateView(0,0,RUNTIME_CLASS(CMyView), CSize(rc.Width()*1/3,rc.Height()*1/2), pContext); spl3.CreateView(0,1,RUNTIME_CLASS(CMyView), CSize(rc.Width()*1/3,rc.Height()*1/2), pContext); spl2.CreateView(1,0,RUNTIME_CLASS(CMyView), CSize(rc.Width()*2/3,rc.Height()*1/2), pContext); spl1.CreateView(0,0,RUNTIME_CLASS(CMyView), CSize(rc.Width()*1/3,rc.Height()), pContext); spl2.SetRowInfo(0,rc.Height()*1/2,0); return CFrameWnd::OnCreateClient(lpcs, pContext); }
687 :
デフォルトの名無しさん :03/02/19 21:46
デフォルトのペインの大きさを変えたかったらCreateViewの中の指定を変えろ。 それからクライアント領域はすべてスプリッタが占めるから 元々の(アップウィザードが吐き出した)Viewを使ってるコード消すこと。 フレームの定義のOnCreate()、OnSetFocus()、OnCmdMsg()あたりにあるはず。 以上。
ああっと書き忘れた。 ドキュメント・ビューアーキテクチャを使ってる場合は CMyViewなんてクラスを作らなくても元のビューを使えばいい。 でも窓を分割するって事はそれぞれに違ったビューを使うんだろうな。 CSplitter::CreateView()の第3引数で入れたいビューを指定してやれば それぞれの分割された窓枠で各ビューの処理ができる。
ありがとうございました。いろいろサンプルがありました。 どうやら確保するサイズ[]が抜けていたようです。
>>685 さん
どうもありがとうございます!
うあってみましたが、最終的な分割になりませんでした。
たぶん、私が値を返すのが間違えてるんだと思いますので、
いろいろ調べてみます。
692 :
デフォルトの名無しさん :03/02/21 22:18
お聞きしたいのですが、 Editボックスで右クリックでメニューを出すよう実装したいのですが、 それとEditのデフォルトカラー(背景と文字)を変更したいのですが、 なにか簡単な方法はないですか?
CEditから派生させりゃもう好き放題に
>>686 さん
spl3.CreateView(0,0,RUNTIME_CLASS(CMyView),
CSize(rc.Width()*1/3,rc.Height()*1/2), pContext);
を消し、
最後に
return = TRUE
と加えたら、希望のものができました。
ありがとうございました。
695 :
デフォルトの名無しさん :03/02/22 20:24
すいません。教えてください。 windows起動時にログを取りたいのですが どうやれば起動時にプログラムが実行されるでしょうか? スタートアップに入れたのですが駄目でした。
練習
697 :
デフォルトの名無しさん :03/02/22 20:50
VisualC++を始めようと思っているのですが 今、使用しているOSはMEです VisualC++6.0とVisualC+が+netの違いを教えてください。 初心者にとっては、OSの事を考えて旧バージョンのほうが 無難でしょうか よろしくお願いします。
>697 VC++.Net は2000/XPにしか入らないよ。
701 :
デフォルトの名無しさん :03/02/22 21:20
netは2000/XPにしか入らないのはわかっています。 初心者がOSを替えてまでnetを購入するのがいいのか 旧6を探して勉強するのいいのかの質問でしたが。
>>701 初心者が9x系でプログラミングするのを勧めるほど
このスレは悪意に満ちていません
つーか本人のやる気の問題までめんどう見切れるかよ。 技術的な質問しろ。
>スタートアップに入れたのですが駄目でした。 どういう風に駄目だったのか詳細かいてね
おまいら! インストール時にXPservice pack1のディスクを入れろと言われるんだが、どうしたらいいのですか? そんなディスク持ってません・・・
ちなみに、今日買ったばっかです。 OSはXP.
たぶんですまんがc:\tte
709 :
デフォルトの名無しさん :03/02/23 02:02
711 :
デフォルトの名無しさん :03/02/24 03:13
StretchBltで白黒のビットマップを縮小表示する際、白い線画の部分が潰れてしまい、真っ黒な表示になってしまいます SetStretchBltModeでモードを選ばないと駄目だと言われたのですが、これはどうやって使うのでしょうか? ヘルプみてもいまいちわからず…
>>711 せめて何がどうわからないのか説明すること。
>>711 何故ヘルプを見てもわからないの?
伸縮モード
WHITEONBLACK 白優先
BLACKONWHITE 黒優先
HALFTONE 中間色(ディザリング?)
COLORONCOLOR 計算せずに単純に間引く
ヘルプは見るもんじゃない。読むもんだ。
日本語が分からない半島人は大変ですね
すみません2つほど質問があります CDialogウィンドウ上からCFrameWndを Create関数を呼び出して作成したのですが例外が多発してしまいます 対処法ありますか? それとCDialogウィンドウにCStatusBarを作成したのですが 全く表示されませんけど仕様ですか? (CFrameWndなら当然問題無く表示されます)
>>718 そもそもフレームにダイアログ表示すればいいのでは?
何をやりたいんだろうか。 CFormView使えばいいと思うんだが。 > 全く表示されませんけど仕様ですか? あなたのバグです。 しかるべき手順を踏めば表示されます。
例外って何?
例外エラーだろ。 このスレもそろそろおしまいか・・・
723 :
デフォルトの名無しさん :03/02/24 23:39
CListCtrl で GetItem したいのですが、あらかじめ取得する文字列の長さがわからないと エラーになってしまうと思うのですが、文字列長を取得する方法はありますか?
>>723 テキストだけならGetItemTextを使えばいいと思われ。
>723 文字列取りたいなら GetItemText 使え
うぅ。サンクス。 メンバー関数が多すぎて見逃してますた。
>>722 いやそれくらいはわかるんだけど……
どんな例外かな、と。
プつれた
731 :
デフォルトの名無しさん :03/02/25 17:20
sage
MDI、CViewの派生クラスでマウスホイール回転イベントがうまく取れません。 CViewにスクロールバーが付いていなければ OnMouseWheel が呼ばれるのですが スクロールバーがついていると勝手にスクロールさせられ、 OnMouseWheel が呼ばれません。 ホイール回転で独自の処理をする事は出来ないのでしょうか? (スクロール以外の処理をしたいのですが・・・) 環境は Win2000, VC++6です。
>>732 試してないから推測で書くけど……
勝手にスクロールされるなら OnHScroll や OnVScroll が呼ばれるんじゃない?
そこで処理すればいいと思う。(拡大縮小かな?)
734 :
デフォルトの名無しさん :03/02/27 18:33
ダイアログでプログラミングしているのですが、OnNcHitTestという関数で return HTCAPTION; を実装すると右クリックでメニューを出せなくなりました。 回避する方法はありませんか?
OnNcR~ みたいなんでいけないか。
736 :
デフォルトの名無しさん :03/02/27 19:06
ありがとうございます。 それともう一つなのですが、 CEditから派生させたクラスからダイアログのメンバを実行するのは無理ですか? GetWindowRectを取得したいのですが。 ClientToScreenでは移動させてからだと座標がまちまちになってしまうのです。
>>733 返答有難うございます。
実際、 OnHScroll や OnVScroll が呼ばれるのですが、
スクロール処理はスクロール処理として扱いたいのです。
「OnHScroll等がホイール操作によって呼ばれた」と判断可能なのでしたら、
その方法も有りかとは思うのですが、そういった事は可能なのでしょうか。。。
> 拡大縮小かな?
その通りです。
お絵かきソフトを作成しています。
>>736 > CEditから派生させたクラスからダイアログのメンバを実行するのは
それって例えば
((CDialog*)GetParent())->・・・
みたいな事ですか?
738 :
デフォルトの名無しさん :03/02/27 21:15
CBitmapに格納されている画像の一部を切り取って取得するにはどうするのですか。
739 :
デフォルトの名無しさん :03/02/28 01:08
教えてください。DLLファイルを読み込んでそのハンドルは所得できているのに クラス内の関数にアクセスする方法がわかりません。というか関数の先頭ポインタがわかれば いいんですけど。newしてインスタンス化してもポインタを捕れないのは何ででしょうか? ひょっとして訳わからないこと言ってますでしょうか?
742 :
デフォルトの名無しさん :03/02/28 07:01
>>741 すいません。エクスポートされてないだけって、どういうことですか?
なにぶん初心者なので、それだけでは何を言われているのか...
もう少しキーワードを教えてください...お願いします。
>>742 DLL の操作では基礎中の基礎。
MSDN の DLL のトピックを読んでみ。話はそれからだ。
744 :
デフォルトの名無しさん :03/02/28 18:29
あっと、CFontDialog でカラーやアンダーラインなどの設定がでないようにしたいのですが、 どうすればよいでしょうか?
745 :
デフォルトの名無しさん :03/02/28 18:44
アプリ終了時にビューの設定を保存したいとき、皆はどこで処理してる? 俺はOnDestroyでやってるんだけど、これって普通?
もう一つ。デフォルト(起動時に選択されている)フォントを放り込むにはどうするのでしょうか?
>>745 はViewのOnDestroyって意味です
749 :
デフォルトの名無しさん :03/03/01 10:51
>>743 ありがとうございました。解決しました。
750 :
デフォルトの名無しさん :03/03/01 16:51
とあるソースを見ててわからなかったのですが、 CListBoxの派生クラスを作って、そのメンバ関数でnewしたオブジェクトを AddString((LPSTR)new CObj);ってやってよくわからないことをしてます。 これはいったい何をしてるんだ? どなたかお教え願えないでしょうか?
751 :
デフォルトの名無しさん :03/03/01 17:43
教えてください。 スクロールバーでスクロールバーの三角印をところをクリックすると イベントが発生するのですが、スクロールをスライドしてもイベントが発生しません どうしてなのでしょう。
スクロールバーの範囲とかは適切に設定してるのか?
>>7448 はぁ。m_cfに代入していったのですが、適応されないのです。
それに、フォントの種類の代入の仕方もわかりませんし。
それから、宣言時にパラメータを入れると、実行途中に
フォントをインストールするように指示されるのでさっぱりです。
教えてください。
755 :
デフォルトの名無しさん :03/03/01 20:12
>>752 >>753 さんスクロールバーの範囲といわれてハッと気がつきました
そういう物は設定していなかった気がします。
ごめんなさい、なんだかMFC以前のような問題な気がします...
ちょっと確認します。
あと、CStaticクラスを継承して作ったBitBlt()ってスクロールバーでスライドできますでしょうか?
つまりスクロールバーでスクロールしたぶんだけ表示位置を再計算をして
再表示?するようなことをしたいのです。うまく説明できないんですけど
756 :
デフォルトの名無しさん :03/03/01 21:57
アナログ時計を描画するコードなんですが CTime jikoku = CTime::GetCurrentTime(); int hour = jikoku.GetHour() % 12;// 時:0~11 int min = jikoku.GetMinute();// 分:0~59 int sec = jikoku.GetSecond();// 秒:0~59 // ウィンドウのサイズを得る CRect sikaku; GetClientRect(sikaku); // 時計のサイズを算出する int hankei = min(sikaku.right, sikaku.bottom) * 49 / 100;// 時計の半径 一番下段を詳しく説明してもらえないでしょうか
>756 スレ違いだが 時計がWindow領域からはみ出ないような 時計の半径も出してる
758 :
名無し@沢村 :03/03/01 22:04
>>756 ヌヒよ、sikaku.rightとsikaku.bottomのうちで小さい方の値に49をかけて100で割った値が時計の半径だ。
クライアント領域の半分にしたいんだけど、 「ぴったり半分だと外枠に くっついちゃうなー」とか思って49%にしたんだろ。
760 :
デフォルトの名無しさん :03/03/01 23:42
AfxBeginThread()に渡すスレッドの関数のプロトタイプは、 UINT func(LPVOID); となっていますが、この返値はどこで得ることができるんでしょうか。
GetExitCodeThreadとかその辺
762 :
デフォルトの名無しさん :03/03/02 00:25
テキストファイルの途中に文字列を追加(または置換)する簡単な方法を教えてください。
764 :
デフォルトの名無しさん :03/03/02 12:41
あるアプリがアプリケーションエラーで落ちました。 ワトソン博士のlogを見ると"Ordinal2614"ってのでエラーが発生しているようです。 Dependency Walkerで調べるとOrdinal2614はmfc42.dll中にあったんですが、 NONAMEとなってて関数名がわかりません。これって特定する方法があるんで しょうか? 以下ワトソン博士のlogです。 全部は多いので"フォールト ->"のあるスレッドのみ。 スレッド ID 0x26c のステート ダンプ eax=0036322f ebx=0034d368 ecx=0154fe94 edx=ffffffff esi=0048fb50 edi=00ad7225 eip=6ab149fc esp=0154fe7c ebp=00000000 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000206 ファンクション: Ordinal2614 6ab149fa 8b01 mov eax,[ecx] ds:0154fe94=0036322f フォールト ->6ab149fc 8378f800 cmp dword ptr [eax+0xf8],0x0 ds:00fc0801=???????? 6ab14a00 0f8569f1ffff jne Ordinal1194+0x15f (6ab13b6f) 6ab14a06 c3 ret *----> スタック バック トレース <----* FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 ファンクション名 00000000 00000000 00000000 00000000 00000000 00000000 !Ordinal2614
>>764 の続き
Dependency Walkerでmfc42.dllを見たらBaseAddressのってました。
Baseが0x6ab10000だったので
6ab149fc-6ab1000=49fc
となります。mfc42.mapも同じディレクトリにあったので49fcに近い
のを探したところ
0001:0000492a ?UpdateFrameCounts@CDocument@@UAEXXZ 5f40592a f
どうやら、こいつのようです。
「UpdateFrameCounts」って何もんなんだろう?
MSDNにも載ってないし。こっからどうせめればいいのかわからん・・・。
ソースコードもなしに市販アプリのダンプだけ見せられてデバッグしろってか。 mfc42.dllのどのアドレスに何の関数があるのか知ってる香具師なんか ここにいるわけねーだろ。いたらリバースエンジニアリングで犯罪だぞ。
>764 MFCのどの関数でなぜ落ちたのか、という発想ではなく、 アプリケーションでなにをしたから MFC内で落ちることになったのか、 という風に発想を転換した方がいいんじゃないでしょうか?
>>782 そういう場合、普通デバッグモードを駆使して原因を突き止めるものだが。
>「UpdateFrameCounts」って何もんなんだろう?
\MFC\SRC\DOCCORE.CPP
を読めばわかる。
可視状態のCViewをカウントし
CFrameWnd::m_nWindowを更新するための関数みたいだな。
769 :
デフォルトの名無しさん :03/03/03 11:12
ある独自の拡張子を持つファイルに、それをダブルクリックすると 任意のEXEを起動するための関連付けをしたいのですが、 いい資料が見つかりません。レジストリを操作するところまでは わかったのですが。 すいませんが、どなたかコードか、参考URLをお持ちでしたら ご教授ください
操作すんなよ。参照しれ。
ん? アプリで関連付けをしたいのか? それとも関連付けられたアプリを起動したいのか?
>769 すぐ見つかるが
VC++、MFCで作成したいがやり方がわからないのが3つあります。 ご存知の方、教えてください。 1はよく使われると思うので、VC++の機能であるような気がしますが、 googleしてもわかりません。 1.PCのデスクトップを頂上とし、そのPCの階層フォルダ(?)を表示することが できるようなツリー 2. 1で選択したフォルダ内のファイルを全部表示させるもの (サイズ、種類、更新日時も表示) 3. アクセス履歴を表示するもの
追記:VC++6.0を使用して作成します。
>>773 VC++の機能にそんなものはない。
ま、がんばれや(´ー`)y~~
1は、エクスプローラ風にパソコン内のディレクトリを ツリーで表示するもののことです。
「~もの」というからきっとそれ用のコントロールやコンポーネントを期待してる んだろうがMFCには無いぞ。 1はフォルダ選択ダイアログがあるがWin32APIだ。
780 :
デフォルトの名無しさん :03/03/03 17:07
>>778 自動的にフォルダツリー表示してくれるかよアフォ。
ttp://f6.aaacafe.ne.jp/~nich/phpup/upload.php の
Reg
ってファイル。
昔書いたやつ。
今見てもなんのことかさっぱりさっぱり。
レジストリに書き出したらもともと登録してあった
拡張子をiniに書き出して、復元時にiniから読み出して
元に戻す関数なようなきがする。
たぶん「IDS~」ってやつは
レジストリに書き込むキーの名前を決めて
格納していたんだと思う。
なお、かなり前のやつなので参考程度にしかならないと思ってくれ。
んで、落としたら消してくれ。
パスは123
>>770 >>771 アプリを起動するのではありません(それはShellExecuteですよね)
新たな関連付けの定義をしたいのです。
>>783 レジストリ操作するとこまでわかったならレジストリ系APIで登録すればいいんじゃ?
MFCな話題でもないような気がするんだけど・・・
>769 >783 あぁ、宛先忘れてたよ。 >782はあなた充て。 >782は新たな関連付けを定義する関数。 既に定義されていたら入れ替える。 見てみたら形つかめると思うよ。
>>766 失礼しました。ちょっと書き方がうかつでした。
自分が担当を引き継いだアプリがお客様先で落ちてしまい、
開発環境で再現しないのでログからなんとかしようとしてた次第です。
>>767 ええ、そうなんですがフォールトしたスレッドの情報が少なすぎて
どこから落ちたMFCをcallしたかもわからないんです。
>>768 情報ありがとうございます。
再現しないので開発環境でつきとめれないんですよね・・・。
やはり、お客様先で落ちたときにもっと情報とれるように
するしかなさそうですね。その方法を調べてみます。
質問です。 いま、COMプログラミングの勉強をしていますが、ビルトすると以下のエラーが出ます。 →d:\microsoft sdk\include\exdisp.h(1119) : error C2061: 構文エラー : 識別子 'SHANDLE_PTR' がシンタックスエラーを起こしました。 その対象となる構文は → virtual /* [helpcontext][helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HWND( /* [retval][out] */ SHANDLE_PTR *pHWND) = 0; です。 何に問題があるのでしょうか? よろしくお願いします。
>>787 'SHANDLE_PTR' がシンタックスエラーを起こしました
って書いてあるじゃん。
そこが問題。
左右2つにわった分割ウィンドウに、それぞれ別のダイアログを 表示したいのですが、どうすればいいのでしょうか? 分割ウィンドウは過去スレであったので、できたのですが、 まだ一つのダイアログしか作成したことないので、わかりません。 IDD_DIALOG1、IDD_DIALOG1という2つのダイアログを作成した場合で 教えてください。
>>789 >左右2つにわった分割ウィンドウに、それぞれ別のダイアログを
>表示したいのですが、どうすればいいのでしょうか?
CFormView派生クラス使ってるなら、もう一個CFormView派生クラスを作ればよろし。
MFCで作成しています。
MDIです。
たぶん CreateView(~View) とすればいいのだと思うんですが、 IDD_Dlg1,2を~Viewにする(?)には どうすればいいのかがわかりません。
>>790 解決しました。
ありがとうございました。
796 :
デフォルトの名無しさん :03/03/06 00:51
これはここにかいていいのかわからないんですけど CString型の変数にcharの配列の文字列を入れて 文字列を作りたいんですけど、いい方法が浮かびません.. CString c; char[0]=a char[1]=b char[2]=c char[3]=d char の配列をCに入れてabcdという文字をCString型のcに入れたいのですが。
>796 なによりも先に入門書を買ってきて一通り読むことを勧めるがね… charの配列型の変数の名前が書かれてないがarrayという 名前にしていいかね? char array[] = "abcd" ; //(1) CString c(array) ; //(2) ちなみに(1)は char array[5] ; array[0] = 'a', array[1] ='b', array[2] = 'c', array[3] = 'd', array[4] = '\0' ; と同じだ。
798 :
デフォルトの名無しさん :03/03/06 07:17
>797 いいです で、 実際c(0)="abcd" にするほうほうがわからないんですが....
>>798 なによりも先に入門書を買ってきて一通り読むことを勧めるがね…
800 :
デフォルトの名無しさん :03/03/06 11:49
MFCプロジェクトで以下のようにすると error LNK2005: "void __cdecl h(enum bb::Lang)" (?h@@YAXW4Lang@bb@@@Z) はすでに test.obj で定義されています Debug/test.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました となってコンパイルできません。(コンソールでは問題ありませんでした。) なぜだめなのでしょうか? //testDlg.h namespace bb { enum Lang; enum Lang{Japanese}; }; void h(bb::Lang a); void h(bb::Lang a){} class CTestDlg : public CDialog ...
>>800 ヘッダに書いていいのは(ry
つーか、スレ違い。
>>800 testDlg.h をインクルードするc(cpp)ファイルが複数あった場合、
void h(bb::Lang a) 本体が複数定義されることになる。
includeが何なのか分かってないみたいね。
803 :
デフォルトの名無しさん :03/03/06 12:33
VC6で デバッグビルド → 正常動く リリースビルド(F5) → 正常に動く リリースビルド(Ctrl+F5) → エラーで落ちる という状態になってしまい、原因が特定できません。 何か有効なデバッグ方法があれば教えて下さい。
解決しました。スマソ。
805 :
デフォルトの名無しさん :03/03/06 13:03
testDlg.cppで
namespace 以下のヘッダーを読めば良かったのか...。
>>801 ,2 さんありがとうございました。
すみません スクロールバーのつまみの部分(マウスの左ボタンを押しながら上下に移動するもの)の 大きさってどうやって変えるんでしょうか?
>>806 レンジを指定すればそれに応じて変わるけど。
>>806 SetScrollInfo
あと、あれの名前はサムと呼んでくれ
809 :
デフォルトの名無しさん :03/03/07 03:57
Cと、VC++の入門書を、一通り読みました。 次からはどうやって勉強していけばいいんでしょう?
レスサンクス MSDNでよーく調べてみまふ
813 :
デフォルトの名無しさん :03/03/07 13:24
ダイアログで、OKとCancelというボタンがあるとします。 OKを押すとある処理を行って終了するのですが、 その処理中にOKを押すと、処理が終わったらまたすぐに 処理が始まってしまいます。 処理中はマウスクリックを無効にしたり、マウッスクリク情報をクリア したりすることが出来ないでしょうか。 (処理中のOKボタンをグレーにしても、処理中にボタンを押すと 処理が終わって元に戻したらクリックされたことになってすぐに 処理が始まってしまいます)
_, ._ ( ゜ Д゜)
815 :
デフォルトの名無しさん :03/03/07 15:23
ループ処理の間、メッセージポンプを動かすために CWinApp::Run() を勝手に 呼んでいいのでしょうか?
訂正。 MFCにおいてループ処理の間、メッセージポンプするために PeekMessage、TranslateMessage、DispatchMessage を自前で呼ぶのは、合法なのでしょうか?
べつにいいんでないの。 俺ならスレッド作ってそっちで処理するけどね。
>>816 CRectTracker::TrackHandle()でGetMessage(), DispatchMessage()
使ってるからいいんだろ、
>817-818 どうも。実際やってみましたけど、終了処理をきちんと書けば大丈夫みたいです ね。別スレッド化は真っ先に考えましたが、かなりややこしい修正が必要で...
820 :
デフォルトの名無しさん :03/03/07 17:46
813 プログラム立ち上げ時に変数 hoge を 0 で初期化。 ボタンが押されると変数 hoge を 1 に設定。 処理が終わると変数 hoge を0 に設定。 変数 hoge が1の間はボタンクリックを無視する。 こうすれば2度押ししても効果が現れないはず。
>>813 の処理は明らかに時間がかかる処理みたいなので
俺なら別スレッドで処理してその間はボタンをEnableWindow(FALSE)するな。
823 :
デフォルトの名無しさん :03/03/08 16:30
>>813 っていうか、その処理の中でもメッセージループまわしてるの?
単純に、OnOK()の先頭でEnableWindow(FALSE)、
OnOK()の最後にEnableWindow(TRUE)とすれば良いような気がするが。
つーか、813どこいったー
813じゃないが、823で正解でしょ? てかこれが違ってたら今まで作ったもの全て大バグ かかえてるってことになるんですが・・・
>>825 >(処理中のOKボタンをグレーにしても、処理中にボタンを押すと
>処理が終わって元に戻したらクリックされたことになってすぐに
>処理が始まってしまいます)
これが問題なんでしょ?
ってか、どうせ終了してしまうんだから、処理が終わったときに
EnableWindow(TRUE)を呼ばなきゃイイと思うのだが。
827 :
デフォルトの名無しさん :03/03/08 21:03
メニューバーの色って変えれますか? それから、ダイアログって半透明になりますか?
ダイアログボックスとドキュメントクラスでデータ交換をするのが面倒なので、 ドキュメントクラスにダイアログボックスを変数として持たせようと思っているのですが こういうのはルール違反なんでしょうか?なんか抵抗があるのですが…
>>823-826 最近どこかで同じ問題を見たような気がする。
たとえEnableWindow(FALSE)しといてもボタンを連打されると
駄目(ボタン押下のメッセージが来てしまう)なので
結局は
>>820-821 みたいに対処しないといけないって結論じゃなかったかな。
>>825 氏には残念なお知らせだが…
832 :
デフォルトの名無しさん :03/03/09 16:32
だから、メッセージループまわしていないのなら、 メッセージ自体、飛んでくるわけ無いでしょ。 ウィンドウズのアーキテクチャ、基本から勉強したほうが良いよ。
833 :
デフォルトの名無しさん :03/03/09 16:33
EnableWindow(FALSE)の存在意義がなくなってしまうな。
>>834 禿同
存在意義は十分にあると思う
>>832 メッセージループをまわしてなくてもメッセージは飛んできます。
処理されないだけ。
836 :
デフォルトの名無しさん :03/03/09 17:56
>>OKを押すとある処理を行って終了するのですが、 そのまま終了するのなら2度とOKボタンを押せないように なにかインターフェイスを考えるべきでは。 たとえば処理の最初にプログレスバー付きの終了ウィンドウのようなものを表示するとか。
837 :
デフォルトの名無しさん :03/03/09 17:59
メッセージが来たら処理するのは自分だろ。 来るとしたら、処理が終わってメインループが回りだしたら。 メッセージキューに溜まることを飛んでくると勘違いしているだろ。
>>834 だから、そんな使い方をしたら存在意義が無くなる、と言うことだ。
839 :
デフォルトの名無しさん :03/03/09 18:03
処理中にOKボタンのメッセージが飛んでくるんだろ。 ってことは、その処理中にメッセージループをまわしているってことで、 そんな処理やめれば良いじゃんってことで解決。
840 :
デフォルトの名無しさん :03/03/09 18:07
>>813 ダイアログでOKボタン押したら、普通はダイアログ消えるよね。
モードレスダイアログのこと?
841 :
デフォルトの名無しさん :03/03/09 18:17
>>813 はEnableWindow()の存在がわかれば良いと思うのだが。
というか、みんな
>>813 に釣られちゃったのでは?
842 :
デフォルトの名無しさん :03/03/09 18:39
ちゃんとGetDlgItem()とか使ってるのだろうか? EnableWindow(FALSE)にしときゃ、メッセージなんて飛んで来ないぞ。 少なくても(WM_COMMAND,IDOK)とかはな。
844 :
デフォルトの名無しさん :03/03/09 19:45
C++やVBなどでGUIアプリを作成する場合 とうぜん画面設計がありますよね? 皆さんは画面設計について何か参考にされているものってあり ますか? 参考書や他のアプリを参考にするとか? ボタンの配置1つとっても考えると難しいものですよね? 画面設計について参考になるサイトや書籍等ありましたら 教えてください。
846 :
デフォルトの名無しさん :03/03/09 20:32
827ですが、 メニューバーを自前で実装とはどうするのでしょうか?
>>832-842 ありゃりゃ?こんなに紛糾するとは。
コード書きながらやってるわけじゃないから自信なくなってきたよ。
こういうケースが問題だったと思うんだけど?
(1)メッセージ(WM_COMMANDだったかWM_LBUTTONDOWNだったか?)
がキューにポストされる
(2)連打したのでもう一個メッセージがキューにポストされる
(3)(1)でポストされたメッセージがメッセージループで取り込まれて
処理開始。
(4)EnableWindow(FALSE)を実行。これ以後はメッセージをポストできない。
(5)(1)のメッセージの処理終了
(6)(2)でポストされたメッセージの処理開始…
どうもFrameとViewの関係(挙動)がいまいち把握できないんで SDI使わずDialogでやってる、特に問題ないし
VC++6.0でMFCです。テキストファイルを読み込んでリストボックスに表示 させています。テキストを読んだ際空白の行は詰めて表示したいです。 以下はソースです。どこを直せばよいかご教授願います。よろしくお願いします。 { CFileDialogDlg (TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Text Files (*.txt) |*.txt||"); if (Dlg.DoModal () != IDOK) return ; CString path = Dlg.GetPathName (); CStdioFile file; if( !file.Open( path, CFile::modeRead | CFile::typeText ) ) { return; } CListBox*pList = (CListBox*)GetDlgItem(IDC_LIST3); pList->ResetContent(); CStringbuf; while (file.ReadString(buf)) { pList->InsertString(-1, buf); } file.Close(); }
851 :
デフォルトの名無しさん :03/03/10 05:40
file.ReadString(buf) で buf に文字列を入れているようだから、 この文字列が空白行かどうか調べて、次の動作を行うか、 やめるか決めればよいのでは。
813です。 みなさん、色々アドバイスありがとうございました。 結局、メッセージキューに残っている余分なクリックを 削除(退避)させるということでけtyちゃっくしました。 お忙しい中ほんとに色々ありがとうございました、。
853 :
デフォルトの名無しさん :03/03/10 14:44
>>652 EnableWindow()をうまく使えばそんなトリッキーなことしなくて済むのに。
っていうか、ずっとそんな綱渡り的処置でずっとアプリ組んでいくつもり?
>>848 (1)と(2)の間にEnableWindow(FALSE)すれば済んじゃうこと。
以上、言ってみるテストでした。
855 :
デフォルトの名無しさん :03/03/10 14:56
ボタンでスペースを押してから スペースを離さずエンターを押してスペースを離すと ボタンが二回押されたようになるのですが どうして回避したら言いのでしょうか?
856 :
デフォルトの名無しさん :03/03/10 15:02
超初心者です。 VisualC++.netをつかってるんですけど、 本屋には6.0の解説本しかなく、それで勉強しています。 6.0と.netでは、クラスウィザードの表示の仕方が違うらしく、 全然わかりません・ 例えばSDKのプロジェクトに、OnLButtonDown関数を 追加するときはどうすればいいんでしょう?
>>856 amazonででも.netの入門書買ってください。
>>853 それが済まないから困っていたのです。
ボタンをFALSEにした後にクリックしても
それが押したことになってしまうということです。
860 :
駆け出しPG 代理 :03/03/10 16:51
VC詳しい人教えてくだされ。 MakeDir関数がうまくよびだされません どうしたらいいでつか? char sPath; void MakeDir(char sPath)//呼ばれる側 { //puts(sPath); CreateDirectory("c:\ttt", NULL); } EXPORT void __stdcall CopyDir(LPCSTR sSource , LPCSTR sDest) { CreateDirectory(sDest, NULL); ForceLastBackslash(sPath);//呼ぶ側 }
>>860 char sPath;
って書いてるけどCはわかってんの?
862 :
駆け出しPG :03/03/10 17:04
いいえ。基本的な事も駆け出しPGです。 コードおかしいですか? 簡単なコードだとおもうんですが わかっていないので きちっと動くように直していただけたら助かります お願いします。
これじゃPGですらないねw
>ForceLastBackslash() チョトワラタ
867 :
デフォルトの名無しさん :03/03/10 17:46
ADOでパラメタクエリは可能ですか?
868 :
デフォルトの名無しさん :03/03/10 17:48
>>862 ナニがしたいのかよーわーらんが、
普通
char *sPath;
それと
"c:\\ttt"
とにかくWarning最大限にしてすべての警告つぶすように。ガンガレ
870 :
デフォルトの名無しさん :03/03/10 17:50
>>862 Cの独習書をやり遂げるまで出社しないほうがいいと思う。
872 :
駆け出しPG :03/03/10 17:53
すんませんVB厨だったんですが ちょっと危機を感じてきてるんで 勉強してみようかなあと ボロカスに言われるのは覚悟した上での 質問ですーだれか親切な人いないかな
873 :
駆け出しPG :03/03/10 17:54
誘導されたから来たじゃなくスレタイよく読んだほうがいいよ。
875 :
駆け出しPG :03/03/10 17:58
すいませんでした
878 :
デフォルトの名無しさん :03/03/10 18:05
>>872 >だれか親切な人いないかな
(゚Д゚)ハァ?
879 :
駆け出しPG :03/03/10 18:09
880 :
デフォルトの名無しさん :03/03/10 21:11
class Ca : public Cb (これもクラス) {~} として、外部の関数から Cb **b = 0; *b = new Ca; としたのですが、コンパイルエラーはでないのですが デバッグエラーがでます。 ようは、Cbから多様なCa を操作したいのですが。 Caを必要に応じて交換するのですが、 なにかにた方法はないですか?
Cb *b = 0; b = new Ca; じゃないの?
プロパティシートとプロパティページの ボタンなどのコントロールのタブオーダーをキメたいんだけど プロパティページのボタン1 ↓ プロパティシートのボタンA ↓ プロパティページのボタン2 ↓ プロパティシートのボタンB とかってどうやってる?
以前ダイアログで作成したツリーを、別のプロジェクトにフォームビュー にして入れ込みたいんですが、どうすればいいんでしょうか? また、複数に分割したウィンドウにフォームビューでなくダイアログを 入れ込む方法があれば教えてください。
>881 ん~。 動作的には同じことだろ?
885 :
デフォルトの名無しさん :03/03/10 23:53
Visual C++ 6.0 と.NETと使い勝手ってどのくらい違いますか? 6.0使っていれば、.NETもすぐ慣れますか?
>>884 おいおいおいおいおいおいおいおいおいおいおいおいおい
888 :
デフォルトの名無しさん :03/03/11 12:06
ここはDQNの巣窟ですか?
だいたいレス読んでれば、どんなアホがいるのかすぐわかるよ。
891 :
デフォルトの名無しさん :03/03/11 19:08
MFCか?って言われたら微妙っすけど、 MFCで使っているCString をWin32 で導入するには、どうすればいいのでしょうか?
>>891 WTLに付属する、atlmisc.hをインクルード。
それかSTLのstd::stringを使う。
893 :
デフォルトの名無しさん :03/03/11 19:31
>>982 disc の中を検索したのですが、見つかりません。
どこからコピーするのでしょう?
895 :
デフォルトの名無しさん :03/03/11 20:57
ダイアログを背面に持っていくにはどうすればよいでしょう? あの、最背面に固定したいのです。
>>895 最前面に移動するメッセージを殺すとか常にZオーダーの最後になるようにするとか
897 :
デフォルトの名無しさん :03/03/11 21:13
そ、それはどうやって!?
898 :
デフォルトの名無しさん :03/03/11 21:21
割り込みますが、 現在の解像度はどのようにすれば取得できますでしょうか。
>>898 デスクトップのウィンドウを取得してサイズ調べる。
GetDesktopWindow()とGetWindowRect()でできます。
SetWindowPos
902 :
デフォルトの名無しさん :03/03/11 22:27
ありがとうございます。
903 :
デフォルトの名無しさん :03/03/12 00:43
>>898 GetSystemMetrics(忘れた)
908 :
デフォルトの名無しさん :03/03/13 13:01
CListCtrl のヘッダの部分を消すにはどうすればいいですか?
909 :
デフォルトの名無しさん :03/03/13 13:54
910 :
デフォルトの名無しさん :03/03/13 14:24
すみません とある理由でウィンドウの最小化ボタンが押されても そのウィンドウを最小化せずに別の動作を行わせたいのですが WM_SIZEは最小化後に送られてくるので困ってます
WM_SIZING
>>912 レスサンクス
CDialogではWM_SIZING送られてこないみたいです
別の方法探してみます
WM_SYSCOMMAND/SC_MINIMIZE つうかまあ、本質的にはスレ違いのような。
日本語の扱いが楽なCString元にしたクラスないですか? フリーじゃなくてもいいです。
>>915 楽っていっても漠然としすぎていて馬鹿にしているとしか思えないのだが。
具体的にどんな機能が欲しい、とか書いてくれんと答えようがない。
>>916 MBCSで1バイト文字と2バイト文字を、自前で判定しなくていいクラスです。
(同じ1文字として処理できるクラス。)
>>917 それくらい自分で作れ、CStringを派生させて。
「ないですか?」って気軽に聞くけど少しは自分で調べたのかな(^_^;) 単なるクレ厨にしかみえないんだよね。 ちなみに掲示板で質問したり人に聞いたりすることは「調べた」って言わないからね(^_^;) っていうと「検索しました」って返されるけど、検索ワード聞くと逃げちゃう人が多数。
920 :
デフォルトの名無しさん :03/03/14 08:04
ろくに調べもせず、くれくれくれくれ言う初心者もウザイけど 文句だけ垂れ流して、何の役に立たない上級者気取りもウザイよ
CString派生でなくてもいいならstd::wstringとかC++標準ライブラリにあるわけだが。
>>922 std::wstringは中に入ってる文字列のエンコードは気にしないから自分の勝手だろ。
CStringはUnicode環境ではUnicodeとして使えるヨ そこっ、サロゲートペアとか言うな!
質問者のレベルから見て、Shift-JISが処理できりゃいいんでないの。 わざわざUTF-16なんか持ち出して込んでもいいべよ。 おまえその単語使いたかっただけちゃうんかと。
サロゲートペア~ サロゲートペア~
928 :
デフォルトの名無しさん :03/03/14 19:55
CSplitterWnd つかうと出てくるバーを消す方法ありますか?
(´-`).。oO(分割ウィンドウの意味がないような……)
>>929 +----------------------+
| |
| | ←A
+----------------------+
| |
| | ←B
+----------------------+
| |
| | ←C
+----------------------+
のA,B,Cともに別のviewを表示したいんだが
非表示のスプリッタ使えばいいかと思ったんだけど・・・
もっと簡単な方法ありますか?
意味がわからんな・・・スクロールバーの事でもないんだろ?
たぶん、FRAMEBORDER=no みたいにしたいんだろ。
AとCは縦サイズ固定のview BはListCtrl
935 :
デフォルトの名無しさん :03/03/15 01:20
やべ、途中だ。 何がやりたいかというと 上から数行と下から数行が固定で中はスクロールする GRIDを作りたいのです。 なのでListCtrlを持つViewを3つ作って 張り合わせれば良いかと思ったのですが・・・
>>934 はい。ですので
スプリッタの幅を0にして見えないようにしたいのです
CSplitterWndってそれほど大きなクラスじゃないからMFCの ソース見て解析してごらん? 派生させてもいいし、いっそ全部コピってもいいかも。
>>935 何? よーするにA, B間の境界バー、B, C間の境界バー2つを
固定にするって事?
俺はCSplitterWndあんまり知らんから
そのバーを固定できるかどうか分からんけど
もしできないなら思いきってCDialogにすれば?
そんでCListCtrl3つ貼りつけて
そのコントロールの配置をセットすれば終わりじゃないのか?
あと、ウィンドウのサイズが変わったとき(WM_SIZE)は
上下のCListCtrlの位置を保ち真ん中のCListCtrlのサイズを調整すると
939 :
デフォルトの名無しさん :03/03/15 01:54
>>938 >何? よーするにA, B間の境界バー、B, C間の境界バー2つを固定にするって事?
そうです。かつ「非表示」にしたいのです。
固定のしかたはわかるんですが・・・
>>937 了解しました。
>>926 アリガト!(´▽`)
これから見に行ってきます。
>>939 >>そうです。かつ「非表示」にしたいのです。
A, B間の境界バー、B, C間の境界バー2つを非表示にしたいということか?
それならResource Viewで
CListCtrl3つ貼りつけて
それぞれプロパティ開いて
境界線の項目からチェック外して
それらをサイズ調整して重ねれば
事実上2つのバーは非表示ということになるが
943 :
デフォルトの名無しさん :03/03/15 22:46
ダイアログ内のツリーコントロールのスタイルを動的に変えたいのですが うまくいきません。具体的にはツリーコントロールの領域をへこんだ状態に したく、ダイアログクラスCHogeDialogのメンバであるCHogeDialog::m_zTreeに対し、 CHogeDialog::OnInitDialog()の中で m_zTree.ModifyStyleEx( 0, WS_EX_CLIENTEDGE ); としましたが、ダイアログをリサイズして再ドローをしない限り表示が変更 されないのです。 m_zTree.ShowWindow( SW_HIDE ); m_zTree.ModifyStyleEx( 0, WS_EX_CLIENTEDGE ); m_zTree.ShowWindow( SW_SHOW ); などとしてもだめです。どなたか解決方法をご存知でしょうか。
>>943 >>ダイアログをリサイズして再ドローをしない限り表示が変更
>>されないのです。
m_zTree.InvalidateRect()かm_zTree.UpdateWindow()じゃだめなのか?
ShowWindowは表示、非表示にしたいときに使うんであって ウィンドウの再描画はInvalidateRect 全体を更新するなら m_zTree.Invalidate(); 矩形領域だけを更新するなら m_zTree.InvalidateRect(&rect); 詳細はMSDN見なさいな
946 :
デフォルトの名無しさん :03/03/16 01:43
1つのビューオブジェクトに複数のドキュメントを重ねて描くことはできますか? スプリッターウィンドウみたいなのではなく、重ねて描きたいのですが…
or で転送したら?
うーん。無理なのかな?
>>948 ORで転送というコードは何処から呼び出すのでしょう?
片方はビットマップに描画して転送……だな
951 :
デフォルトの名無しさん :03/03/16 04:00
質問なのですが ある拡張子に対してアプリケーションを関連付けるのは レジストリ設定でできますが、任意のアイコンを割り付けるには どうしたらよいのでしょうか? ご教授ください、よろしくお願いします。
スレ違いですが… 今までずっと疑問に思っていたのですが、1ピクセルを描画する関数は無いんでしょうか?
954 :
943 MFCプログラミング歴2ヶ月厨 :03/03/16 05:17
>>944 >>945 どもです。Invalidate()は既に試していましたがだめでした。
UpdateWindow()というのも今回トライしてみましたがだめです。
OninitDialog()の中で行っているのですがタイミングが悪いのでしょうか。
事情があってMFCのダイアログリソースを使えないためOnInitDialog
内でm_zTree.Create()を呼んでいます。
ダイアログが最初に表示されるまでに行ってもだめなら、表示された
直後に呼び出されるコールバック関数か何かありますでしょうか。
>>954 ウホッ!いい男・・・
m_zTree.Create(・・・);
m_zTree.ModifyStyleEx( 0, WS_EX_CLIENTEDGE,SWP_DRAWFRAME );
>>955 おおおーー!
できました。ありがとうございました!!
957 :
デフォルトの名無しさん :03/03/16 13:45
ひとつのピクセルにRGBを指定して表示する関数って何かありますでしょうか?
宣伝書き込みーですー。
2ちゃんねるっぽい、2ちゃんねるに似た、2ちゃんねるのようなの作りましたー
板がいろいろあります、、、過疎板も。。
http://zeta.ns.tc/ どうかな?
いいかな?
952とかぶっちゃいましたが別人です。 あると便利な関数だと思うんだけど。
>>960 そう!それを知りたかったです。
ありがと
962 :
デフォルトの名無しさん :03/03/16 16:05
質問なのですが ある拡張子に対してアプリケーションを関連付けるのは レジストリ設定でできますが、任意のアイコンを割り付けるには どうしたらよいのでしょうか? ご教授ください、よろしくお願いします。
>>962 マルチUzeeeeeeeeeeee!!!!!!!!!!!!!!!!!11111111111111111
>>962 正直言って、
> ある拡張子に対してアプリケーションを関連付けるのは
> レジストリ設定でできますが、
と言ってる奴が、
> 任意のアイコンを割り付けるにはどうしたらよいのでしょうか?
なんて言うわけないと思う。
ネタとしか思えん。
965 :
デフォルトの名無しさん :03/03/17 00:05
ビデオの描画デバイスから描画される予定(された)モニターに映るはずの画像情報を取得する方法はありますか?
正直、つまらない
ネタを考えられる人 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>968
VC 初心者です。質問があります。 単純なお絵かきソフトを作ろうとしたとき、VB だと フォームにピクチャボックスを貼り付ければ済みますが、同じ事を VC でやるにはどうすればいいんでしょう。 まず CFormView を継承して(←他にボタン等を配置したいので)、 全体の枠を作ると思うんですが、VB のピクチャボックスに相当する機能を 付けるには何をすればいいんですか? そのまま「ピクチャ」を貼り付けるだけでは無理ですよね。 この場合って自分で CView を継承したクラスを作らなきゃいけないんですか? ちょっと良く分からないのでご教授お願いします。
>>970 OnDrawで好きに描けば?
(OnDrawが見つからんとか寝言いうなよ)
余計なお世話かも知れんけど、お絵かきソフトで
他にボタン等を配置するんならCView+ダイアログバーとかにしたほうがいいとおもう。
972 :
デフォルトの名無しさん :03/03/17 14:10
TESTHR(pRstAuthors.CreateInstance(__uuidof(Recordset))); こうやってnewしたインスタンスってどうやったらdelete出来ますか?
COMのスマートポインタっぽいけど、 pRstAuthorsの寿命とともに、Instanceも消え去るんでないのか
975 :
デフォルトの名無しさん :03/03/17 20:30
ADO-MFCでパラメタクエリーする場合、 C++のバリアントはどう記述するのか教えて下さい。
UNICODEでなく、SJISです。 これだとうまくいきません。 VARIANT vParam; vParam.vt = VT_LPSTR; vParam.pcVal = pcValue; _ParameterPtr pPrm = __getParameterPtr(ParamName); if (pPrm == NULL) { pPrm = FCmd->CreateParameter( ParamName, adChar, adParamInput, iLen, vParam);
もしかして、ADOって、一旦UNICODEにキャストしないと文字を格納出来ないんでしょうか?
978 :
VC++質問スレ無くなったのかな? :03/03/17 21:20
ダイアログのフォント変えてからGetCurrentObject使って 取得するとデフォルト(system,12p)のフォント取得しちゃうんだけどなんで?
979 :
デフォルトの名無しさん :03/03/17 22:10
TRUEのときにボタンが押せて、FALSEなら押せないようにしたいんですが、ボタンを押せないようにするのはどうすればよいのですか?
>>979 ・ボタンを無効化する。
・ボタンを消す。
・ボタンが押された時の動作で、FALSE なら何もしないようにする。
無効化したいんですが、どうすれば無効化できるのですか?
985 :
デフォルトの名無しさん :03/03/18 00:17
MDIアプリケーションでひとつのドキュメントに複数のビューを持つには 一般的にはどのようにするのがいいのでしょうか。 検索してみても、CWinAppの派生クラスにCDocumentのポインタを持つ という方法しか見つかりませんでした。 私が思いついた方法と言えば ・AddDocTemplate() を複数呼ぶ ・CDocument::AddView() を使って何とかする の二つでしたが、前者だと本来ならドキュメントごとに存在するリソースを ビューごとに作ることになるので、ガイドラインから外れると思いました。 (ただMFCのサンプルで前者の方法を使ったのがあったような気がしますが…。) 後者は引数が CView* なのでビューを予め作成しておかなくてはならず、 [表示 | なんとかのビュー] で動的に作成するのには向いてないと思いました。 あまりに基本的なことで恐縮ですが、お願いします。
987 :
デフォルトの名無しさん :03/03/18 02:22
MFCでWebブラウザコントロールを用いてそれを印刷したい場合、 // Verify the Web Browser control is valid. LPDISPATCH lpDispApp = m_web_view1.GetApplication(); if(lpDispApp) { // Get the HTMLDocument interface. LPDISPATCH lpDispDoc = m_web_view1.GetDocument(); if (lpDispDoc != NULL) { // Get the IOleCommandTarget interface so that we can dispatch the command. LPOLECOMMANDTARGET lpTarget = NULL; if (SUCCEEDED(lpDispDoc->QueryInterface(IID_IOleCommandTarget,(LPVOID*) &lpTarget))) { // Execute the print preview command. The control will handle the print preview GUI. // OLECMDID_PRINTPREVIEW is defined in "docobj.h". lpTarget->Exec(NULL, OLECMDID_PRINTPREVIEW, 0, NULL, NULL); lpTarget->Release(); } lpDispDoc->Release(); } lpDispApp->Release(); } みたいなコードで出来ますが、URLが印刷されちゃいますよね。 それを隠す方法があれば、ご教授ください よろしくお願いします
>>986 もちろん読みましたが、>985については書いてないと思います。
そういえば書き忘れてましたが、CSplitterWnd を使うのではなくて、
複数のフレームウインドウにそれぞれ違うクラスのビューを表示する方法です。
例えばドキュメントとしてテキスト文書を持っていて、
一方のビューは横書きで、一方のビューでは縦書きで表示するような感じです。
スレがピンチですがもう一度お願いします。
>>988 CMDIChildWnd::Create()に渡すCCreateContext*型の引数を自分なりに考える。
MSDN読んでもわからんなら正直救いようがないというか。。。
CCreateContext の説明から ViewEx のサンプルに辿り着いて、
その中で AddDocTemplate() を複数呼んでいる事を知りました。
その後は CDocument::GetFirstDocTemplatePosition() などで CDocTemplate
を取得して、CDocTemplate::OpenDocumentFile(NULL) で大体望み通りのことが出来ました。
>>990 プログラマーズガイド以下とテクニカルノートはかなり調べたつもりだったのですが、
リファレンスの方までは調べきれていませんでした。
言い訳するつもりはありませんが、ドキュメント&ビューの項目で
説明していて欲しかったと思いました。
ともあれ夜遅くにどうも有り難うございました。
992 :
デフォルトの名無しさん :03/03/18 10:07
993 :
デフォルトの名無しさん :03/03/18 10:07
1000?
994 :
デフォルトの名無しさん :03/03/18 14:48
うめあげ
1000取っていいですか?
100?
998 :
デフォルトの名無しさん :03/03/18 15:17
999 :
デフォルトの名無しさん :03/03/18 15:17
999
1000 :
デフォルトの名無しさん :03/03/18 15:18
| \ダダダダダダ誰モイイネエエエアアアエエエエエエ!!!!! |∀゚) オオオオオオオ踊ルナラアアアアア今今今今 |⊂ イイイイイ今アアアアアアノオオオ内ィィィィィアアアアアア!!!! | ♪ Å ♪ / \ ラアアアアアンタアアアアア タアアアアンンンンンンン!!! ヽ(゚∀゚ )ノ ラアアアアアアンンンンンタアアアアアアアアアア!!! タンンンンンン!!! ( へ) ラアアアアアアンンンタ ラアアアアアアンタアアアアアアアアア!! く タアアアアアアアアアンンンンン!!! ♪ Å ♪ / \ ラアアアアアンタアアアアア タアアアアンンンンンンン!!! ヽ( ゚∀゚)ノ ラアアアアアアンンンンンタアアアアアアアアアア!!! タンンンンンン!!! (へ ) ラアアアアアアンンンタ ラアアアアアアンタアアアアアアアアア!! > タアアアアアアアアアンンンンン!!! アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ ♪ Å ♪ / \ アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ ヽ(゚∀゚ )ノ アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ ( ) アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ く ノ アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。