■ VisualC++(MFC限定)相談室 2■
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001MFC
NGNG前スレ ■ VisualC++(MFC限定)相談室 ■
http://pc.2ch.net/test/read.cgi/tech/989902845/
0002956
NGNGおお、立てやがった!?
でも話題とか特に無いんだよな〜
・・・質問できるまで消えないでね。
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGある一定時間だけループさせたい場合、やはりCTimeとか、CTimeSpanとかで
経過時間を利用しか無いですか?何かシンプルな方法があったら教えてください。
あと、wait(BASICにあった気がする)みたいなひたすら待つような命令って無いすかねぇ?
0006デフォルトの名無しさん
NGNG00075
NGNGありがとうございます。
waitの変わりとしてSleepは使えそうです。
ところでSleepってシングルスレッドでも使えますよね?使う意味の有無は別として・・・
0008質問者
NGNG>ボタンに割り当てる画像(操作不能時)のリソースIDを
>"hogehogeX" にしてますよね?
からかわれてると思ったけど、いいヒントになりました。
いやー、さすがに2チャンネル風回答ですね。
0009デフォルトの名無しさん
NGNGできるけど、ウィンドウ持ってるスレッド眠らせると、
ユーザには凍ってるようにしか見えんぞ。
00105
NGNGOKです。凍らせます。
一応、ループ中にCPU占有度を下げる目的でやってみようかと思います。
0011デフォルトの名無しさん
NGNG普通に答えたんだけど……
0012デフォルトの名無しさん
NGNG登録して、CTreeCtrlにくっつけて使ってるのですが、
16色になってしまいます。何がわるいのでしょうか?
0013デフォルトの名無しさん
NGNGオマエが悪い。
0014デフォルトの名無しさん
NGNGどうやればいいのでしょうか?
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGRun Time Functions
0018デフォルトの名無しさん
NGNGRich Text Format
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGπの値を小数点以下100桁まで求めるプログラムを教えてください。
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGCStringの文字列をFormatなどでまとめて16進表記したいのですが
どうすればいいのでしょうか?やはり1バイトずつ%Xするしかないのでしょうか?
002322
NGNGループまわして1文字ずつやっていきます。
0024デフォルトの名無しさん
NGNG002524
NGNG(あ、エディットコントロールはシングルライン)
CEdit* m_edit;
UINT GetPos()
{
POINT point;
::GetCaretPos(&point);
return LOWORD(m_edit->CharFromPos(point) );
}
void SetPos(UINT pos)
{
POINT locate = m_edit->PosFromChar(pos);
::SetCaretPos(locate.x, locate.y);
}
0026デフォルトの名無しさん
NGNGGetSel / SetSel で出来なかったっけ?
0027デフォルトの名無しさん
NGNG表示させて、エセチャットみたいなのを作りたいのですが、
イマイチよく分かりません。ヒントだけでも教えてもらえると
うれしいです。
SDIで作れば良いのは分かったけど、親ウィンドウから
子ウィンドウを呼び出す方法が分からない。
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGCWndクラスのタイトルバーの部分のみのサイズ(上下)を取得するには
どうすればよいのでしょう?
デフォルトは18ピクセルだと思いますが、デスクトップのプロパティで
変わってしまいます。
0030デフォルトの名無しさん
NGNGint n = GetSystemMetrics(SM_CYCAPTION);
0031デフォルトの名無しさん
NGNGありがとうございます。
0032色数を知るには?
NGNGコントロールパネルの画面設定でやる256色とかHighColorとかTrueColorとかの現在の設定を知りたいんです。
スレ違いだったらゴメンなさい。
0033デフォルトの名無しさん
NGNGEnumDisplaySettings
GetDeviceCaps
辺り
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGそれは CCD。
0037デフォルトの名無しさん
NGNG回答しておられるかたには、フリーでご活躍のプログラマーさんも
いらっしゃるのですか?
003834
NGNGGetDIBits()を使うと出来ました。一応ログとしてかいとく
GetDIBits()にはパラメータは以下を与える。
・取得したいCDCのhDC(pDC->GetSafeHdc())
・そのDCのビットマップハンドル((HBITMAP)pdc->GetCurrentBitmap().m_hObject))?←ホントはもっと違うやり方をした。
・BITMAPINFO構造体(ここにサイズとかカラー情報をこちらで指定してやる。これがフォーマットを指定するという事らしい)
そして以下を受け取れる
・LPVOID型のlpvBitsにこちらが指定したカラー情報にあったフォーマットでデータがセットされる
・lpvBitsにNULLを指定した場合はBITMAPINFO構造体に値を入れてくれるらしい
そのあとは・・・
・このデータを加工したりしてあそぶ。
※フォーマットが24ビットでプレーン数1だとgrb、grb・・・と1ドットづつgrbの順で埋められるらしい。しかも上下逆?
003934
NGNGところでなんかさぁ・・・MFCでもSDKでも何を渡して何を得られるのかいまいち判りづらくない?
MSDNってそういうことちゃんと書いてないよね。
HBITMAPとかCBitmap::m_hObjectとかさぁ、なんかたくさんあるけどどれとどれが同じだとかサパーリわからんよ。
0040デフォルトの名無しさん
NGNG上下ひっくり返るのはDIBの特徴ですな。
ファイル形式とか解説した本とかによく載ってる。
Bitmap周りに関しては、MSDNの記述がどうこうよりも、
地道に弄り回してknow how得るくらいしか手はない、
と個人的には思う。
参考になる所としては、
http://www.sm.rim.or.jp/~shishido/windows.html
とかは個人的にお勧め。
0041デフォルトの名無しさん
NGNGトップダウンのDIBも(今は?)作れるでしょ。
アクセス速度的にはトップダウンのほうが有利だとかどこかで見たような
気がするけど実際どうなんだろう?
どうでもいいけど全然MFCの話題じゃないな(w
0042デフォルトの名無しさん
NGNGBITMAPINFOHEADERのbiHeightを負にするとトップダウンになるね。
気にしてなかったから、いつからできるようになったのかは知らんけど。
# そういやその昔、WinGインストール時に、
# トップダウン有利かボトムダウン有利か、
# 実際に描画してベンチマークしてる節があったっけ。
>どうでもいいけど全然MFCの話題じゃないな(w
そうだね(w
でもまあ、CBitmap使うにしても必要な事項ではあるということでsage。
0043デフォルトの名無しさん
NGNG書き込み権限があるかどうかを判断するにはどうすればよいでしょうか。
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG256色とか使えるようにするにはどうしたらいいでしょうか?
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGデータを読み込んでいる間、プログレスバーを表示させ、
データ読み込み時間に応じてプログレスバーの位置を
変化させる機能を実装させたいと思ってます。
一般的なアプリケーションで行っているあの機能です。
CProgressCtrlのサンプルはいくつかネットで探したのですが,
プログレスバーの位置をデータ読み込み時間に応じて
変化させるという方法がわかりません。
上記の件についてご存知の方いれば,
教えてもらえると助かります。よろしくお願いします。
0049デフォルトの名無しさん
NGNGなんで進捗率じゃなくて読み込み時間に応じて変化させる
必要があるのかは知らんが、やりたいんなら時間毎にプログレス
バーを更新させればいいだけだろ。
0050デフォルトの名無しさん
NGNGさっそくですが、質問を。
先日めちゃイケを見ていて、(浜口イイ!)
果たして、俺は一日にどれだけマウス(ポインタ)を移動させているのか?
気になりました。
タイマーを利用したのは作成できました。
しかし、移動していないのにGetCursorPos()を使って現在位置を得るのは、
いささか間抜けです。
ダイアログ外でのマウスの位置を「マウスの移動」によって、
ゲットしたいです。いい案を乞います。
0051デフォルトの名無しさん
NGNGキャプチャーすれば?
フックすれば?
0052デフォルトの名無しさん
NGNGだいたい基礎的なことはOKになったので、MFCのテクニック的
なこととか、ネットワーク回りについて勉強したいと思ってい
ます。そうした場合のお勧めの本って何かありますか?
0053デフォルトの名無しさん
NGNGMFCのソースついてるんだから解析して理解しろ。
0054デフォルトの名無しさん
NGNG推薦書籍はスレ違い
0055デフォルトの名無しさん
NGNGあるクラス(例えば、CButton)のソースを検索するにはどうしたら
よいのですか?
実際のヘッダですら、afx〜〜.hなどで定義されているし、規則性が・・
0056デフォルトの名無しさん
NGNG"CButton" でgrepすればよかろ。
0057デフォルトの名無しさん
NGNG今じゃ簡単な質問にもまともなレスがないね・・・
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGデバッガでトレースすれ。
0060デフォルトの名無しさん
NGNGアフォ?
0061デフォルトの名無しさん
NGNGあんたみたいなのがいるからな(w
0062デフォルトの名無しさん
NGNGすればいいというのは分かったのですが、この方法だとファイル
かwebの情報だけしか表示できません。
プログラム中で処理されたHTML等を直接表示するには一度ファイル
に書き出し、Navigate2関数で呼び出す方法しかないのでしょうか?
CString型のクラスに入っているHTMLのテキストを直接表示させる
方法等があれば教えてください。
よろしくお願いします。
0063デフォルトの名無しさん
NGNGabout:blankがキーワードだ(不確か)
0064デフォルトの名無しさん
NGNGCOMを勉強しろ。
IEがどのようにしてできているかがわかる。
COMを直接いじればIEは自由自在に操れる。
0065デフォルトの名無しさん
NGNGただ、62 のスキルではちょっと難しいかもね。
006662
NGNGCOMを勉強している時間があまりないので、、、
何かサンプルがあったら教えてほしいのですが、、、
0067デフォルトの名無しさん
NGNGたかが2chごときで真剣に教えてもらおうとするな。
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG> COMを勉強している時間があまりないので、、、
だったら金払ってプロのプログラマに頼め。
0070デフォルトの名無しさん
NGNG007148
NGNG>必要があるのかは知らんが...
CProgressCtrlで進捗度(データを読み込んでる進捗度)
を反映させる方法が知りたいです。
説明不足でした。よろしくお願いします。ぺこりん。
0072デフォルトの名無しさん
NGNGSetPos じゃだめなのか?
0073デフォルトの名無しさん
NGNGIE使ってる2chブラウザのソースでも眺めれば〜
大抵ソースはでるはいだけどな(ワラ
007462
NGNGデルファイはよくわからないのです。。。
しょうがないので、一度ファイルに出力してやるようにします。
トホホ、、、
007548
NGNGSetPosでプログレスバーの位置を指定できるのは
分かるのですが,進捗度(データ読み込みの)を
取得する方法がわからないです。よろしければ
教えて下さい。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGあとは、SetRange(0,1000)しといて、SetPos( Permil )で
いけるんやないのか。
あー、しかし、「読み込み時間に応じて」いうのが引っかかるな。
いつ終わるか、いうんは、予測するしかないわけで、read_speedを
ひっぱってきて、(1000*read_time/(total_length/read_speed))でも
使おういう話なんか?
0079ネット初心者再び
NGNGいまCSocketを使ったクライアントとサーバー作って、ファイル転送機能つきチャット作ってますが、
クライアントがログインする時に自分のデータ(名前などいろいろ 約5行)を送りますが、
sendで送ってったら、 相手のほうが受信する時、それを同時に受信してしまった(分かりにくくてすみません
{詳しい説明:
例えば、サーバーはクライアントがログインした直後、sendは別々に、4回送った()
1回目 /server xxxxxx
2回目 /name xxxxxx
3回目 /otheruser xxxxxx xxxx xxxx
4回目 /tekitou xxxx xxxx
んでクライアント側がなぜか
"/server xxxxxx /name xxxxxx/otheruser xxxxxx xxxx xxxx/tekitou xxxx xxxx"
と言う風に、全部一気に受け取った。 これじゃコマンドの解析が不可能になるからかなり困る、、
}
CSocketはブロッキングとかいう機能で、送った後相手が受け取らない限り返ってこないと言う風に
見えたが、勘違いしたのかな?
そして、なにか妙案あればぜひ伝授していただきたい、お願します。
#コマンド受け取ったあと返事して、また送ればいいが、多少面倒なので、、、
0080ネット初心者再び
NGNGさっきの質問の奴、6時間以上も詰まってやっと気付いた。どうだ、こんな笑えるアホなかなか居ないだろう。
0081ネット初心者再び
NGNGローカルだとどうやらマシン早いのかなんかの理由で、全部別々に受信してくれるから正常に動く、でも
ノート(セレロン650)だと4回のコマンドが2回にまとめられる。ネットになると、全部で一行。ネットむずかしいねー
ムキになって虫取ろうと頑張ったがもう限界、、、お休み、、
0082デフォルトの名無しさん
NGNGsendや、その下のTCP/IPスタック、OSがどういう風にpacketを飛ばすかは、
あんたの自由にはならないの。どうしても自由にしたかったら、UDP使えば〜。
普通は、デリミタをつけるとか、メッセージ長をつけるとかするけどな〜
>CSocketはブロッキングとかいう機能で、送った後相手が受け取らない
>限り返ってこないと言う風に 見えたが、勘違いしたのかな?
OS・ドライバ・プロトコルスタックのバッファはどうなる。
0083ネット初心者再び
NGNG受け取ってバファに入れるからソケットが受け取る時は一緒になると言うことですね?
ちゃんと考えれば分かるのにおれの馬鹿(ToT) レスありがとうございました。
0084ネット初心者再び
NGNGデバッグビルドでは正常に動くプログラムが、リリースビルドでは凍って動かない。リリースなのでなんで落ちたか分からないし、、
しかも、VCの中で実行ボタン押して実行すると、正常に動く。
わけわからない質問ですが、このような症状起きた場合まず何見ればいいでしょうか?
0085・・・
NGNG本当に分かったのか?端からみてても訳わかんないぞ。
CSocketっていうか、ストリーム転送してるだろ?レコード境界がないってMSDNに書いてなかったか?
もう対策が分かったならいいが。
0086デフォルトの名無しさん
NGNG凍ったところで、VCでプロセスアタッチして、機械語の中を
はいずり回れば〜。
リリース版にデバッグ情報でも混ぜ込めば〜。
0087デフォルトの名無しさん
NGNGがなくなる。MSDNでもおかしくなるからやめとけみたいなことが書いてあるのですが、
そこをナントカうまくやる方法ないですかね?要はスクロールバーがほしいのですが・・
0088いっぱいいっぱい
NGNGというエラーメッセージが出てしまうのですが、どうすればなおるのか
わかりません、どなたかご教授くださいお願いします。
008987
NGNG解決しました。しかも結構あっさりと。
かなりはずかしいので、とりあえず消えときます。
009087
NGNG誤)CSplitterwndでCEdit
↓
正)CSplitterWndでCEditView
失礼しました。今度こそ消えます。
0091デフォルトの名無しさん
NGNGまずは検索。
0092デフォルトの名無しさん
NGNGデバッグ版は配布しちゃいかんよ
0093デフォルトの名無しさん
NGNGなかったっけ?
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGカレントディレクトリにあるdllを使うようにはできんでしょうか。
Second Editionからなら.local等で何とかなることはわかったんですが。
0097デフォルトの名無しさん
NGNGそれで配布していいの?
つーかそんなでかいのDLしたくない(;´Д`)
0098デフォルトの名無しさん
NGNGMFCスタティックリンクみたく。
0099デフォルトの名無しさん
NGNGでるはいのソフトつかったことない?
それに、サイズなんて圧縮すりゃそんなにかわらないよ。
0100デフォルトの名無しさん
NGNGなぜでるはい?
010132
NGNGおかげさまでうまい事できました。
0102デフォルトの名無しさん
NGNG見た目の誤魔化しでよけりゃあ、あるよ。
0103デフォルトの名無しさん
NGNGどんな?
0104デフォルトの名無しさん
NGNGなんか弊害ありますかね?
0105105
NGNGダイアログでエディタボックスを使ってデータ結果を表示したいのですが
どういう風にプログラムを作ればいいのかわかりません。
どうすればいいのでしょうか?
0106デフォルトの名無しさん
NGNG猫にも劣るヤツ
0107デフォルトの名無しさん
NGNGダイアログとエディットボックスが表示できるようになってからまた来い。
0108デフォルトの名無しさん
NGNGそれを、最終的にはCBitmapクラスに格納したいんですけど、
方法知っておられますか?
0109デフォルトの名無しさん
NGNGCBitmap だけでなく、基本クラスのメンバを見てみ。
0110ネット初心者エピソード1
NGNGとりあえずおかしいことに、VCの中で実行ボタンを押すと正常に実行できるが直接そのファイルを実行すると
無限ループ突入。VCのなかの実行ボタンは実行する以外なにか特別な処理でもしてるのでしょうか?
卒研だからべつに人前で実行できればいいからリリースにしなくてもいいが、どうしてもきになるので、、、
0111デフォルトの名無しさん
NGNG無限ループ中にプロセスアタッチしてみろ。
0112ネット初心者エピソード1
NGNG凍ってCPU100%になるが落ちないのでわけわかめ。
0113デフォルトの名無しさん
NGNGダイアログクラスに、EditBoxに対応するCEdit型のメンバを追加して、
そのメンバを経由してアクセスすればいいよ。かんたんかんたん。
ところで、なんで簡単なことだって知ってるのかしらん?
0114デフォルトの名無しさん
NGNGVCなら、ビルド->デバッグの開始->プロセスへアタッチ。
0115ネット初心者エピソード1
NGNGVCの中の実行ボタンだと正常に実行されるから困る、、、ま、いいか。放置(;´Д`)
0116デフォルトの名無しさん
NGNGプロセスを取り込む、って事。
ふつーにプログラムを実行して、�dだところで、
VCを立ち上げ、プロセスへアタッチするの。
0117デフォルトの名無しさん
NGNG俺も興味あるんだけどな〜。
0118デフォルトの名無しさん
NGNG書き出して、LoadLibraryする、っていう方法じゃないのか?
最近だと、かちゅ〜しゃプラグインのkage.exeあたりが使ってるな。
(あれはあれで、実行時メモリ書き換え&スタック実行なんかが
混ざってて、結構おもしろい。)
0119デフォルトの名無しさん
NGNGなるほど・・・確かにごまかしだな。
まあ、アーカイブを展開したときに余計なDLLを見せないっていう
利点にはなるけど。
0120デフォルトの名無しさん
NGNG部分を作っているのですが、リストの内容の取得方法が分からず
難儀しています。
void CxxxView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
// TODO: この位置にコントロール通知ハンドラ用の〜〜
CListCtrl& List = GetListCtrl();
CxxxDoc *pDoc = GetDocument();
LVITEM itm;
List.GetItem(&itm);
Doc->CSName = List.GetItemText(itm.iItem,0); //CString CSName
最初の内、このようなやり方で取得できるだろうと思っていたのですが、
ListCtrl::GetItem() では LVITEM の行位置(iItem)のパラメータを変更
しない事に気づき、いろいろ手段を探してみたのですが詰まってしまいました。
ListCtrlで行位置を取得する手段について、教えていただけませんでしょうか?
0121デフォルトの名無しさん
NGNGリスト中のどのアイテムを取得したいのかよくわからないのだけれど、
現在フォーカスがあるアイテムのインデックスなら
List.GetNextItem(-1, LVNI_FOCUSED)
で取得できると思う。選択されているアイテムを全部取得するなら
nFlagsにLVNI_SELECTEDを指定してループ。
GetItemでアイテムの属性を得るには、LVITEMのmask, iItem, iSubItemに
あらかじめ値を設定する必要がある。テキストを取得したいなら、さらに
文字列取得用の領域を用意しておいてpszTextとcchTextMaxもセット。
0122デフォルトの名無しさん
NGNG淡色表示にならないんですが。
何で、ならないんだろう? そんな仕様、無いですよね?
0123122
NGNGEnableWindow(FALSE);
UpdateWindow();
でも駄目。
試しに、リソースのプロパティで「無効」にチェックを入れても淡色表示にならないし。
もともとそういう仕様? それとも環境依存?
0124デフォルトの名無しさん
NGNG自動的に淡色表示にはならんだろ。
オーナードローにして自分で淡色描画すれ。
0125デフォルトの名無しさん
NGNGTIFFファイルをCStaticに表示させたいのですが
さっぱりわかりません。
どなたか教えてもらえませんでしょうか?
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGVC++6.0+MFCでモードレスダイアログを作って、表示してるんですが、
このモードレスダイアログが表示されてる間、親ウィンドウが
アクティブになっても前に出てこないのですが、どうすればこの
モードレスダイアログが後ろに行くんでしょうか?
ダイアログウィンドウの属性を変えるのでしょうか?
ちなみに、親からはこう呼んでます。
(CDialog*)pDlg->Create( IDD_DIALOG1 );
//IDD_DIALOG1はダイアログのリソースID
0128デフォルトの名無しさん
NGNG親ウィンドウのアクティベーションを引っかけてダイアログの属性を変える。
が、そんなクソUIのアプリなんか使いたくねえけどな。
0129デフォルトの名無しさん
NGNG忘れ去れたモードレスダイアログが出てきたり。
0130デフォルトの名無しさん
NGNG次の例文をお願いだから簡略化してください。
例文)
CString hoge==("hogege,hoge");
CString hoge2=hoge.SpanExcluding(",");
hoge.Delete(0,hoge2.GetLength()+1);
ASSERT(hoge=="hoge");
ASSERT(hoge=="hogege");
0131デフォルトの名無しさん
NGNG簡略化?
0132130
NGNGSpanExcluding(),Delete(),GetLength()といった感じで、
ちょっとストレートじゃないので。
0133デフォルトの名無しさん
NGNGi=hoge.Find(',');
hoge2=hoge.Mid(i+1);
hoge=hoge.Left(i);
じゃダメ?
0134130
NGNGCStringには無いのかー!?
0135130
NGNGすいません。気が付きませんでした。
参考にさせていただきます。
0136デフォルトの名無しさん
NGNGどんなものをつくっているか
教えてくれぃ
0138127
NGNGくそUIでしょうか・・・。
では、どういったUIが望ましいのでしょうか?
わからなくなってしまいました。
「ダイアログ上のなんらかの情報を見ながら
メインウィンドウの入力をしていく」というUIを
持つアプリを、よく見かけるような気がしていて、
似たような事をやりたいのですが、
これは、モーダルダイアログではないんでしょうか?
また、「親ウィンドウのアクティベーションを引っ掛けて属性を変える」
との事ですが、まず、親ウィンドウのイベントの引っ掛け方が
よくわかりません。
教えていただけますか?
あと、属性を変えるのは親ウィンドウと、ダイアログのどちらでしょうか?
属性とはウィンドウスタイルフラグで良いのですか?
レベルが低すぎるのであれば、初心者コーナーを教えていただければ幸いです。
質問ばかりで申し訳ないですが、よろしくお願いします。
0139デフォルトの名無しさん
NGNGツールバーが取って代わるべき、みたいなことを言ってたな。
0140デフォルトの名無しさん
NGNG>レベルが低すぎるのであれば、初心者コーナーを教えていただければ幸いです。
それすら自分で探せないのか?
0141デフォルトの名無しさん
NGNG最悪はモーダルダイアログだと思うんだけどなぁ。
0142デフォルトの名無しさん
NGNGあるいは、メール返信での「元発言参照」とか。
ダイアログじゃなくてただのウィンドウでいいと思われ
0143デフォルトの名無しさん
NGNG何で?
0144デフォルトの名無しさん
NGNG親ウィンドウにスッポリ隠れていたらモードレスダイアログをアクティベーとできなくなりますが。
0145仕様書無しさん
NGNGDoModalじゃなくてCreateを使いたいのですが、引数をどうやって
あてがえばいいかわかりません。DoModalみたいに引数なしで
やるとエラーが出てしまうのですがどうすればいいでしょうか。
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNGそのダイアログにリストボックスを作成しました。
ですが,ダイアログの大きさを変えても,
リストボックスの大きさはそのままで
サイズ変更がされません。。
いろいろプロパティをいじっているのですが・・
どなたかダイアログサイズを変更すると
リストボックスのサイズも変更する方法を
ご存知の方いらっしゃれば教えて下さい。
よろしくお願いします。
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNG自動では変わらんから、OnSizeハンドラで自分で
ダイアログに合わせてリストボックソの大きさを変えろ
0151デフォルトの名無しさん
NGNGCDialog::Create()の第1引数?
だったら、そのダイアログのリソースID(IDD_ABOUTとか)を
指定すればいいかと。
0152デフォルトの名無しさん
NGNGClassWizard使ってダイアログクラスを作成すれば
class CAboutDlg : public CDialog
{
public:
enum { IDD = IDD_ABOUTBOX };
みたいに生成されるから、CAboutDlg::IDDを使う。
…ってCDialog::Create()の話じゃなかったらスマソ
0153デフォルトの名無しさん
NGNGダイアログ上のピクチャーコントロールに線を加工としたのですが、
以下のやり方で試したところ、返り値では問題がない時のものが
返るのに、実際には引かれていないと言う状態になってしまいました。
何か抜けているかアホな間違いをしているかのどちらかだと思うのですが、
問題点について教えていただけませんでしょうか?
置いた場所はOnInitDialog() になります。
CDC *pDC;
CWnd *pict=GetDlgItem(IDC_PICTURE);
pDC = pict->GetDC();
CPen NewPen(PS_SOLID,2,RGB(0,255,0));
CPen *OldPen = pDC->SelectObject(&NewPen);
pDC->MoveTo(0,0);
pDC->LineTo(200,10);
pDC->SelectObject(OldPen);
m_PoBar.ReleaseDC(pDC);
0154デフォルトの名無しさん
NGNGなぜ、m_PoBar->ReleaseDCで解放していますか?
0156デフォルトの名無しさん
NGNG0157仕様書無しさん
NGNGいろいろアドバイスありがとうございます。
やりたいことはSDIで作ったウィンドウにダイアログを追加して、SDI
のウィンドウのツールバーに作ったボタンを押すとダイアログが立ち上がり
ダイアログに文字列を入れた後にダイアログにあるボタンを押すとSDIで
作ったウィンドウに文字が入力されるようなものを作りたいと思ってます。
とりあえず。ダイアログクラスをCmyDlgとして、ツールバーに作ったボタン操作の
記述に
CmyDlg myDL;
myDL.DoModal();
とやると立ち上がるのですが、Createでやりたいと思い、ただ書き換えてみたの
ですが引数無しでエラーが出ました。
まだ初めて1ヶ月の初心者ですが、クラス間で値を受け渡す行為ができず、戸惑い
を覚えています。まあ、これからもこのスレッドで勉強させていただこうと思います。
0158デフォルトの名無しさん
NGNGOnPaintに書いてください。
0159デフォルトの名無しさん
NGNG第一引数にダイアログのIDを指定してください。
関数の使い方などはMSDNで確認したほうがいいです。
0160仕様書無しさん
NGNG第一引数にダイアログのIDを指定したところ
コンパイルは通りました。しかし、ツールバーの
ボタンを押しても画面が少しちらつくだけで
ダイアログが立ち上がらないんですよね。
DoModalでやるとあっさり立ち上がるのに。
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG「モードレスダイアログ」について勉強したほうが。
ShowWindow(SH_SHOW);
でダイアログを表示します。
0163デフォルトの名無しさん
NGNG作りたいのですが、方法が分からず困ってます。どなたか力を貸してください。
たとえば、
AAA BBB #CCC
と表示されているとき、#CCCの一部をクリックすると、#CCC全体が選択状態になるというものです。
(AAAとBBBは選択状態にならない)
いまのところ、OnLButtonClk上でCEdit::SetSelをしようと考えているのですが、#CCCを判別
できないのです。よろしくお願いします。
0164デフォルトの名無しさん
NGNG最初のスケルトン作成時に、「Windowsソケット」という項目にチェックを
入れないとWindowsソケットのプログラムは書けないのでしょうか?
この項目にチェックを入れることで、何が行われるのかが全く分かりません。
ただsocket関係のヘッダをインクルードするだけじゃ駄目なんでしょうか。
0165デフォルトの名無しさん
NGNG両方ともためしてみてた?
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGWSAStartup()/WSACleanup()もよろしく。
0168164
NGNG「Windowsソケット」にチェックを入れないで作った場合は動かないのですが
MFCに不慣れな為に、本当に駄目なのかどうか分からないのです。
>>164
あ、一応Win32API・・・SDKと呼ばれてるやつですか。
APIではソケットプログラムを作った事があるので、ソケットの知識はあると思います。
聞きたいのは、スケルトン作成時の「Windowsソケット」をチェックする事の意味というか
これをチェックしないと動かないのかどうか、そしてチェックすることによって
何が行われるのかといった事なのです。
ちなみに、API(SDK)では、Wsock32.libをプロジェクトに入れて
winsock2.hをインクルードすれば良いだけです。
0170167
NGNG「Windows ソケット」をチェックすると、AfxSocketInit()がInitInstance()に
入ったりします。
AfxSocketInit()の詳細はソースを見てもらうとして、要するにアプリケーション
開始時にWSAStartup()、終了時にWSACleanup()を呼び出します。
…というところでオッケー?
0171164
NGNGありがとうございます。分かりました。
それらの処理を自分で行うならば、チェックしなくても動くのですね。
という事は、今動いていないのは自分のせいか。
MFCでプログラム作るのは初めてなので、こんなものかな。
0172デフォルトの名無しさん
NGNGCDHTMLEdit をダイアログに貼り付けて、RichEdit のような感じで編集(フォントのサイズや色など)したいと思っています。
この時、何らかのイベントで CDHTMLEdit の選択された範囲を知る事は可能でしょうか?
何バイト目から何バイト目みたいな形が望ましいのですが、範囲さえ取れたら何でもいいです。
また、テキストの何文字目から何文字目がクライアント座標でどの範囲かを知ることは可能でしょうか?
Google でもそれらしい記述の文書が見つからなかったのですが、
何か参考になりそうな文献やサイトでもいいので、どなたか教えて下さい。
0173デフォルトの名無しさん
NGNGそれVC系スレで何回も出てる質問なのでネタとみなします。
0175デフォルトの名無しさん
NGNGどこに書いてありますか?
0176デフォルトの名無しさん
NGNGしつこい人なんて嫌いです!(ぷいっ
0177デフォルトの名無しさん
NGNGMFCならCWinAppのInitInstance()の戻り値がFALSEになってると思われます。
m_pMainWndにメインダイアログのポインタを代入してからTRUEを返すようにしてみてください。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGVisual C++はVisual Basicでできていて、
Visual BasicはVisual C++でできているのです。
0180デフォルトの名無しさん
NGNGいいかげんMFCを使わないで開発したいが勉強する
時間がなかなかとれない。愚痴でスマソ
0181デフォルトの名無しさん
NGNG、、、、、どっちが先?
0182デフォルトの名無しさん
NGNGMFCのどのクラスで実装されてると思いますか?
CScrollViewじゃ役不足ですかね。
やはりCRichEditViewかなあ。
0183デフォルトの名無しさん
NGNG放射線を浴びて突然変異したものです。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGCScrollViewあたりから派生た毒痔のクラスかも知れん
0186デフォルトの名無しさん
NGNG寒いからやめろ
0187デフォルトの名無しさん
NGNGお薦めの本があれば、教えてください。
0188デフォルトの名無しさん
NGNG「凝ったユーザーインターフェース」っていったいなんだよ
それを定義しないとはじまらないだろ?
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGあとよろしく
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG//脱色済みユーザインターフェース
0194デフォルトの名無しさん
NGNG//黒人お断りユーザインターフェース
…ともとれる。
0195仕様書無しさん
NGNGそんでもって配列に対してさらにxだけを呼び出すことってできますか?
0196デフォルトの名無しさん
NGNGやってみなよ、とりあえず。
> そんでもって配列に対してさらにxだけを呼び出すことってできますか?
日本語が意味不明。x を呼び出すって、どういう意味?
0197デフォルトの名無しさん
NGNGのサイズをGUIから設定することはできないのでしょうか
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG最初にCScrollViewをAppWizardで作成し、その後にCTreeViewとCListViewを
追加したのですが、ビルドするとCTreeViewとCListViewが定義されていません
とエラーが出てしまいます。
順番を変えて、最初にAppWizardでCTreeViewを作成すると、ちゃんとビルドできるのです。
最初にCScrollViewを作ると、クラスを追加出来ないのでしょうか?
0200デフォルトの名無しさん
NGNGどうやって追加したのかが知りたいと思われ
0201199
NGNG自己解決しました。
#include "afxcview.h"をインクルードすることによってビルドできました。
最初にCViewやCScrollViewを作って、後からクラスを追加した場合、このヘッダが
挿入されないようですね。
ちなみに、まず最初に、ワークスペースの新規作成からAppWizardで基底クラスに
CScrollView(CViewでも結果は同じ)を選んでスケルトンを作成をします。
次にClassWizardで新規にクラスを追加でCTreeViewを作成してビルドしました。
これだと自分でヘッダを追加する必要があるみたいです。
最初にAppWizardの基底クラスでCTreeViewを選んで、後からClassWizardで
CViewやCScrollViewを追加すると、問題なくビルドできます。
でももしかしたら、単に私のVC++がVer5.0だからかもしれません・・・。
0202デフォルトの名無しさん
NGNGVisual C/C++(VB)経験者ってあるんですけど
なんのことですか?ここに書いてあること見てもさっぱり
わからなくて、良かったらどなたか分かりやすーく
説明していただけませんか?
0203デフォルトの名無しさん
NGNG運がよければVC,VBが使えて、運が悪いと、何年も型落ちを重ねたツールや
聞いたこともないようなツールで説明書は紛失中みたいなところで
開発させられるって事です。
俺はもうなれた。
0204デフォルトの名無しさん
NGNG説明も何も、 Visual C++とかVBを使ってことがあるってことだろ。
0205デフォルトの名無しさん
NGNGいやね。恥ずかしい。
そんなことまで言わせるの。
0206202
NGNG0207デフォルトの名無しさん
NGNGマイクロソフトのサイトに説明があるよ。
0208デフォルトの名無しさん
NGNGまじ?求人でVCのを探してたけど無駄なのか・・・
そういう会社を避けるコツみたいのを教えて欲しい
0209デフォルトの名無しさん
NGNGタイマーで一定時間ごとにクリップボードを見に行く??
0210デフォルトの名無しさん
NGNGSetClipboardViewer() すると変更のたびにメッセージが飛んでくるなり。
0211デフォルトの名無しさん
NGNGCWndは選択肢に無いので作れないのかな。
0212デフォルトの名無しさん
NGNG下から2番目にある「generic CWnd」を選択しましょう。
漏れもこのトラップに引っかかったよ(藁
0214デフォルトの名無しさん
NGNGCSocketから派生させたCMySocketクラスを作り、CSocketFile、CArchiveと関連付けてデータを送受信しています。
送信データはなんとかまともに動作するようになったのですが
受信データが半角でへへへへへへココココオオオオオオオオオ
のようになってしまい、うまくいきません。
CArchiveのIsBufferEmptyメソッドは絶えず1を返してしまいます。
CMySocketのReceiveを確認してみると
へへへへへへココココオオオオオオオオオ
の後にちゃんと正しいデータが存在していることがわかりました。
うまくデータを受信するにはどうしたらいいのでしょうか?
送信部分のソースは
// CArchive* m_pOut
m_pOut->WriteString("Hello");
(*m_pOut) << (WORD)0;
m_pOut->Flush();
受信部分のソースは
// CArchive* m_pIn
CString string,string2;
while(!m_pIn->IsBufferEmpty())
{
m_pIn->ReadString(string);
string2 += string;
}
お願いします…
0215デフォルトの名無しさん
NGNGさんきゅー
0216デフォルトの名無しさん
NGNGどっち使う?
なんかさあ、今までSDKだけでやってきたんだけど、MFCやらなきゃいけないことになって
勉強中なんだけど、何だかSDKより面倒に思える。
今までウィンドウプロシージャに書いてた処理をどこに置けば良いかよく分からんし
ドキュメント/ビューアーキテクチャが面倒なものにしか思えない。
ついついドキュメントクラス使わずに済ませてしまう。
やはりMFCでファイル入出力する場合、ドキュメントクラスにまとめてシリアライズ関数でってのが
一般的って言うか、ベターなの?
SDKより開発効率悪いMFCのプログラム書いてるの俺くらいだろうか・・・鬱だ。
0217デフォルトの名無しさん
NGNGまず、そのプログラムは、ふつうの(ソケットではない)CFileの時はきちんと動くのか?
0218デフォルトの名無しさん
NGNGその気持ち、すごくわかる。
そもそもMFCってのは、Officeを開発するために作ったものを切り出し、
フレームワークと称してWindowsアプリケーション支配の道具としたものだから、
ドキュメント・ビュー・アーキテクチャは当然、
「ファイルを開く」「ファイルに保存する」といった形態のアプリケーションしか
想定していない。
しかし素直にシリアライズでファイル入出力を実装しちゃうと、
アプリケーションのバージョン間でファイルに全く互換性がなくなってしまう。
なぜなら、もし互換性を保とうとするなら、クラスにメンバ変数ひとつ加えることすら
できないことになるからね。
その証拠に、これはつい最近までOfficeの各アプリケーションの決まり文句だったでしょ?
バージョン間の互換性を維持しようとすると、ファイル入出力をシリアライズで手を抜くことは、
途端にできなくなってしまう。それどころか、むしろ、もっと面倒になる。
確かに、MFCはインベント駆動のプログラムをうまく包み込んでいると思うが、
フレームワークという点では、Java や C++Builder などの方が、ずっと進んでいるようだ。
0219デフォルトの名無しさん
NGNGプログラム(MFC、ダイアログベース、スケルトンはAppWizard)にリンクして
デバッグビルドすると、
> LINK : warning LNK4098: defaultlib "mfc42.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください
> LINK : warning LNK4098: defaultlib "mfcs42.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください
> LINK : warning LNK4098: defaultlib "msvcrt.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください
という警告が出ます。
これはスタティックライブラリの作り方に問題があると思うのですが、
どのような原因が考えられますか?
それともこれは仕方なく、このライブラリを使うプログラム側で
いちいち /NODEFAULTLIB:library を指定しなければならないのでしょうか?
0220デフォルトの名無しさん
NGNGそのライブラリを構成するオブジェクトが、おそらく Release ビルドされているから、そうなる。
だからそのライブラリの Debug 版を作ってリンクすれば吉。
0221デフォルトの名無しさん
NGNGありがとうございます。
デバッグ版をリンクすることでデバッグビルドでの警告はなくなりました。
ということは、通常はリリース版スタティックライブラリを
プログラムのリリースビルドで使うので、デバッグビルド時にこの警告が出ても
気にしなくて良いのでしょうか?
0222デフォルトの名無しさん
NGNGそれだとデバッグ時にライブラリ内の関数へステップインできなくなるはず。
あと、メモリ管理が Release 版と Debug 版で違うから、場合によっては不安定になる。
0223デフォルトの名無しさん
NGNG構成ごとに適切なライブラリをリンクするようにしてもよし。
中まで追いかける必要がないなら気にするな。
0224219
NGNGありがとうございます。開発時にはデバッグ用、リリース用の
両方のライブラリを用意してそれぞれリンクすることにします。
ところで仮にこのようにMFCで作ったスタティックライブラリの
リリース版を公開したとして、使用者側がデバッグビルド時に
警告が出たとしてもそれは仕方のないことですよね?
それともデバッグ版、リリース版両方を公開するのでしょうか。
通常はどのようにするのか教えてください。
0225デフォルトの名無しさん
NGNGってゆーか普通、ソース非公開の「MFC な」ライブラリは、
スタティックライブラリにはしないと思うが。
0226デフォルトの名無しさん
NGNG0227219
NGNG> スタティックライブラリにはしないと思うが。
そうなのですか…
ありがとうございます。すっきりしました。
0228デフォルトの名無しさん
NGNG#pragmaを使うとは、
#ifdef _DEBUG
#pragma comment(lib, "debug_hoge.lib")
#else
#pragma comment(lib, "release_hoge.lib")
#endif
ということでしょうか?
0229デフォルトの名無しさん
NGNGVERSIONABLE_SCHEMAは使ってる?
0230デフォルトの名無しさん
NGNGイメージ付のダイアログで、ボタンを押すとCFrameWndクラスを継承
したウィンドウを表示するプログラムを作りました。
このウィンドウを閉じたときに、ウィンドウとダイアログが重なって
いると、イメージが消えてしまっているのでダイアログの再描画
を行いたいのですが、ウィンドウ側のソースからダイアログの再描画
を行う方法がわかりません。どなたか教えてください。
あと、このような場合にはダイアログに自動的にWM_PAINTメッセージ
は送られないのでしょうか。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG基本クラスを選ばなければなりませんが、別にどこクラスからも
派生させる必要の無いオリジナルのクラスを作って追加したい場合
どこクラスを基本クラスに選べば良いのですか?
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGそうでなければ勝手にcppファイルにクラスを書いて、
プロジェクトに追加します。
0235デフォルトの名無しさん
NGNGいや、選ばないとクラス追加できないのですが・・・。
必ず選ぶことになるのです。
>>234
その場合、メッセージマップとかは全部自分で記述しなければならないのですか?
メッセージマップの定義とか良く分からないので、全部クラスウィザードに
任せたいのですが、それだと基本クラスを選ばないといけないみたいなので・・・。
0236デフォルトの名無しさん
NGNG決まったも同然ではないか?
0237デフォルトの名無しさん
NGNGクラスの種類Genericにしてるか?
0238デフォルトの名無しさん
NGNGよりは、
「genericCWnd で追加して、.hと.cppから不要なとこ削除する」
方が楽だから、俺はそうしている。
勿論ヘッダの class CHoge : public CWnd の ": public CWnd" も削除。
0239デフォルトの名無しさん
NGNG.hは.cppにincludeしてあれば、依存関係で、勝手に
プロジェクトに追加されるはずだよ。
0240デフォルトの名無しさん
NGNGなんかいい方法はありますでしょうか?
0241デフォルトの名無しさん
NGNG0242240
NGNGありがとうございます。早速やってみたのですが、nCharSetに
SHIFTJIS_CHARSETを指定すると、英文字の幅が異なってしまいます。
かといって、ANSI_CHARSETだと日本語の文字を認識しません。
これはどうしようもないのでしょうか?
0243240
NGNG0244みゆ
NGNG新規作成で
MFC AppWizard→ダイアログベース→***App
を選択したもので
始めに出来ているダイアログ画面の
親を適当なもの(ウィンドウクラス名をAとする)
に変更することなんかはできるのでしょうか?
このときダイアログのウィンドウクラス名をBに設定し
親のウィンドウクラス名をAにする方法もおしえてください
0245デフォルトの名無しさん
NGNG意味不明。クラス階層的に親ということか?
>このときダイアログのウィンドウクラス名をBに設定し
>親のウィンドウクラス名をAにする方法もおしえてください
親のウインドウクラス名、が特に意味不明。
ひょっとしてエディタの置換でうまくいくかと思うがどうか?
ついでに、「なぜ、そんなことがしたいのか」も教えてくれ。
0246デフォルトの名無しさん
NGNG始めは親は居ないと思うけど、最初からチャイルドウィンドウをダイアログで作りたいってこと?
0247デフォルトの名無しさん
NGNG0248みゆ
NGNGあるソフトA(自作)で別ソフトB(自作)にメッセージを送る
とき,Bの作成がSDIでCview形式で作成したもので
A側から
///
HWND hWnd = ::FindWindow("Frame", NULL);//Frameのハンドルを取得
HWND ChildWnd;
if(hWnd == NULL){
MessageBox("Not Frame");
}
ChildWnd = ::GetTopWindow(hWnd);//Frameの子のハンドルを取得
char s[64];
CString name;
GetClassName(ChildWnd,s,64);
name = s;
if(name != "View"){
return;
}
::PostMessage(ChildWnd, WM_USER_MESSAGE, (WPARAM)0, (LPARAM)0);
///
上記のように
FindWindowでBのフレームのWindowクラス名を検索し
GetTopWindowでFrameの子のハンドルを取得し
取得した子のハンドルのWindowクラス名
を取得して,それに対してメッセージを送るように
しているのです.
今度はBの変わりに
新規プロジェクトでAppWizard→ダイアログベース→***App
で作ろうかと考えています.
始めに出来ているダイアログのウィンドウクラス名を変更できてます.
先ほど述べた方法で相手にメッセージを送っているため
C側はこのダイアログに親のウィンドウ(フレームのかわりみたなもの)
を用意させそのウィンドウクラスも設定したいのです.
こんなんで理解できますか?
お願いします
0249みゆ
NGNG新規プロジェクト
SDI→基本クラスCFormViewに
で作成して解決しました.
始めに出来ているダイアログ画面(CXXX_FORM)
のウィンドウクラス名もなんとか変更できました.
おさがわせしました.
0250デフォルトの名無しさん
NGNGC***App クラスと C***Dlg クラスができますよね。
Appのほう、使い方がよくわからないのでアプリケーションの動作を
記述するコードは Dlgクラスに書いてしまうんだけどこれはやっぱ間違いかな?
たとえば、アプリケーションのいろいろな動作はみんな Dlgクラスのメンバ関数に
なっている。自作クラスなんかは Dlgクラスのメンバ変数として確保する。
つまり Appクラスはまったく手をつけていないです。
一度、自作クラスを Appクラスのメンバにして Dlgクラスから Appクラス経由で
使おうかと思ったけど、Dlgクラスから Appクラスのハンドルは GetParent()
できなかったですし。厨な質問かもしれないが教えてください。
0251デフォルトの名無しさん
NGNG全然、問題無いっスよ。つーか、ダイアログベースってモーダルダイアログ
なんでむしろ他のウィンドウと通信しようなんてほうがオカスィ。
CXXXAppはメンバの初期化とか終了処理に使いなさい。
0252250
NGNGちなみに、DlgからAppのポインタは AfxGetApp()で取得できるんだね。
まったくはずかしいぜ。
0253デフォルトの名無しさん
NGNG>つーか、ダイアログベースってモーダルダイアログ
>なんでむしろ他のウィンドウと通信しようなんてほうがオカスィ。
ま、そうともいいきれないね。
BOOL CHogeApp::InitInstance()
{
・・・
CHogeDlg* dlg = new CHogeDlg;
m_pMainWnd = dlg;
dlg->Create(IDD_HOGE_DIALOG);
dlg->ShowWindow(SW_SHOW);
return TRUE;
}
終了するときは、
::AfxGetMainWnd()->PostMessage(WM_CLOSE);
0254↑
NGNGdelete this;
}
がないとメモリリークする。
0255ビルダーから浮気
NGNG設定したいのですが、いまいちよくわかりません。
・ディレクトリを指定する場合の書き方
「ビルダーだと(D\\作業用フォルダ\\a.txt)のようにできたのですが・・」
・複数行の文字列をいっきにCStringListに入れる方法
を教えていただけませんでしょうか?よろしくお願いいたします。
0256デフォルトの名無しさん
NGNG=WM_CTLCOLOR メッセージの CtlColorをオーバーロードして、そこで
SetBkColor(COLORREF)を実行する方法です。
よくFAQにある奴ですね。
それで一応変えれるんだけど、エディットボックスを「読み取り専用」とか
EnableWindow(FALSE); にするとグレーのままなのです。
入力させたくない場合はどうすればいいのでしょうか。
0257デフォルトの名無しさん
NGNGOSで使用している、ブラウザの情報が取りたいのですが
(Mozilla/4.0 (compatible; MSIE 5.0; Win32)ってやつ)
取得方法がわかりません。
JAVAだとGetUserAgentというAPIで取れるらしいのだが・・・。
0258デフォルトの名無しさん
NGNGnCtlColor == CTLCOLOR_EDIT の時だけ処理してない?
使用不可とか読み取り専用の時には CTLCOLOR_STATIC を渡してくるよ。
0259デフォルトの名無しさん
NGNG「OSで使用している」というのは、
「インストールしてある」という意味なのか、
「起動中」という意味なのか?
っと、どっちにしろ方法はしりませんけど・・・
0260257
NGNG最悪、インストールされているIEのUserAgentが取れればいいと思ってます。
0261256
NGNGたしかにデバッグモードで追うと、 nCtlColor の値が
いっこうに CTLCOLOR_EDIT にならないで、if 文の中に
入ってくれなかったですわ。ありがとうございました!
0262デフォルトの名無しさん
NGNG0263みゆ
NGNGWM_COPYDATAとなるメッセージで用いるようですが
このほかの方法ってないのでしょうか?
別にWM_COPYDATAを使えばいいんだけど(ぉ
0264デフォルトの名無しさん
NGNG標準で使用しているブラウザ、となると。
・localhost : 40001 とかのポートをlistenするhttp鯖もどきをつくる
・ShellExecute("http://localhost:40001");を実行
・そのhttp鯖にブラウザがGetリクエスト。
・リクエストにはUserAgentも入って(゚д゚)ウマー
という方法しか浮かばないな。
0266デフォルトの名無しさん
NGNG丁度、お絵かきソフトのパレットやペンツールみたいな物なんだけど、
DIALOGやツールバーはちょっと。
後ろに隠れたり、MainFrame内で最小化したりさせたいので。
厨房な質問でスマソ
0267デフォルトの名無しさん
NGNGHKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings
にぽいのがあるけど。
0268デフォルトの名無しさん
NGNG親Windowのハンドル取得したいんですけど、それらしき部分が無いような。
MFCには
HWND hWnd;
hWnd = CreateWindow・・・
みたいな部分は無いんでしょうか。
0269257
NGNGそこのレジストリなんですけど、
どうも今使っているバージョンではないものが入っているようです。
多分インストール時のIEのバージョンではないかと思うんですが・・・。
0270デフォルトの名無しさん
NGNGGetParent ?
0271デフォルトの名無しさん
NGNGやり方が良くわかりません。だれか教えて下さい。
0272デフォルトの名無しさん
NGNGをしたいのですがどうすればいいのでしょうか
0273デフォルトの名無しさん
NGNGCWnd::Create で実際にウィンドウが作られ、
HWNDは CWndのメンバ m_hWnd に格納される。
親ウィンドウのハンドルは
CWnd* pParent = this->GetParent();
pParent->m_hWnd or pParent->GetSafeHwnd()
で取得。
0274デフォルトの名無しさん
NGNGコンポーネントギャラリからプログレスダイアログを導入するのが簡単。
0275デフォルトの名無しさん
NGNGとりあえず、マルチスレッドにしないと。
0276デフォルトの名無しさん
NGNG取りあえず一枚にしたい。
0277デフォルトの名無しさん
NGNG使うことはできるのでしょうか?
できるとしたらどうやればいいか教えてください。
何か参考のページでもいいです。
よろしくお願いします。
0278かるかん ◆TM3.ie9w
NGNGそれじゃ、MDIにする意味ないような…
それはともかく、そういう機能は元々なかったはずだから、
CMDIChildWndのOnCreate()をオーバーライドしてその中で判断するとか。
CMDIFrameWndの方でもChildWndのリストを管理する機能を入れる必要が
ありそうだけど。俺は試す気はないので。
0279デフォルトの名無しさん
NGNGその方向で色々試してみます。ご教授ありがとー。
0280かるかん ◆TM3.ie9w
NGNGCForm?? CFormViewのことか?
ダイアログにViewは作れないはずだよ。それにViewのなかに
Viewを作るってのも無理な話。
普通はCFrameWnd(の派生クラス)のOnCreateClient()を
オーバーライドしてCSplitterWndをつくり、その各ペイン上に
Viewをつくるんだが。サンプルもMSDNライブラリにあるから。
0281277
NGNGすいませんCFormViewのことです。
CSplitterWndを使ってやるのはできたのですが、、
最近よくあるタブブラウザみたく、タブを使って
CHtmlViewを切り替えるにはどうしたらいいので
しょうか。。。
考え方でも結構ですのでご教授ください。
0282かるかん ◆TM3.ie9w
NGNG俺の意見としては、CHtmlViewを使うのはあきらめろ、だな。
手っ取り早いのは、CFormViewの元になるダイアログに
ActiveXコントロール「Microsoft Web Browser」を貼り付ける、かな。
ただ、IE4以降になっちゃうかも。それと、使ったことはないので
これ以上は自分で試してくれ。
0283デフォルトの名無しさん
NGNG取得するにはどうすればいいのでしょうか
0284デフォルトの名無しさん
NGNGしたいのですがどうすればいいですか?
0285デフォルトの名無しさん
NGNGWM_MOUSEMOVEを拾って自分でステータスバーに書くんじゃないか?
0286デフォルトの名無しさん
NGNGGetActiveDocument()というのがあるが、本当にMainFrameクラスからドキュメントにアクセスする必要があるかよく考えてね
0287デフォルトの名無しさん
NGNGコピーならあったのですが、、、
それとも、コピーしてから元ファイルを削除するという
方法を取るのでしょうか?
0288デフォルトの名無しさん
NGNG::MoveFile()じゃだめ?
0289デフォルトの名無しさん
NGNG::SHFileOperation()もいいかも。
0290デフォルトの名無しさん
NGNGを作成することはできますか??
Windows9x系のプログラムってXPでけっこう動かない
のがあるんですよね?そのへんどうなんでしょうか・・・。
0292デフォルトの名無しさん
NGNGスケルトンにDllRegisterServerはあるのですが、DllUnregisterServerが
ありません。
DllUnregisterServerはどのように実装すれば良いのでしょうか?
それとスケルトンにDllUnregisterServerが無い理由は?
0293292
NGNG書籍を参考にして次のようにしました。
STDAPI DllUnregisterServer(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
COleObjectFactory::UpdateRegistryAll(FALSE);
return S_OK;
}
MSDNライブラリにはUpdateRegistryAllのパラメータが無かったのに…
MFC AppWizard がこれを追加してくれない理由は未だわかりません。
0294Apple
NGNGあれを画面全体に広げたようなプログラムを作りたいのですが、簡単?
0295デフォルトの名無しさん
NGNG拡大したビットマップを画面全体に表示するとして…
いったい何を拡大するの?
0296デフォルトの名無しさん
NGNGけど、気のせいか?
0297Apple
NGNG仮想ディスプレイのようなのが理想です。
マウスを画面の端に持っていくと、画面ごと移動するような・・・
仮想ディスプレイと違うのは、文字や画像がやたらデカイこと。
0298デフォルトの名無しさん
NGNG厨でごめんなさい・・・
0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGダイアログを非表示のまま起動することが上手くできません(SDKの方は上手くいくのですが・・・
OnInitDialogでShowWindow(SW_HIDE);しても警告でるか無視されて表示されてしまいます。
PreCreateWindowでも上手くいきません
助言お願いします
0301300
NGNG0302ななしい
NGNGそうそう、表示されちゃうよね。
でも、MFCのコードをトレースすれば、すぐ分かるかも
(時間がなくて、漏れはやってません)
0303デフォルトの名無しさん
NGNGウィンドウサイズを(0,0)にしちまうってのはどぉ?
0304デフォルトの名無しさん
NGNGアプリケーションクラスの
int nResponse = dlg.DoModal();
あたりを消して,自分でCreateして
ShowWindow(SW_HIDE)
0305デフォルトの名無しさん
NGNGメッセージループを回さないといけないような。
0306デフォルトの名無しさん
NGNG>>253 >>254あたりを参照。
0307デフォルトの名無しさん
NGNG// IHogeはClassWizardがタイプライブラリから自動生成したクラス
IHoge hoge;
hoge.CreateDispatch("Hoge.Object");
BOOL bHoge = hoge.IsHoge(); // BOOL値を返すメソッド
としたのですが、実行(F5)すると
Warning: attempt to call Invoke with NULL m_lpDispatch!
という警告が出てしまいます。どうすればよいのでしょうか?
ちなみにVBScriptで
Set oHoge = WScript.CreateObject("Hoge.Object")
bHoge = oHoge.IsHoge()
とした場合はちゃんと予期したBOOL値が返ります。
0308デフォルトの名無しさん
NGNGVBで学ぶ・・・とかVCで学ぶとか・・・とかいう本がでて
いるけど、どれで学べばいいかわからないんですよね。
VBできないからVCベースでやろうと思っているけど
0309307
NGNGしょーもないこと書いてごめんなさいごめんなさいごめんなさいごめんなさい
0310デフォルトの名無しさん
NGNG文字の色を変えるときはSetTextColorで変えられるんですけど
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGだめなんですかね。ありがとうございます。
0313デフォルトの名無しさん
NGNGとある書籍にてブラウザが作れるとのことで、その本の通りCHtmlViewを使って
簡易ブラウザなるものができました。
しかし「お気に入り」がないためにどうも使いにくい。
ということで、「お気に入り」を追加しようとMSDNを調べてみたのです。
CHtmlViewの項目に確かに「お気に入りも使えます」みたいなことを書いてある
のですが、いざ内容をみてみると「お気に入り」を扱えそうな関数がないんですが
どなたかご存知でしょうか?
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNGこの方法で、WINキーも無効にならぬかえ?
0316デフォルトの名無しさん
NGNGサンプルのMFCIEにあるとおもうけど。
0317314
NGNGすまぬ。当方OSがWindows2000ゆえ無効にならんでおじゃる。
Windowsキーのキーコードさえ分からんでおじゃる。
0318デフォルトの名無しさん
NGNG2000/NTでちゃんと読みこめません。小さなBMPならいいのですが、非常に大きなサイズになると駄目なようです。
95/98/meは動作しました。
LoadImageで大きなBMPでも表示できる方法、または
他に外部の大きなbmpファイルを表示できる関数があれば教えてください。。
0319デフォルトの名無しさん
NGNG使うにはどうすればいいのでしょうか?
0320デフォルトの名無しさん
NGNG普通にやっても駄目?
そもそもフルカラーでやる意味が分からない?
256色で十分では?
画像ビューワで使うのかな?
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGCEditViewを使ったサンプル読むと、CeditViewの中のCEditってのがデータ持ってるような
気がするんだけど、勘違い?
CeditViewって、CViewの派生で、しかし、中にCEditも持ってるみたいで、
CViewもCEditもCWndの派生で、ほしたらウィンドウ2つできそうな気がするけど1つ?
CEditが入ってくると、CDocumemntとCViewとCEditの関係がぜんぜんわからん。
どねんなってるねん?
0323デフォルトの名無しさん
NGNGアーキテクチャは適用外なのです。(ウインドウがデータを持つため)
CEditViewは、reinterpret_castでCEditになるんやなかったかな?
だからウインドウは1つ。
0324デフォルトの名無しさん
NGNGCViewの派生クラスにCEditの機能を入れるのと、CEditの派生クラスに
CViewの機能を入れるのと、どっちが正統派?
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNGオーナードロー用のサブクラス化ウインドウをViewにするかなぁ?
0328デフォルトの名無しさん
NGNG0329292
NGNG> STDAPI DllUnregisterServer(void)
> {
> AFX_MANAGE_STATE(AfxGetStaticModuleState());
> COleObjectFactory::UpdateRegistryAll(FALSE);
> return S_OK;
> }
実際に regsvr32 /u hoge.dll を実行すると、
> DllUnregisterServer in hoge.dll succeeded.
となりますが、レジストリには項目が残ったままとなってしまいます。
レジストリから削除するにはどうすればよいのでしょうか?
※DllRegisterServerはAppWizardが生成したデフォルトのままです。
0330
NGNGそこからさらに派生させた CMyclass2 を作るとき、ClassWizardは使えないんでしょうか?
Serialize が使いたいのです。
もう、直接 CWnd → CMyclass2作ってしまおうかなと考えてます。
どうせ CMyclass1 は使わないですし。しかし、OOPL的には CMyclass1は
あるべきと考えてるのですが・・・
0331デフォルトの名無しさん
NGNGエディットボックスで使用するフォントを和文(全角)と欧文(半角)で別のものを使いたいと考えています。
OnInitDialog()内でSetFontを使って全体のフォントを変えることはできたのですが、
ここから、全角と半角を判別してフォントを分けることは可能でしょうか?
何か良い方法がありましたら教えてください。
よろしくお願いします。
0332330
NGNGCMyclass2 を ClassWizard で扱うことはできないみたいだけど、
自分で直接 Serializeをオーバーライドするコード書いたらちゃんと使えました。
0333デフォルトの名無しさん
NGNGエディットボックスを使っている限りほぼ無理かと思われます。
0334デフォルトの名無しさん
NGNGそら自分で書けばできるでしょう
0335デフォルトの名無しさん
NGNGエディットボックスでは無理ですか。ありがとうございます。
リッチエディットで試してみようと思います。
0336デフォルトの名無しさん
NGNGCImageListをMSDNで見てみて
Create()の項目に載ってるよう
0337デフォルトの名無しさん
NGNGバイナリデータから30バイト目から40バイト目までを取得して
文字に変換したいのですが…どうも上手くいきません
教えていただけないでしょうか?
0338デフォルトの名無しさん
NGNG文字に変換って、
00 10 20 30 ==> ".. 0"
それとも
00 10 20 30 ==> "00 10 20 30"
?
0339デフォルトの名無しさん
NGNG=お願いしますみたいな感じなんですが…
0340デフォルトの名無しさん
NGNGcs.Format("%d",byte[i]);
csAll=csAll+cs;
}
駄目?
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGやってみます。
0343弱気な名無しさん
NGNGなのにちゃんと表示されてる。誰が書いてるんだ?
0344デフォルトの名無しさん
NGNG0345339
NGNG0346デフォルトの名無しさん
NGNGもう少し状況を書いてみて
0347339
NGNGchar gname[12]
file.Read(gname,12);
}
catch(CFileException *e) {
//エラー処理をします
e->Delete();
}
こういう風にしてみたのですが、
file.Seek()で移動もしようかな…と思ったけど
できませんでした。
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG0350339
NGNG読込みは単純に終わりました
file.seek(0x30,CFile::begin);
file.read(suimasenn,64);
後はバイナリデータを2バイト文字?
にしたいのですが
82 A8 8A E8 82 A2 82 B5 82 DC 82 B7
=お願いします
こういう変換方を知りたいんです…
0351デフォルトの名無しさん
NGNGCString strBytes;
for(...){
CString strT;
strT.Format(_T("%x%x "),(0xF0 & byte[i])>>4, byte[i] & 0x0F);
strBytes += strT;
}
strBytes.TrimRight();
0352339
NGNG感謝です!
0353ZERO
NGNG擬似乱数を発生させるプログラムで、
int main(void)
{
int a[10], i, j, n=7;
unsigned int seed = 582;
srand(seed);
for (i=0;i<10;i++)
a[i] = 100 * rand()/RAND_MAX;
quicksort(a, 0, n-1);
for (j = 0; j < n; j++)
printf("%5d", a[j]);
printf("\n");
return 0;
}
と書いたのですが、unsigned int seed = 582; と書くと、うまくいかないんです。
581や583など、ほかの数字ではうまくいくんですが、582だけはうまくいきません。
どうすればいいか教えてください。
0354デフォルトの名無しさん
NGNG破綻するという意味か?それならquicksortのバグとれ、ちゅうだけの話。
0355デフォルト名無しさん(272)
NGNGマルチスレッドを作ったのですが、今度は、外部出力からの信号を読み取って
もらえなくなってしまいました。
どうすればいいのでしょうか。対処法をお願いします。
0356日下部圭子 ◆ib749tYo
NGNG> a[i] = 100 * rand()/RAND_MAX;
RAND_MAXで割ると常に0になりますよ。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0357日下部圭子 ◆ib749tYo
NGNG> > a[i] = 100 * rand()/RAND_MAX;
> RAND_MAXで割ると常に0になりますよ。
これは間違いでした。
最初に100をかけているから大丈夫ですね。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0358デフォルトの名無しさん
NGNGTRACE!
0359デフォルトの名無しさん
NGNG……はぁ...
0360デフォルトの名無しさん
NGNG答えようが無い。もっと詳しくかいてくれ。
0361デフォルトの名無しさん(355)
NGNG遅くなってすいません。
詳しい内容として、こんな風にマルチスレッドを作ったのですが、
for(time=0;time<10;time++){
Sleep(10);
DioOutputWord( InOut, FBIDIO_OUT1_16,kekka);
AfxBeginThread(ACK,myED2);
}
UINT ACK(void *pParam)
{
CEdit* pED2 = (CEdit*)pParam;
UINT exitCode;
exitCode=0;
DioInputWord( InOut, FBIDIO_IN1_16, &InData);
while(InData == 1)
{
if(stop_flg){
AfxEndThread(exitCode);
break;
}
Sleep(10);
DioInputWord( InOut, FBIDIO_IN1_16, &InData);
if(InData != 1){
AfxEndThread(exitCode);
DioInputWord( InOut,FBIDIO_IN1_16,&InData);
return 1;
}
}
stop_flg = TRUE;
return 0;
}
原因としては、外部出力側の関数を抜けるとそのままfor関数の中に戻って
しまい、そのままずっとfor関数の処理を行ってしまっているようなのです。
for関数から抜け出すにはどうすればいいのでしょうか。
0362名無しさん
NGNGAfxBeginThreadで呼び出す制御関数は、呼び出すクラスと同じ
クラスのメンバ関数ではダメなんですか。
コンパイルが通らないので、試しにメンバ関数じゃなく、
クラス宣言の外に制御関数を出したらコンパイル通ったんですが。
0363デフォルトの名無しさん
NGNGwhile(InData == 1) で無限ループしている間に、もう一回この関数に入ってくるのか?
具体的に何をどうしたいのかが分からん。
つーか、物凄く物凄いことをしてるような気がする。
行単位で「何のためにどういうことをしたくてこうしたのか」を書いてくれるとありがたい。
私には理解不能のためパス(笑)
>>362
とりあえず static にしとけー
んでもって基本を勉強しとけー
漏れもやっとくから
0364デフォルトの名無しさん
NGNG>>部出力側の関数を抜けるとそのままfor関数の中に戻って
>>しまい、そのままずっとfor関数の処理を行ってしまっている
単独で出てくる変数などがあってこのプログラムで何をしようとしているのかいまいちわからないです。期待している動作を説明してクレイ
0365デフォルトの名無しさん
NGNG別スレッド立てる時は
1.グローバル関数を作る
2.別クラスを作る の2通り。
同一クラス内に複数のスレッドをたてるのは×
0366362
NGNGやはり、363さんの言ってるとおり、基本をまだしっかり解ってないんでしょうね。
スレッドとかプロセスとか、イメージは掴めてるつもりなんですけど、実際に
コンピュータでどう実現されてるか理解してないってことかな。勉強します。
0367デフォルトの名無しさん(355)
NGNG要は簡単にいうと、インターフェースボードからの信号(InData)と
、GUIのコマンドボタンからの動作をマルチスレッドにして両方から
信号を受信できるようにしたいのです。それでこんなプログラムに
なってしまったのです。
そのプログラムを詳しく言うと、for関数の中でインターフェースボードに
信号を送ります。
UINT ACK(void * pParam)関数のところでインターフェースボード
からの信号を受け取り、その信号に対してwhile関数を抜け出し、
なおかつマルチスレッドを使って、GUIからのコマンドでもwhile
関数を抜け出して動作処理を行おうとして行き詰まっています。
ちなみに、シングルスレッドでは、インターフェースボードか
らの信号のやり取りができるプログラムはできています。
0368デフォルトの名無しさん
NGNG悪い。もうちょっと詳しく。
まず、「外部出力」とはなんなのか。制御関数の事か?
あとfor文の中のsleep(10)はなんのためにやっているのか。
DioXXXWord(...)(ライブラリにある関数だったらゴメン)とはなんなのか。
このプログラムだとワーカスレッドがたくさん生成されるが、これは意図した事なのか?
>ループ中に割り込み処理ができるようにAfxBeginThreadを使って
そのループをワーカスレッドでやってはだめなのか?
0369368
NGNGAfxEndThread(exitCode);
break;
}
のbreakもよくわからん。
0370デフォルトの名無しさん
NGNG「外部出力」ていうのは、インターフェースボードでの信号のやりとりで、
DioxxxWord()はip5000のライブラリにある関数です。(こうしないと信号のやり取りができません。)
また、インターフェースに信号を送信,DioInputWord()でコンピュータが信号を受信する関数となっています。
あと、sleep(10)ですが、単なる時間稼ぎみたいなものです。(本当は、for文使わずsleepだけでいいのかも。
く(^^;))
0371デフォルトの名無しさん
NGNGちょい付けたし、breakはGUIのコマンドがきたら、関数を抜け出すというコマンドです。
0372暇人
NGNGUINT ACK(void *pParam)
{
...
do {
Sleep(10);
DioInputWord( InOut, FBIDIO_IN1_16, &InData);
} while(InData == 1 && !stop_flg)
if(stop_flg) {
stop_flg = TRUE;
return 0;
}
return 1;
}
作ったスレッドの終了を検知したかったら、WM_USER_XXXを定義して、
それを returnの前にでも PostMessageする。GUIの関数(ダイアログ?)に。
GUI関数側の WindowProcでそのメッセージを捕まえるんだ!
0373暇人
NGNGif(stop_flg)
return 0;
stop_flg=TRUE;
return 1;
}
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGありがとうございます。それでやってみようと思います。
0376デフォルトの名無しさん
NGNGあるポインタ変数の中身が勝手に
"0xfeeefeee"
というふざけた値になっています。どうしてでしょう?
0377デフォルトの名無しさん
NGNG369の「breakが解らん」はAfxEndThread(exitCode);の後にあったからですよ。
0378デフォルトの名無しさん
NGNGそれは、キミが初期化を忘れてる兆候だ。
0379デフォルトの名無しさん
NGNG0380デフォルト
NGNGダイアログボックスベースのプログラムで
自分で作ったほかのクラスから
一番上のウインドウハンドル
m_hWndを得るにはどうしたら良いでしょう?
CxxDlg::GetSafeHandle
したり
CxxDlg::m_hWnd
したり
よくわからないままいろいろしてるのですが、どれもうまくいきません。
初心者カキコです。すまんです。
0381デフォルトの名無しさん
NGNGしたり
GetParentOwner()->m_hWnd
したり?
0382380
NGNGありがとうございます。でも
それだと
CWndの下のクラスでしか使えないみたいです。
たとえば
自分でソケットを扱うクラスを別に作ってその中でウインドウハンドラをつかいたいばあい
class mySocket{
SOCKET socket
mySocket(){
//たとえばここでメインダイアログのハンドルを手にいれたい
//WSASYNCSELECTをつかったりするときに。
}
}
といった感じです。
いろんな場面でそれにぶち当たるのです・・
0383デフォルトの名無しさん
NGNGAfxGetMainWnd()->GetSafeHwnd() とかなんとかそんなの。
0384デフォルトの名無しさん
NGNGtemplate<class T>
class CMySocket : public class T{
... GetSafeHwnd(),
}
class CUseSocketWnd : public CMySocket< CWnd > {};
とか、
template<class T>
class CMySocket{
... static_cast<T*>(this)->GetSafeHwnd()...
}
class CUseSocketWnd : public CWnd , public CMySocket< CUseSocketWnd > {};
するとかどうよ?
0385380
NGNG(AfxGetMainWnd()->GetSafeHwnd(),IDC_USERLIST);
UserList->InsertString(-1,"test");
リストボックスのテキストを
こんなかんじで書いてみたらコンパイラはとおりました。
でも"text"が表示されないです。
メインダイアログのクラスの中で
CListBox * UserList = (CListBox*)GetDlgItem(IDC_USERLIST);
UserList->InsertString(-1,"test");
こうするとちゃんと表示されます。うーーーーーむ
0386デフォルトの名無しさん
NGNG> アプリケーションが OLE サーバーではない場合は、アプリケーション オブジェクトの m_pMainWnd を返します。
0387デフォルトの名無しさん
NGNG「これから始めるVC++ 6.0」 で独学しています。アプリケーションウィザード
を使って作る「時計の制作」の例で、時計のオブジェクトIDに対するメンバー関
数をCMainFrameに書くようになっています。
他の例ではViewクラスに記述する例が多く書かれていたのでいので、そちらに
書いてみると動作しました。オブジェクトに対するハンドラをCMainFrame に割
り当てるのと、Viewクラスに割り当てることの違いは何なのでしょうか?
0388デフォルトの名無しさん
NGNG> 一番上のウインドウハンドル
> m_hWndを得るにはどうしたら良いでしょう?
> CxxDlg::GetSafeHandle
> したり
> CxxDlg::m_hWnd
> したり
一番上かはともかく、取得したいダイアログのクラスがCxxDlgってわかってるなら
CxxDlg dlg;
HWND hwnd = dlg.m_hWnd;
でいいのでは?
0389デフォルトの名無しさん
NGNGわかりやすく
0390デフォルトの名無しさん
NGNG本の内容は知らないけど、メッセージはView、Doc、FrameWnd、App
それぞれのクラスに順番にルーティングされるから、どっちのクラスに
書いても動いたのでしょう。著者が書く場所を変えたのは、メッセージの
種類を分別してわかりやすくしようとしたからでしょう。
0391デフォルトの名無しさん
NGNG390さん有り難うございます。
メッセージが順番にルーティングされるということは、メッセージ
ハンドラをどこに置いてもよいような感じなのでしょうか。
確かにクラスウィザードを見てみると、クラス名を変えてもオブジェ
クトIDの内容はほとんどそのままなので、メッセージハンドラはどの
クラスに書いてもOKということなのですね?
0392380
NGNGレスありがとうございます。
ずっと一生懸命
extern CxxDlg dlg;
してました。
CxxDlg dlg;
だとdlg.したときに補完機能がちゃんと働きますね!
CListBox * UserList = (CListBox*)GetDlgItem
(dlg.m_hWnd,IDC_USERLIST);
でもこれでリストボックスのハンドルを得てから
UserList->InsertString(-1,"test");
こうして項目を追加すると落ちてしまいます・・・
〜の命令が〜のメモリを参照しました。メモリがreadになることはできませんでした
のエラーです。
リストボックスの使い方もいろいろ見てみたのですが、う〜〜ん。
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG落ちるのは当たり前ですよ。
::GetDlgItem(HWND hWnd, int nID)の戻り値は、CWnd* ではなく、HWND。
こういうことだろうか?
CListBox* UserList = (CListBox*)CWnd::FromHandle(::GetDlgItem(AfxGetMainWnd()->m_hWnd, IDC_USERLIST));
っていうか、これで良いと思う。
CListBox* UserList = (CListBox*)(AfxGetMainWnd()->GetDlgItem(IDC_USERLIST));
実際可能かどうかは分からないけど。
0395380
NGNGありがとうございます。!
できました。まだMFCクラスの木構造を把握してないので、
正直わかったようなわからんようなですが、
勉強します。
0396デフォルトの名無しさん
NGNGでは?
0397デフォルトの名無しさん
NGNG新しいインスタンス作ってどーすんのよ?
それに CListBoxのコンストラクタに HWNDを渡すのなんて無いよん。
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNGVBで選んでいくだけで、できるような機能はありますか。
検索ワードでも良いので教えてください。お願いします。
0400デフォルトの名無しさん
NGNG0401___
NGNG猫でもわかるhttp://www.kumei.ne.jp/c_lang/mfc/mfc_01.htm
でMFCの勉強をしようと思って
第一回のソースをそのまま打ち込んでみたのですが、
#include "afxwin.h"
class CMyWindow : public CFrameWnd
{
public:
CMyWindow();
};
CMyWindow::CMyWindow()
{
Create(NULL,"猫でもわかる",WS_OVERLAPPEDWINDOW);
}
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMyWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
CMyApp myApp;
コンパイルはできるが実行時にリンカが
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__endthreadex" は未解決です
nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__beginthreadex" は未解決です
Debug/SDKTOMFC.exe : fatal error LNK1120: 外部参照 2 が未解決です。
この3つのエラーを出してしまいます。
VCのバージョンのせい(使っているのはVC6)
かもと思っているのですが、解決策ありましたら教えてください。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGそれって典型的なMFCしてないエラーじゃないか
プロジェクト作成でMFC APPウィザード(exe)で作った?
もしかしてWin32 applicationで作ってやってない?
俺も前にCStringをWin32 applicationで使おうとしたらそんなエラーでた
0404でふぉるとのななし
NGNGそこのエディットボックスにリストボックスの内容が入っているという
コードを書こうとしています。
IRCやなんかのインスタントメッセージを想像してもらえるとよいかと思います)
IM ImDialog;
ImDialog.DoModal();
でダイアログを出して
その中のIDC_IMTARGET
のエディットボックスのハンドラをてにいれようとこんな
コードを書きましたが、エラーが出ます。なぜでしょうか?
CEdit* EditBoxIm = (CEdit*)ImDialog.GetDlgItem(IDC_IMTARGET);//ここでエラー
EditBoxIm->SetWindowText(ss);
0405デフォルトの名無しさん
NGNG詳しくエラーの種類の書かずに対処法を求める
あなたの態度が原因ではないでしょうかね?
0406デフォルトの名無しさん
NGNG0407でふぉるとのななし
NGNG失礼致しました。
Debug Assertion Failed
Program C*〜〜
File:winocc.cpp
Line:76
といったエラーです。
さらにもう一つ関連する部分で疑問が出たのですが
ダイアログが最初にDoModalされた後に
初期化処理をする方法って
どうやるのでしょうか?
アプリケーションならばInitInstance
ウインドウならばOnPaintに初期化の処理を書けばいいのだと思いますが、
みようみまねで、OnInitDialog()
関数を作って書いてみたのですが、それも上記と同様のエラーが出てしまいました。
0408デフォルトの名無しさん
NGNGこれの意味がわかりませんか?
ImDialogがウインドウではない、ということです。
まさか、
ImDialog.DoModal();
CEdit* EditBoxIm = (CEdit*)ImDialog.GetDlgItem(IDC_IMTARGET);
EditBoxIm->SetWindowText(ss);
と続いているのでしょうか?なら、制御がDoModalから帰ってきた時点で、
ImDialogは破棄されているはずですが。
0409でふぉるとのななし
NGNGありがとうございます。
DoModalを勘違いしていたようです。
Winocc.cppを見てみました。
ならば、と思い順番を入れ替えてこんな感じにしてみましたが
やはり同じエラーが出てしまいました。
IM ImDialog;
CEdit* EditBoxIm = (CEdit*)ImDialog.GetDlgItem(IDC_IMTARGET);
EditBoxIm->SetWindowText(name);
ImDialog.DoModal();
やはりImDialogがWindowじゃないとの
ことなのですが・・・この場合は定義してDoModalの前だから
ウインドウではないかと思ってしまうのですが・・・・
0410デフォルトの名無しさん
NGNG処理方式の違いについて勉強しる!
DoModalを発行した時点でダイアログが作られ、そのなかで
メッセージループが廻る。制御が戻るのは、ダイアログ
プロシージャでEndDialogを発行して、ダイアログが破棄されてから。
だから、SetWindowTextをDoModalとおなじ文脈で書くのは間違い。
0411デフォルトの名無しさん
NGNGするのは、そもそも設計からして大間違いなんだが。
0412デフォルトの名無しさん
NGNGCFileDialog(TRUE, _T(".txt"), NULL,
OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT,
lstrFileExt, NULL);
で問題ないよね?
VS.NET だと複数選択して開くと IDCANCEL が返って
くるんだけど…
なんか馬鹿やってるのかなぁ
0413でふぉるとのななし
NGNGなるほど。
うんと考えてこんな感じでできました。
IM *ImDialog = new IM(this);
ImDialog->Create(IDD_IM);
ImDialog->ShowWindow(SW_SHOW);
CEdit* EditBoxIm = (CEdit*)ImDialog->GetDlgItem(IDC_IMTARGET);
EditBoxIm->SetWindowText(name);
でもなんか試行錯誤してて
すごくわかった気がします。
0414デフォルトの名無しさん
NGNGCStringメンバ変数を割り当てておいて、
IM ImDialog;
ImDialog.m_strImtarget = name;
ImDialog.DoModal();
とでもすればいいような気もするけどなぁ。
IRC使ったことないからわからないけど、DoModalじゃだめらしいんで
流してくれていいけどさ。
0415デフォルトの名無しさん
NGNGメニューの[プロジェクト]→[設定]→[一般]タブ
で、[共有DLLでMFCを使用]を選択するとどう?
>>403
いや、AppWizard使ったらスクラッチで書く必要ないやろ...
0416デフォルトの名無しさん
NGNGも、も、漏れもそろそろManagedも勉強するよ・・・
0417デフォルトの名無しさん
NGNGどうやって取得するんでしょうか?
0418デフォルトの名無しさん
NGNG今さらMFCを勉強してる俺って・・・
0419デフォルトの名無しさん
NGNG新しいのを出されると
困るわぁ
0420デフォルトの名無しさん
NGNG浸透して「CLR(・∀・)ii!!」ってなるまでMFCやってるべ。
0421デフォルトの名無しさん
NGNGわからんし。
0422デフォルトの名無しさん
NGNGだったら、C#でWindows Formsやった方が・・・
0423デフォルトの名無しさん
NGNG背景の色変えるのってどうしたらいいですか?
0424た。
NGNGボタンの背景?ウインドウの背景?
ボタンの背景だったらオーナードローで書き換えて上げるしかないか?
0425デフォルトの名無しさん
NGNGもしかして、いやそんなはずは無いと思うが、万が一、何かの間違いかもしれないが
HTMLじゃないよね?
0426423
NGNG背景色を変えれる関数ってないんですかね?
MSDNとかで調べたつもりなんですけど
初心者なもんでわからなかった…
0427デフォルトの名無しさん
NGNGSetDialogBkColorとかOnCtlColor。
0428423
NGNGそれってボタン押したときに使えなくないですか?
ウィンドウの初期化に使うって書いてあったんですけど。
0429デフォルトの名無しさん
NGNGどこに書いてあったのよ
0430デフォルトの名無しさん
NGNG0431423
NGNGでもOnCtlColorの方で出来そうなんで調べてみます。
ありがとうございます
0432デフォルトの名無しさん
NGNG書いてあったとかじゃなくてまず試せよ。
0433デフォルトの名無しさん
NGNG今度からもうちょい詳しく書いてくれないと答えにくい。
0434デフォルトの名無しさん
NGNG私は428ではありませんが、VCの別の問題にテンパッて居り、
解決策を求め スレを読んでいました。御助言によって開眼し
早速 試行錯誤を繰り返し、さっき 問題の原因を発見できました。
唐突な電波じみたカキコで 恐縮ですが、
お礼を言いたく・・・ありがとうございました!
0435デフォルトの名無しさん
NGNGちなみにプログラムは
ss1 = "[%2d]X=%3d Y=%3d R=%4.2f \r\n",j+1,X,Y,R;
m_Status = m_Status + ss1;
myED1->SetWindowText(m_Status);
という風になっています。
どうすればいいのでしょうか。
0436デフォルトの名無しさん
NGNG>ちなみにプログラムは ......という風になっています。
?何?自分で書いたプログラムじゃないってこと?
それとも、コンパイル通らないからナントカしてくれってコト?
0437デフォルトの名無しさん
NGNG変数の型がわからんけど、
char ss1[100];
だとしたら、
sprintf( ss1, "[%2d]X=%3d Y=%3d R=%4.2f \r\n",j+1,X,Y,R );
こうかな。
0438デフォルトの名無しさん
NGNGいや、'+'のオーバーロードつかってるから、
CStringだろう。
0439438
NGNGしかし、どうして欲しいのかが解らん。
0440デフォルトの名無しさん
NGNGじゃねーの?
0441デフォルトの名無しさん
NGNG> いや、'+'のオーバーロードつかってるから、
> CStringだろう。
m_StatusがCStringだったら、ss1はchar*でもCStringでもOKじゃん。
(m_StatusはCStringだけど)
0442438
NGNGたしかに。・・・で肝心の435は?
0443デフォルトの名無しさん
NGNG437か440でOKなんじゃないの。
なにか不足でも?
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG質問する人が最近多い気がする。
0446435
NGNG0447デフォルトの名無しさん
NGNGワラタ
0449デフォルトの名無しさん
NGNGname = "御前 藻名";
SetWindowText(CString("私の名前は") + name + CString("です。"));
上記のようなプログラムがあって、変数nameに名前を入れた後、
SetWindowTextで名前の前後に文字を入れて+演算子で結合して実行したのですが、
実行結果
私の名前は
で終わってしまい、正しく表示されません。
何がおかしいのでしょうか?
0450デフォルトの名無しさん
NGNG0451仕様書無しさん
NGNG0452449
NGNGうまくできないー。
CE用のアプリケーションを開発しているんだけど、
eVCじゃ無理なのかな?
0453デフォルトの名無しさん
NGNGname = L"御前 藻名";
とかしなくても自動で変換してくれるの?
0454449
NGNGnameの部分は本来レジストリから取得しています。
引数に使っている(LPByte)(LPCTSTR)を流用して、
name2=(LPByte)(LPCTSTR)name;
とし、SetWindowTextしてみたところ、最初の一文字'a'だけ表示されるようになりました。
もうちょっとって感じなんですが、後はどうすればよいのかわかりません。(涙
教えて厨で申し訳ありませんが、ご教授よろしくお願いします。
0455デフォルトの名無しさん
NGNG…ちゃんとレジストリ読めてる?
RegQueryValueEx()を呼び出してるなら、最後の引数“LPDWORD lpcbData”は
受け取る最大文字数を指定しとかないといけないんだけど。
あと、引数に name を直接指定してないよね?
0456デフォルトの名無しさん
NGNGこれに相当するAPI関数はないですか?
0457デフォルトの名無しさん
NGNGCだったらキャストするかstrto系で変換するかのどっちかだろう。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGとりあえずダイアログベースのアプリケーションは組めるようになりました。
そしてSDIに挑戦しようと思ったのですが、
テキストを普通に表示する方法がわかりません
TextOut関数みたいに場所を選択するのではなく
コンソール画面のように改行を含めたテキストを簡単にばーっと
表示する部分が欲しいのです。
ダイアログベースならば、EditBoxを使えば簡単に出来るのですが、
SDIの場合どのようにしたらいいのでしょう?
とりあえずドキュメントクラスにCString型の変数を作って
そこにデータをいれてViewクラスのOnDraw関数で表示すればよいの
だろうと思っているのですが・・・・。
なにやら本をみてもフォントの高さを測って
位置を計算して、出力みたいに書いてありますが、
そうするしかないのでしょうか?
Visual C入門ビギナー編、シニア編どちらも買ったのですが、書いてないのです。
ひょっとしてあまりにも簡単すぎて情報がないのでしょうか・・?
0460( ・∀・)つ旦
NGNGCButton等コントロールを自分でCreateするときに、
渡すIDってどうすればいいのでしょうか?
このIDはどのように使われるもので、
どういう制約があるのか等がわからないのですが…
0461デフォルトの名無しさん
NGNG>459 AllocConsoleして、WriteConsole (w
エディットビューかなんか使えば?
>460 コントロールが親にWM_COMMANDとしてメッセージ飛ばすときに使う。
0462デフォルトの名無しさん
NGNGなるほどエディットビューを使うのですね。試してみます。
またちょっと話が変わるのですが、
Docクラスの外部からDocumentクラスのメンバにアクセスするにはどのようにするのでしょうか?
ViewクラスではCXXDoc pDoc = GetDocument();
でpDocを手に入れていますが、自分で作った外部の関数からはGetDocument画使えませんよね。
WinAppクラスならば extern CXXApp theApp;
してメンバにアクセスできますが、Documentクラスの場合うまくいかないようです
0463デフォルトの名無しさん
NGNGみれ。
0464VB厨房
NGNG0465デフォルトの名無しさん
NGNGコントロール配列って何?
どんな機能があんの?
0466デフォルトの名無しさん
NGNGコントロールが規則正しく並んだら面白いな。
0467( ・∀・)つ旦
NGNGありがとうございます。
しかし、そうするとWM_COMMANDを発行する気のないコントロールは
適当な値を渡して(・∀・)イイ!!という事なのでしょうか?
0468デフォルトの名無しさん
NGNGClassWizardで各コントロールにメンバ変数を割り当てた後、ソースを検索して
手作業で配列に書き直すのが楽。
書き換えた部分は //{{ …… //}} のブロックの外に出しておくのを忘れずにな。
メッセージハンドラは、IDを連番にしておいて ON_COMMAND_RANGE とかで対処。
0469VB厨房
NGNG0471デフォルトの名無しさん
NGNGWM_COMMANDを呼びだそうが、呼び出すまいが、かぶったら駄目だし
かぶらねければ良い。
心配だったらresource.hでも覗けばよろし。
0472デフォルトの名無しさん
NGNGstatic controlはどうなる?
0474デフォルトの名無しさん
NGNGその辺は常識範囲内だろ。・・・・多分。
0475デフォルトの名無しさん
NGNG動的にコントロールを増やす場合は、ON_COMMAND_RANGEとか、
ClassWizardとかを使わずに、WindowProc(仮想関数)を
オーバーライドし、WM_COMMANDを直接処理するのが良いと思う。
0476( ・∀・)つ旦
NGNG了解しました。ありがとうございます。
重複しないように気をつけるです。
私は、いままでストリングテーブルとかでダミーをつくって
それのIDを使うようにしてたんですけど…
コーディングの時に何かリソースエディタが作るIDとかと
かぶならいための方法とか
あるんでしょうか?
0478デフォルトの名無しさん
NGNGID作るなら[表示]→[シンボルブラウザ]で新規作成したほうが楽では。
連番でID作ってくれるからかぶらないし。
0479学習中
NGNG現在、マウスで線は書けるのですがちょっと発展させてプルダウンメニューを
追加し、「始点を固定する」、「X軸を固定する」「Y軸を固定する」の3通りの
変化を付けられるように、メニューを作成してやってみましたが、
c:\documents and settings\public\デスクトップ\draw2\draw2.cpp(12) : fatal error C1083: インクルード ファイルがオープンできません。'resource.h': No such file or directory
cl.exe の実行エラー
プルダウンメニューと元のソースの連携が出来ていないのか起動しません。どう対処したらよろしいでしょうか?
0480デフォルトの名無しさん
NGNGCArrayでコントロールの配列クラスを作るとか。
やったことないので詳しくはわからんけど。
>>479
コメント見る限りだとresource.hが無いらしいけど、そのファイルはちゃんと
あって、インクルードされてる?
0481デフォルトの名無しさん
NGNGプロジェクトに入ってないんじゃねえの?わかんねえけど・・。
0482( ・∀・)つ旦
NGNGおお、こんなものがあるとは、ありがとうございます。
気づけ、自分。
0483デフォルトの名無しさん
NGNGMFC でも VC++ でもない、それ以前…
対処も何も、同じディレクトリにあるべき resource.h がないって
出てるじゃん。
どこに捨てたの?
0484デフォルトの名無しさん
NGNG片方の方で、最初動かして、あるボタンをおしたらもうひとつの方が起動するってのを
やりたいのですが、どういうほうほうがありますでしょうか?
0485デフォルトの名無しさん
NGNGShellExecute , CreateProcessなんか。
0486デフォルトの名無しさん
NGNGShellExecute
0487デフォルトの名無しさん
NGNG>485
0488デフォルトの名無しさん
NGNGってことはできるのでしょうか?
あと、その他のexeファイルを隠したいです。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNG0492超初心者
NGNG全て自動的にロードする、というプログラムはどう組んだらよろしいのでしょうか?
例えば、
abc000.dat、abc001.dat,abc002.dat…
などのファイルが存在し、ディレクトリ内の
abc●●●.datを全てロードすると言う感じで。
よろしくお願いします。
↑↑
他スレに書いたんですが、レスがついてないので
こちらでお願いすることにしました。
やはり、一つ一つロードしてみるしかないんですかね?
0493デフォルトの名無しさん
NGNGやっとlibpngとlibjpeg組み込んでPNGとJPEGファイル
表示できるようになりました
それにしてもPNGはとにかくJPEGって
ビットマップ並に使われてるのにソースなんかを
紹介してるプログラムの本って
ほとんどないですね(私が見落としてるだけ?
つーかSDK標準で組み込んでないのがそもそも疑問
なんでだろう(w
0494デフォルトの名無しさん
NGNGMSDNで
FindFirstFile
を検索してみて
0495デフォルトの名無しさん
NGNG※ p はフォルダのパス(c:\windows など
abc●●●.datを検索したいなら
void hoge(LPCTSTR p)
{
CString cstr;
WIN32_FIND_DATA ffd;
HANDLE hFindFile;
cstr.MakeLower();
cstr.Format("%s\\abc*.dat", path);
hFindFile = ::FindFirstFile(cstr, &ffd);
if(hFindFile != INVALID_HANDLE_VALUE){
do{
cstr = ffd.cFileName; // ここのcstrにファイル名一覧がくる
}
while(::FindNextFile(hFindFile, &ffd));
::FindClose(hFindFile[0]);
}
}
0496誤爆
NGNG0498デフォルトの名無しさん
NGNGコーディングしていて、エラーもなくVisual C++からでもバイナリ(exe)単体でも
起動するのですが、「MFCのスタティックライブラリを使用」に設定を変えてビルドし直して
起動するとアプリケーションエラーになって起動しません。
要因としては何が考えられるでしょうか。
(Debugモードでビルドしていますが、Releaseでも同じ結果になりました。)
0499かるかん ◆TM3.ie9w
NGNGスタンダードエディションではできない。
0500かるかん ◆TM3.ie9w
NGNG大概は変数の初期化忘れとかなんだけどね。
mallocして初期化しないでそのまま使ってるとか。
0501498
NGNGビルドはできます。
その線で洗ってみますね。
0502デフォルトの名無しさん
NGNGなんで、どういうアプリケーションエラーが出てるかを書かないかなー
0503デフォルトの名無しさん
NGNGあれみたいにかしこまって書かなくてもいいけど…
0504デフォルトの名無しさん
NGNGhttp://www.hyuki.com/writing/techask.html
0505デフォルトの7子
NGNGCEditViewに変更する必要がでましたので、
CEditViewを継承して新しくクラスをつくり
アプリケーションクラスのInitInstanceの
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CKunekuneDoc),
RUNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ
RUNTIME_CLASS(XXXNewView));
↑
この部分をXXXNewViewに変更しました。
するとウインドウの部分にカーソルが出て確かにEditViewクラスにはなっているようですが、
OnDraw関数に何か書き込んでも、表示することが出来ません。なぜでしょうか?
0506デフォルトの7子
NGNGすみません。
それ以前の問題のようでした。
CEdit *ED1 = &GetEditCtrl();
ED1->SetWindowText("test");
のこのコードをスケルトンがまっさらの状態から試してみたのですが
なにも表示されませんでした・・・。
コンパイラもとおるので何が間違っているのでしょう?・・?
0507デフォルトの名無しさん
NGNGならどうですか
0508デフォルトの名無しさん
NGNGCEdit &ED1 = GetEditCtrl();
0509デフォルトの名無しさん
NGNGStretchDIBits だと矩形でしょ。
それを三角形とか五角形とかでやりたい
0510デフォルトの7子
NGNGありがとうございます。お二方の方法を両方ともやってみました。
ところがどちらも何も表示されませんでした。
状況はMFCアプリケーション,SDI,使用クラスはEditViewを
選択し、まっさらのスケルトン状態で
OnDraw関数に書きこんでいます。
ただ最初の状況で文字を表示したいだけなのですが、
こんなにややこしいとは・・・・・
0512デフォルトの名無しさん
NGNGその画面上にシールみたいな奴
(周囲を四角で囲って中に情報を書き込む)を作りたいのですが、
どのようにしたらよろしいでしょうか?
四角を作るだけなら簡単ですが、中に文字をかくとなると…?
0513デフォルトの名無しさん
NGNGたぶん、CEditView派生のクラスだとOnDraw呼ばないよ。
0514デフォルトの名無しさん
NGNGフォルダをダブルクリックしたとき見たく開くにはどうすればいいですか?
0515デフォルトの名無しさん
NGNG_っていうかフォルダ開いて何したいかが問題。
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNGレスありがとうございます。試してみます。では。
0518デフォルトの名無し(435)
NGNGコンソール(MS-DOS)のようにすぐに(X,Y)座標の位置を表示しようとしたのですが、
すべての座標を読み取ってから(X,Y)座標を表示してしまいます。
どうすればいいのでしょうか。
ちなみに、プログラムは
CString ss1,m_Status;
ss1.Format("[%2d]X=%3d Y=%3d R=%4.2f \r\n",j+1,X,Y,R);
m_Status = m_Status + ss1;
myED1->SetWindowText(m_Status);
というプログラムで、
このプログラムがだいたい100回ぐらい繰り返されます(だいたいというのはwhile関数で行っているため)。
多分文字数が多くなってこうなったのだと思うのですが、
何か解決策でもあればいいのですが教えてください。
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNGSDKに入ってるけど、表示するだけなら、
IPicture->render();
とかいう関数でjpgもだけど、色んなのをその関数だけで表示できるよ。
COMだけどAPIみたいなもんだYO.
キーワードはOleLoadPibture(),(API)
CreateStreamOnHGlobal(),(API)
だYO
0521デフォルトの名無しさん
NGNG> while関数で行っているため
whileは関数ではありません。
0522デフォルトの名無しさん
NGNGとりあえず SetWindowText の後で UpdateWindow してみる。
チカチカしてまともに読めたものじゃないと思うが。
こういう場合は SetSel でEditの末尾を選択して ReplaceSel で
追加分だけ足していくのが定跡。
0523デフォルトの名無し(435)
NGNGすいません。while関数ではなくwhile文でしたね。(^^;)
0524デフォルトの名無しさん
NGNGCString ss1;
for(int i=0; i<100; i++){
ss1.Format("%d\r\n", i);
int nLen = myED1->GetWindowTextLength();
myED1->SetFocus();
myED1->SetSel(nLen, nLen);
myED1->ReplaceSel(str);
}
みたいな感じかなぁ。
でもループで100個くらい回したところで表示経過はたいして見えないよ。
0525524
NGNGmyED1->ReplaceSel(ss1);
でしたん。そして522とかぶってたん。
0526デフォルトの名無しさん
NGNGちゃんとgetwindowtextlengthしろよな!
0527デフォルトの名無し(435)
NGNGありがとうございます。
0528デフォルトの名無し
NGNGダイアログが消えてしまうのですが、ダイアログを消えないようにするにはどうす
ればいいのでしょうか。
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGきみはそう言うけどもだね、それがどんなボタンでどういう処理をして
どんなダイアログが消えるのかなんて、聞いてる方にはわからないんだよぅ。
0531デフォルトの名無し
NGNGすいませんでした。
ボタンの処理は「原点復帰」と「スタート」ボタンというボタンで
最初「原点復帰」を行ってから「スタート」ボタンをクリックする
とダイアログが消えてしまうのです。
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGそれは処理じゃなくてボタンの名前ちゃうんかと。
プッシュボタンの名前を言っただけちゃうんかと問い詰めたい。
でもボタンが2つあることがわかったからちょっと前進。
プログラムもきっとダイアログベースなんだろう。(AppWizard+MFC)
そのダイアログが消えてしまうってことなんだろう。
もしかして、い、いや、そんなことはないと思うが、
そのスタートボタンというやつ、[OK]ボタンのキャプションを[スタート]
に変えた、、、ってことはないよね。
0534デフォルトの名無し
NGNG[OK]ボタンのキャプションを[スタート]にし、
もちろんIDもIDOKからIDCSTARTに変えましたが・・・。
0535デフォルトの名無しさん
NGNGcase :break;のbreakが抜けてるとかない?
case WM_COMMAND:
....
....
....←ここのbreak;がぬけてんの。
case WM_CLOSE:
break;
なまじ動いちゃうからたちわりーんだよな
0536デフォルトの名無しさん
NGNGを
//CDialog::OnOK();
とでもしてください。
0537デフォルトの名無しさん
NGNGここMFC限定だし…
0538デフォルトの名無しさん
NGNGあはははは。笑えるね、それ。
・・・しかし>>534見てる限りだと可能性は大だ。
0539デフォルトの名無し
NGNG一応ONOK探しましたがありませんでした。(w
モードレスダイアログを作成してやったのですが、やっぱりボタンを押してプログラム処理
した後、もう一回ボタンを押すとダイアログが消えてしまいました。
ほかになにかいい方法はないでしょうか。
0540デフォルトの名無しさん
NGNGとりあえずデバックで追っかけてみてよ
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGどういう処理が行われるか
ちゃんと理解してつくってるのか?
0543デフォルトの名無しさん
NGNG「原点復帰」を押さずに「スタート」を押した場合はどうなる?
消えるとしたら「スタート」がそういう処理になってる。
消えないとしたら「原点復帰」の処理でどこかをぶち壊してる。
「原点復帰」しないと「スタート」押せない仕様だとしたら、そういうことは最初に言う。
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGはい。今、「原点復帰」と「スタート」の実装をみんなで推理してるところです。
ヒントはいろいろ出てくるんですけどね…
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNG仮説2: IDCSTARTの値が1とか2
0548デフォルトの名無し(531)
NGNGデバッグした所、1回初期化する関数を何回も呼び出して
いたのが原因でした。
2回目以降そのプログラムを実行すると強制終了されるのをすっかり忘れていました。
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG・・・・・・。
0552業
NGNG0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNGそれに比べればかわいいヤツだとおもう也。
0556デフォルトの名無しさん
NGNG名言だな。今後、厨問した後「コンパイラのバグだと思うのですが...」って
付け加えるネタが流行る。
0557デフォルトの名無しさん
NGNGうかつにそれを言うと後で恥を書くこともあるという諸刃の剣。
そういればVC++.NETβ2でテンプレートクラスを明示的に特殊化したときに
コンストラクタが呼ばれなくて強制終了しまくって苦労したなぁ。
再現方法わからんけど。
これってコンパイラのバグですか?
0558デフォルトの名無しさん
NGNGなにがあっても。
0559デフォルトの名無しさん
NGNG別のBMPを表示したいのです。
例えば、背景の絵の上に赤ベタや黒ベタ(色は任意)のシルエットみたいな
BMPを表示したいのですが、やはり256色ではダメなのでしょうか?
0560デフォルトの名無しさん
NGNG0561559
NGNG現在、256色の画像ファイルをDIBで表示しています。
やはり256色のBMPをDIBで表示しようとすると、
同じパレットを参照してしまいます。
背景のパレットの256色はフルに使われているので
空きがありません。
プログラムはできれば256色でやれと指示されたのですが。
実は昨年末からVC始めたのでよく分からないのです…
0562デフォルトの名無しさん
NGNG0563559
NGNG0564デフォルトの名無しさん
NGNG256色DIB上にほかのDIBを重ねるんだったら256色以上出せないのは当たり前。
ディスプレイ上に2つのDIBを重ねるんだったらディスプレイが256色じゃない限り何の問題もない。
0565559
NGNG>そもそも”どこに”表示しようとしてるのか書かれてない
あ、これは失敬。
>256色DIB上にほかのDIBを重ねるんだったら256色以上出せないのは当たり前。
うーむ、やはりそうでしたか…。出直してきます。
0566デフォルトの名無しさん
NGNGAppWizardで生成されたスケルトンコードで、ファイルの「開く」とか選ぶと、
ファイルパスを指定するダイアログがでますよね。あれってどういった関数で
呼び出してるのでしょうか??
0567デフォルトの名無しさん
NGNGその中でDoModalしてんだろ
0568デフォルトの名無しさん
NGNGおいおい、頼むよ・・・。
そんなのAPI辞典か何かで調べてくれって。質問する内容じゃないだろ。
そもそも、それを調べられない時点でプログラマとしての資質が
限りなく0に近いと思うのだが。
0569デフォルトの名無しさん
NGNG本代ケチって時間を無駄にしてるパターンなのかなぁ。
コモンダイアログの説明なんて、たいていの入門書に載ってると思うけど。
0570デフォルトの名無し(531)
NGNGEditボックスの垂直スクロールバーを常にスクロールする(常につまみを下にする)
にはどうすればいいのでしょうか。
0571デフォルトの名無しさん
NGNGどこで呼び出してるのか、を聞きたかったんじゃないか?
まぁ、>>567の通りでたいていの書籍に載ってることも間違いないんだが。
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG「Editボックスに何か追加した時、一番下の行が見えるようにスクロール
させたい」ってことか? それなら >>524-526 あたりを参照。
0574デフォルトの名無し(531)
NGNGありがとうございます。
>>524を参照にやったらできたのですが、
いざ実行すると
原点復帰します。
原点復帰します。
原点復帰します。
原点復帰
となってしまい。
そこから先表示されなくなってしまいました。
オーバーフローになってしまったのでしょうか。
プログラムは、
void CGUI::OnCgenten()
{
CEdit* myED1=(CEdit*)GetDlgItem(IDC_STATUS);
CString ss;
int nLen;
ss="原点復帰します。\r\n";
ss.Format("%s",ss);
nLen=myED1->GetWindowTextLength();
myED1->SetFocus();
myED1->SetSel(nLen,nLen);
myED1->ReplaceSel(ss);
}
となっています。どうすればいいのでしょうか。
0575デフォルトの名無しさん
NGNG> ss="原点復帰します。\r\n";
> ss.Format("%s",ss);
感動した。
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNGきっとコンパイラのバグです。
0578デフォルトの名無しさん
NGNGここまでくるとネタだと思えてくる
0579デフォルトの名無しさん
NGNG0580デフォルトの名無しさん
NGNG0581デフォルトの名無し(531)
NGNGGetLineCount関数もLineScroll関数も使いました。
が、うまくいきませんでした。
0582デフォルトの名無しさん
NGNGどううまくいかなかったのか教えて!
せめてヒント、最初の1文字は?
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG具体的には、下記のようにSetItemでイメージのインデックスを指定しましたが、反映されず、同じアイコンが表示されたままです。
CListCtrl& list = GetListCtrl();
...
if ( ... )
{
icon = 1;
list.SetItem(nItem, 0, LVIF_STATE, lpszItem, icon, 0, 0, 0);
}
良い方法がありましたら、ご教授お願いします。
0585デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNGリンクをクリックされたらポップアップメニューを出したり、
いろいろな処理をさせたりしたいのですが、どうやっていいか
わかりません。CHtmlViewにはリンクをクリックされた時に処理
されるメッセージハンドラもないですし、親クラスのCViewのマウス
クリックイベントは定義しても、なぜか使用できないです。
そんで、いろいろ調べたところ、どうやらCOMという技術を使わない
と、そういったことは難しいらしいのですが、COMを使ったIEコンポー
ネントの制御方法について詳しいサイトや本があったら、教えてほしい
のですが、、、
よろしくお願いします。
0588デフォルトの名無しさん
NGNG俺も以前ここでMFC+COM系の質問したんだけど放置されたよ…
ちなみにラップされてないCOMのスレもあるけど、あまり動いてない。
0589デフォルトの名無しさん
NGNGCHtmlViewってVC++6.0じゃないと使えないの?
VC++5.0じゃ駄目なのか・・・鬱だ。
0590デフォルトの名無しさん
NGNG0591デフォルトの名無し(531)
NGNGEditボックスの表示を前のプログラム
m_Status = m_Status + ss1;
myDL1->SetWindowText(m_Status);
に直し、
その後に
int line = myED1->GetLineCount();
myED1->LineScroll(line);
上手く行きました。
0592デフォルトの名無しさん
NGNGなんなのこいつ(;´Д`)
0593デフォルトの名無しさん
NGNG再度こちらに書きます。
あるスレッドを使ったプログラムをCOM化すると、
WaitForSingleObjectのところで応答が返ってきません。
どうやらスレッドが終了していないようなのですが、原因不明です。
COM化してない場合は問題なく動くのですが、
なにかご存知の方、いらっしゃいますでしょうか?
0594デフォルトの名無しさん
NGNG君の求めているものが全てある。
http://kalx.tripod.co.jp/2chsrc_20020127.zip
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNGCOMの要求を処理しないと駄目なので
WaitForSingleObjectはよんじゃ駄目
GetMessageのループにする。
MFCプロジェクトでSDIにして
その時(プログラムが立ち上がったとき)
勝手に空のドキュメントが生成されないようにするにはどうすればいいの?
例えばデータソースを指定するダイアログ(メインフレームの中に)
とかを出したい
0597デフォルトの名無しさん
NGNGCOMの要求を処理しないと駄目なので
WaitForSingleObjectはよんじゃ駄目
GetMessageのループにする。
MFCプロジェクトでSDIにして
その時(プログラムが立ち上がったとき)
勝手に空のドキュメントが生成されないようにするにはどうすればいいの?
例えばデータソースを指定するダイアログ(メインフレームの中に)
とかを出したい
0598デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGギプス
0602デフォルトの名無しさん
NGNGゆっくり押す。
0603デフォルトの名無しさん
NGNG詳しく。
0604デフォルトの名無しさん
NGNGワロタ
0605デフォルトの名無しさん
NGNGUINT itteyoshi(LPVOID a){
/*
*/
((CGikoView*)a)->SetTimer(100,1000,zusaaa_1000get);
return 0;
}
void CGikoView::func{
AfxBeginThread(itteyoshi,this);
}
0606デフォルトの名無しさん
NGNGSystemParametersInfo で SPI_SETKEYBOARDSPEED あたりをいじる。
0607デフォルトの名無しさん
NGNG// In general, CWnd objects should be passed by HWND from
// one thread to another. The receiving thread can wrap
// the HWND with a CWnd object by using CWnd::FromHandle.
//
// It is dangerous to pass C++ objects from one thread to
// another, unless the objects are designed to be used in
// such a manner.
これ、大丈夫? 俺も昔はまった。
(CGikoView*)a が、もう無効なポインタになってるんだよ。
0608デフォルトの名無しさん
NGNGしたいのですが、このとき各ファイルのアイコンはどこからもってくれば
よいのでしょうか?
0609デフォルトの名無しさん
NGNGリソースに持っておくのが一般的かな。
0610デフォルトの名無しさん
NGNGんー、他のアイテムならそれでもいいんですが、ファイル名を表示するので
ファイルのアイコンを表示したいんですよねぇ…
exeファイルならファイルからアイコンを取得するのかとも思ったのですが、
データファイル(テキスト、画像など)のアイコンはどこから持ってくれば
いいのかなぁと。
0611デフォルトの名無しさん
NGNGあ、でも複数アイコンはいってるexeもあるからなあ。
エクスプローラーに表示するアイコンは
レジストリに保存されてるのだろうか。
0612麻人
NGNGどうするのがスジなんでしょうか?
そのまま作ると CWnd::AssertValid() の
// should also be in the permanent or temporary handle map
CHandleMap* pMap = afxMapHWND();
ASSERT(pMap != NULL);
ってところで引っかかるんです。
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNGSHFILEINFO info;
::SHGetFileInfo(fileName, 0, &info, sizeof(SHFILEINFO), SHGFI_ICON )
HICON hIcon = info.hIcon;
で取れる yo!
0615デフォルトの名無しさん
NGNGCBrushを使えば横線などで塗りつぶせることはわかっているのですが、
白地に指定した色の線になります。
例えば赤地に青の線といったようなことはどうすればできるのでしょうか?
0616デフォルトの名無しさん
NGNG0617615
NGNGSetBkMode(OPAQUE)の方もやりたいことに使えそうでとても参考になりました。
0618デフォルトの名無しさん
NGNGありがとう!アイコン取得&リストに表示できたよ!
0619デフォルトの名無しさん
NGNGCWinApp::OnFileOpen()からCDocManager::OnFileOpen()が呼び出され
その中のCDocManager::OpenDocumentFile()で同一ファイルの検査を行っていることは分かりました。
OpenDocumentFile()に手を加えて実装するにはどうするのが良いのでしょうか。
0620
NGNGこのままだと印刷部だけVBで作ってVCからexecするしかないよ トホホ。
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG例えば「何か」のsetup.exeのようなものです。
0623デフォルトの名無しさん
NGNGCPrintViewは駄目か?
0624デフォルトの名無しさん
NGNG書籍orサイトきぼ〜ん
DelからVC6.0に移行してるんだけど、
タブコントロールの使い方ワッカンネ〜
0625デフォルトの名無しさん
NGNG"0x6ab282a9"の命令が0x00000000のメモリを参照しました。
メモリがreadになることはありませんでした。
0626625
NGNG0627デフォルトの名無しさん
NGNG0629625
NGNG自分定義のメッセージハンドラが原因でした。
afx_msg void Onhoge();ってなってたのですが、
afx_msg LRESULT Onhoge(WPARAM wParam, LPARAM lParam);
としたらうまくいきました。
・・・なんじゃ、そりゃー!!!知るかボケー!!!!
つーか、デバックで落とせよな・・・・。
0630デフォルトの名無しさん
NGNGvoid OnHoge(UINT nID)
とせずに、引数を省略して
void OnHoge()
にした場合。このハンドラ呼ばれたとき、デバックビルとだと普通に動作するのに、
リリースビルド版だと落ちない?
0631デフォルトの名無しさん
NGNG1.AppWizardでCFormViewを使うSDIアプリケーションを
作りました。(以下、CMyAppとします)
2.CMyViewの上にCRichEditCtrlから派生したCMyRichEditを乗せて、
ClassWizardでメンバ変数m_richと関連づけました。
3.メニューに「太字」項目を追加し、ID_MENU_BOLDとして、
ClassWizardでCMyRichEditクラスにOnMenuBold()メッセージハンドラ
を追加しました。
しかし、実行してもメニュー「太字」は淡色表示のままで、
CMyRichEdit::OnMenuBold()のブレイクポイントはかすりもしません。
CMyView::OnMenuBold()
{
m_rich.OnMenuBold();
}
以上のようにすれば動くのですが、OnMenuBold()と同様の関数が
他に40近くあり、CMyViewに重複してメッセージハンドラを追加するのは
避けたいのです。
さらにCMyRichEditは独立したコンポーネントとして
他のプロジェクトに追加したいので、
CMyViewに書くコードは最小限にしたいのです。
どなたか助けてください。
0632デフォルトの名無しさん
NGNGよくわからんが、
CMyRichEditのメッセージマップにOnMenuBold()はある?
0633デフォルトの名無しさん
NGNGあります。
簡単に言うと、
自分で作ったクラスでメニューのクリックを
キャッチしたいんですけど、
CViewとかCDocument以外のクラスでも出来ますか?
0634デフォルトの名無しさん
NGNGCMyRichEditが自分でWM_COMMANDを処理してるのか?
それじゃ「独立したコンポーネント」にならない。
たとえばフォームにCMyRichEditを二つ載せてメニューコマンドを
選択したら、それはどっちのコンポーネントに行くんだ?
コマンドIDに依存してるから、「他のプロジェクトに追加する」のも
そのままじゃ無理だし。
0635デフォルトの名無しさん
NGNGCMyViewにON_COMMAND_RANGEハンドラを追加
そこからm_richにメッセージを丸投げ
0636631
NGNG>CMyRichEditが自分でWM_COMMANDを処理してるのか?
>それじゃ「独立したコンポーネント」にならない。
まったくそのとおりです。
この仕事では、IBMホームページビルダーの「htmlソース」タグ
の部分だけ独立して作っている感じなんで、
コマンドIDは変えればいいんですが、
ダイアログまで呼んでるんで、リソースの引っ越しが
手に負えなくなりつつあります。
完璧独立コンポーネントにするにはどうすればいいんですか?
>>635
>CMyViewにON_COMMAND_RANGEハンドラを追加
ON_COMMAND_RANGE(ID_MENU_BOLD, ID_MENU_XXX, OnSendAllMessages)
ここまではおっけーです。
>そこからm_richにメッセージを丸投げ
丸投げってどうやるんですか?
OnSendAllMessages(something) // うろ覚えすまん
{
m_rich.SendMessage(something);
}
でいいんですか?
0637デフォルトの名無しさん
NGNGDLL化して動的に呼び出すとします。
描画は、psetやline、色設定などを連続的にコマンドを与えて実行する
タイプです。
そのときに、複数のプレーン(DCなど)で同時にこの描画ルーチンを
「独立して」呼び出したいばあいどうすればよいですか?
問題はグローバル変数を用いているので、変数がごっちゃになるということです。
別にDLLでなくてもよいのですが、解決方法があれば教えてください。
0638デフォルトの名無しさん
NGNG使いたいプレーンだけ、LoadLibraryなどすればよいのでは?
0639デフォルトの名無しさん
NGNGhoge[0]=0x01,hoge[1]=0x00,...
という風にバイナリデータを格納してあるとき、これをCStringに移そうとしたら、問題がおきました。
まず、CString::CString(LPCTSTR lpch, int nLength );を使って格納した場合、
終端と認識するのか、(いくらnLengthを指定しても)0x01しかコピーされません。
strncpyなどをつかっても同じ。
次に、memcpyを使った場合、うまくはいくのですが、リリース版でエラーが出ます。
これらの問題をうまく解決する方法はないでしょうか?
0640デフォルトの名無しさん
NGNG見たことある気がするんだけど忘れちゃったよ。
0641631
NGNG>>635
>CMyViewにON_COMMAND_RANGEハンドラを追加
>そこからm_richにメッセージを丸投げ
でできました。どうもありがとう。
とりあえず解決したんですが、
完璧独立コンポーネントにする方法も
教えてもらえたら超嬉しいです。
0642デフォルトの名無しさん
NGNGCStringでもできないことないよ。
CString s;
s = "あいう";
s += '\0';
s += "えお";
s.GetLength();
GetLengthの戻りは11。
0643デフォルトの名無しさん
NGNG普通はWM_COMMANDなんか投げずに、コンポーネント専用の
メッセージ(WM_USER+何とか)を定義して使う。
>>639
バイナリデータを文字列に入れちゃイカン。CByteArrayとか使え。
0644631
NGNGm_rich.SendMessages(WM_COMMAND, nID, 0);
じゃだめなの?
const UINT WM_RICH_COMMAND = WM_USER+DEFERENCE;
にしなきゃいけないってこと? なぜ?
0645デフォルトの名無しさん
NGNGコマンドIDはアプリケーションで付けるものだから、
コンポーネントがコマンドIDに依存するように作ると
そのアプリケーションから切り離せなくなる。
標準コントロールを見れば分かると思うけど、
コントロールに何か仕事をしてもらいたい時には
コントロール専用のメッセージ(たとえばEDITなら
EM_SETSEL とか EM_UNDO とか)を送る。
逆に、コントロールから親ウィンドウへ通知するときに
WM_COMMAND とか WM_NOTIFY が使われる。
コントロールにWM_COMMANDを送るっていうのは使い方が逆だよ。
0646困った637
NGNG>>使いたいプレーンだけ、LoadLibraryなどすればよいのでは?
いや、同じDLLに対して何度、LoadLibrary、Getなんとかしても
得られるアドレスは一緒です
俺も考えたんですが、デバッガで追ってみたので。
うーんどうすればいいのか
0647デフォルトの名無しさん
NGNG0648639
NGNG入る事は、入るのですが、'\0'が含まれた配列から格納する事ができないのです。
それで、>>643さんの話も踏まえて、
CStringでやってた処理をすべてchar[]に直すことにしました〜。
・・・。
・・やってられるか、ヴォケー!!!MFCなんてだいっきらいだー!!!
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGって案はどうなった?foo.dll -> foo1.dll, foo2.dll, foo3.dll....
0651デフォルトの名無しさん
NGNGこれでどうよ?
CString str;
LPCTSTR sz = "abc\0def";
memcpy( str.GetBufferSetLength( 7 ), sz, 7 );
str += '\0';
str += "def";
MFCじゃなくても、文字列として処理しようとしたら苦労はおんなじだよ。
0652631
NGNGありがとう。すごく参考になったyo
でもWM_USER+DEFERENCEでメッセージを登録していったら、
誰かの定義したメッセージと重なる可能性が、
でてくると思うんだけど、そのへんはみんなどうしてるの?
0653デフォルトの名無しさん
NGNG>>651 後ろ2行は不要じゃない? あと、ReleaseBuffer すれ。
0654デフォルトの名無しさん
NGNG正直、そこまで面倒見てられなかった。
つか、CByteArrayかcharのCArrayで解決すんのが筋だし。
0655デフォルトの名無しさん
NGNGそこで、なぜ、CMyStringクラスを作ろうと思わなかった?
0656639
NGNGそれ、私もやったんすけど・・・、なぜかリソース版で落ちるんですよ。
誰かみたいに「コンパイラのバグか」と言いたくなる。その時は「CStringでは駄目なんだ、きっと」
という結論にしましたけど。あ、もちろんReleaseBufferはしましたよ。
>>653
いろいろ事情がありまして。
>>655
めんどかったからです。でもchar[]はもっと手間取った・・・。鬱
0658デフォルトの名無しさん
NGNGそもそもGetBufferSetLengthの後はReleaseBufferする必要ないし。
0659デフォルトの名無しさん
NGNGまじで?
0660デフォルトの名無しさん
NGNGそんなことないって。
0661デフォルトの名無しさん
NGNGみたことあるけど、使い方間違ってるだけなんじゃねーの?
ReleaseBuffer()しなくていいって、なにを根拠にいってるんだ?
0662658
NGNGReleaseBufferって単に長さを計算してるだけじゃないの?
2行目はMSDNに書いてあるけど。
0663デフォルトの名無しさん
NGNGReleaseBuffer する時にも長さを指定しないと '\0' の所で切られるよ。
まあ、リリース版で落ちるのは、それとは無関係にどこか壊しているせいだと思うが。
そもそも、CStringは文字列を扱うために設計されたクラスなんだから、
バイナリがうまく扱えないからって文句言うのはお門違い。
電子レンジでパンが焼けないと言って怒るようなものだな。
0665デフォルトの名無しさん
NGNG美しくない。
バグの元。
ほとんどの局面で使わなくてもすむんだから、あえて使うことは
ないでしょう。
0666デフォルトの名無しさん
NGNGMFCのソース嫁。長さをただ「計算してる」だけじゃなくて再設定してるから、
呼ばないとおかしなことになる。
そもそも自動的に呼ばれるんだったらReleaseBufferの存在意義ないだろ。
> 2行目はMSDNに書いてあるけど。
GetBufferSetLength の説明には、GetBuffer の説明からコピペしてきて
関数名だけ直し忘れてる箇所があるな。ひょっとしてこれを見て
「GetBuffer では必要だけど GetBufferSetLength では必要ない」って思った?
0667658
NGNGSetAtあたりが長さの再計算をしてくれてるかと思ったけど、してくれてなかった。
0668658
NGNGms-help://MS.VSCC/MS.MSDNVS.1041/vclib/html/vclrfCSimpleStringTGetBufferSetLength.htm
// No need for trailing zero or call to ReleaseBuffer( )
// because GetBufferSetLength( ) set it for us.
0670デフォルトの名無しさん
NGNG「あったのは」、かもしれないけど。
なんか、Delete関数かなんかで、特殊な場合の処理が
ソースから見てバグってんのが一目瞭然だった。
知らずに使ってひどい目合ってる人もいるんだろうか?
0671デフォルトの名無しさん
NGNGReplaceにもある(た?)らしいな。
最近のVC++MLによると。
0672かるかん ◆TM3.ie9w
NGNG結論から言うとするべき。内部的に「長さ」のパラがあって、
一部のメンバー関数がそれを見てるから。ReleaseBufferする
ときに長さを渡すと、それをセットするようになってる。
0673デフォルトの名無しさん
NGNG>そもそも639は何のためにバイナリを文字列に入れようとしてるんだろう……。
ももも、もしかして、
CString a;
a.Format("%x",0x01);
みたいなことをしたいとか?
0674デフォルトの名無しさん
NGNG・・・なんでだろうなぁ。
CByteArrayじゃなくてchar[]を使うことにしたってあたりもよくわからん。
0676かるかん ◆TM3.ie9w
NGNG0677デフォルトの名無しさん
NGNG同じウィンドウクラスの中で重複しなければ問題ない。
つまり、メッセージを受ける側でちゃんと区別できればいいってこと。
CRichEditCtrl から継承してるんだったら、richedit.h の中を見て、
現在使われていなくていなくて将来も使われそうにない範囲を
適当にチョイスすればいいよ。
0678デフォルトの名無しさん
NGNG#ifndef _IA64_
...
#else
...
#endif
とかあったんだけどさ。
よく判らないんだけど、これっていずれLinuxに移植するつもりって事?
0679デフォルトの名無しさん
NGNG拡張性を考えて設計するのは、勝手だろう。
使いもんになるんだったら、売るのも勝手だろう。
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG別にWindowsだってIA64で走ってもいいだろう。
漏れも
#ifdef _MAC
とかの中でMac用のソースがあるのは確かに気になっているんだが…。
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGClassWizardから自分で作ったクラス(基底クラスはCPropatySheet)に
処理を書いても、メニューが薄灰色のままで、メニューを選択できません。
初めから存在するViewクラスに処理を書くとちゃんとメニューから選択して表示されます。
どうしたら自分で作ったクラスで処理できるようになりますか?
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNGそうきたか。
0687684
NGNGそれって、CViewにメニュー選択時のメッセージハンドラを書くって事ですか?
確かにそれでプロパティシートは表示されるんですけど、プロパティシートは別クラスにしたいんです。
Viewにあまりごちゃごちゃ書きたくないし。
メニューが薄灰色って事は、メッセージルーティングでメッセージが伝わってないって事なんだろうか。
でも、CPropatySheetはCCmdTargetクラスの派生クラスだから、メッセージは伝わっていると思うのですが。
0688666
NGNGえーと、そのメニューコマンドを選ぶと、プロパティシートが
表示されるわけだよね?
ということは、メニュー項目を選ぼうとしている時点では
プロパティシートは表示されていないわけだよね?
まだ存在しないものがどうやってメッセージを受け取れるの?
0689デフォルトの名無しさん
NGNGその言い方だと誤解を招く恐れがあるとおもわれ。
まあ要は、
>まだ存在しないものがどうやってメッセージを受け取れるの?
ってことすよ。>>684クン
0690684
NGNGなるほど!それですね。
え、じゃあプロパティシートを別クラスにして、そこにメッセージハンドラを
書くのは不可能って事ですか?
やはり、初期に存在しているViewやDocに書くしかないのでしょうか?
0691デフォルトの名無しさん
NGNGちゃうっちゅうに(違いますよ)!
どっかでそのクラスを宣言(構築?)せいってことです。
ViewだってDocだって最初から実体があるわけじゃ無いのでげすよ。
それが、どこだかは自分で考えなさい。
0692684
NGNGえーと、色々と見てみたんですけどスケルトンで作成されたヘルプのダイアログが
Cプロジェクト名.cppにあったので、ここに書くと思うんですけど上手くいきません。
ダイアログは、クラス自体が全てここに書かれてるから表示されてるのかな。
0693デフォルトの名無しさん
NGNGCXXXApp::InitInstance()とか見てみ
0694デフォルトの名無しさん
NGNG0695684
NGNG検索しても、ほとんどがViewかDocに
CUserSheet sheet("プロパティシート");
sheet.DoModal();
というメッセージハンドラの処理の書いているものばかりで
自分で追加したクラスにかいてあるサンプルはありませんでしたし。
>>693
見てみましたけど、よく分かりませんでした。
クラスの宣言をここに書けば良いんですか?
具体的に何を書けばいいのかが、全く分かりませんでした。
>>694
その通りなんですけど、上にも書いたとおり、DoModalをViewかDocに書けば表示されます。
自分で追加したクラスCUserSheet(基底クラス:CPropatySheet)に書くと、上手くいきません。
そのクラスが実行時に存在しないと言うのは、教えて頂いて分かったのですが
初期にこのクラスを認識させるために、どこに何を書けば良いのかが分からないのです。
0696デフォルトの名無しさん
NGNGもうDoModalの時点でプロパティシートは表示されてるのに
さらにDoModalして何を表示させようとしてるの?
0697666
NGNG0698デフォルトの名無しさん
NGNG> プロパティシートは別クラスにしたいんです。
> Viewにあまりごちゃごちゃ書きたくないし。
って言うなら初めから問題無いじゃない?
プロパティシートはCPropertySheetから派生してるらしいから別クラスになってるし、
Viewがごちゃごちゃするのが嫌ならDocやMainFrmにでも書けばいいし。
なんかプロパティシートの中でDoModalしたいって言ってるけど、
じゃあアプリケーションはいつプロパティシートを表示する機会を与えられるんだろうか。
0699デフォルトの名無しさん
NGNGメニュー項目が選択されたら、プロパティシートのクラスが
それを検知して、自分で自分を表示するってことなんだろう。
実現不可能ではないかもしれないが、素直にViewにDoModalと
1行書くのとは比べものにならないほどの手間がかかるぞ。
それでもやるか?
いいえ >いいえ
0700デフォルトの名無しさん
NGNGViewがごちゃごちゃするからMainFrm.cppに書いてるんだけど。
0701デフォルトの名無しさん
NGNGなんかアイコンが32×32の大きさになってしまいます。
16×16の大きさを指定するにはどうしたらいいでしょうか?
こんな感じでやったのですが、、、
HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
CStatusBarCtrl& stb = m_wndStatusBar.GetStatusBarCtrl();
stb.SetIcon(1, hIcon);
0702デフォルトの名無しさん
NGNGMSDN読め
0703デフォルトの名無しさん
NGNGみましたけど、載ってないですよ。
お願いします。教えてください。
0704デフォルトの名無しさん
NGNG> みましたけど、載ってないですよ。
こんなことゆーやつには教えてやんない:p
見つからなかったってんなら話は別だったんだけどねぇ。
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG漏れの環境では16は大きすぎるよ。(w
12じゃ無いとはみ出る。
でもMSDNでLoadIconみればもろに解決策書いてあった気がしたけど、
漏れの目の錯覚だよね、>>703は載って無いって言ってるし。
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNGMyView.cpp
ON_COMMAND_RANGE(ID_MENU_FIRST, ID_MENU_LAST, OnAllMenu)
OnAllMenu(UINT nID)
{
m_prop.SendMessage(WM_COMMAND, nID, 0);
}
MyPropertySheet.cpp
ON_COMMAND(ID_MENU_FIRST)
...
ON_COMMAND(ID_MENU_LAST)
とやれば、メニューのイベントは受け取れるし、
CMyViewのコードは最小限だ。
>631で既出。
0710デフォルトの名無しさん
NGNGストリングテーブルでID定義するのは
なにかちがうのでしょうか?
0711デフォルトの名無しさん
NGNGCMenu cMenu;
mouse_event(MOUSEEVENTF_LEFTDOWN, point.x, point.y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, point.x, point.y, 0, 0);
VERIFY(cMenu.LoadMenu(IDR_POPUPMENU));
CMenu* pPopup = cMenu.GetSubMenu(0);
ASSERT(pPopup != NULL);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
CListView::OnRButtonDown(nFlags, point);
右クリックでアイテムを選択状態した後、ポップアップメニューを表示したいのですが、先にポップアップメニューが開いてしまい困っています。
みなさんの知恵を貸していただけないでしょうか。よろしくお願いします。
0712デフォルトの名無しさん
NGNGOnContextMenu に書いてみたら?
0713デフォルトの名無しさん
NGNG例えばフォトレタッチソフトで、画面の一部矩形にフィルタをかけるみたいなノリ。
一発で引っこ抜ける方法、有りませんか?
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNGCDC::BitBlt の逆はどうすればいいんですか?
って聞いた方がわかりやすかった。
0716711
NGNGあさっりできました。
ただ、同じコードをそのまま書くと、ポップアップの表示座標がマウスポインタの位置から激しくずれます。
point.x-400 などして調整すれば問題ないんですが、ちょっと気になったりならなかったり。
どうもありがとうございました。
0717デフォルトの名無しさん
NGNGそのコントロールを持ってるダイアログのクラスからしか参照できないの?
他のクラスから参照しようとすると、定義されてないってなるんだけど。
0718デフォルトの名無しさん
NGNGOnRButtonDownではClientToScreen(&point)が必要で、
OnContextMenuでは不要って点はチェック済み?
0719デフォルトの名無しさん
NGNG切り捨て関数なんだっけ?
BASICのfixみたいな。
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNGそんなんだっけ?ありがとスマソ
0722デフォルトの名無しさん
NGNGみたいな事?(藁 >切り捨て
0723デフォルトの名無しさん
NGNGじゃなくて
mathへっだのヤツ
0724デフォルトの名無しさん
NGNG普通に作ればpublicになるから見えますが。
変数ではなくて、コントロールの型が未定義だって言ってない?
もしそうだったら、参照する側で適切なヘッダファイルをインクルードしる。
>715
BitBltの逆とは何か定義して下ちい。
転送元と転送先を入れ替えるってだけの話じゃないよな。
>723
floorか? floor が欲しいのか?
0725デフォルトの名無しさん
NGNG変数が8の倍数のときに真を返すif文を作ろうとしてて。
三年もプログラミングやってなかったらポインタすら忘れてたよ…
0726デフォルトの名無しさん
NGNGBASICのFIXと同じことがやりたいんなら722でいいと思うが?
0727デフォルトの名無しさん
NGNGreturn false;
else
return true;
とか?
0728719
NGNG末期だ…
すんまそん。
マジメに勉強し直してきます。
0730デフォルトの名無しさん
NGNG実行速度はともかく。2の乗数でなくても使えるし。ワラ
0732717
NGNGマジっすか。
ちゃんとインクルードしてるけど、「定義されていない識別子です。」って出ます。
何がイカンのだろう。
0733デフォルトの名無しさん
NGNGお前の書いたソースは死んでも読みたくありません。許してくだちい。
0734デフォルトの名無しさん
NGNGあなたに指図される筋合いはありません。
何の権限があってそのような事を言うのですか?
0735デフォルトの名無しさん
NGNGその識別子って何よ。
>>727
-1が8の倍数になりましたが。
0736デフォルトの名無しさん
NGNG漏れは>>733じゃないけど、素直に日本語読めば指図はしてないと思うぞ>>734。
そして>>733に激しく同意。
0738デフォルトの名無しさん
NGNG> -1が8の倍数になりましたが。
2の補数じゃない負数表現でも使ってるんでしょうか?
0739717
NGNGエディットボックスにDDXで対応させてるCString変数m_nameです。
これをMainFrmから参照しようとすると、そのエラーが出ます。
ダイアログクラスのヘッダはちゃんとインクルードしてます。
0740デフォルトの名無しさん
NGNG思いっきり勘違いしてたよ。鬱だ吊ってくる。
0741710
NGNG>ストリングテーブルでID定義するのは
>なにがちがうのでしょうか?
わかります?
0742デフォルトの名無しさん
NGNG違いはない。以上
0743デフォルトの7子さん
NGNGドキュメントが変更されたことを検知するにはどうしたらいいでしょうか?
ネットワークからデータを受け取るとそれをDocクラスの変数に
しまうところまでは出来たのですが、それを表示させる方法がわかりません。
CEditViewだとOnDrawは呼ばれないようですし。
どなたか教えてください。
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG「メッセージハンドラの追加」で追加したので、メッセージマップとかもしっかり書かれています。
どんな原因が考えられるでしょうか?ご教授おねがいします。
0746デフォルトの名無しさん
NGNGをしているのですが、Updateしたあと他のクライアントが全部のデータを表示しようとすると
うまくいきません。調べてみたのですが読みこみ時のMoveFirstが働いていないようです。
つまり、カレントレコードが編集行から移動していないのです。
どなたかご教授いただけますか?
0747デフォルトの名無しさん
NGNG可能でしょうか?
常に同じ位置に表示させたいのですが、、
0748デフォルトの名無しさん
NGNGデバッグビルドでは普通に動くのに、リリースビルドでは例外で終了したりします。
どんな原因が考えられるのでしょうか?
0749デフォルトの名無しさん
NGNGありがちなのが、ポインタを初期化せずに使ってるとか。。。
0750デフォルトの名無しさん
NGNGCRightDoc
CRightView
CLeftDoc
CLeftView
を作ってそれぞれ扱うと言うのはなんとなくわかるのですが、
CRightDocとCRightViewを
CLeftDocとCLeftViewを
それぞれ結びつけるのはどこで定義するのでしょう?
定義し場所がわからないため
CRightViewでぼGetDocument()の戻り値がCRightDocにならないです。
0751デフォルトの名無しさん
NGNGモードレスダイアログの表示位置をメインフレームのサイズに関連して
変えたいと思います。そこで
−−−−−−−−−−−−−−−−
(1)モードレスダイアログとして表示するクラスに位置を保存する変数を用意する。
(2)CMainFrameのOnCreate関数でモードレスダイアログをCreateしたとき、メイ
ンフレームの四隅の座標を(1)で用意した変数に入れる。
(3)モードレスダイアログのクラスのOnInitDialog関数でMoveWindow関数の引数
で(2)で代入した値を使う。
−−−−−−−−−−−−−−−−−−
としましたが、(2)では値が確かに値が代入されているのに、(3)では
値が変になってしまい、考えたように動作しません。
なぜこのようになってしまうのでしょうか、解決法を教えてください。
0752デフォルトの名無しさん
NGNGViewが複数あっても、普通ドキュメントは1つじゃないの?
2つに分ける理由は、なんかあるの?
0753デフォルトの名無しさん
NGNGMFCのビュークラスは不完全な気がする。
自身のクローンが作れないから、新しいウィンドウで表示したりするとビューに関する情報が初期化されてしまう。
しようがないからビューごとにその情報を保持する新しいCDocumentを作ったよ。
750の話とは無関係だけどさ。
0754デフォルトの名無しさん
NGNGいやそれがわかっていませんでした。
なるほど、一つにすればよかったのですね。
IRC CHATクライアントみたいなものを作ろうと思ってたので
なんとなく右側の参加ユーザー一覧と
左側のメインウインドウのメッセージを
別のDOCに保存するものだと思っていました。
0755デフォルトの名無しさん
NGNGそれが理由なら、ドキュメントは1つで全然おっけーだよ。
0756755
NGNGなるほど勉強になります。
しかしDOCが一つだとするとViewをどう使い分けるのでしょうか?
UpdateAllViews(*pSender)命令を使用するときに
Viewへのポインタが必要になると思うのですが、
左右にViewがあるときにどちらかのViewへのポインタを手に入れる方法はありますか?
0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNGここでも読んで勉強したまえ。
http://techtips.belution.com/ja/vc/0055/
0759754
NGNGNullだと両方のViewがアップデートされてしまうので・・・
どちらか片側だけアップデートしたいのです。
0760デフォルトの名無しさん
NGNG何がしたいのかよくわからんが・・・
普通そういうのはlHintかpHintで更新情報を渡す。
0761デフォルトの名無しさん
NGNGつーか普通pSenderはthis。
そうでなかったらNULL。
だって送り主だもん。
外部のオブジェクトが勝手にViewの名を騙ってイベントを起こすのはおかしい。
0762754
NGNGいえ左フレームにCEditView右フレームにCListViewの派生クラスを指定して
w1.CreateView(0,0,RUNTIME_CLASS(myEditView),CSize(400,lpcs->cy),pContext);
w1.CreateView(0,1,RUNTIME_CLASS(myListView),CSize(0,lpcs->cy),pContext);
実行したところ左側の途中でフリーズしてしまい、
問題はUpdateAllView()にあると思ったので、問題を切り分けるために
左フレームだけ更新したかったのです。
しかし今右のVIEWだけCViewにすると問題は出ませんでした。
CListViewを使用すると不具合が起きるようです・・・
なんでだろう???
0763デフォルトの名無しさん
NGNG0764754
NGNGえ?分割ウインドウに対応していないViewなんてあるのですが?
とりあえず左フレームにCEditView右フレームにCViewでは成功するようですが・・
左フレームにCEditView右フレームにCListViewだと
CEditViewの動作が止まってしまいます。
0765763
NGNGいくつかのViewは分割できなかったような記憶が・・・。
0766754
NGNG結局いろいろ試行錯誤してみましたが
CListView CEditView CViewは分割は可能みたいです。
CEditViewのOnInitialUpdateで
CButton * CB = new CButton();
CB->Create("送信",BS_PUSHBUTTON|WS_VISIBLE,
CRect(myRect.Width() - 100,0,myRect.Width(),40),this,IDC_MYBUTTON);
してビューの右上隅にボタンを貼り付けているのですが、
これってウインドウのサイズが変わるたびにボタンが隠れてしまったり
右側に空白が出来てしまったりするのですよね。
ウインドウサイズの変更がOnSizeで捕まえられるのは知っているのですが、
ここで動的にボタンを書き直すと言うことは出来ないもんでしょうか?
それとも最初のCreateで常にウインドウの右端にボタンを設置しておくことが出来ますか?
左端なら簡単なのですが・・。
林晴比古の新VC++6.0入門ビギナー編、シニア編をひっくり返してやっているのですが、
なかなかVCってやりたいことの項目が多すぎて難しいですね。
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG教えてください。
0769754
NGNGええとつまり具体的にはどういうことでしょうか?
メンバ変数にすると移動が可能になる方法がちょっとわからないです。
WinMXやIRCのチャットであるような一行のエディットボックスと
それを送信するボタンをその右端につけたいのです。
最初はフォームビューにエディットボックスとボタンで・・
と思ったのですがこれだとウインドウサイズに合わせて
エディットボックスを伸び縮みさせることが出来ないですよね。
そこで
エディットビューにボタンを配置してみたのですが、
右端にボタンを固定しておく方法がわからず、さらに、
エディットビューは複数行を許可してしまうし、
右端と下端にバーが出てしまいます。しかもボタンをおいてもその上にまで書きこみ
カーソルが移動してしまう始末。
いったいどうやるのが正解なのでしょうか・・・??
0770デフォルトの名無しさん
NGNGOnSizeでSetWindowPos
0771デフォルトの名無しさん
NGNG>>770をフォームビューで。
0772デフォルトの名無しさん
NGNGボタンの淡色表示はどうするのでしょう?
0773while(name == sage)
NGNGは、サブアイテムのテキストのインプレイス編集ってできますか?できる
ならやり方を教えていただけませんか。かなり初心者なのですがよろしく
お願いします
0774754
NGNGフォームビューで出来るんですか。
というわけで早速・・・
フォームビューにエディットボックスとボタンをつけて
連動して動かすようにすると・・・
CButton *CB = (CButton*)GetDlgItem(IDC_BUTTON1);
CEdit *CE = (CEdit*)GetDlgItem(IDC_EDIT1);
SetWindowPos(CB,cx-100,cy - 100,cx,cy,SWP_SHOWWINDOW);
SetWindowPos(CE,0,0,cx-100,cy -100,SWP_SHOWWINDOW);
む・・・・・動かないです・・・・
かといってエラーも出ないのですが・・
しかし、わからんことが多すぎますね・・・。
「MFCによるWindowsプログラミング」
注文してしまいました。
0775デフォルトの名無しさん
NGNGさて、CScrollViewから派生したビュークラスで任意倍率を扱う事は
出来るのでしょうか?
表示もとの対象物の縮尺(大きさ)は変えずに視点倍率のみ変更する
ことで実装したいのですがどなたか知りませんか?
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGEnableButtonかな
0778デフォルトの名無しさん
NGNG普通のインプレイス編集はアイテムしかできないんでしたっけ?
サブアイテムの場所でエディットボックスをCreateする方法もあるみたいですが...
0779デフォルトの名無しさん
NGNGう〜〜〜〜ん
つい最近見た記憶があるんだけど。
どこだっけ?!
思い出せなくてなんか気持ち悪いなぁ。
0780デフォルトの名無しさん
NGNG0781779
NGNGサンクス!
http://www.codeguru.com/listview/ListEditor1.shtml
0782754
NGNGとしてみたら
****の命令が******のメモリを参照しましたメモリがreadになることが出来ませんでした。
がでました。
CB->SetWindowPos(&wndTop,100,100,200,200,SWP_SHOWWINDOW);
そこでこのようにしても同様のエラーになります。
デバッガで追ってみると
CWnd::SetWindowPosの
ASSERT(::IsWindow(m_hWnd));
m_hWndの確認のところでエラーが起きてる模様
これはつまりCButton型ポインタCBのさすオブジェクトがm_hWndを
所持していないと言うことですよね?
m_Wndとは明示的に所持を宣言しないといけないものなんでしょうか?
0783デフォルトの名無しさん
NGNGCToolBarCtrl &ctrl = sqToolBar.GetToolBarCtrl();
ctrl.SetState(ID_XXXX, TBSTATE_ENABLED);
役に立つ人も居ないとも限らないから一応貼り。MFCややこしい('_`)
0784デフォルトの名無しさん
NGNG吊って来る。
0785デフォルトの名無しさん
NGNGGetDlgItemが失敗してるに1モナー。
OnSizeってウィンドウ作成直後に一回飛んでくる。いま試せないけど、
ひょっとするとOnInitialUpdateより先に呼ばれてるのかもしれない。
だとしたらまだコントロールが作られていないよ。
いずれにせよエラーチェックしなされ。
0786デフォルトの名無しさん
NGNGソース書きで挿入する方法はありますか?
0787デフォルトの名無しさん
NGNGそのボタンのOnLButtonDownで
getParent()->PostMessage(EVENT, index, (LPARAM)this); として、
親の受信部でdelete((CButton *)lparam)とかしちゃってOKなんでしょうか?
一応動いてますが、余りに不気味です。つか、ボタンのOnDestroy呼ばれてないし。
お行儀のいい方法が有りましたら一つ御指南を。
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNGボケボケでした。どうも(笑)>>788
んで、それからdeleteですなφ(.. )
0790デフォルトの名無しさん
NGNG羅列すると思いますが列を持たせ
て1行複数項目にすることは出来ますか?
0791デフォルトの名無しさん
NGNG素直にリストビュー使え。
0792デフォルトの名無しさん
NGNG俺もそう思う。
つーか俺はエラーチェックしてコントロールが存在したら
SetWindowPosでちゃんと移動できてる。
0793754
NGNGCButton *CB = (CButton*)GetDlgItem(IDC_BUTTON1);
CEdit *CE = (CEdit*)GetDlgItem(IDC_EDIT1);
if (CB != NULL){
CB->SetWindowPos(&wndTop,cx-100,0,100,cy,SWP_SHOWWINDOW|SWP_NOZORDER);
}
if (CE != NULL){
CE->SetWindowPos(&wndTop,0,0,cx-100,cy,SWP_SHOWWINDOW|SWP_NOZORDER);
}
こうしたらできました。
慣れてくるとこういうのもすぐ気づけるようになるんでしょうが
最初はなかなかしんどいですね。
0794デフォルトの名無しさん
NGNG要はD&D時に、拡張子が.xxxなら処理を続行したいんですが。
どうでしょうか?お願いします
0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNGなんか色々な事を考慮しなければならない
ようなことを聞いてて…ある文字(漢字)が
含まれてると、うまく処理できない ということなのですが
やってみます、有難うございました。
0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNGhttp://www.2ch.net/
みたいなURLがあった場合
それをクリックするとブラウザが開くようにしたいのですが、
どのようにしたらよいでしょうか?
0799デフォルトの名無しさん
NGNGせめてRichEditじゃないと無理じゃないかな。
0800デフォルトの名無しさん
NGNGカーソルにあるURLを取得して、ブラウザに渡す
ようなコードを書けば、いいとおもうけど。
0801デフォルトの名無しさん
NGNGCM->EnableMenuItem(ID_MENU1,MF_ENABLED);
外部のクラスから
CMainFrameへのポインタを手に入れるにはどうしたらよいのでしょうか?
CMainFrameのポインタからGetMenu()して
Menuの項目を操作したいのです。
上記のようなコードを書いたのですが、
エラーにはなりませんでしたが、
動作しませんでした。
0802デフォルトの名無しさん
NGNGだろ。
0803801
NGNGそのようにしても結果は同じでした。
今のところAfxGetMainWnd()を(CMainFrame*)
でキャストしたものがはたしてメインフレームへのポインタなのか
どうか・・??・というところが怪しい気がしてはいますが・・
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG0806デフォルトの名無しさん
NGNGCMenu *CM = AfxGetMainWnd()->GetMenu();
キャスト不要でない?
メニューの操作は、処理本体は CMainFrameに書いて、
CMainFrameにメッセージ送って操作するな。俺なら。
0807while(name == sage)
NGNGありがとうございました。レス遅くてすみませんです
0808801
NGNGそうだとするとコンパイル時にエラーになりませんか?
>806
キャスト無しでもコンパイラは通りましたが、
結果は同じ・・
処理本体はCMainFrameに書いてメッセージを送ると言うのを遣ってみたいのですが、
CMainFrameにメッセージを送るにはポインタが必要じゃないですか?
それはCMainFrameに何か適当な関数(EditMenu())を作って
それをCMainFrame*へのポインタから CM->EditMenu();
するという意味ですか?
それともWM_USER+100
とかのメッセージを定義してそれをCMainFrameへ送るということでしょうか?
メッセージを特定のクラスに送る方法が・・・わからないです・・。
0809デフォルトの名無しさん
NGNG別にメニュー内にID_MENU1が無くてもエラーにはならんだろ。
サブメニューにある可能性もあるだろうしな。
ってか俺も805と同意見だが。
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNGACCESSデータベースにビットマップを保存しています。
これがCLongbinaryの値として取得できるのですが、
この値をどうすれば表示できるようになるのでしょうか?
ご存知の方がいましたら宜しくお願いします。
0812デフォルトの名無しさん
NGNGビットマップと言うのは画像のBMPのこと?
0813413
NGNG表示方法についてなのですが、
ImDlg *im = new ImDlg(this);
im->Create(IDD_IMDLG);
im->ShowWindow(SW_SHOW);
このようにポインタをつかって表示すると表示できるのですが、
ImDlg im;
im.Create(IDD_IMDLG);
im.ShowWindow(SW_SHOW);
このようにインスタンスを直接使うと
なぜか表示できないのです。
とりあえず上のを使うとプログラムは作れるのですが、
下のがなぜ動かないのか気になってしまっています。
理由のわかる方是非教えてください。
0814デフォルトの名無しさん
NGNGImDlg im(this);
じゃないの?知らんが。
0815811
NGNGはい。bmpの画像を表示したいのですが、CLongbinaryとしてしか
値を取得できないんです。
0816デフォルトの名無しさん
NGNGその中身を見ればファイルイメージとかBITMAP構造体とかが入ってるんでない?
0817デフォルトの名無しさん
NGNGそうなのですが・・・・中身の見方がわからないんです。
調べてもほとんどCLongbinaryに関して書いてるものもなくて。
0818デフォルトの名無しさん
NGNG表示は面倒だから自分で考えて。
CLongBinary bin;
BYTE *p = (BYTE*)GlobalLock(bin.m_hData);
FILE *fp = fopen("xxx.bmp", "wb");
fwrite(p, 1, bin.m_dwDataLength, fp);
fclose(fp);
GlobalUnlock(bin.m_hData);
0819デフォルトの名無しさん
NGNG関数を抜けるとimが消滅するからだべさ。オブジェクトのスコープについて勉強。
0820デフォルトの名無しさん
NGNGコントロールがフォーカスを失った時にNullチェックをして
Nullだった場合はフォーカスを元のコントロールに戻したいのですが、
どうやったらいいですか。
// CEditCtrl メッセージ ハンドラ
void CEditCtrl::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
COleControl::OnActivate(nState, pWndOther, bMinimized);
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
if(bMinimized==0)
{
int ret=MessageBox("","",MB_OK);
}
}
0821811
NGNGありがとうございます。
早速試してみます。
0822デフォルトの名無しさん
NGNGHBRUSH KuneMainView::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: この位置で DC のアトリビュートを変更してください
return (HBRUSH)GetStockObject(WHITE_BRUSH);
}
CtlColor(CDC* pDC, UINT nCtlColor)関数のオーバーライドで変更可能ですが、
この方法などWHITE_BRUSH、BRACK_BRUSHなど、数通りしか出来ないですよね?
これをもっと自由な色合いにする方法はありますか?
エディットビューの背景色をRGBで表現したいのです。
0823デフォルトの名無しさん
NGNG戻り値はメンバにしといて後で開放する。
0824822
NGNG遣り方を替えてみようと思って
ObInitialUpdateで(onDrawは呼ばれないようなので)
CDC *pDC = GetDC();
pDC->SetTextColor(0xffdddd);
pDC->SetBkColor(0x000000);
以下のようにしてみたのですが、
これでも色はかわらないようです・・・。
0825デフォルトの名無しさん
NGNGなんでOnActivateのコードがくっついてるのかよくわからんが、
EditならOnKillFocusでSetFocusする方向で。
0826デフォルトの名無しさん
NGNGっていうか、フォーカスを失ったウインドウ(コントロール)が
フォーカスを取り返すのって禁じ手なんじゃないの?
0827デフォルトの名無しさん
NGNGOnKillFocusだったのですか。
何か勘違いをしていたようです。ありがとうございます。
この引数にNullを入れれば処理がキャンセルしてくれる?かな。
>>826
>フォーカスを取り返すのって禁じ手なんじゃないの?
マジっすか。じゃあどうやってNullチェックをしたらいいですか
0828デフォルトの名無しさん
NGNG「フォーカスを失ったらSetFocus()して取り戻す」って
動作をするウインドウが二つあったら、フォーカスの取り合いに
になって無限ループになるから禁止、ってどこかで読んだような
記憶があるんだけど...
いま検索しても見つからなかった。ちと自信がなくなった。
0829デフォルトの名無しさん
NGNG「SetFocus() 無限ループ」でぐぐったらわんさかでてきたぞ。
0830デフォルトの名無しさん
NGNG>>823を無視かい
0831デフォルトの名無しさん
NGNGnull入れたらエラーになるよ
0832デフォルトの名無しさん
NGNGそもそもNullチェックってのは何?
「エディットボックスが空だったらエラー」ってのだったら、
OKボタン押した時にでもチェックすればいいと思うけど。
0833デフォルトの名無しさん
NGNGCMDIChildWndを派生してPreCreateWindowオーバーライドして中でWS_SYSMENUを付けて
ChildFrameのOnCreateでLoadMenu→SetMenuじゃ駄目でした。しくしく。
0835デフォルトの名無しさん
NGNGテキストを折り返さす方法ってありますか?
0836デフォルトの名無しさん
NGNG横スクロールバーを出さない=テキストを折り返す
では?
0837827
NGNGクライアントの要求に「Nullチェックはフォーカスを離れた直後」
ってのがあるらしいです。
あ、ちなみに今の仕事は汎用機の移行作業です。
キー部1〜8くらいまであって、遷移中に入力項目に抜けや間違いが
あったらエラー。みたいな。
0838デフォルトの名無しさん
NGNGフォーカスを離れたときに空だったらエディットボックスの右に赤い*を表示したりステータスバーにメッセージを表示ってのはどう?
フォーカスは問題なく移るけどエラーは知らせる。
ダイアログで表示すると目障りだし作業効率落ちるから。
もちろん*が1つでもあるうちは確定ボタンは押せない。
0839デフォルトの名無しさん
NGNG丁寧なレスありがとうございます。
自分もそのような感じの処理が最善だと思います。
でも何とかしてフォーカスを戻さないとならないのです。
ちなみにクライアントはN●●データです。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGすべてのロストフォーカスイベントに対してフォーカスを要求し直すのはあんまりよくないと思うから、
入力が不完全な間はTABを無効にしてしまう、などがいいと思う。
0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGそれとも、自分で取得する必要があるのでしょうか?
0844827
NGNGそうですね。TABを制御してしまえヴぁ何かいい解決方法が
ありそうですね。ちょっと試してみます。
>>842
Validateですか。今見た感じだと自分がやりたかった事に
ピッタリな気がします。
これをVCのイベントで定義できれば最高だったのに...
0845デフォルトの名無しさん
NGNGMSDN読め
0846デフォルトの名無しさん
NGNGMDI子ウィンドウのメニューは、フレームウィンドウのメニューと
置き替わる形で表示される。これはMDIの仕様だからしかたがない。
どうしてもMDI子ウィンドウ自体にメニューを表示したかったら、
ツールバー等で代用品を作ってそれっぽく見せるしかないんじゃないかな。
>>835
EditコントロールのスタイルからWS_AUTOHSCROLLを外す。
MFCのSUPERPADサンプルあたりにそのまんまの例があったと思うが。
0848デフォルトの名無しさん
NGNGテキストが横の長さをはみ出すと
下側にスクロールバーが自動に出てしまいますが、
これを出さなくして、強制的に折り返さすことは出来ますでしょうか?
それともエディットビュー以外のクラスを使う必要があるのでしょうか?
0849デフォルトの名無しさん
NGNGところで、>848は>835と同じ人ですか?
0850848
NGNGあ、いえ違います。
横スクロールバーを出さないためには文字幅を調べて
強制改行をする必要があるのですね。
むずかしそうだなあ。チャレンジしてみます。
0851デフォルトの名無しさん
NGNG?・・・え?そうなの?
0852デフォルトの名無しさん
NGNGMessageBox( NULL,EDIT1,EDIT2,MB_OK );
みたいな感じで、EDITを直接参照したらTextプロパティ。みたいな
0853デフォルトの名無しさん
NGNGそもそもCEditにTextなんてメンバないだろ(藁
MFCの場合、DDXでコントロールとメンバ変数を結びつけておいて、
UpdateData();
MessageBox(m_Text1, m_Text2);
のようにするのが正道。
CEditを継承して型変換演算子をオーバーライドすれば、
いわゆるデフォルトプロパティに近いことはできると思うけど、
C++の勉強以外の目的でそんなことをするのはおすすめできないな。
0854デフォルトの名無しさん
NGNGがなくなってしまうことがあります。
コーディングしならが半ば無意識にCTRL+Sを押す癖があるのですが、
ときどきファイルが使用中です、などと表示されて
ごくたまにですが*.hはあるのに*.cppファイルがなくなっている
などの現象が起きます。
このような現象に見舞われてる方他にいますか?
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNGワラタ
0857デフォルトの名無しさん
NGNGウインドウがかわった時に
CMainFrameでCSplitterWndをつかって
いくつかにフレームをくぎって
それにC**View1 C**View2
などを割り当てているときに右隅のドラッグなどで
ウインドウサイズを変えると
どこに通知が行くのでしょうか?
CMainFrameのなかのOnSize関数は呼ばれているようですが、
C**Viewの中のOnSize関数は呼ばれないようです。
OnSize
0858デフォルトの名無しさん
NGNGファイルが使用されていますエラーは出るが、ファイル自体は消えないな。
SP5当ててる?
0859おいくそども
NGNG俺のIPだ。ハックノ練習してごらんよ。できねーだろうけどw
0860デフォルトの名無しさん
NGNG荒らし依頼だ。タイーホタイーホ
0861デフォルトの名無しさん
NGNGその前にそれはほんとにおまえのIPかと問いたい。
0862デフォルトの名無しさん
NGNGその位置情報を使って、モードレスダイアログボックスをMoveWindow
で表示させると、表示位置が一定にならないのはなぜ?
教えてくだされ!!!
0863デフォルトの名無しさん
NGNG座標変換してないとか
0864デフォルトの名無しさん
NGNGやりたいことがよくわからないけど、
(a) ダイアログがメインウィンドウの子ウィンドウ(WS_CHILD付き)なら
GetClientRect で得られた座標を変換せずに使う
(b) ダイアログがポップアップウィンドウ(WS_CHILDなし)だったら
1. GetWindowRect で得られた座標を変換せずに使う
2. GetClientRect で得られた座標をClientToScreenで変換して使う
のどちらかが正解。どっち使うかは目的によって違う。
いずれにしても、OnCreate じゃなくて OnSize とか OnMove で
やった方がよさそうな気はするな。
0865デフォルトの名無しさん
NGNG最初は「無題」- ****ってなってるところです。
0866デフォルトの名無しさん
NGNGあるデータファイルを読み込んで、分割して送る仕様で、
ようは、ハイパーターミナルとか、テラタームの様なプログラムを作りたいのですが、
なぜか、転送時間が理論値とかけ離れて遅いのです。
問題は、プロセスのsystem idle processなんかが、
動いてるからだと思います。
ハイパーターミナルで転送中はこれらのプロセスは止まってるのですが、
プログラムで、プロセスを止める方法はあるのでしょうか?
0867あゆ
NGNG0868デフォルトの名無しさん
NGNG状況が良く解りませんが、少なくともChildFrameの方では、
OnCreateでGetWindow/ClientRectしても駄目だったり。>>864さんも言っておられますが。
MainFrameではどうだったかなー。
原因がこれなら取り合えずOnCreateでは目的のオブジェクトをCreateだけして、
OnSizeで改めて
GetWindow/ClientRect→MoveWindow→return
で解決する。意外にも構築時にOnSizeも呼ばれるのだ。まあ試してみて。
0869デフォルトの名無しさん
NGNGMSDNでClientToScreenもしくはScreenToClientを参照してねん
0870デフォルトの名無しさん
NGNG屋上に昇ってイベント・ハンドラ、イベント・ハンドラと唱えるとUFOが降りてくる。
0871デフォルトの名無しさん
NGNG「talkへのアクセス中に不明なエラーが発生しました。」
となってしまい
リソースファイルの中を見ると
IDC_MYBUTTON "talk"
となっておりこれをコメントアウトするとエラーはでないのですが、
今度はウインドウ右上の最大化、最小化、破棄のボタンが効かなくなってしまいます。
デバッガで追ってみると
CFile exception: generic, File Unknown, OS error information = 10054.
例外処理 (初回) は chat.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception
というエラーが出ているのですが、
これの原因はどこにあるのでしょうか?
通信にはCSocketFileおよびCArchiveクラスを使用しています。
0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG[スタート]→[シャットダウン]
0874デフォルトの名無しさん
NGNGOnKeyDownだと両方でVK_RETURNが帰ってきてしまいます。何かよいほうほうは
ないでしょうか?
CALLBACKで、SetWindowsHookExでHOOKして、
例えば10キー側だったら、別のコードを::PostMessageする。。
ってのは反則ですか?(例えばUnassignになってる0xE7とか)
0875デフォルトの名無しさん
NGNGCEditViewでは出来ないのでしょうか?
CRichEditViewなら出来るようですが・・・。
0876デフォルトの名無しさん
NGNGnFlagsの8ビット目を見てもダメ?
0877デフォルトの名無しさん
NGNG863, 864 レス有り難うございました。
カメお礼申し訳ありません。
0878874
NGNGうお。(^^;;;;
失礼しました。できそうです。
ついでなので。。ALTキーとの同時押下はnFlagsの13ビット目でよさげですが、
SHIFTとCTRLは別に状態取得しなきゃ駄目なんでしょうかね。
0879デフォルトの名無しさん
NGNG文字のフォントなら変えられるぞ。
CWnd:SetFont()
0880デフォルトの名無しさん
NGNGありがとうございます。
CWndクラスにもいくつかそういった関数があるのですね。
CEditViewクラスばかり見ていました。
例えばCEditViewに、文章を表示する場合
CStringの配列などに文字列を複数しまって
表示するときにはそれを連結し
SetWindowText()で表示するかと思うんですが、
この方法だと、テキストを一行づつフォントを変えたいとかいった
用途のときに途中でフォントの変更が出来ないと思います。
それに途中がURL(http://〜)であったならば色を変えて
マウスクリックでブラウザが開くようにしたいのです。
このようなようとの時はどのクラスを使用するのが
一番適切でしょうか?
0881
NGNGCHTMLViewつかっちゃだめ?
・・・やっぱりだめだよなぁ。
0883874
NGNGやっぱそれしかないですよね。(^^;
ありがとうございましたぁ。
0884デフォルトの名無しさん
NGNGOnKeyDown で見てるなら GetKeyState の方が良いと思われ。
0885デフォルトの名無しさん
NGNGConnectするとどうしても戻り値が0になってしまいます。
CTcpSocketはCAsyncSocketの派生クラスです。
AfxSocketInit()は正常終了しています。
以下はConnectの部分のコードです。
エラーコードはConnect後に10035(WSANOTINITIALISED)が返ってきます。
//////////////////////////////////////////////////////////////
CTcpSocket *m_Socket;
m_Socket = new CTcpSocket();
m_Socket->SetpWnd(this);
if(!m_Socket->Create())
{
delete m_Socket;
AfxMessageBox("create error");
return;
}
if(!m_Socket->Connect((LPCTSTR)m_TrasmitterIp, (UINT)m_TransmitterPort))
{
error = GetLastError();
delete m_Socket;
AfxMessageBox("connect error");
return;
}
////////////////////////////////////////////////////////////////////
どなたか、原因が思い当たる方はいませんでしょうか。
0886885
NGNGConnectが0を返したときに正常終了時の処理を行うと
接続されました。
0887885
NGNG0888デフォルトの名無しさん
NGNGなんだ、それだったら正常じゃん。
非ブロッキングモードだから、Connectからは接続の完了を待たずに帰ってくる。
WSAEWOULDBLOCKは「まだ終わってないけど戻ってきたよ」って意味。
ちゃんと接続できたかどうかは後からメッセージで通知されるよ。
0889885
NGNGConnectは正常終了した場合0以外が返るとなっていますが。
非ブロッキングの場合は0が戻るのですか???
0890デフォルトの名無しさん
NGNGそうだよ。CAsyncSocket::Connect の説明だとその辺わかりにくいけど、
WSAConnect とか WSAEWOULDBLOCK を調べると、非ブロッキング
ソケットではエラーが返るとちゃんと書いてある。
0891885
NGNGわかりました。ありがとうございます。
0892880
NGNG>CHTMLViewつかっちゃだめ?
できたらそれは無しの方向で・・・・´Д`)
0893デフォルトの名無しさん
NGNG一番近いのはRichEditViewだと思うけど。
0894865
NGNGの替え方について質問したものです。
CWnd::Createの第二引数のlpszWindowNameに名前を指定したらいいのだと
思っているのですが、
スケルトンから作った直後の単純なSDIアプリケーションで、
いろいろやってみましたがどれもダメでした。
具体的には、
CMainFrame::OnCreateで
lpCreateStruct->lpszName = "アプリの名前";//追加
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
Create関数をオーバーライドして
BOOL CMainFrame::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
return CWnd::Create(lpszClassName,"アプリの名前", dwStyle, rect, pParentWnd, nID, pContext);
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
cs.lpszName = "アプリの名前";//追加
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
0895デフォルトの名無しさん
NGNGAfxGetMainWnd()->SetWindowText(_T("アプリの名前"));
0896デフォルトの名無しさん
NGNGCRect rct:
HWND hd;
hd = AfxGetApp()->m_pMainWnd->m_hWnd;
::GetWindowRect(hd,rct);
を実行しましたが、rct.rightで得られる値が、
画面解像度の値と違うのはなぜでしょうか?
スクリーン座標系の値と画面解像度のサイズとは
違うのですか?
もし一致させるとしたらどうしたらよいのでしょうか?
初心者です。
0897デフォルトの名無しさん
NGNGいちいちウィンドウハンドルをとらなくても m_pMainWnd->GetWindowRect で十分。
というのは置いといて、画面解像度の値とは何のこと?
普通、ウィンドウを画面の右端にぴったりくっつけない限り
rct.right == GetSystemMetrics(SM_CXSCREEN) とはならないと思うが。
0898デフォルトの名無しさん
NGNG897さん有り難うございます。
画面解像度とはディスプレーの解像度の意味で書きました。
モニターの解像度は人によって異なるので、それに対応する
プログラムを書きたいのですが...。
0899デフォルトの名無しさん
NGNG897さん有り難うございます。
画面解像度とはモニターに解像度のつもりで書きました。
人によって解像度が異なるので、それらに対応したプロ
グラムを書きたいのです...。
0900デフォルトの名無しさん
NGNG?? 目的は何だ?
画面の大きさが知りたい → GetSystemMetrics もしくは GetMonitorInfo
メインウィンドウを画面と同じサイズにしたい → 最大化する、MoveWindow、
PreCreateWindowをオーバーライドしていじる のいずれか。
0901デフォルトの名無しさん
NGNGウィンドウを解像度に合わせるならGetSystemMetricsで取った値を
SetWindowPosしたり、、、
0902デフォルトの名無しさん
NGNG多謝
897=900さんと思いますが、897で解決しました。
もーVC++って関数ありすぎです。
感謝、感謝
お馬鹿な初心者でした。
0903デフォルトの名無しさん
NGNGそのアイテムのインデックスを取得したいのですが、どうすればよいのでしょうか?
0904デフォルトの名無しさん
NGNGチェックしたときにHitItem()やってもだめだったっけ
多しか俺もそれで悩んだような気がする・・・
チェックされたとき引数にインデックスどうして渡すようにしてないんでしょうね、MFC(ワラ
0905デフォルトの名無しさん
NGNGCLongbinaryクラスの値もCStringと同じように先頭から何バイト削除とか
できるのでしょうか??
できるのならどのような方法でしょうか?
どなたかわかる方よろしくおねがいします。
0906デフォルトの名無しさん
NGNGタブによってビューの
内容を切り替えるのってどうしたらいいんでしょう?
ビューを複数用意して切り替えるのかな?
それともドキュメントを複数用意するんでしょうか。
でもタブブラウザみたいなものならビューは統一だから一つで良いとして、
ドキュメントも一つにしてドキュメントの中の読み込むデータだけ替えるべきなんでしょうか?
0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNGになるのですか?
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG表示しようと思って以下のようなコードを書いたのですが、チェックが入ってくれません。
どうすれば初めからチェックが入った状態で表示できるでしょうか?
LVITEM item;
item.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
item.iItem = nIndex;
item.iSubItem = 0;
item.state = INDEXTOSTATEIMAGEMASK(2);
item.stateMask = LVIS_STATEIMAGEMASK;
item.pszText = LPSTR_TEXTCALLBACK;
item.iImage = I_IMAGECALLBACK;
item.lParam = (LPARAM)pItem;
GetListCtrl().InsertItem(&item);
0911デフォルトの名無しさん
NGNGしまいたいデータの構造体へのポインタをpItemに入れ
LV_ITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.lParam = (LPARAM)pItem;
lvi.pszText = LPSTR_TEXTCALLBACK;
if (GetListCtrl().InsertItem(&lvi) == -1)return FALSE;
LPSTR_TEXTCALLBACKを使用して
void MyListView::OnGetdispinfo(NMHDR* pNMHDR, LRESULT* pResult) {
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
を呼び出しています。
すると本来個々のpDispInfo->item.lParamにはしまいたいデータの構造体が
入っているはずだと思うのですが、null値になってしまっています。
どのような原因が考えられるでしょうか?
0912デフォルトの名無しさん
NGNGそのpItemはどこにあるのかな?newで作ってる?
0913デフォルトの名無しさん
NGNGその直上でnewで作っています。
ドキュメントにデータを保存しておいてドキュメントへのポインタ
pDoc->***でデータを出してきてそこにしまってからLV_ITEM構造体を呼んでいます。
参考文献は「MFCによるWINDOWS プログラミング改訂新版 MicrosoftPress」
です。
struct member_st *pItem;
try {
pItem = new struct member_st;
}
catch (CMemoryException* e){
e->Delete();
return FALSE;
}
pItem->name = pDoc->name;
pItem->date = pDoc->date;
LV_ITEM lvi;
0914デフォルトの名無しさん
NGNGLV_ITEMをゼロクリアするか、すべてのメンバに適切な値を入れてる?
0915913
NGNGいろいろサンプルソースコードとにらめっこして
考えているのですが結局どこがいけないのかわからないです。
これはCSplitterWndを使用してるのでその関係なんでしょうか・・・・。
メッセージからOnGetDispInfo関数を呼び出すときに
メッセージがどこか回り道してその間にpNMHDRの中身が失われてるとか・・・・・
0916913
NGNGLlvi.mask = LVIF_TEXT|LVIF_PARAM;
のLVIF_PARAMをいれないとlParamが有効にならないんですね・・
うーん。すっきりしたーーー
でもこのmaskって何の意味があるんだろう・・
0917デフォルトの名無しさん
NGNG拡張子だのファイルタイプだの追加するにはどうすればいいのでしょう?(;´Д`)
0918デフォルトの名無しさん
NGNGStringTableリソースのIDR_MAINFRAMEを編集すればいい。
書式は適当に検索して探して。
0919
NGNG(MFCの)バージョンによってメンバが増えることがあるから、
maskで明示的に「このメンバに入れた値を使え」と指示されたものだけ
使うようにできているのだ。
0920デフォルトの名無しさん
NGNGおお、出来た。
ありがとう。助かりましたヽ(´Д`)ノ (Д`ノ) ヽ( )ノ (ヽ´Д)。
0922デフォルトの名無しさん
NGNG対症療法しか知らんが、
GetListCtrl().InsertItem(&item); の後で
GetListCtrl().SetCheck(nIndex); すればきっとチェックされるだろう。
0923デフォルトの名無しさん
NGNG一応それでやってたんだけど、なんかもっと綺麗にできないかなと思って。
0924デフォルトの名無しさん
NGNG具体的には、リストビューの上にエディットボックスをCreateして、そのエディッ
トボックスがフォーカスを失ったらそれをリストコントロールにメッセージを送って
処理をしたいんです。エディットボックスの方でOnKillFocusでメッセージ送信させ
てる(つもり)なのですが、PreTranslateMessageとかで受信するんでしょうか?
なにかほかに準備が要るっぽいんですが、どうしたらいいのでしょう??
レベルの低いしつもんでスマソ
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNGキー操作Msg受け取るハンドラなかったけ?
0927デフォルトの名無しさん
NGNG候補が1項目分しか表示されないんだけど
これを5項目表示とかにするにはどうするのですか?
0928デフォルトの名無しさん
NGNGサブクラス化すればそこらへんどーとでもなりますけど配置めんどいんで('_`)。
>>927
候補はちゃんと複数登録してる? ダイアログエディタで配置するなら、
各項目を入力した後にctrl+Enterして、データを複数行にしないと駄目だYO!
もし「びろ〜ん」のサイズが絶対的に足りないと言う理由なら、同様に配置画面で
▽ をクリックすると、びろ〜ん時サイズ編集モードになるから。
適当に下方向に伸ばしてみるが吉。
コードで構築してるなら対処法が全然変わってくるから、又質問してみて〜。
0929927
NGNG動的に(コンボボックスに)項目追加しております。
(CComboBox::AddString)
0930デフォルトの名無しさん
NGNG右クリックしたというメッセージNM_RCLICKのハンドラを追加できるのですが、なぜか
右クリックしてもそこへハンドリングされません。どんな原因が考えられますか?
0931デフォルトの名無しさん
NGNG>>928も書いてるけど、リソースエディタでコンボボックスの▼を
クリックするとサイズを広げられる。
>>930
RichEditのバージョンだったかが原因だったような・・・
RichEditの派生クラスを作ってWM_RBUTTON〜を処理した方が早いかも
0932929
NGNG失礼しました。
リソースエディタ上でやるのでしたか。
たしかにできました。ありがとうございました。
じゃついでに、
プログラム内であのサイズって変更できないのですか?
0933デフォルトの名無しさん
NGNGCreateの第二引数で。
0934932
NGNGつまり一回きり、もしくはcreateしなおしって事ですか?
0935デフォルトの名無しさん
NGNGSetWindowPos。
これくらい自分で試してみようよ。
09361
NGNG■ VisualC++(MFC限定)相談室 3■
http://pc.2ch.net/test/read.cgi/tech/1014057520/
0938デフォルトの名無しさん
NGNG通常のウインドウと同じ方式、(DragAcceptFiles()して、OnDropFiles())(COleDropTargetを持たせる方法)
でうまく動かないのですが、何か特別な手続き方法が必要なのですか?
0939デフォルトの名無しさん
NGNGアセンブラではというより、内部ではどのようにconst属性をはずしてるのでしょうか?
また、これは絶対にはずせるものではないですよね?はずせるものと
そうでないものの違いは?
0940デフォルトの名無しさん
NGNG殆どのコンパイラは、文法上の書きこみチェックをするだけ。
0941デフォルトの名無しさん
NGNG楽にやる方法ありませんか?
0942デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 3■
http://pc.2ch.net/test/read.cgi/tech/1014057520/
0943デフォルトの名無しさん
NGNGレス数が900を超えています。1000を超えると表示できなくなるよ。