■ VisualC++(MFC限定)相談室 MFC6.dll■

このエントリーをはてなブックマークに追加
1MFC
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/test/read.cgi/tech/1028553308/
2デフォルトの名無しさん:02/12/11 20:50
2
ld ./mfc6.dll

?
このスレは冗談で作られたネタスレです。

すでに削除依頼済ですので、今後は書き込まないようにお願いします。

本物のスレは↓こちら。

http://pc3.2ch.net/test/read.cgi/tech/1028553308/
■ VisualC++(MFC限定)相談室 6■
>>4
次スレってことでしょ?
スレタイがダサい。削除依頼行きだね。
7:02/12/11 22:04
皆様申し訳ございません。
目立ちたくてスレたてますた。
今後このようなことがないよう致します。
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
質問です。
ファイルからビットマップを読み込んで
ダイアログボックスのピクチャボックスで表示したいのですが、
ピクチャボックスのサイズがわからずフォームにあふれてしまいます。
ピクチャボックスのサイズってどうやったらわかるのでしょうか?
よろしくお願いします。
>>16
GetWindowRect
1816:02/12/13 01:23
>>17さん
ありがとうございました。
19デフォルトの名無しさん:02/12/13 01:55
>>15
出来ました
ありがとうございました
20デフォルトの名無しさん:02/12/13 13:17
スプリッタウィンドウで
複数のビューを表示するときに
入力するキーによって
受け取るビューを変えたいのですが
どうしたらいいでしょうか

たとえば数字キーなら左のビュー
エンターキーなら右のビューといった感じです
>>20
フォーカスがあるビューがメッセージ受け取るから、
両方でWM_KEYDOWNとか受け取ってキーによって振り分けりゃいいんじゃない?

例えば右のビューにフォーカスがあって数字キーが押された場合、
左のビューへSendMessageするとか。
2220:02/12/13 17:13
>>21
他のビューのSendMessageを起動するには
どのように記述すればいいのでしょうか
CView1とCView2があった場合
CView1のOnKeyDown内から
CView2のSendMessageを呼び出すことができません
>>22
他のビューへのポインタを取得してSendMessageすりゃいいじゃん。
WM_KEYDOWN受け取るのもキーによって振り分けるのも
CMainFrameでやった方が楽では?
CMainFrameで受け取れるならどうぞ。
あ、WM_KEYDOWNをそのままSendするのか。
>>24は無し。聞かなかったことにして。
そして他のビューへのポインタの取得方法がわからんとか言われる罠
CDocument::GetNextView()とか知ってんのかな……
2820:02/12/13 17:41
>>27
有難うございます
その通りでした

GetDocumentとかと同じでGetViewとかあるのかと思って
調べてたらCRichEditViewのだったりするしで
悩んでるところでした
2920:02/12/13 17:51
>>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でおまじない唱える
3629:02/12/14 01:20
>>30
知りませんでした
どうもありがとうございます

>>31
MSDNライブラリ調べてますよ
ただ他人のソース読んでて知らない関数やら出てきたときは
役に立つんですが、このような動きをする関数を知りたいってときに
うまく調べられません。検索時にキーワードとなるようなものを
まだあまり知らないので
37デフォルトの名無しさん:02/12/14 14:04
CHtmlViewのWebBrowserって右クリックするとIEと同じ右クリックメニューが出ますが
これを右クリックしても出ないようにする方法ってありますか?
あとHTML表示用のコントロールってないんですかね?
38デフォルトの名無しさん:02/12/14 14:13
http://japan.pinkserver.com/under/index.html
勝手に他人のサイトを直リンク!!
「法的根拠はない!!」
「だから直リンしてます」
ハァ?
ネチケットも守れない痛い厨のサイト晒し
pinkserverってアダルトサイトじゃなかったっけ? 宣伝か?
>>37
http://www.codeguru.com/ieprogram/index.shtml
ここの
How to Modify/Remove Right-Click Menu in IE WebBrowser Control
って記事参照。
>>38
ネチケットどころか常識的な事ですら理解してないのが一杯いる2chで言われても…
42デフォルトの名無しさん:02/12/14 20:41
ダイアログで
  DragAcceptFiles(TRUE)を呼ぶ のと WS_EX_ACCEPTFILES をつける
のはどう違うんですかね?
4337:02/12/14 23:13
>>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とか受け取るつもりだ?
ワーカースレッド作れよ。
5552:02/12/16 01:02
>>54
ダイアログ表示中はユーザに何もしてほしくなくて
スレッドみたいに並列処理のイメージをもっていなかったので
ダイアログ表示、ファイルチェック、ダイアログ消去の順番で
出来ると思ってました。
スレッドにしたらできました。ありがとうございます
56デフォルトの名無しさん:02/12/16 15:55
C++.netでMFC6を使用したプログラムの動作について質問です。
Windows2000+ServicePack2ではきちんと動くのですが
Windows2000のノーマルだと動作があやしくなってしまいます。
具体的には
リストボックスがパチパチ点滅してしまい、選択できない。
どっかで暴走してるように重くなる。
という現象がおきています。
これはどのようなことが考えられますでしょうか?
57デフォルトの名無しさん:02/12/16 17:36
>>56
サービスパックで修正されたバグ
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と関係あったのかな。独り言なら他に逝って欲しいな。
6663:02/12/17 01:10
>>64
どのクラスがそれに当たるのか簡単にわかるもんかな。
とりあえずソースダウンロードしてみようっと。
67デフォルトの名無しさん:02/12/17 01:29
VC.netってどうなの?
ぼちぼちでんな。
69デフォルトの名無しさん:02/12/17 02:09
OpenSSLをラッピングしたようなクラス
転がってませんか?
www.openssl.org
>>69
調べてないけどCodeGuruにないか?
71MFC使ってるとかの判定:02/12/17 17:32
.cpp内でプロジェクトが「MFCを使っている」・「MFCのstaticリンク」・「MFCの共有DLL使用」の
判定にはどのようにすればよいのでしょうか?

MFCのDLL使用の場合は
#ifdef _AFXDLL
で、できるようですけど。
よろしくお願いします。
7271:02/12/17 17:33
「MFCを使っている」は「MFCを使っていない」の間違いです。
*.cppじゃムリだろ…
*.dspファイルに書かれていることだし。
何か間違った認識をしているような気がしてならない。
7471:02/12/17 19:48
>>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
プリコンパイル済みヘッダって知ってますか(藁
7871:02/12/17 20:41
レスどーもです

>>75
スマソ、他のコンパイラを使用する場合とかです。

>>76
もう帰っちゃったので明日試してみます。でも、_AFXは AfxVer.h で定義されていて
stdafx.hをインクルードしたあとでなければ判断できないのでは

それとも自分でコンパイルオプション(/D)を指定したほうがいいんでしょうか?
>>77
すんません、どうゆうつっこみかよくわからないんで説明してください。
なんか質問の主旨が変わってきてる。
最初はMFC不使用/使用/DLLを区別したいとあったはずだが
いつのまにかプリコンパイル済みヘッダの使用/不使用の話に。
とりあえずMFCスレとは関係ないということはわかったが・・・
コンパイラを変えるならVC固有のマクロに頼ること自体おかしいと思う。
8171:02/12/17 21:32
>>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を削除したつもりなんですが、どうも変化がないです。
ここで他のスタイル変更などは試してうまくいっているので、恐らく変更のタイミングじゃないと思うんですが・・・
>>85
アイテムのD&Dは自前で動かしてたような…。
http://www.codeguru.com/listview/DragDropListCtrl.html
87忘れた……:02/12/18 22:37
ちょっと板違いなきもしますがプラットフォームがMFCなので。。

LANにぶら下がっているマシンの自分のアドレスが欲しいのですが欲しいのはネットワークアドレスじゃなく
グローバルアドレス。gethostname→getbyname(だったかな?)でとるとネットワークアドレスになってしまいます。
この状態でも確認くんなどにつなぎに行くとちゃんとGIPがみれますがこれが欲しい。
この場合HTTPでつなぎに行ったときにルータのNATやらで与えられるIPだからアプリからはどうしようもないのかな。
どうなんでしょ。この変詳しい人いますか?
>この状態でも確認くんなどにつなぎに行くとちゃんとGIPがみれますがこれが欲しい。
そりゃゲートウェイやルータのIPアドレスでしょ?
>>87
こんなんでましたけど。
http://forums.belution.com/ja/vc/000/065/62s.shtml
90すごくしょしんしゃ:02/12/18 22:47
>>86

半透明になってアイコンがドラックされた状態になってマウスカーソルとともに動いていくっ
っていう動くではなく、
>>85で言いたいのは、自動整列になっていないデスクトップやマイコンピュータのように、
自由にアイコンを配置できるようなことです。
>>82
抽象的すぎてよく分からん…
>>85
PreCreateWindowじゃなくて?
PreSubclassWindowが呼ばれたときってまだCreateは呼ばれてないと思うけど…。
93すごくしょしんしゃ:02/12/18 23:04
>>92
ダイアログにVCのエディタで作った(配置した?)リストコントロールなんですけど・・。
LVS_* の変更って、SetExtendedStyle() じゃなかった?
どこまで実装されているかわからないから答えるほうも大変だな…
>>94
それは LVS_EX_* の話よん
>>87
> 欲しいのはネットワークアドレスじゃなくグローバルアドレス。

最近は、こういう言い方するのか ?
分かってない奴は昔からそういう言い方をする
だからMFC使ってるからってだけでこのスレで質問するのはやめた方がいいって。
ネットワークプログラミングスレあるんだから。
自分の質問の要点はどこなのか冷静に切り分けていこうや。

>>85
そのソースみたところリストコントロールの派生クラスなんだから>>92の通りだ。
つーかスタイル変更したいだけならOnInitDialogあたりで
m_list.ModifyStyle(・・・);  // m_listはCListCtrl
でいいじゃないか。
100デフォルトの名無しさん:02/12/19 00:21
>>88
そうだよね。

>>89
参考になります。ありがとう

>>97-99
うわっ、役にたたねぇ〜。。
はぁ・・・こいつは今後またここで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

うっさい、ハゲ
>>105
VC6でも実現できると思いますが。
>>106
いいから消えろよ。テイノウ。
少しは役に立つこと書けや。
109105:02/12/19 14:51
>>107
VC6だとやっぱり、CToolberにツールバーバンドでのリサイズ&
ツ−ルバーの自動サイズ変更の処理をオーバーライズさせるですよね。
(Rebar使うとフローティングにならなかった様な気がするので・・・)
110デフォルトの名無しさん:02/12/19 15:54
ビットマップの再描画の方法おしえてください
6.0です
111デフォルトの名無しさん:02/12/19 16:16
読み直しゃいいんでない?
>>110
まったく状況がわからん。
質問するならもっと状況を説明しろよ。
悪い質問の仕方の見本だな。
>>110は単発スレまで立っているので答える価値なしです
VC++6.0SP5 & Win2000です。
サイズ可変ダイアログでタブコントロールがリサイズ時にちらつくのは何故でしょう?
同じダイアログに貼り付けたツリーコントロールはリサイズしても全くちらつきません。

>>115
再描画してるからじゃないの?
117115:02/12/19 20:01
>>116
ですよねぇ。
ツリーコントロールがちらつかないのは内部でちらつかないように処理してるのかな?

ちなみにCWnd::MoveWindow()でリサイズしてます。
bRepaintをFALSEにするとちらつかないけど再描画もされない…(当たり前か)。
118デフォルトの名無しさん:02/12/19 23:45
>>117
WM_ERASEBKGNDとか
119107:02/12/20 03:24
120109:02/12/20 10:04
>>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
>>129
猫でも分かる〜に書いてあるよ。
>>129
ホントか?
http://www.codeguru.com/menu/index.shtml
ココ見て分からんようなら他さがせ。
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でメッセージマップを開いても「クリック」と「ダブルクリック」の
イベントしか出てこないし、「クリック」だと離した後に起こるイベントですし。
136135:02/12/21 20:37
えーと、もしかして CButtonを派生させてクラスを作って
そのクラスで PreTranslateMessageをオーバーライドして
WM_KEYDOWNとか捕まえて処理する、んでしょうか?
137135:02/12/21 20:46
あぁ・・・WM_KEYDOWNじゃないですよね。
少しもちつきます。
138135:02/12/21 20:51
一人で勝手にすみません。
PreTranslateMessageじゃなくて、CButtonを派生させたクラスの
WM_LBUTTONDOWNやらWM_LBUTTONUPでやるっぽいすね。
139135:02/12/21 21:31
そしてそれを、ボタンを配置してる親ウィンドウに
どうやって押されてる/離された を通知してイベントを起こすのかが、
今の悩みなわけですが・・・教えていただけませんでしょうか。
140デフォルトの名無しさん:02/12/21 23:00
なんか適当なメッセージを定義して、
親ウィンドウにSendMessageしてやったらいいんでないかね。
141135:02/12/21 23:29
>>140 おーやっぱそうですか。
実は SendMessageは今までに何度か使おうとして
挫折してたから、今いろいろ使い方を調べてるとこです。
142デフォルトの名無しさん:02/12/21 23:37

もうちょっとでクリスマス。。★彡
パートナーは見つかりました?(o^.^o)

http://petitmomo.com/mm/
ここがちょっぴりエッチ系のめぐが運営している出会いサイトです。
もしよかったら使ってみて、、、
ヨロシクです。

めぐ(^o^)-☆
143135:02/12/21 23:57
ヽ(´∇`)ノウワァァァイできたー
はじめて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プログラマの代表であるかのように受け取ったのか問いたい
むしろ>>141はMFCの日本代表
>>147
俺はSDKほとんどつかったことないけどSendMessageはよく使うぞ。
皆がみんな「わかんない」だったらそういう印象受けるけど、
分かってないのは質問者だけっしょ?w
151きよみ:02/12/22 03:07
YESかNOかでお答えください。
CWndにもSendMessageあるんだから、
MFC=SendMessage使わないじゃないよ、知らない人向けに言っておくと。
メッセージ関連はクラスメンバとして隠蔽化されてるから
内部的にSendMessage使いまくりなのを知らない人も初心者にはいるだろうけど。
MFCのソースコード追いかけるとSendMessageだらけだね。
154デフォルトの名無しさん:02/12/22 20:51
CFileExceptionのエラーコードを日本語に代える方法を教えてください。
155デフォルトの名無しさん:02/12/22 20:57
エラーコードは数値ですが?
156154:02/12/22 21:22
>>155
だからそれを日本語に変換する方法をおしえてと・・・
日本語っていってもエラーコード13を文字列の13に変換したいっていってるんじゃないよ。
>>154
それの基本クラスメンバを見てみる。
158デフォルトの名無しさん:02/12/22 22:08
特に仕事で使う目的はないんだけど
VC++でTCP/IPを扱うお勉強するには
どんなプログラムを試作するのがいいと思いますか?
>>158
TCP/IPを扱うプログラム。
>>156
例外クラスのGetErrorMessageか、
APIのFormatMessageだよ、カス
161145:02/12/22 23:58
>>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で、特定の子アイテムのみチェックボックスを
付けることは出来るのでしょうか?
>>170
できなかったら凄く面白い。
ttp://www.codeguru.com/treeview/simple_checkbox.shtml
こんなのくらいしかないな。
171は、どうやるのか教えれ
>>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;
};
>>179
ありがとう。ドンぴしゃ正解でした。
>>181
MFCを使うんなら、DDX,DDV使える既成のもの使ったほうがいいんじゃね?
>>181
>ダイアログボックスの各コントロール扱い方なんですけども、
>MFCのクラスウィザードでメンバ変数を作ってやるのと、それを使わないで
MFCのダイアログはコントロールに CString や int, BOOL などの変数を
結びつけることができるのが便利、コントロールのクラスを結びつけることもできる。
ダイアログのリソース作って、クラスウィザードでそのリソースのCDialog派生クラス作って
メンバ変数ページでコントロール選択して変数の追加でダイアログ上のコントロールに
結び付けられた変数を追加できる。カテゴリでコントロールを選択するとコントロールのクラスを
結び付けられる。エディットコントロールに文字列・数値などを入力するだけならカテゴリで
値を選択するのが楽。
自力でコードを書くこともできるけど、ウィザードを使うと楽。
変数とコントロールを結び付けてるのはDDX/DDVサポートのDoDataExchange()関数
エディット・ラジオボタン・チェックボックス・ボタンコントロールしか使わなかったら楽にできる
ボタンはメッセージBN_CLICKEDとかの処理。
185181:03/01/02 19:12
>>183,134
どうもありがとうございます。
自分でコード書いちゃったよ。
こいつメンドウなことやってるなーって思われそうです。
時間あったら直しとこ。
ダイアログに貼り付けたCRichEditCtrlからの
NM_SETFOCUS、NM_KILLFOCUS、EN_SETFOCUS、EN_KILLFOCUSが
いずれも受け取れないのはどうして?
クラス生成してないとか?w
クラスウィザード使わずに手で打ってるとか?w
コモンコントロールでも取れないメッセージがあるみたいだからOnNotifyでぶんどりなされ。
189デフォルトの名無しさん:03/01/06 18:25
VC++初心者です。
阿呆な質問かもしれませんが、VC++では例えばリストボックス
を改造してエディットボックスに変更したり出来るのですか?
>>189
継承しなされ。
>>189
改造せずにエジットボックス使え。
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 でも使って計測してみなはれ

ただ、最適化するのが目的ならもっと他に最適化する部分があると思うがな
195192:03/01/08 00:05
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アプリを動かしているのですが、ウィンドウを切り替えたりすると
少しずつ使用メモリが増えていくのですが、こういうものなんでしょうか?
一度切り替えて表示したウィンドウを再度表示したりした場合は増えなかったりします。
201196:03/01/08 19:25
>>197
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/vclrfcwndflashwindowex.asp

今はWINAPIを直で呼び出して使っていますが、
せっかくあるものを使えないのが気持ち悪いのです。

MFCのソースのバージョンが古いのかなと思い、
探してみたけれど無料ダウンでは見つからず。
CWnd::FlashWindowが宣言されている
AFXWIN.H(154,220 バイト)の日付が98/06/15。。。
.NETを買うしかないのかな?

.NETを持っている方のAFXWIN.Hの日付を教えてください<(_ _)>
>>198
ない

>>199
確実に表示はできない。
IntelliSenseが表示されない場合は編集中のクラスのヘッダファイルを保存しなおす。
ClassViewも同様に、表示されないクラスのヘッダファイルを保存しなおせば現われたりする。

MFC関係ないんなら次からはこっちで聞いとくれ。
ttp://pc3.2ch.net/test/read.cgi/tech/1038160750/l50

>>200
どこかでメモリリーク起こしてないか?
>>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ボタンなどを押して消した場合、メモリ使用量はダイアログ表示前と
同じでなければ、何かしら問題があると考えた方がいいですか?
206IP記録実験:03/01/08 21:12
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
210age2ch.pl 0.03.28:03/01/09 00:13
ガ━━(゚Д゚;)━━ン!
ガ━━(゚Д゚;)━━ン!
まぁアレだな。
キタ━━━━(゚∀゚)━━━━━!!!
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
なるほど!!言われたとおりに試して見たらうまく出来ました!!
どうも有難うございました!
ニュー速+

【2ch】管理人のひろゆき氏がqbサーバで全レスIP記録の実験を開始
http://news2.2ch.net/test/read.cgi/newsplus/1042017485/
>>201
それってクラスツリーたどっていくとCDHtmlDialogとかも載っているので
MFC7のリファレンスじゃ?
MFCは無料でバージョンアップできません。
つまりVC++6を使っているならMFCは6のままなので、SPやSDKをバージョンアップしても
MFC7の関数は使えない。
223207:03/01/09 02:21
>>209
その3つの関数について調べてみましたがよくわかりません。
私の質問がちょっとわかりにくかったんだと思いますが、
私が知りたいのはビューのデバイスコンテキストの取得方法で、
新しく作りたいというわけではありません。
CClientDC dc(this);
と、ビュークラスの中でよくやったりしていますが、それを
自作クラスの中でやるにはどうすればよいか?という質問です。
このthisのところを他の適当なものにすればよさそうなのですが
それがわからないのです。もしくは他に適当な方法があるのでしょうか。
今までの暗黙の了解が公になっただけの話では。
敗北、だな。
>>222
THX。納得しました。
>>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
>>231
当然、アルゴリズム体操。
233207:03/01/09 21:14
自己解決しました。
いろいろ試行錯誤した結果、
最初にビューの m_hWnd をクラスに渡しておいて、
必要なときに
CDC *pDC=CDC::FromHandle(GetDC(m_hWnd));
とやって、どうにか目的のデバイスコンテキストを得ることができました。
>233
そんな回りくどいことしなくても
CDC *pDC = pWnd->GetDC();
でいいんじゃない?
235207:03/01/09 22:02
>>234
そのpWndってどうやって得ればいいんでしょう?
MFCでプログラムしていますが、そんなの定義されてないです。
236デフォルトの名無しさん:03/01/09 22:04
CListCtrlのSortItems()でソートかましたんだけど
SetItemData()で設定したアイテムデータはソートしやがらねぇ。
ソート比較関数の中で入れ替えるのもなぁ・・・
なんかスマートな方法無いものか。
237236:03/01/09 22:17
ぐえっ!俺のバグだ・・・
238名無し@沢村:03/01/09 22:19
>>235
ヌヒよ、m_hWndを渡すのではなくViewへのポインタを渡しなさい。
>>235
AfxGetMainWnd()
CFrameWnd::GetActiveFrame()
CFrameWnd::GetActiveView()
その他いろいろウィンドウを取得するメソッド・関数は用意されているが。

>>238
たのむからこのスレへ来ないでくれ
240207:03/01/09 22:34
>>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の方法も
間違ってるわけじゃないからそれでいいさ
244207:03/01/09 22:56
>>239
そんな関数があったのですか。なるほどその方法でもいけそうですね。
>>242
CWnd*ですか・・どうも私が勘違いしていたようですね・・・。

どうやらCWndあたりで私の理解が足りなかったようですね。
勉強しなおそうと思います。
_ヘ彡ヘ
(,, ゚∀゚)<遅ればせながら記念パピコ
>>551
「コテハン戦隊ラウンジャー」に鑑定依頼してきますた
なんか笑えるスレだな
なんか笑えるスレだな
ばしばし誤爆が来てないか?
某○○は法律関係の仕事をしてるのですか?

単なる子供?
たった400万の罰金で、広告費に換算したら1億以上の大きな反響
今年こそ2ちゃんねるが潰れますように
2ちゃんねる が衰退していく

あるネット関連会社の社長は、
「いずれにしても2ちゃんねるは資金が底をつけば終わり。
あまり知られていないことだが、2ちゃんねる内部関係者によると今、
大手通信会社系が調査費名目で資金提供している。
だが、それが止まれば続けてはいけないだろう」
と証言する。
2ちゃんねるが判決によって力を失った場合、
資金提供の打ち切りも予想される。

http://ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html
>>459に追加とついでにIPについて調べてみた
ニュース速報@Megabbs:IPは?(書いてない)
http://www.megabbs.com/news/index.html
ニュース速報@MILKCAFE:IPは基本的には取ってない(http://www.milkcafe.net/gu.html参照
http://www.milkcafe.net/news/
ニュース雑談@sub-all:IPは基本的には取ってない(http://www.bbs2.net/fuck.html参照
http://www.bbs2.net/news23/
経済@いちごびびえす:IPは取ってない(http://www.ichigobbs.com/info/info.html参照
http://matari.ichigobbs.com/economy/
ニュース速報@匿名掲示板(仮):IPは取ってない(http://kari.to/about/参照
http://kari.to/bbs/g4/
ねえ、ひろゆきって400満ももってんの?
いつもお仕事はなにしていらっしゃるのか?
裁判所or警察経由っすね>アクセスログが渡る場合
後は、羽田タートルのスレッドの中での粘着さん。
>>720
一般人はどうやってみるんだ?
掲示板といえるのか。
場所によるよね。


匿名重視の板では厨房どころか普通の客まで帰っちゃうという罠。
実況なんかだと逆に非常に便利(荒らしの特定)だろうけど。
さりげなく自スレの宣伝するんじゃねー
でも、良かったらさんもさんもマァヴさんも
おいらの立てたスレに遊びに来てね。

どうせIP記録されるんならふしあなさんしようぜ
http://live.2ch.net/test/read.cgi/festival/1042199282/l50
このスレにちょいと書いてあるんですけど、
ダイアログでクラスウィザードを使いメンバ変数を作成すると
多数のメンバ変数ができてしまったときに扱いにくくないですか?
私としては構造体にまとめたいのですが、
そうすると自力でコード書く部分がかなり多くなってしまいます。
何か良い方法はないでしょうか?

幾つくらいメンバがあるの?
あんましおおいなら、ダイアログを分割したりしたほうが
よさそうだけど。
ポリタンクさん、「私のニュース」で活動して下さいって、
あれほど、あれほどお願いしたのに、、、
ひろゆきカマン。
======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ちゃんねらー、逝って良し!!」

≪1864年、イギリス人のF・ベアトにより撮影された江戸のパノラマ写真≫

愛宕山という20メートル位の小さい丘から撮影されました。
映像に矢印を2秒くらい置いておけば、拡大できるので(右下に出るマークをクリック)
是非 スクロール して楽しんでください。
http://aquarius17.cool.ne.jp/dc2wp/up/box/sub.cgi/scene0130.jpg

ちなみに李朝のソウルはこちら。まことにありがたい町並みです。
http://www2.nhcc.go.kr/cgi-bin/xcall?ssid=105925&dbid=/photo/web/photo&ty=1&fi=SJ0052&cap=SJ0052

ポイズン
ワラタ
生きろ!快速ストーカー
テレビにニュース速報が入る。
俺は慌ててパソコンを立ち上げ、そして気付く。
「あぁ、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回目のファイル読み込みが機能していないみたいで・・・。
何かよい方法はありませんか?
>>276
例外をキャッチしてみるとか。
278デフォルトの名無しさん:03/01/12 00:47
>>276
Closeしてないからじゃない?
279デフォルトの名無しさん:03/01/12 01:44
>>278
Closeは
fin1.Close();
という形でいいんですかね?
それを加えたら途中で止まってしまいました。
何度もすみません。
>>278
それくせー。
>>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
>>288
ヌヒよ、嘘をついてはいけません。
293290:03/01/12 18:05
>>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は気持ち悪い。
>>308
変わった人だね
いや、普通だと思うが
311山崎渉:03/01/13 18:32
(^^)
>>306
ShellExecuteとか。
法律は必要最小限のことしか決められんよ、あとはルールまかせだ。
314306:03/01/13 22:19
>>312
アドバイスありがとうございます。
さっそく試してみようと思います。
>>307
UpdateData
>>307
GetEditCtrl()でEditコントロールを取得して操作。

>>308
同じく。
どうして-1じゃないんだろう?
おかげで(bool)!!check のような型キャストが要る…
318デフォルトの名無しさん:03/01/14 19:59
ダイアログボックスベースでアプリを作っていますが、
整数型の変数の値を文字型にしてStaticコントロールに表示させたいのですが
どのようにすれば良いのでしょうか?
どうやら普通のC++とやり方が違うようで、、、。
319318:03/01/14 20:21
×Staticコントロール
○StaticText

すまそ
>>318
i = 10;
CString str;
str.Format( "%d", i );
321320:03/01/14 20:53
>>318
脊髄反射でカキコしてしまったが
ひょっとして変換方法じゃなくて表示方法がわからないのかな?
だとしたら↓みたいな感じか。

int i = 10;
CString str;
str.Format( "i = %d", i );
m_wndStatic.SetWindowText( str );
322318:03/01/14 20:57
>>320
>>321
どうもありがとうございます。
後半の部分は知ってましたが、前半部分が解りませんでした。
質問内容が不十分なのに答えてくださって有難うございました。
323デフォルトの名無しさん:03/01/14 21:00
おながい!助けて!
ツールボックスを2つ使いたいのですが、
2つ表示させるところまでは上手く行きました。
(CMainFrameクラスにCToolBarクラスのオブジェクトを追加した)

メニューにツールバーの表示/非表示を選択できますが、
AppWizardが生成したコードのままだと、独自に追加した2つ目の
ツールバーまで制御が効きません・・・
ツールバーの表示/非表示をプログラムでやるには、
どの様にしたらよろしいのでしょうか?
324323:03/01/14 21:03
出来れば表示→非表示→表示にした時、
以前の状態(ツールバーの位置)を保ちたいです。
普通のC++とやり方が違うっていうかMFCの使い方を調べてないだけちゃうんかと
CFrameWnd::ShowControlBar
327323:03/01/14 21:10
>>326
即レスさんくす!
早速試してみます。
328323:03/01/14 21:19
>>326
で、できました!多謝。
最近、関数一個で解決するような質問ばかりな予感
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>>338
ありがとうございますた
>>337
そのやりかたはCStringをCArchiveに保存した時のみ有効。
ar << str;// strはCString
この時、ファイル上はテキストで保存されているわけではなく、バイナリで文字列長+文字列で構成される。
ar >> str;//復元できる
>>338
CStdioFileは1行読みのためのクラス。
テキスト全部読むとかだったら向いてないね。
>>340
ar >> str;
だと指摘どおりだな。
ただCArchive::ReadStringってのもあるYO

テキスト全部読むなら1行読みをループさせるしか思いつかないねぇ・・
なんかいい方法ある??
>CStdioFileは1行読みのためのクラス。
アホか。
343山崎渉:03/01/15 17:46
(^^)
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
このスレってフィードバック少ないよね…
350347:03/01/17 01:55
>>348
駄目でした。そのかわりCImageList::Create()の引数にILC_MASKを渡したら透けました。
でもやっぱりDrawIcon()は使えない・・・
>>350
そもそもLoadIconは成功しているのかと24時間(略
>>347
DrawIndirectの説明を穴のあくほど読め。
デフォルトではfStyle = ILD_NORMALだ。
>>351
24時間かよ(藁
354デフォルトの名無しさん:03/01/18 11:10
CMenuについて質問させてください。
InsertMenuやAppendMenuで動的に作成したメニューがクリックされた時に
対応するメソッド(ハンドラ?)を定義するのにはどうしたらいいんでしょうか。
InsertMenuに渡すアイテムIDも動的に指定しています。(マクロでない)
事情により、クラスウィザードを用いないで実装しているコードをいじらなければ
なりません。
厨房ですいませんがよろしくおねがいします。。。
テクニカル ノート 6 は見た?
IDを手で捏造したくないんなら
メニューエディタで隠しメニュー作ってそこに登録するといいyo
356デフォルトの名無しさん:03/01/18 11:36
>>355
ありがとうございます。
テクニカルノートをまず読んでみます。
357354:03/01/18 11:51
>>355
あらかじめメニューIDをいくつか予約しておいて、
ON_COMMAND_RANGEマクロを使ってそれらのIDに対応するメソッドを
定義し、その中でswitchすることでやりたいことが実現できそうです。
ありがとうございました!
358デフォルトの名無しさん:03/01/18 15:05
すまそ・・・。
Static内の色を変えるにはどうするのでしょうか。
1週間くらい調べてますが解らなくて・・・オロロ・・・・。
>>358
スタティックコントロールにユニークなIDを付けて、後は他のコントロールの色を変えるのと同じ。
360358:03/01/18 15:35
>>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
つーかコマンコって何よ俺・・・(´Д`;)
377370:03/01/22 00:36
>>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
>>374-375
どうもありがとう!
検索してみます。
>>377
::IsWindow(m_pSplitter->m_hWnd)
これを使おう。

コマンコ(;´Д`)ハァハァ
382370:03/01/22 01:01
>>379
Create した時点で bCreated = TRUE のようにする方法ですね。
確かにそれだと出来そうですが、イレギュラーな気がしていたので
もっとスマートな方法が無いかなと思って聞いてみた次第です。
>377 も含めて最初から書いておくべきでしたね。すみません。

>>381
その関数は知りませんでした。まだ試してませんがいけそうな気がします。
ありがとうございました。
383デフォルトの名無しさん:03/01/22 01:13
CScrollViewを使用しているのですが、GetScrollPos等で得られる値が32767までしか得られません。(それ以上は0に戻ってしまう)
それ以上(例えば100000等)の範囲の場合は自分で管理するしかないのでしょうか。

Windows2000, VC6SP5
384370:03/01/22 01:23
たびたびすみません。
OnSize() は CreateStatic() のすぐあとに呼ばれていたことが分かりました。
そのため CSplitterWnd::GetColumnInfo() で
まだ作られていない列を指定したせいで落ちていたみたいです。

m_wndSplitter.CreateStatic(this, 1, 3);
// ここで呼ばれる
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(180, 0), pContext);

これだとフラグを立てるしか方法はないでしょうね。
フラグの置き場所が非常に悩むところですが、なんとかやってみます。
皆さんありがとうございました。
385373:03/01/22 01:25
あっ・・・、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だが。
389hh:03/01/22 01:46
★あなたのお悩み解決致します!!
◎浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
◎盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
◎行方調査
行方不明になっている家族の消息を調査致します!!
◎電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
◎ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 24時間受付  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  [email protected]
   グローバル探偵事務局 

390デフォルトの名無しさん:03/01/22 01:56
MFCでDLLを作り、そのDLL内の関数を別アプリから使用します。
その時にDLLからアプリにメッセージを送るにはどうすればいいんでしょうか?
よろしくお願いします。
>>390
APIのSendMessageつかえば。
392370:03/01/22 02:12
>>387
VC6 ヘルプより
> 分割ウィンドウの現在の列数を返します。静的分割ウィンドウでは、この値は列の最大値でもあります。
とあるので、ペインが作られているかいないかに関わらず同じ値が返ります。
CSplitterWnd::GetPane() などで NULL でも返ってくれれば楽なんですが、案の定落ちました。
393370:03/01/22 02:13
>>392
× VC6 ヘルプ
○ MSDN ライブラリ
394390:03/01/22 02:21
質問の追加なんですが、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);
}
これでエディタ上(?)の文字列取得出来ていたのに自宅でビルドし直したとたん出来なくなりました。
くだらない質問ですがお手上げ状態です。どなたがアドバイスをおながいします。。
>>400
strcpy()
*(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));
>>402
リビルドしてもダメかい

>>404
君は何がしたいんだい
407デフォルトの名無しさん:03/01/23 01:01
402です。>>405沢村さんのコードで無事動作しました。ホントありがとうございました!
しかしなぜ最終行しか取得してないとおわかりになったのでしょう?

>>404 アドバイスありがとうございます。
>>406 ダメでした。わけわかりません。VCのバージョンとか同じなんですけども・・
408400:03/01/23 01:01
メッセージマップで調べてみたんですがよく分かりません。
まずは、RegisterWindowMessageで独自のメッセージを登録すればいいんでしょうか?
よろしくお願いします。
409名無し@沢村:03/01/23 01:01
>>406
ヌヒよ、君に特別に教授してあげよう。

>404のコードは
ED.GetLine(i, testline, 1024);
と同じ意味だ。

まあ、人をバカにする前にMSDN嫁ってこった。はっはっは。
>>408
どうしてメッセージマップに行くのか良くわからん……
>>401読んだ?
独自メッセージをDLLからアプリに飛ばしてメッセージのパラメータに文字列を渡すつもりじゃ
RegisterWindowMessageってアプリ間でメッセージやり取りするときに使うんじゃなかったっけ。

DLLからアプリにメッセージ投げれば済む話では?
WM_APPとかWM_USERとかそのあたりがキーワードになりそうな予感。
複数アプリでDLLの文字列を共有したいならメモリマップドファイル使うんだろうけど。

とりあえず疑問丸投げじゃなくて自分でどこまでやった(調べた)のか書いて欲しいと思った。
413400:03/01/23 02:51
説明不足で申し訳ないです。

現在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抜いて通報しますた
419レゴ:03/01/23 03:44
MFC関係なくてすいません。
MFC自体知らないんで、すみません。
こっちは、もしかしたら、場違いかもしれないと思い。
移動してみた所、マルチポストと勘違いされたみたいでした。
迷惑掛けてすみません。

fprintfを使おうと思ったんですが、エラーがいっぱい出て分かりませんでした。
fopenとfcloseは、どんな関係なんですか?
もしかして、その間のプログラムがファイルに出力されるんですか?
420レゴ:03/01/23 03:47
fprintfの使い方としては、どんな使い方をすれば、
実行結果をテキストに出力出来ますかね?
>>419
プロcなんて知らんが、男が社会の窓を開けたら閉めるのと同じじゃないのか?
閉めないと恥ずかしいだろ?
422レゴ:03/01/23 03:50
そうですね。
やってみます。
423レゴ:03/01/23 03:54
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");
>>423
ちみ面白いよ
425レゴ:03/01/23 03:57
と書き換えたんですが、fcloseでエラーが出てしまいました。
エラーが出ない様にするには、どうすれば良いですか?
426レゴ:03/01/23 04:00
C言語なら私に聞いてYO! 49
に移動します。
失礼しました。
427山崎渉:03/01/23 20:01
(^^)
428デフォルトの名無しさん:03/01/24 09:03
メニューの1部分のポップアップメニューをメニューの変わりに、
ダイアログを表示したいです。
Cmenuを継承したクラスを作ればできるのかもしれませんが、ちょっとわかりません。
Wordの下線の色を選択するメニューのようなことをしたいので、
ダイアログ使えないのであれば、別な方法でもよいのでやりかた分かる方、
ご教授お願いします。

>>428
オーナードローで書くのかな?
DrawItemとMeasureItemをオーバーライドして……
430デフォルトの名無しさん:03/01/24 13:41
431428:03/01/24 17:36
>>430
これはできてるんです、、、。


あるメニューを押したら特定のダイアログを表示するとかそういう単純な問題ではないわけね?
>>428
WM_INITMENU(だったけな?)
もしくは、
WM_INITMENUPOPUP
MCIWndCreateでmpegを再生中にマウスイベントを拾う方法を教えてください。
左クリックでデモムービー停止させたいのです。
■ VisualC++(MFC限定)相談室 MFC6.dll■
         ~~~~~~~~~
437435:03/01/25 20:01
すいません。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から順番に教えてください。
443440:03/01/25 22:45
>>441
有難うございます。
上記の「1、3」がわかりません。
よろしくお願いします。
一応yahooで検索はしたんですが・・・何も得られずという感じです。
>>442
お前には一生無理だから、あきらめて寝ろ。

>>443
まず、3 からやれ。
yahoo/google するなり、本屋/図書館 にでも行けば、VB から API (=xxxx.dll) を呼び出している例はいくらでもあるから、まずそっちをきちんと覚えること。

【要注意】
.dll 呼び出しでは、Visual Basic の多くのチェック機構が働かない。
プログラムを組んだら、まず「実行」すると痛い目にあうことが多い。
(VB 自体が異常終了することがある。)
実行の前に、必ず「保存」すること。
ツール(T) - オプション(O) の 環境 タブで、プログラムの実行時に 変更点を保存 にしておくといいぞ。
>>443
ちなみに2〜4はスレ違い。
>>438 439
・MFCでは CreateThreadじゃなく AfxBeginThread 使う
・別スレッドに CWndオブジェクトの this を渡すと、ろくなことがない
wave再生なんかでもあるスレッドでwaveオープンして再生して別のスレッドで
クローズしたりするとおかしくなるもんなあ・・・・。
>>447
いやそれはなにか根本的に違うような。
449438:03/01/26 19:38
どうもありがとうございました。
MFCは、標準のCやC++と違う機能がいっぱいで、
どこに落とし穴があるかわかんないので怖いですね。
以前もファイルを扱うとき、シリアライズを使わず
FILE*とfwrite()、fread()という旧来の方法でやってたら
おかしくなったりしたことがありましたし。
>>449
それも何か違うような。
いまだに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 というマクロが。
457453=455:03/01/28 00:56
>>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
>>461
見当違いな物を進めんな
464名無し@沢村:03/01/29 09:17
>>463
(゚Д゚)ハア?
なぜ演算子の優先順位を勉強することをおすすめするのか、ぜひ聞いてみたいもんだな(藁
466459:03/01/29 09:30
>>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
キャストされてるように見えるかね。
471sage:03/01/29 10:03
>>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のインスタンスを一元管理しているのだよ。
474459:03/01/29 10:40
>>473
MFC初めていきなりのつまづきでしたが、
質問してからいろいろ調べている間にだんだん解ってきました。
DDXを用いた場合はDoDataExchangeでその辺のことが行なわれているのでしょうね。
ありがとうございました。
475デフォルトの名無しさん:03/01/29 21:25
MFCの勉強サイトってどこが一番充実してますか
ネコでもわかる〜はMFC編は少ししか無いので・・・
>>475
何かしら簡単なもの作ってみて判らない部分があったらネットで
探すって方法がいい勉強になるよ。
初心者向けではないかもしれんが、結構いろいろと勉強になる。
http://www.bd.wakwak.com/~opapa/
478デフォルトの名無しさん:03/01/30 01:22
ダイアログベースのMFCでデフォルトでのボタンのターゲットの変更ってどうやるんですか?
479B¥:03/01/30 12:41
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なんだかよくわからんな・・・
485482:03/01/31 22:11
.NET SDKの開発用バージョンも入れてみたんですが、
だめでした・・・プログラミングの問題かなあ・・・・

__FILE__,__DATA__,__LINE__
などのように今の行がどの関数に含まれているのか
置き換えてくれるマクロはありませんか?
>>486
__FUNCDNAME__, __FUNCSIG__, __FUNCTION__
見事にあるが、ヘルプ見たか?
488487:03/01/31 23:18
む。
まさかVC++7からの新機能だったか?
>>488
VC6では無かったはず。
490486:03/02/01 01:38
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にすると生じそうな問題ってなんでしょうか?
495491:03/02/01 12:13
たびたびすいません。
現状を完結に書きますのでよろしくお願いします。

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
>>500
CWaitCursor
最近のMSDNmagazineにメッセージボックスをフックでいろいろ変えるって記事が載って気がするけど
MFCじゃないのでsage
507503:03/02/01 22:31
>>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
普通にやれ
>>510
なんのためのサンプルなのか考えれ
>510
CWnd::GetCheckedRadioButton
514495:03/02/03 08:58
>>496
IDはユニークです。コピペミスです。親子間でユニークである必要があるのかどうかはしりませんが。

どなたかMSFlexGridをウィンドウにに貼りつけた、もしくはATL等で貼りつけたことのある方はいらっしゃらないでしょうか?
MFCベースのDialogに貼ると上手くいきますが、CWndやATLのDialogに貼りつけると
カーソルキーに反応してくれません。
>>514
OnNotifyかな……
>>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
>>519
エラーの内容を。

てか、当たり前だろ。
ダイアログベースのプロジェクト。
子ダイアログのスタイルはチャイルドでタイトルバー付き。
子ダイアログにエディットボックスを配置。
親から子を表示。

こうすると、子ダイアログのエディットボックスにクリックでフォーカスを移せません。
タブ押せばフォーカスは移るし、入力も出来るのだけど…。

クリックで子ダイアログのエディットボックスにフォーカスを移せるようにするには、どうすればいいんでしょうか?
523デフォルトの名無しさん:03/02/04 22:57
ウィザードで分割プロジェクトを作成するときに
CEditViweを選択できないのはなぜでしょうか?
524デフォルトの名無しさん:03/02/04 23:45
VC6では、bitmapのサイズ、プロパティーで変更できるけど
vc++.net プロパティー開いてもサイズ変更の項目ない・・・・
netでリソースのbitmapのサイズ変更の仕方教えてたも〜
525524:03/02/04 23:57
やり方
わかったから、もういいや
>>522
なぜCHILD……?

>>523
ウィンドウ分割を使用せずにCEditViewを選択状態にして、
ステップ4まで戻って詳細設定からウィンドウ分割を選択すると理由が表示される
527523:03/02/05 00:21
ありがとうございます。
参考になりました。
しかし、CEditViewとツリービューに分割したい場合
どうすればいいのでしょうか?
>>527
生成したと自分で変更
>>527
ウィザードじゃなくて後から自力で分割するとか、
とりあえずCTreeViewで作っておいて片方をCEditViewにするとか。
530デフォルトの名無しさん:03/02/05 00:35
>>528,529
ありがとうございます。
ウィザードでサポートされていないので自力でも分割できないのかと
思ってしまいました。
531530:03/02/05 00:36
マイクロソフトのものではなく
CTreeViewのサンプルを見たいのですが、
良いものないでしょうか?
またはCTreeViewを使っている簡単なオープンソースの
フリーウェアなどはないでしょうか?
532名無し@沢村:03/02/05 00:43
>>531
ヌヒよ、ここで適当に探せば。
http://www.codeproject.com/
http://www.codeguru.com/
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()を使いなさい。
538482:03/02/05 04:01
>MFC.netとC++でGUIアプリケーションを作ったのですが、
>開発マシン上では正常に動作するのですが
>ほかのマシンの上ではウインドウがちかちかしてしまって
>正常に動作できません。
>.netの再配布パッケージを入れても同じでした。
>このような現象がおきる原因とはどんなものがありますでしょうか?

この質問をしたものです。
いろいろ調査した結果、問題は何も処理をしていないのに
onSizeが延々と呼ばれ続けることにあるようです。
そのため再描画が次々かかる模様です。
開発マシンではそのようなことはないのですが、これは
どういう理由によるものと考えられますでしょうか?
>>538
ウィルス
540482:03/02/05 04:40
すみません問題はOnsizeではなくて
OnPaintが延々と呼ばれていることでした。
OnPaint内でPostMessage(WM_SIZE)していたのです。
どうもダイアログアプリケーション内でのOnPaintの扱いが
よくわかっていないようです。
もう少し調べてみます。汚してすいません。
>>540
WM_SIZEだすとOnPaint呼ばれるというループ
542482:03/02/05 05:01
>541
ありがとうございます。
PosMessage(WM_SIZE)をやめたら
全体がチカチカするのは何とか抑えられました。

リストビューやエディットボックスはきちんと使えるのですが、
今度はコンボボックスだけがクリックしても反応させることができません。
おそらくなにか余計なメッセージがでてじゃましているのかと検討をつけているのですが・・・
現在ActiveXコントロールを開発しているのですが、
コントロール内にいくつもボタンを配置する手段で
悩んでおります。
できるものならダイアログテンプレートを使用した
いのですが、どうやってCOleControlにバインドさ
せたらいいのかわかりません。
どなたか、このあたりの手練手管に長けた方、教え
ていただけませんか?
VC6、Win2000です。
545デフォルトの名無しさん:03/02/06 16:11
>>499
>紙サイズ限定なんてイヤすぎる……

定型フォーマットの用紙に印刷したいときなどは必須ですね。
人間の操作のし忘れをウィンドウズでカバーできないというのも、
使い勝手が悪いことのひとつでしょうな。
546デフォルトの名無しさん:03/02/06 16:49
バイナリエディタ作成で質問があります。
ただ、通常のMDIのタイプと違って、ダイアログベースで作っています。
まず、タブコントロールを用意して、一つのタブにバイナリエディタ
を表示させようとしています。
別のタブには、たとえばプログラムを逆アセンブルしたリストなどを表示。

こんな感じで作っているのですが、バイナリエディタ部分は
どのクラスを使うのが最適でしょうか?
>>546
強いて挙げるならEditコントロールかな……
ルーラーもできないことはない。
単純に貼り付けるだけで実現できるようなコントロールはないと思う。

ダイアログベースというのがそもそも間違いな気がしないでもない。
548546:03/02/06 17:09
バイナリエディタだけなら、MDIとかで作ってるのがほとんどだと
思います。
だけど、今回は、バイナリエディタ以外にもいろいろと機能を
持った総合的なソフトを作ろうかと思ってるので困っています。

必須な機能としては
・タブで項目を選べること
・バイナリエディタ
・プログラムを逆アセンブルしたものを表示
・ラジオボタンで選択したり、エディットボックスに入力したり。

こんな感じなので、各機能をタブで分けて表示するのが
便利かなぁと思っているのですが。
549デフォルトの名無しさん:03/02/06 17:11
ウィザードに従ってエクスプローラ型のアプリケーションを
作成し実行しただけなのですが、
新規ファイルを開いただけでエラーが発生します。
何が悪いのでしょうか?
550549:03/02/06 17:20
追加です。

右側のviewとしてCEditViewを選択しました。
>>549
いつも思うけど、どうして質問者は「エラーが起こります」としか書かんのかねぇ?
エラーって言ってもピンからキリまであるだろうに。
>>523-529
あたりを参考にしる。

>>548
いや、タブで切り替えにしてもダイアログベースにこだわる必要は全然ないよ……
ダイアログベースでないとタブとか使えないと思ってるのかな?
いや総合的なアプリを作ろうとしてるのにそんなわけはないよな。
552449:03/02/06 22:15
>>551
失礼しました。とりあえず手動で分割したら
エラーは出なくなりました。
>>551
> >>549
> いつも思うけど、どうして質問者は「エラーが起こります」としか書かんのかねぇ?

状況把握できないほどパニクってるから。

つーか「天は自ら助く者を助く」だと漏れは思うんだけどそんな香具師は自分で解決しちゃう率が高いっぽいのであとにはカスしか残らないのでわ?
次スレ立てるならテンプレに書いておいたほうがいいな。
幼稚園児レベルにもわかるように。
今からこのスレは次スレのテンプレを考えるスレに変わりました。
ではスタート↓
初心者にVC++を教えるスレも一緒に書いておけばいいべ。
ついでにWinAPI32スレとVC++スレも。ついでにCスレとC++スレ・・・
■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc2.2ch.net/test/read.cgi/tech/1039607377/

★初心者にVisual C++を教えるスレ★ Part4
http://pc2.2ch.net/test/read.cgi/tech/1044196393/
VisualC++ 相談室【9】
http://pc2.2ch.net/test/read.cgi/tech/1036897197/
C++相談室 part15
http://pc2.2ch.net/test/read.cgi/tech/1043605481/
Windows Programing for C/C++(Not MFC)
http://pc2.2ch.net/test/read.cgi/tech/1018239290/
Win32API 質問箱 Build8
http://pc2.2ch.net/test/read.cgi/tech/1040964626/
他のサイトじゃ初心者向けと言いつつ・・・って所が多いからねえ。
せめてここでは多少の厨的な質問にも答えてやって欲しい気がしないでもない。
559139:03/02/08 01:19
わからなくもないが、
さすがに度を越えた香具師が多いしな・・・(;´Д`)
>>558
質問内容のレベルはどうでもいいんだけど、
質問の仕方を小学校で学びなおしたほうがいいヤツが大杉
561デフォルトの名無しさん:03/02/08 13:09
スレ違いかと思いますが、、、VC++6.0の新規作成の時に、
「MFC Appwizard(exe)」
と「
Win32 Application」
がありますが、基本的には前者はMFCクラスライブラリを使うことが出来て
後者はそれが使えない、という程度の違いなのでしょうか?
>>561
実際に新規作成して違いを比べてみればいいよ
それでもわからなかったら質問して
>>561
後者でも自前で設定すりゃ使えるが面倒。
Wizardってのは、あくまで手動による手間とミスを減らすためのツールに過ぎん。
564質問者:03/02/08 22:07
SDI。VC++6。
ID_FILE_SAVE_COPY_AS のハンドラを自前で用意したいのだが
デフォルトのハンドラの殺し方&オーバライドの方法がわかりません。
ふつーに CWinAppやCFrameWndの派生クラスに
ID_FILE_SAVE_COPY_ASのCommandハンドラを用意しても無反応。
どうすればよいのでしょう?
>>564
ID_FILE_SAVE_COPY_AS つかわずに自前でIDを用意する、っていうのはナシ?
566564:03/02/08 22:27
>>565
な、なるほど‥‥。
ほかに手段がなければそうするしかないですが‥‥。
そして保存するときはWM_COMMANDとID_FILE_SAVEを投げる、と。
568564:03/02/08 22:38
ああっ、やろうとしてるのは
ID_FILE_SAVE_COPY_AS じゃなくてID_FILE_SAVE_AS でした。
(表記間違い)
569564:03/02/08 22:52
>>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みたいなやつありませんか?
>>578
ない。
というか、TerminateThread使えよ
>>580
API レベルで、TerminateThread を使っていいかという議論はさておき、MFC レベルだと絶対ダメ。
582578:03/02/11 16:08
やっぱ無いのか・・・
素直にTerminateThreadつかいます

>>581
>MFC レベルだと絶対ダメ。
TerminateThread結構便利で、つい頼っちゃうんだけどまずいっすか?
ワーカースレッドならそもそも強制終了を頻繁にしなきゃならない設計に
問題があると疑った方がいいかも
584名無し@沢村:03/02/11 16:15
>>582
ヌヒよ、スレッド終了用のEventでも用意しなさい。
>>582
MFCのスレッドは扱いに気をつけませう
586578:03/02/11 20:14
いろいろサイト回って勉強してきまふ
皆さんアドバイスどうもです
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とかもダメかい?
595593:03/02/12 17:57
>>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。
604602:03/02/14 02:19
バッチファイルは考えてみたのですが、
そこで、リネームかコピーするにしても
元のexeから実行すると、それを書き換えることはできないですよね・・・
そこが悩みです
あーbatじゃまずいか。
じゃあ、別のexeを作ったら?

a.exeの中でb.exe起動 -> bはaが死ぬまで待機 -> aが死んだら書き換え
->aを起動してbは終了。

こんな感じで。
a.exeの中でb.exeをリソースとして持ってb.exeを実行時に生成
すればbも更新する事も出来る。
606602:03/02/14 03:19
>>605
ありがとうございます
姑息ですが、いけそうですね!
メッセンジャーのアップデートとか、ほかのプログラムも
やはり概ね、ほかのプロセスから制御ってのがポイントですかねーー
>>606
姑息っつーか普通はそうだと思うぞ、
b.exeとか言ってるから姑息っぽいけど普通はsetup.exeとかになるだろ
608デフォルトの名無しさん:03/02/14 09:08
CToolBarを使って、アイコンの右に文字を出したいのですが、
どーにもこーにも出せません。
codeprojectのSizableReBar_demoがアイコンの右に文字をだしているので、
ソースを追っていて、下に文字を出すところまではできたのだけど、
右に出せないのです。どーしたらいいのか教えてください。
オーナードローとかしなきゃいけないのかなぁ。
609599:03/02/14 17:36
>>600
説明不足でした
editはマルチラインです
要はVCやVBのコード補完機能のリストのように動作させたいわけです。
>>609
だからコンボボックスじゃいかんのかと。
>>609
それって重ねる必要なくない?
editの下にlistを置けば良いと思うが・・・
612デフォルトの名無しさん:03/02/14 17:46
あるプログラム(exe)が実行されているかどうか調べたり
それを終了させる方法を教えてください。
あと、任意のexeを起動させる方法教えてください
613599:03/02/14 21:25
うーん、VCのコード補完機能をそのまま真似したいだけなんですが・・・
テキストエディタでカンマが入力されると、
カレット位置に次の候補リストが表示される、と。

>>610
コンボボックスのエディット部を利用するということですか?
でもあれって1行だけですし・・・テキストエディタにはならないかと

>>611
カレット位置にリストを持っていきたいので、
どうしてもエディットボックスに重なるようになります

一番納得のいかないことは、
タブオーダーでリストを最前面にする:フォーカス当たるが描画されない
エディットボックスを最前面にする :(リストに)フォーカスはないが描画されている
コレあべこべなんじゃないかと。

リスト云々は抜きにして・・・
コントロールが二つ重なったときに、
どちらかを最前面(フォーカス、描画ともに)にするにはどうすればいいのでしょうか
同じ親ウインドウを持つ子ウインドウ同士では不可能なのでしょうか
あるいは描画の順番の問題なのかも・・・
>>613
どっちも同じ子供なんだから、片方だけ特別扱いはできないだろ。
そういう使い方するんなら、リストボックスの方を独立したポップアップウィンドウにすれ。
子ウィンドウである限り、親ウィンドウの外には出られないという制約がつくわけだし。
615名無し@沢村:03/02/15 01:14
>>608
TBSTYLE_EX_MIXEDBUTTONS
TBSTYLE_LIST
BTNS_SHOWTEXT
616612:03/02/15 02:52
少し自分で調べてがんばったのですが、
あるプロセス(というかEXE)が、実行中かどうかを調べたいのですが
APIがわかりません。API名だけでもいいのでどなたか教えてください。
617名無し@沢村:03/02/15 03:02
618612:03/02/15 03:17
>>617
ありがとうございます
しかし、、「列挙」なんて検索ワードは思いもつきませんでした。
1つ1つ比較するしかないですかー

単純に任意の「〜.exe」が実行中かどうか一発で調べられる
便利なAPIはやっぱないんですかね
あーあ、沢村の虚言を間に受けたかわいそうな人がまた一人
>>619
で、結局どこが嘘なの?
>>618
DeleteFileしてみてエラーが出たら実行中だyo!
622612:03/02/15 15:28
>>621
実行終了と同時にファイルが消えてしまうのは、いただけませんねー
623デフォルトの名無しさん:03/02/15 19:01
オナニーのやりかたがわかりません!
624デフォルトの名無しさん:03/02/16 17:36
>>623
お父さんに教えてもらいなさい
625デフォルトの名無しさん:03/02/17 18:58
MFCのダイアログエディタの使い方がよくわかりません。
どこかに詳しく載ってるサイトなどはありませんか?
書籍でもいいのですが・・・。
どうかよろしくお願いします。
MFC70で作られたプログラムを趣味で解析しているのですが、
MFC70.1432
って何の関数でしょうか。。。?

.NETを買えばすむ話なんですが。。。(^^;
BMP背景の上に別のBMPをゲームのキャラクタのように配置、移動させていくには
通常どういう手順で行っていくんでしょうか?
>>627
DirectDraw
629 :03/02/17 23:45
>625
>626
>627

あんたら使うツールを間違えてるよ。
ぶちゃけ、その程度の質問をするようではまず、使いこなすのは無理でしょう。
時間のムダだと思うよ。w 多分参考となるレスはつかないでしょう。
恥ずかしくないですか?というより、は〜ぁって感じだね。他のででつくれば・・
>>629
どこを縦読みすればいいんですか?
馬鹿を放置することを覚えて欲しい。
コンストラクタでSHGetMalloc()とSHGetDesktopFolder()を
呼び出して即Releaseしてみたら、戻り値のカウントがそれぞれ2,1と
なってて、これ以上Releaseしてもカウントが減らないんですけど
これはどういうことなんでしょうか?
この状態でアプリを終了させて問題ないということでしょうか。
633632:03/02/18 00:18
カウント逆ですた。デスクトップフォルダの方がリリース後2でした.
634デフォルトの名無しさん:03/02/18 00:28
文字を入力して、それをテキストに吐き出すプログラムなのですが、
これをWindows風にしたいのです。
しかし、私はMFC等使ったことがないのでどうすればいいのかよくわかりません。
とりあえず自分でボタンの配置は作れたのですが、そこからどうすればいいのか・・・・。
このソースで、どうやればWindows風にできますか?DOS窓ではなくWindowsにしたいのです。
よろしくお願いします。

ボタンの配置は、テキスト入力欄があって、その下に
保存。キャンセルのボタンがあるだけです。
どうかよろしくお願いします。
635634:03/02/18 00:28
ソースはこれです。
#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について小一時間調べて。
637:03/02/18 00:44
>636
いやいや、それだけ調べたってどうにもならないでしょう。

>635
VC6なのか.NETなのか書いてないのでなんともいえないが、
6なら新規作成からAppWizardで
MFCアプリケーションを作成する。
もちろんダイアログ。
途中で聞かれると思う。
んでリソースエディタ上でエディットボックスと保存ボタンを配置。
キャンセルボタンは初めからあったと思う。
んで配置した保存ボタンをダブルクリックすると
自動でコード書くところに飛ぶのでそこにそのコードを貼り付ける。
>printf("ファイルをオープンできませんでした。\n");
はMessageBox("ファイルをオープンできませんでした。");
に変更すること。これで動くんじゃない?
VC6手元にないし無責任だけどw
あと、returen 0;もいらない。
638634:03/02/18 00:49
>>637
適切で丁寧なご回答ありがとうございます。
使っているのはVisualStudio.NET2002内のVisualC++7.0です。
今からそれをヒントに自分でがんばってみます。

>あと、returen 0;もいらない。
これはMFCだからいらないという意味ですか?
それともreturn 0;を書かなくてもmain関数には自動的に0で認識されるから
いらないと言ってるのです?
便乗質問すいませんがよろしくお願いします。
639:03/02/18 01:29
>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と無関係だからスレ違い
643634:03/02/18 16:04
みなさん本当にどうもありがとうございました。
特に>>639氏、本当に感謝です。
ありがとうございました。
>640
>641
VisualStudioを使ってるのですが、VisualStudioに関する書籍は売ってないんですよ。
MFCの本も近所には売ってないし・・・
VisualStudioを使ってる…?
VisualStudioってのはMSOfficeと同じように複数のソフトの集合体だよ?
主なものはVC++とVB。
そのうちのVC++なんだからVC++の本でいいんだってば。
あとMFCの本は本屋なんかで買っちゃロクなもんない。
お薦め本のスレがあるからそこ行って聞いて来てオンラインショッピングで買いなさい。
amazonあたりが無難でしょ。
646634:03/02/18 16:17
>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のアイテムの高さを動的に変えたいんだけどどうすればよいですか?
651634:03/02/18 17:53
なんどもすいません。
実は、私はCしか使えないので、C++は読めないんです。
でも、デフォルトのままだとすべてがC++で書かれてますよね?
そのような場合はどう対処したらいいのでしょうか?
>>635のソースをC++としたらコンパイルできないじゃないですか。
どうしたらいいのですか?
よろしくお願いします。
652 :03/02/18 17:59
激しくスレ違い。
>>651
とりあえずスレタイ10回くらい読み直してから
参考書見てMFCって言葉の意味を理解してから出直してきてくれ。
654634:03/02/18 18:28
そうですか・・・
じゃあ最後にこれだけ教えてください。
MFCはC++ができなくてもCだけで使えますか?
>>654
それすらわからないってことはCも使えないんじゃないですか?
656634:03/02/18 18:33
>655
入門本より少し技術があるって程度です。
ネタは放置すること。
ネタじゃなくてもネタ相当の書き込みは放置すること。
658634:03/02/18 18:48
>657
ネタじゃありません。
最初にも書いたとおり私はMFCを使うのが初めてで、
本もなく困ってるんです。
絶対にネタではありません。
659 :03/02/18 18:49
まあ、ある程度のことははっきりさせておいてあげないと
いつまでもこのスレに未練を持っちゃうだろ。

>>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を関連づけても、同様の結果になってしまいました。
リッチエディットコントロールでの複数言語の扱いはどうなっているんでしょうか。
668667:03/02/18 23:14
すいません、上の文章のGetSel()はSetSel()のまちがいです。
669デフォルトの名無しさん:03/02/19 16:40
MFC の CHttpFile でRead(void * lpBuf, UINT nCount)関数を使おうと思ったのですが
lpBuf のバッファの確保の仕方がわかりません。どうやったら確保できるのでしょうか。
普通にローカルで確保すりゃいいと思うが…
newでやってもいいし、サンプル見たいならgoogleで「CHttpFile Read」とでも
やればすぐ出てくるし、何を難しく考えることがあろうか。
671 :03/02/19 17:10
つか、もっと基本的な勉強をしろってこったな。
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でやってるのかと小一時間・・・
677667:03/02/19 19:33
>>675
リッチエディットは最初からCRichEditCtrlがありますよ。
でもリッチエディットのメッセージを拾うのは、最初わからなくて私も苦労しました。
デフォルトではメッセージを送らないようになっているので、
このクラスのSetEventMask()で使うメッセージのマスクを設定する必要があります。
また、初期化系の関数でAfxInitRichEdit()を使うのも忘れないでください。
678672:03/02/19 19:59
ソースと違いましたわ。
教えてください(笑。
>>672
図がわからん。モナ板でAAの練習してこい。673の説明もわからん。
AAを作る上で重要なのは、
・フォントはMSPゴシック12pを基準としている
・行頭の半角スペースは無視される
・半角スペースが2つ以上連続すると1として数えられる
ということだ。
680672:03/02/19 20:32
>>679さん

ご指導ありがとうございます。
図は下記のようなものです。
隙間はつなげて、四角の中でやってると思ってください。

-----------
|  |  |  | 
|  |  |  |
|  |-------
|  |     |
|  |     |
-----------

図がわからん (w
-----------
|  |  |  | 
|  |  |  |
|  |-------   バーカ
|  | ◎ ◎.|
|  |  ー  |
-----------
684675:03/02/19 21:29
>>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引数で入れたいビューを指定してやれば
それぞれの分割された窓枠で各ビューの処理ができる。
689669:03/02/20 09:25
ありがとうございました。いろいろサンプルがありました。
どうやら確保するサイズ[]が抜けていたようです。
690672:03/02/21 11:15
>>685 さん

どうもありがとうございます!
うあってみましたが、最終的な分割になりませんでした。
たぶん、私が値を返すのが間違えてるんだと思いますので、
いろいろ調べてみます。
691672:03/02/21 11:28
>>690

×:うあって
○:やって
692デフォルトの名無しさん:03/02/21 22:18
お聞きしたいのですが、
Editボックスで右クリックでメニューを出すよう実装したいのですが、
それとEditのデフォルトカラー(背景と文字)を変更したいのですが、
なにか簡単な方法はないですか?
CEditから派生させりゃもう好き放題に
694672:03/02/21 23:45
>>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起動時にログを取りたいのですが
どうやれば起動時にプログラムが実行されるでしょうか?
スタートアップに入れたのですが駄目でした。
696初心者:03/02/22 20:31
練習
697デフォルトの名無しさん:03/02/22 20:50
VisualC++を始めようと思っているのですが
今、使用しているOSはMEです
VisualC++6.0とVisualC+が+netの違いを教えてください。
初心者にとっては、OSの事を考えて旧バージョンのほうが
無難でしょうか
よろしくお願いします。
>697
VC++.Net は2000/XPにしか入らないよ。
無難もなにも必要システム見りゃ質問するまでも無いと思うが。
http://www.microsoft.com/japan/msdn/vstudio/productinfo/sysreq.asp
VisualC++6.0はもう売ってないだろ
http://www.microsoft.com/japan/msdn/vs_previous/vstudio/
701デフォルトの名無しさん:03/02/22 21:20
netは2000/XPにしか入らないのはわかっています。
初心者がOSを替えてまでnetを購入するのがいいのか
旧6を探して勉強するのいいのかの質問でしたが。
>>701
初心者が9x系でプログラミングするのを勧めるほど
このスレは悪意に満ちていません
つーか本人のやる気の問題までめんどう見切れるかよ。
技術的な質問しろ。
704:03/02/22 23:54
>スタートアップに入れたのですが駄目でした。
どういう風に駄目だったのか詳細かいてね
おまいら!
インストール時にXPservice pack1のディスクを入れろと言われるんだが、どうしたらいいのですか?
そんなディスク持ってません・・・
706705:03/02/23 00:04
ちなみに、今日買ったばっかです。
OSはXP.
たぶんですまんがc:\tte
708705:03/02/23 01:31
>>707
おいらへですか?
709デフォルトの名無しさん:03/02/23 02:02
>>705
月曜になったら、MSに注文しろ。
710705:03/02/23 02:06
>>709
買うのか?
711デフォルトの名無しさん:03/02/24 03:13
StretchBltで白黒のビットマップを縮小表示する際、白い線画の部分が潰れてしまい、真っ黒な表示になってしまいます
SetStretchBltModeでモードを選ばないと駄目だと言われたのですが、これはどうやって使うのでしょうか?
ヘルプみてもいまいちわからず…

>>711
せめて何がどうわからないのか説明すること。
>>705-706
パソコン初心者板へゴー
http://pc2.2ch.net/pcqa/
>>711
何故ヘルプを見てもわからないの?

伸縮モード
WHITEONBLACK 白優先
BLACKONWHITE 黒優先
HALFTONE 中間色(ディザリング?)
COLORONCOLOR 計算せずに単純に間引く
ヘルプは見るもんじゃない。読むもんだ。
日本語が分からない半島人は大変ですね
717715:03/02/24 16:47
>>716
まったくだ。
すみません2つほど質問があります

CDialogウィンドウ上からCFrameWndを
Create関数を呼び出して作成したのですが例外が多発してしまいます
対処法ありますか?

それとCDialogウィンドウにCStatusBarを作成したのですが
全く表示されませんけど仕様ですか?
(CFrameWndなら当然問題無く表示されます)
>>718
そもそもフレームにダイアログ表示すればいいのでは?
何をやりたいんだろうか。
CFormView使えばいいと思うんだが。

> 全く表示されませんけど仕様ですか?
あなたのバグです。
しかるべき手順を踏めば表示されます。
例外って何?
例外エラーだろ。

このスレもそろそろおしまいか・・・
723デフォルトの名無しさん:03/02/24 23:39
CListCtrl で GetItem したいのですが、あらかじめ取得する文字列の長さがわからないと
エラーになってしまうと思うのですが、文字列長を取得する方法はありますか?
>>723
テキストだけならGetItemTextを使えばいいと思われ。
>723
文字列取りたいなら GetItemText 使え
726723:03/02/25 02:29
うぅ。サンクス。
メンバー関数が多すぎて見逃してますた。
>>722
いやそれくらいはわかるんだけど……
どんな例外かな、と。
>>727
釣りですか?w
>>728
はい。
プつれた
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では移動させてからだと座標がまちまちになってしまうのです。
737732:03/02/27 20:21
>>733
返答有難うございます。
実際、 OnHScroll や OnVScroll が呼ばれるのですが、
スクロール処理はスクロール処理として扱いたいのです。

「OnHScroll等がホイール操作によって呼ばれた」と判断可能なのでしたら、
その方法も有りかとは思うのですが、そういった事は可能なのでしょうか。。。

> 拡大縮小かな?
その通りです。
お絵かきソフトを作成しています。

>>736
> CEditから派生させたクラスからダイアログのメンバを実行するのは
それって例えば
((CDialog*)GetParent())->・・・
みたいな事ですか?
738デフォルトの名無しさん:03/02/27 21:15
CBitmapに格納されている画像の一部を切り取って取得するにはどうするのですか。
739デフォルトの名無しさん:03/02/28 01:08
教えてください。DLLファイルを読み込んでそのハンドルは所得できているのに
クラス内の関数にアクセスする方法がわかりません。というか関数の先頭ポインタがわかれば
いいんですけど。newしてインスタンス化してもポインタを捕れないのは何ででしょうか?

ひょっとして訳わからないこと言ってますでしょうか?
>>737
スクロールバーを自作する。
>>739
単にエクスポートされてないだけとか?

>>738
BitBlt
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でやってるんだけど、これって普通?
746744:03/02/28 18:45
もう一つ。デフォルト(起動時に選択されている)フォントを放り込むにはどうするのでしょうか?
>>745はViewのOnDestroyって意味です
>>744
MSDN読めよ……
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
教えてください。
スクロールバーでスクロールバーの三角印をところをクリックすると
イベントが発生するのですが、スクロールをスライドしてもイベントが発生しません
どうしてなのでしょう。
>>751
何のイベントやねん
スクロールバーの範囲とかは適切に設定してるのか?
754744:03/03/01 20:01
>>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
テキストファイルの途中に文字列を追加(または置換)する簡単な方法を教えてください。
>>762スレ違い
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のどのアドレスに何の関数があるのか知ってる香具師なんか
ここにいるわけねーだろ。いたらリバースエンジニアリングで犯罪だぞ。
767:03/03/03 02:47
>764
MFCのどの関数でなぜ落ちたのか、という発想ではなく、
アプリケーションでなにをしたから
MFC内で落ちることになったのか、
という風に発想を転換した方がいいんじゃないでしょうか?
>>782
そういう場合、普通デバッグモードを駆使して原因を突き止めるものだが。

>「UpdateFrameCounts」って何もんなんだろう?
\MFC\SRC\DOCCORE.CPP
を読めばわかる。
可視状態のCViewをカウントし
CFrameWnd::m_nWindowを更新するための関数みたいだな。
769デフォルトの名無しさん:03/03/03 11:12
ある独自の拡張子を持つファイルに、それをダブルクリックすると
任意のEXEを起動するための関連付けをしたいのですが、
いい資料が見つかりません。レジストリを操作するところまでは
わかったのですが。

すいませんが、どなたかコードか、参考URLをお持ちでしたら
ご教授ください

操作すんなよ。参照しれ。
ん?
アプリで関連付けをしたいのか?
それとも関連付けられたアプリを起動したいのか?
>769

すぐ見つかるが
773 :03/03/03 14:12
VC++、MFCで作成したいがやり方がわからないのが3つあります。
ご存知の方、教えてください。
1はよく使われると思うので、VC++の機能であるような気がしますが、
googleしてもわかりません。


1.PCのデスクトップを頂上とし、そのPCの階層フォルダ(?)を表示することが
 できるようなツリー

2. 1で選択したフォルダ内のファイルを全部表示させるもの
 (サイズ、種類、更新日時も表示)

3. アクセス履歴を表示するもの
774773:03/03/03 15:47
追記:VC++6.0を使用して作成します。
>>773
VC++の機能にそんなものはない。

ま、がんばれや(´ー`)y~~
776773:03/03/03 16:09
1は、エクスプローラ風にパソコン内のディレクトリを
ツリーで表示するもののことです。
「〜もの」というからきっとそれ用のコントロールやコンポーネントを期待してる
んだろうがMFCには無いぞ。
1はフォルダ選択ダイアログがあるがWin32APIだ。
>>777 ツリービューだろアフォ。
780デフォルトの名無しさん:03/03/03 17:07
>>778
自動的にフォルダツリー表示してくれるかよアフォ。
782:03/03/03 21:15
ttp://f6.aaacafe.ne.jp/~nich/phpup/upload.php

Reg
ってファイル。
昔書いたやつ。
今見てもなんのことかさっぱりさっぱり。
レジストリに書き出したらもともと登録してあった
拡張子をiniに書き出して、復元時にiniから読み出して
元に戻す関数なようなきがする。
たぶん「IDS〜」ってやつは
レジストリに書き込むキーの名前を決めて
格納していたんだと思う。
なお、かなり前のやつなので参考程度にしかならないと思ってくれ。
んで、落としたら消してくれ。
パスは123
783769:03/03/04 00:37
>>770
>>771
アプリを起動するのではありません(それはShellExecuteですよね)
新たな関連付けの定義をしたいのです。

>>783
レジストリ操作するとこまでわかったならレジストリ系APIで登録すればいいんじゃ?
MFCな話題でもないような気がするんだけど・・・
785:03/03/04 00:58
>769 >783
あぁ、宛先忘れてたよ。
>782はあなた充て。

>782は新たな関連付けを定義する関数。
既に定義されていたら入れ替える。
見てみたら形つかめると思うよ。
>>766
失礼しました。ちょっと書き方がうかつでした。
自分が担当を引き継いだアプリがお客様先で落ちてしまい、
開発環境で再現しないのでログからなんとかしようとしてた次第です。

>>767
ええ、そうなんですがフォールトしたスレッドの情報が少なすぎて
どこから落ちたMFCをcallしたかもわからないんです。

>>768
情報ありがとうございます。
再現しないので開発環境でつきとめれないんですよね・・・。

やはり、お客様先で落ちたときにもっと情報とれるように
するしかなさそうですね。その方法を調べてみます。
787質問:03/03/04 05:22
質問です。

いま、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' がシンタックスエラーを起こしました
って書いてあるじゃん。
そこが問題。
789\:03/03/04 10:06
左右2つにわった分割ウィンドウに、それぞれ別のダイアログを
表示したいのですが、どうすればいいのでしょうか?

分割ウィンドウは過去スレであったので、できたのですが、
まだ一つのダイアログしか作成したことないので、わかりません。

IDD_DIALOG1、IDD_DIALOG1という2つのダイアログを作成した場合で
教えてください。
>>789
>左右2つにわった分割ウィンドウに、それぞれ別のダイアログを
>表示したいのですが、どうすればいいのでしょうか?
CFormView派生クラス使ってるなら、もう一個CFormView派生クラスを作ればよろし。
791789:03/03/04 10:14
MFCで作成しています。
792789:03/03/04 10:23
MDIです。
793789:03/03/04 10:38
たぶん
CreateView(〜View)
とすればいいのだと思うんですが、
IDD_Dlg1,2を〜Viewにする(?)には
どうすればいいのかがわかりません。
>>793
意味がわかりません
795789:03/03/04 16:02
>>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) → エラーで落ちる

という状態になってしまい、原因が特定できません。
何か有効なデバッグ方法があれば教えて下さい。
804803:03/03/06 12:38
解決しました。スマソ。
805デフォルトの名無しさん:03/03/06 13:03
testDlg.cppで
namespace 以下のヘッダーを読めば良かったのか...。
>>801,2 さんありがとうございました。
すみません
スクロールバーのつまみの部分(マウスの左ボタンを押しながら上下に移動するもの)の
大きさってどうやって変えるんでしょうか?
>>806
レンジを指定すればそれに応じて変わるけど。
>>806
SetScrollInfo
あと、あれの名前はサムと呼んでくれ
809デフォルトの名無しさん:03/03/07 03:57
Cと、VC++の入門書を、一通り読みました。
次からはどうやって勉強していけばいいんでしょう?
>>809
専門書
詳細は推薦図書スレへ
>>809
普通になんか作る。
812806:03/03/07 04:40
レスサンクス
MSDNでよーく調べてみまふ
813デフォルトの名無しさん:03/03/07 13:24
ダイアログで、OKとCancelというボタンがあるとします。
OKを押すとある処理を行って終了するのですが、
その処理中にOKを押すと、処理が終わったらまたすぐに
処理が始まってしまいます。
処理中はマウスクリックを無効にしたり、マウッスクリク情報をクリア
したりすることが出来ないでしょうか。

(処理中のOKボタンをグレーにしても、処理中にボタンを押すと
処理が終わって元に戻したらクリックされたことになってすぐに
処理が始まってしまいます)
    _, ._
  ( ゜ Д゜)
815デフォルトの名無しさん:03/03/07 15:23

ループ処理の間、メッセージポンプを動かすために CWinApp::Run() を勝手に
呼んでいいのでしょうか?
816815:03/03/07 15:46
訂正。

MFCにおいてループ処理の間、メッセージポンプするために
PeekMessage、TranslateMessage、DispatchMessage
を自前で呼ぶのは、合法なのでしょうか?
べつにいいんでないの。
俺ならスレッド作ってそっちで処理するけどね。
>>816
CRectTracker::TrackHandle()でGetMessage(), DispatchMessage()
使ってるからいいんだろ、
819815:03/03/07 17:33
>817-818
どうも。実際やってみましたけど、終了処理をきちんと書けば大丈夫みたいです
ね。別スレッド化は真っ先に考えましたが、かなりややこしい修正が必要で...
820デフォルトの名無しさん:03/03/07 17:46
813
プログラム立ち上げ時に変数 hoge を 0 で初期化。
ボタンが押されると変数 hoge を 1 に設定。
処理が終わると変数 hoge を0 に設定。
変数 hoge が1の間はボタンクリックを無視する。
こうすれば2度押ししても効果が現れないはず。
>>813の処理は明らかに時間がかかる処理みたいなので
俺なら別スレッドで処理してその間はボタンをEnableWindow(FALSE)するな。
>>813
ボタンを一時的に消すとか。
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
メニューバーの色って変えれますか?
それから、ダイアログって半透明になりますか?
>>827
できます。
>>827
メニューバーの色は自前で実装すれば変えられる。
半透明に関しては↓(Win2000以降だけの気がするが……)
http://www.google.com/search?hl=ja&ie=UTF-8&oe=utf-8&q=%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0+%E5%8D%8A%E9%80%8F%E6%98%8E+MFC&btnG=Google+%E6%A4%9C%E7%B4%A2
ダイアログボックスとドキュメントクラスでデータ交換をするのが面倒なので、
ドキュメントクラスにダイアログボックスを変数として持たせようと思っているのですが
こういうのはルール違反なんでしょうか?なんか抵抗があるのですが…
>>823-826
最近どこかで同じ問題を見たような気がする。
たとえEnableWindow(FALSE)しといてもボタンを連打されると
駄目(ボタン押下のメッセージが来てしまう)なので
結局は>>820-821みたいに対処しないといけないって結論じゃなかったかな。
>>825氏には残念なお知らせだが…
832デフォルトの名無しさん:03/03/09 16:32
だから、メッセージループまわしていないのなら、
メッセージ自体、飛んでくるわけ無いでしょ。
ウィンドウズのアーキテクチャ、基本から勉強したほうが良いよ。
833デフォルトの名無しさん:03/03/09 16:33
EnableWindow(FALSE)の存在意義がなくなってしまうな。
>>833
そりゃ使い方が悪いだけだろ
>>834
禿同
存在意義は十分にあると思う

>>832
メッセージループをまわしてなくてもメッセージは飛んできます。
処理されないだけ。
836デフォルトの名無しさん:03/03/09 17:56
>>OKを押すとある処理を行って終了するのですが、

そのまま終了するのなら2度とOKボタンを押せないように
なにかインターフェイスを考えるべきでは。
たとえば処理の最初にプログレスバー付きの終了ウィンドウのようなものを表示するとか。
837デフォルトの名無しさん:03/03/09 17:59
メッセージが来たら処理するのは自分だろ。
来るとしたら、処理が終わってメインループが回りだしたら。
メッセージキューに溜まることを飛んでくると勘違いしているだろ。
838833:03/03/09 18:01
>>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)とかはな。
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/<先生!こんなのがありました!
 _ / /   /   \___________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/shinagawa/
844デフォルトの名無しさん:03/03/09 19:45
C++やVBなどでGUIアプリを作成する場合
とうぜん画面設計がありますよね?
皆さんは画面設計について何か参考にされているものってあり
ますか?
参考書や他のアプリを参考にするとか?
ボタンの配置1つとっても考えると難しいものですよね?
画面設計について参考になるサイトや書籍等ありましたら
教えてください。

846デフォルトの名無しさん:03/03/09 20:32
827ですが、
メニューバーを自前で実装とはどうするのでしょうか?
848831:03/03/10 01:16
>>832-842
ありゃりゃ?こんなに紛糾するとは。
コード書きながらやってるわけじゃないから自信なくなってきたよ。
こういうケースが問題だったと思うんだけど?

(1)メッセージ(WM_COMMANDだったかWM_LBUTTONDOWNだったか?)
 がキューにポストされる
(2)連打したのでもう一個メッセージがキューにポストされる
(3)(1)でポストされたメッセージがメッセージループで取り込まれて
 処理開始。
(4)EnableWindow(FALSE)を実行。これ以後はメッセージをポストできない。
(5)(1)のメッセージの処理終了
(6)(2)でポストされたメッセージの処理開始…
どうもFrameとViewの関係(挙動)がいまいち把握できないんで
SDI使わずDialogでやってる、特に問題ないし
850アイパー:03/03/10 05:30
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 に文字列を入れているようだから、
この文字列が空白行かどうか調べて、次の動作を行うか、
やめるか決めればよいのでは。
852813:03/03/10 13:25
813です。
みなさん、色々アドバイスありがとうございました。
結局、メッセージキューに残っている余分なクリックを
削除(退避)させるということでけtyちゃっくしました。
お忙しい中ほんとに色々ありがとうございました、。
853デフォルトの名無しさん:03/03/10 14:44
>>652
EnableWindow()をうまく使えばそんなトリッキーなことしなくて済むのに。
っていうか、ずっとそんな綱渡り的処置でずっとアプリ組んでいくつもり?
>>848
(1)と(2)の間にEnableWindow(FALSE)すれば済んじゃうこと。

以上、言ってみるテストでした。
>>853
やってから言ってね。
855デフォルトの名無しさん:03/03/10 14:56
ボタンでスペースを押してから
スペースを離さずエンターを押してスペースを離すと
ボタンが二回押されたようになるのですが
どうして回避したら言いのでしょうか?
856デフォルトの名無しさん:03/03/10 15:02
超初心者です。
VisualC++.netをつかってるんですけど、
本屋には6.0の解説本しかなく、それで勉強しています。
6.0と.netでは、クラスウィザードの表示の仕方が違うらしく、
全然わかりません・
例えばSDKのプロジェクトに、OnLButtonDown関数を
追加するときはどうすればいいんでしょう?
>>856
ヘルプ読んでください。
>>856
amazonででも.netの入門書買ってください。
859813:03/03/10 16:47
>>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です。
コードおかしいですか?
簡単なコードだとおもうんですが わかっていないので
きちっと動くように直していただけたら助かります
お願いします。
>>862
自力でなんとかしろ。
これじゃPGですらないねw
>ForceLastBackslash()
チョトワラタ
(´-`).。oO(誰だよ、このスレに誘導したヤシは…)

http://pc.2ch.net/test/read.cgi/prog/1038361129/850-
867デフォルトの名無しさん:03/03/10 17:46
ADOでパラメタクエリは可能ですか?
868デフォルトの名無しさん:03/03/10 17:48
>>867
可能














                                かのう?
>>862
ナニがしたいのかよーわーらんが、
普通
char *sPath;
それと
"c:\\ttt"

とにかくWarning最大限にしてすべての警告つぶすように。ガンガレ
870デフォルトの名無しさん:03/03/10 17:50
>>862
Cの独習書をやり遂げるまで出社しないほうがいいと思う。
>>862
おまえ、たぶん何やってもダメだよ。
872駆け出しPG:03/03/10 17:53
すんませんVB厨だったんですが
ちょっと危機を感じてきてるんで
勉強してみようかなあと

ボロカスに言われるのは覚悟した上での
質問ですーだれか親切な人いないかな
873駆け出しPG:03/03/10 17:54
>>869
ありがとうございます。やってみます
誘導されたから来たじゃなくスレタイよく読んだほうがいいよ。
875駆け出しPG:03/03/10 17:58
すいませんでした
878デフォルトの名無しさん:03/03/10 18:05
>>872
>だれか親切な人いないかな

(゚Д゚)ハァ?
879駆け出しPG:03/03/10 18:09
>>876
>>877
ありがとうございます。

>>878 気に触ったのなら謝ります
すいません

 
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
おいおいおいおいおいおいおいおいおいおいおいおいおい
>>885
あんたの適応能力なんてシラネーヨ
888デフォルトの名無しさん:03/03/11 12:06
ここはDQNの巣窟ですか?
だいたいレス読んでれば、どんなアホがいるのかすぐわかるよ。
>>889
アホハッケン
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 の中を検索したのですが、見つかりません。
どこからコピーするのでしょう?
>>893
WTL落として来い
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
C++ .NET用の入門書として
何かいいものあれば教えてくれませんか?

http://www.amazon.co.jp/exec/obidos/ASIN/479731768X/qid=1047397176/sr=1-1/ref=sr_1_2_1/249-5797932-5526724
を本屋でパラパラ見た限りでは、あまり使えなさそうでした。
用途は新入社員用の入門テキストです。
VC6用の本なら山ほどあるんですけどね。
>>903
オマエが書いて教えろ
>>903
マルチうぜぇ
>>905
マルチうぜぇ
>>898
GetSystemMetrics(忘れた)
908デフォルトの名無しさん:03/03/13 13:01
CListCtrl のヘッダの部分を消すにはどうすればいいですか?
909デフォルトの名無しさん:03/03/13 13:54
>>908
LVS_NOCOLUMNHEADER
910デフォルトの名無しさん:03/03/13 14:24
>>909

ありがと
すみません
とある理由でウィンドウの最小化ボタンが押されても
そのウィンドウを最小化せずに別の動作を行わせたいのですが

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++標準ライブラリにあるわけだが。
>>921
uniに変換して使うのか??
>>922
std::wstringは中に入ってる文字列のエンコードは気にしないから自分の勝手だろ。
CStringはUnicode環境ではUnicodeとして使えるヨ
そこっ、サロゲートペアとか言うな!
質問者のレベルから見て、Shift-JISが処理できりゃいいんでないの。
わざわざUTF-16なんか持ち出して込んでもいいべよ。
おまえその単語使いたかっただけちゃうんかと。
サロゲートペア〜
サロゲートペア〜
928デフォルトの名無しさん:03/03/14 19:55
CSplitterWnd つかうと出てくるバーを消す方法ありますか?
(´-`).。oO(分割ウィンドウの意味がないような……)
930928:03/03/15 00:21
>>929

+----------------------+
|                 |
|                 |  ←A
+----------------------+
|                 |
|                 |  ←B
+----------------------+
|                 |
|                 |  ←C
+----------------------+

のA,B,Cともに別のviewを表示したいんだが
非表示のスプリッタ使えばいいかと思ったんだけど・・・

もっと簡単な方法ありますか?
意味がわからんな・・・スクロールバーの事でもないんだろ?
たぶん、FRAMEBORDER=no みたいにしたいんだろ。
933928:03/03/15 01:15
AとCは縦サイズ固定のview
BはListCtrl
>>930
>>A,B,Cともに別のviewを表示したい
???
そんな風に3つに分割したいんでしょう?
だったらCSplitterWndでまずA, Xに分割して
さらにXをB, Cに分割すればいいんじゃ・・・?

よー分からんけど↓あたりにあなたのやりたいこと載ってないかねぇ
ttp://www7.big.or.jp/~hina/zidney/programing/sample/splitwindow/
ttp://www.kumei.ne.jp/c_lang/
935デフォルトの名無しさん:03/03/15 01:20
やべ、途中だ。

何がやりたいかというと
上から数行と下から数行が固定で中はスクロールする
GRIDを作りたいのです。

なのでListCtrlを持つViewを3つ作って
張り合わせれば良いかと思ったのですが・・・
936928:03/03/15 01:21
>>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
了解しました。
>>939
ダイアログバーで実装したらどうよ?
941915:03/03/15 03:48
>>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つのビューオブジェクトに複数のドキュメントを重ねて描くことはできますか?
スプリッターウィンドウみたいなのではなく、重ねて描きたいのですが…
>>946
直感的に無理と見た。
or で転送したら?
949946:03/03/16 02:03
うーん。無理なのかな?
>>948
ORで転送というコードは何処から呼び出すのでしょう?
片方はビットマップに描画して転送……だな
951デフォルトの名無しさん:03/03/16 04:00
質問なのですが
ある拡張子に対してアプリケーションを関連付けるのは
レジストリ設定でできますが、任意のアイコンを割り付けるには
どうしたらよいのでしょうか?

ご教授ください、よろしくお願いします。

スレ違いですが…
今までずっと疑問に思っていたのですが、1ピクセルを描画する関数は無いんでしょうか?
>>952
念のため通報しました。
954943  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 );
956943  :03/03/16 09:59
>>955
おおおーー!
できました。ありがとうございました!!
957デフォルトの名無しさん:03/03/16 13:45
ひとつのピクセルにRGBを指定して表示する関数って何かありますでしょうか?
958大亮 ◆TRIPPERJCo :03/03/16 13:46
宣伝書き込みーですー。
2ちゃんねるっぽい、2ちゃんねるに似た、2ちゃんねるのようなの作りましたー
板がいろいろあります、、、過疎板も。。
http://zeta.ns.tc/
どうかな?
いいかな?
959957:03/03/16 14:22
952とかぶっちゃいましたが別人です。
あると便利な関数だと思うんだけど。
>>957
SetPixel ?
961957:03/03/16 14:40
>>960
そう!それを知りたかったです。
ありがと
962デフォルトの名無しさん:03/03/16 16:05
質問なのですが
ある拡張子に対してアプリケーションを関連付けるのは
レジストリ設定でできますが、任意のアイコンを割り付けるには
どうしたらよいのでしょうか?

ご教授ください、よろしくお願いします。
>>962
マルチUzeeeeeeeeeeee!!!!!!!!!!!!!!!!!11111111111111111
>>962
正直言って、

> ある拡張子に対してアプリケーションを関連付けるのは
> レジストリ設定でできますが、

と言ってる奴が、

> 任意のアイコンを割り付けるにはどうしたらよいのでしょうか?

なんて言うわけないと思う。

ネタとしか思えん。
965デフォルトの名無しさん:03/03/17 00:05
ビデオの描画デバイスから描画される予定(された)モニターに映るはずの画像情報を取得する方法はありますか?
>>965
・写真をとる。
・自分で見て覚える。
>>965
・ダビング
正直、つまらない
ネタを考えられる人 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>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も消え去るんでないのか
974972:03/03/17 18:52
thanx!>>973
975デフォルトの名無しさん:03/03/17 20:30
ADO-MFCでパラメタクエリーする場合、
C++のバリアントはどう記述するのか教えて下さい。
976975:03/03/17 20:33
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);
977975:03/03/17 21:03
もしかして、ADOって、一旦UNICODEにキャストしないと文字を格納出来ないんでしょうか?
978VC++質問スレ無くなったのかな?:03/03/17 21:20
ダイアログのフォント変えてからGetCurrentObject使って
取得するとデフォルト(system,12p)のフォント取得しちゃうんだけどなんで?
979デフォルトの名無しさん:03/03/17 22:10
TRUEのときにボタンが押せて、FALSEなら押せないようにしたいんですが、ボタンを押せないようにするのはどうすればよいのですか?
>>979
・ボタンを無効化する。
・ボタンを消す。
・ボタンが押された時の動作で、FALSE なら何もしないようにする。
981979:03/03/17 22:19
無効化したいんですが、どうすれば無効化できるのですか?
>>981
EnableWindow()
984981:03/03/17 22:55
>>982
ありがとうございました
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が印刷されちゃいますよね。
それを隠す方法があれば、ご教授ください

よろしくお願いします
988985:03/03/18 02:31
>>986
もちろん読みましたが、>985については書いてないと思います。
そういえば書き忘れてましたが、CSplitterWnd を使うのではなくて、
複数のフレームウインドウにそれぞれ違うクラスのビューを表示する方法です。
例えばドキュメントとしてテキスト文書を持っていて、
一方のビューは横書きで、一方のビューでは縦書きで表示するような感じです。
スレがピンチですがもう一度お願いします。
989名無し@沢村:03/03/18 03:40
>>988
CMDIChildWnd::Create()に渡すCCreateContext*型の引数を自分なりに考える。
MSDN読んでもわからんなら正直救いようがないというか。。。
991985:03/03/18 07:45
CCreateContext の説明から ViewEx のサンプルに辿り着いて、
その中で AddDocTemplate() を複数呼んでいる事を知りました。
その後は CDocument::GetFirstDocTemplatePosition() などで CDocTemplate
を取得して、CDocTemplate::OpenDocumentFile(NULL) で大体望み通りのことが出来ました。

>>990
プログラマーズガイド以下とテクニカルノートはかなり調べたつもりだったのですが、
リファレンスの方までは調べきれていませんでした。
言い訳するつもりはありませんが、ドキュメント&ビューの項目で
説明していて欲しかったと思いました。

ともあれ夜遅くにどうも有り難うございました。
992デフォルトの名無しさん:03/03/18 10:07
■ VisualC++(MFC限定)相談室 MFC7.dll■
http://pc2.2ch.net/test/read.cgi/tech/1047949606/

新スレ移行よろ
993デフォルトの名無しさん:03/03/18 10:07
1000?
994デフォルトの名無しさん:03/03/18 14:48
うめあげ
1000取っていいですか?
100?
998デフォルトの名無しさん:03/03/18 15:17
>>997
100かよ!
999デフォルトの名無しさん:03/03/18 15:17
999
1000デフォルトの名無しさん:03/03/18 15:18

   | \ダダダダダダ誰モイイネエエエアアアエエエエエエ!!!!!
   |∀゚) オオオオオオオ踊ルナラアアアアア今今今今
   |⊂  イイイイイ今アアアアアアノオオオ内ィィィィィアアアアアア!!!!
   |


     ♪  Å
   ♪   / \   ラアアアアアンタアアアアア タアアアアンンンンンンン!!!
      ヽ(゚∀゚ )ノ   ラアアアアアアンンンンンタアアアアアアアアアア!!! タンンンンンン!!!
         (  へ)    ラアアアアアアンンンタ ラアアアアアアンタアアアアアアアアア!!
          く       タアアアアアアアアアンンンンン!!!



   ♪    Å
     ♪ / \   ラアアアアアンタアアアアア タアアアアンンンンンンン!!!
      ヽ( ゚∀゚)ノ  ラアアアアアアンンンンンタアアアアアアアアアア!!! タンンンンンン!!!
         (へ  )    ラアアアアアアンンンタ ラアアアアアアンタアアアアアアアアア!!
             >    タアアアアアアアアアンンンンン!!!
                アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ

   ♪    Å
     ♪ / \   アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ
      ヽ(゚∀゚ )ノ   アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ
         (   )      アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ
          く ノ       アッヒャヒャヒャヒャヒャヒャヒャヒャヒャハyハヤヒャヒャヒャヒャhwyフヂャウハ

10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。