■ VisualC++(MFC限定)相談室 5■
レス数が1000を超えています。これ以上書き込みはできません。
0001MFC
NGNG■ VisualC++(MFC限定)相談室 4■
http://pc3.2ch.net/test/read.cgi/tech/1021620974/l50
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGおめれと。
0004デフォルトの名無しさん
NGNGotu.
0005デフォルトの名無しさん
NGNGCAsyncSoketクラスの派生クラスを使って
Chatプログラムを作りたいんですが上手くいきません。
具体的には
m_SockCreate();//ソケットの作成
if(0==m_Sock.Connect((LPCTSTR)dlg.m_strIP,46820)&&WSAEWOULDBLOCK!=m_Sock.GetLastError())
{//接続エラー
MessageBox("接続エラーが発生しました",);
return;
}
切断ボタン
{
m_Sock.Close();//ソケットの削除
}
//接続した
void CConnectSock::OnConnect(int nErrorCode)
{
m_pWnd->MessageBox("接続しました");
CAsyncSocket::OnConnect(nErrorCode);
}
//接続された
void CConnectSock::OnAccept(int nErrorCode)
{
m_pWnd->MessageBox("接続されました");
CAsyncSocket::OnAccept(nErrorCode);
}
//切断された
void CConnectSock::OnClose(int nErrorCode)
{
m_pWnd->MessageBox("切断されました");
}
この中でMessageBox("切断されました");
だけがどういじくっても表示されません。
どうやったら切断時にCConnectSock::OnCloseが呼ばれるのでしょうか?
ほんと困ってるので教えてもらえないでしょうか。
0006デフォルトの名無しさん
NGNGCListCtrlで、アイテムごと、もしくはサブアイテムごとにテキストの色
変えることってできないでしょうか。ライブラリを読む限りじゃ既存の機能
では無理っぽいのはわかりましたが、もし無理に実現するとすればどんな方
法が考えられるでしょうか。どなたかレスお願いいたします。
00076
NGNGお邪魔しました
0008デフォルトの名無しさん
NGNG00095
NGNGそのとおりです。
ですが、なぜか切断されても呼ばれなくて困っています。
クライアントのClose()関数が呼ばれたら
サーバーのOnCloseが呼ばれるって流れですよね?
呼ばれなくて困ってます。。
0010デフォルトの名無しさん
NGNGその前に接続されてないとおもうぞ
Acceptしてねーし
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGまず脱げ。
>>1
(・∀・)ノスレさんも疲れ〜
0013デフォルトの名無しさん
NGNG0014閉じ忘れちうい
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGビットマップハンドルを名前を付けて保存したいのですが。
0017デフォルトの名無しさん
NGNGエクスプローラみたいなTreeViewを
表示したいのですがどうやったらいいのでしょうか?
SHBrowseForFolderの画面みたいなプログラムです。
それを画面に常に表示させておいて処理の出力先を
選択できる形にしたいのですが。
解凍ツールのLhasaみたいなやつを作りたいんです。
あれは、CTreeViewを使って自前で書くべきなんでしょうか?
そう考えると、展開される瞬間にに二つ下の階層を読みに行って、
一つしたのアイテムに挿入するという形しか思い浮かびません。
これだと、重いので根本的に間違ってる気がします。
Lhasaを見てみるとカスタマイズされた
SHBrowseForFolderのようにも見えます。
こっちで考えてみると、メインウィンドウが
SW_HIDEなウィンドウの子ウィンドウで実装する
形になるのですか?
設計段階から、検討もつかず困ってます。
アドバイスいただきたいのですが。
よろしくお願いします。
0018初心者 ◆jXxeRXqw
NGNGドロップダウン形式のコンボボックスを作ったのですが
右にある「▼」を押してもドロップダウンが表示されません。
項目を選択した状態で↓ボタンを押すと
項目は切り替わるのですが・・・・
何か、ヒントだけでもお願いします。
0019デフォルトの名無しさん
NGNGコソボボックスの縦のサイズをもっと大きくしろよヴォケ
002017
NGNGコンボボックスはリソースエディタで
配置&サイズを決める時ちょっと他のと違って、
まず、配置する。
これは他のと同じ。
その後、ドロップダウンが表示されている状態の配置を設定。
つまり。1:通常状態 2:開いてる状態
の二つの配置が必要。
て言っても、二つ目は一つ目のやつの高さを
ドラッグして、長くするだけなんだけど。
ってわかりにくいだろうから一生懸命書いてたけど、
>19が一言で済ましてくれたw
ちょっと悲しい。
002217
NGNG確かに案外分かりにくいかもしれん。
この勢いのまま、どなたか
>17にも愛の手を。。
どうぞよろしくお願いします。
0023デフォルトの名無しさん
NGNGCMenuのTrackPopupMenuを用いて別のアプリケーション上にメニューを
表示するのですが、そのアプリケーションがアクティブな場合に
メニューへキーボードからの入力できないのですが何とかならないでしょうか?
自分のウィンドウを先にアクティブにすれば一応使えるのですけれど、
閉じたあと元のアプリケーションがアクティブにならないので、できれば
アクティブ化しないで入力だけ欲しいのです。
0024デフォルトの名無しさん
NGNGほれ
http://www.codeproject.com/treectrl/shelltreectrl.asp
http://www.codeproject.com/shell/seashell.asp
002517
NGNGありがとうございます。
待ったかいがありました。
見るからに私の希望どおりのことが
書いてあると思われる内容です。
ただ、英語なんですね。。
高校当時英語20点という点数を打ち出した私の
頭じゃつらい。。
でもここで「日本語のページでないでしょうか?」
っていうのも甘えてるみたいなんでやめときます。
辞書片手にがんばってみます。
ありがとうござました。
0026デフォルトの名無しさん
NGNG読めなくてもソースから理解できる罠
0027デフォルトの名無しさん
NGNGPlaySound("SystemStart", NULL, SND_ALIAS_ID);
このように試してみても音が出ないのですが理由がわかりません。
ただwavファイルを再生したいだけなのですが、
普通はplaysound以外の他の方法を使うのでしょうか?
よろしくお願いします。
0028デフォルトの名無しさん
NGNG英語のリソース作ったんだけど、うまくリンクできません。
何か特別な設定が必要ですか?
教えてください。
おながいします。
0029デフォルトの名無しさん
NGNGエラーが出てコンパイルできずに困っています。
CString WINAPI GetDirectoryPath();
という関数と
class AFX_EXT_CLASS CTest
{
〜〜〜〜中略〜〜〜〜〜〜〜
public:
CString GetDirectoryPath();
};
この両方の関数をエクスポートしようとするとエラーがでます。
.defファイルのGetDirectoryPath @?というのを
コメントアウトすれば大丈夫ですが
前者の関数がエクスポートされません。
両方エクスポートするにはどうすればいいのでしょうか?
名前を変えるしかないのですか?
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGAfxGetApp
Afxっていったい何を意味するんですか?
自分で
Afx????みたいな関数作っても
おかしくないですか?
動くとか動かないとかの基準じゃなくて。
0032若輩者
NGNG今、画像処理用のプログラムを勉強しています。
自作の画像処理用ソースファイルとヘッダファイルを
MFCに追加して、CViewクラスから追加した自作のクラス内の
メンバ関数にアクセスしたいのです。
この時、CViewクラスから自作クラスへのポインタ、もしくは
オブジェクトを作ってアクセスしようとするとコンパイルでは
エラー0なんですが、実際に実行すると
『内部エラーが発生しました』
と出てしまい、どうしたらよいか悩んでおります。
よろしかったら先輩方のアドバイスを頂けたらと思います。
どうかよろしくお願いします。
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGレポート型 LVS_REPORTを指定すると普通は
一番左側の項目しかクリックできないと思いますが、
これを一行丸まるクリック可能にすることは出来ないでしょうか?
1 INTEL 75%
2 AMD 20%
3 VIA 5%
.
.
みたいな感じで左側にはインデックスだけついてるので
そこだけクリック可能というのではちょっと変になってしまうんです。
それともこういう場合はリストビューじゃ無い方がいいんですかね?
(数字に意味はないです。念のため(^^;)
0035デフォルトの名無しさん
NGNGLVS_EX_FULLROWSELECT
0036デフォルトの名無しさん
NGNG確か Application Frameworks の略だ。
自分で Afx... は俺はちょっと違和感が。
0037デフォルトの名無しさん
NGNG>PlaySound("SystemStart", NULL, SND_ALIAS_ID);
うちも鳴らね.なんでだろう...?
(9xはこのフラグに対応していないと MSDNにあるが,2000でも鳴らぬ)
>>31
MFCのグローバル関数.名前がかぶらなければ自作関数にこのプレフィックス
つけてもかまわないが >>36の言うように違和感あると思う.
003834
NGNGありがとうございます
それで一行選択されるようになりました
しかしもう一つ質問してよろしいでしょうか?
リストビューの項目がダブルクリックされたときに
その選択されたテキストを手に入れるようにしているのですが
GetHotItem()
だとカーソル位置で判断するようなので
行が反転されていても実際には文字の上にカーソルがないと
正常にどうさしません。
リストビューじゃなくて
ListBoxのGetSelCurのような関数があればとおもったのですが・・
どうもそういうのが見当たらないです・・・
GetNextItem()
004034
NGNGありがとうございます。
なんたかできました。
しかしヘルプがわかりずらいですねこの関数。
最初なにが書いてあるかわからずいろいろ試行錯誤してしまいました。
結局
GetNextItem(-1,LVI_SELECTED);
で出来たのですが。
0041デフォルトの名無しさん
NGNGがあるが。
0042デフォルトの名無しさん
NGNG(http://www.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/vccore/vccorehm.htm)の
「コレクション トピック」
ってどこですか?
ここの説明ってすごく不親切で、リンク張ってないんです。
誰か知ってる人いたら教えてください
004339
NGNGなるほどそれでもできそうですね。
ありがとうございます。
しかしこの場合は
戻り値がGetNextSelectedItemで使うPOSITION
のようなのでもう少し手間がかかるようです
ところでMFC(っていうかC++)でperl風の正規表現
$string =~ /</</g;
なんてのを使うときにはどうするのがベストなんでしょうか?
(速度的にも手間的にも)
Cでポインタをすすませながら一文字づつ文字列を直にいじるか
それともperlインタプリタを使ってperl関数を呼び出す・・????
0044デフォルトの名無しさん
NGNGプロセスの優先度を変更するためにはどうしたらよろしいのでしょう?
プロセス名までは取得できたのですが、変更はどうもうまくイカンのです。
先生方、よろしくどうぞ。
0045デフォルトの名無しさん
NGNG正規表現ライブラリを組み込むのが面倒くさいときは、flex。
0046handleないぞ
NGNGWM_NCHITTEST
ハンドルをクラスウィザードで追加するとあったのですが
このハンドルはウィザードのどこ探しても見つかりません。
出てこないハンドルをMFCで追加できますか?
0047handleないぞ
NGNG0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNGクラスウィザード→クラス情報タブ→詳細設定オプション→メッセージフィルタ
が「ウィンドウ」になっていないのでは?
0050handleないぞ
NGNGどうもです。メッセジフィルタが「ダイアログ」になってて「ウィンドウ」
ってのは無いんですが(?_?)最上位フレームというのにしてみたら旨く行きました。
>48
ハンドラ手動追加もやってみました。一応動くんですが書きこみは
ソース内:BEGIN_MESSAGE_MAP
ソース内:メッセージ ハンドラ
ヘッダー内:// 生成されたメッセージ マップ関数
の3箇所でいいんですか?
グレー表示のところなんかには触っちゃいけないもんだと思ってたんで。
0051デフォルトの名無しさん
NGNGCWinApp* pApp = AfxGetApp();
pApp->メンバ変数名
って別のクラスとかで使ってたんですが、なんか、8個以上になると、
急にわけわかんないエラーがでます。
XXXのメモリがXXXを参照しましたがXXXのメモリがreadになることはありませんでした。
・・・とかっていうアレ。
最初エラーの原因がわかんなくて、バックアップ取っといた方で、組んでいったら、
どうも、メインAppのメンバが9個を超えると、いきなりそんなふうになるっぽいです。
でも、メンバ変数が増えるとエラーが出るなんてことあるの?
誰かおしえて〜・゚・(ノД`)・゚・。ウワアアアアアン
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNGメンバ変数の宣言の順番でエラーが出たり出なかったりするなんて・・・
ふしぎだ。やさしい人なんかおしえてよ〜T_T
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG親切なヒト発見!
しょっちゅうビルドしてるけどだめっぽいです。
なんか宣言は大丈夫でもアクセスすると例のエラーでます・・・ナゼダ?
もうネムイ・・ねよ。
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG遅レスだが、これはどうだ?
ttp://61.127.132.232/~ToukatuTCP/vc/006.html
0059nana
NGNGで拡張子がtxtのファイルを取得できるけど
拡張子がhtmlもしくはtxtみたいにして指定することは出来ないのですか?
2回Findfileを呼び出してぐるぐるさすしかないのかなーー。
0060デフォルトの名無しさん
NGNGfinder.FindFile("*.*");
if 拡張子が 'txt' 若しくわ 'html'ならってやれば
0061初心者 ◆76EfjdUc
NGNG下のページで見つけたのですが、同ページに乗っているクラスBregPoolが
エラーを起こして使えません。
BREGEXP.DLL
http://www.hi-ho.ne.jp/babaq/bregexp.html
とても便利そうなので是非使わせていただきたいのですが・・・
どなたかご教授願えませんでしょうか?
0062デフォルトの名無しさん
NGNGプロパティにはサイズ可変とか見つかりません。
0063デフォルトの名無しさん
NGNGの
Resizable Dialogs
を嫁。
0064デフォルトの名無しさん
NGNG>プロパティにはサイズ可変
モロにあるわけですね。僕って本当にfusianasan.
0065デフォルトの名無しさん
NGNG単にサイズ変更可にするだけなら、境界線をサイズ変更枠(WS_THICKFRAME)
にすれば OK。右下にハンドル(?)を表示したいとなるとやはりcodeguru
参考にするのがよいと思う。
0066デフォルトの名無しさん
NGNGデバッグVerでは問題ないのに、リリースVerだとOnDrawの処理を抜けた後、
ソース外で撃沈、異常終了(Access Violation)しちゃうんだけど、
何がいけなさそう?
OnDrawが終わる直前にSetItemCountを使ってもダメだった。
0067デフォルトの名無しさん
NGNGOnDrawで描画以外のことをするなと小以下略
何か適当なメッセージをPostして、そのメッセージのハンドラで処理すれ。
0068デフォルトの名無しさん
NGNG描画しているのですが、アイコンをDrawStateと
DrawStateのプロージャ関数内でDrawIcoExを使用して描画しています。
DrawStateのフラグに、DSS_NORMALを指定したときはうまく描画されるのですが、
DSS_DISABLEDを指定した場合に、全く描画されません。
一応DrawIconExは成功しているようなのですが、
この場合どんな原因が考えられるでしょうか?
白く塗りつぶした上に描画しています。
006968
NGNGDrawStateで描画する位置を指定せず(0,0)に、
プロージャ内で位置を指定していたため、位置がズレていたのが原因のようです。
しかし、なんでDSS_NORMALの場合だけ成功するんでしょうか…。
0070デフォルトの名無しさん
NGNGできませんか?
メニューにSetFocusを使おうと思ってもHWNDの取得の方法がわからなくて、、、
(それ以前にメニューってウィンドウじゃない?)
0071デフォルトの名無しさん
NGNGはっきりいって言ってることが
よくわからんが、
>非アクティブ時に
フックについて調べるとよい。
>HWNDの取得方法が
FindWindowで間にあうならフックしなくてもいい。
0072デフォルトの名無しさん
NGNGレスthx.フックとか調べてみます。
ところでメニューのクラスって分かります?
0073訂正
NGNGウィンドウクラス ○
0074デフォルトの名無しさん
NGNGメニューはウィンドウじゃないよ。
どうしてもメニューを表示したいならシステムフック。
0075初心者
NGNGGetSafeHdc(),では「定義されてない」
CDC::GetSafeHdc(),では
C:\Program Files\Microsoft Visual Studio\MyProjects\mc4\mc4Dlg.cpp(296) : error C2275:
'CDC' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
怒られます
0076デフォルトの名無しさん
NGNG質問の意図がよく分からないけど
CPaintDC dc(this);
HDC mpTest1 = dc.GetSafeHdc();
HDC mpTest2 = dc.m_hDC;
とかではだめ?
メニューはウィンドウだよ。もっとも、ウィンドウハンドルが分かっても
どうしようもないけどね。ちなみに、ウィンドウクラス名は#32768だ。
0078gessi
NGNGありがとう.
クラスとメンバについてわかってなかった馬鹿な私でした.
008079
NGNGOnDraw外に置いても相変わらず同じパターンにハマる。
ただ、ひとつわかったことがあって、仮想リストビューを使ってるんだけど、
撃沈の直前の処理はOnGetdispinfo****関数が最終のようだということ。
デバッグVerではその後_AfxDispatchCmdMsgに処理が移り、case AfxSig_vNMHDRpl:に飛ぶ。
一方、リリースVerでは次のソースにたどり着く前に力尽きる。
つまり、CListCtrlオブジェクトでSetItemCountを使ってアイテム数を増やすと
OnGetdispinfo****が呼び出され、以下撃沈、という図式の模様。
0081デフォルトの名無しさん
NGNG取得する方法がわかりません。どなたか教えてもらえませんか。
OnPrintの引数pInfoのメンバm_rectDrawが印刷領域を表してるのはわか
るのですが、デバイス単位なんですよね・・・。本に書いてあったので
OnPrepareDCのなかでSetMapModeとか呼んでみたのですがうまくいきません。
何がおかしいのでしょうか・・・
DPtoLP
0083まじめな質問者。
NGNGSDIでアプリを作ります。
モードレスダイアログを一つ表示したいのですが、
なんも考えずにあたりまえに(ヘルプに載ってるよーに)つくると
モードレスダイアログはアプリケーション内で
ZオーダTop位置固定に表示されちゃいます。
メインフレームのウィンドウがアクティブな時は
そっちを上にしたいんですけど。
どうしたらよいのでしょう?
「すれ立てるまでもない質問はここで」で誘導されちゃった。
0084デフォルトの名無しさん
NGNGインターフェース設計としていかがなものだろうか。
008583
NGNGほかに標準的な実装がある、とか。
0086デフォルトの名無しさん
NGNG008981
NGNGWYSIWYGではない印刷を行うとき、ページ数事前に調べにくいために、
OnPrepareDCでフラグを・・・といった説明をあちこちで読んだのですが、
結局印刷プレビューを正しく表示したり、印刷をするためにはどこか
でページ数を設定しなくてはなりませんよね?
OnPrintでは必要な情報がそろっているため、ページ数を確定できる
のですがOnPrintでSetMaxPageを呼ぶと、印刷時には印刷ステータスダ
イアログのページのカウントがキャンセルするまで無限にカウントされ
てしまいます。
まったくSetMaxPageを呼ばないとプレビューも印刷も1ページ目のみ
になってしまうし・・・。どうするのが一番よいのでしょう。どなたかア
ドバイスお願いします。
0090デフォルトの名無しさん
NGNG可能ですか?
可能です。
0092デフォルトの名無しさん
NGNGだれかご存じですか?
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNGおまえらスレ違い警報が発令されるぞ
0095Melt-D
NGNGダイアログのエディットボックスから取った文字列を
リストに表示する処理を行っています。
・edit_dlgはCDialogの派生クラスのオブジェクトです。
・m_listCtrlはCListCtrlクラスの派生クラスのオブジェクトです。
・bufはchar型配列です
<<問題点>>
リストが正しく表示されません。
CListCtrl::InsertItemで設定した(LPCTSTR)edit_dlg.m_id_editは表示される。
CListCtrl::SetItemで設定した以下の文字列が表示されない。
既に設定してあるリストを編集する形でCListCtrl::SetItemTextを使った場合
更新はされる。
何か抜けているのがありましたらご指摘お願いします。
if( edit_dlg.DoModal() )
{
LV_ITEMmyItem;
myItem.mask = LVIF_TEXT;
myItem.iItem = m_listCtrl.GetItemCount() + 1;
myItem.iSubItem = 0;
strcpy( buf, (LPCTSTR)edit_dlg.m_id_edit ); //m_id_editはCString型
myItem.pszText = buf;
int iItem = m_listCtrl.InsertItem(&myItem);
myItem.iSubItem = 1;
myItem.mask = LVIF_TEXT;
ZeroMemory( buf, sizeof( buf ) );
strcpy( buf, (LPCTSTR)edit_dlg.m_app_edit );m_app_editはCString型
myItem.pszText = buf;
m_listCtrl.SetItem(&myItem);
myItem.iSubItem = 2;
myItem.mask = LVIF_TEXT;
ZeroMemory( buf, sizeof( buf ) );
strcpy( buf, (LPCTSTR)edit_dlg.m_slocal_edit );m_slocal_editはCString型
myItem.pszText = buf;
m_listCtrl.SetItem(&myItem);
myItem.iSubItem = 3;
myItem.mask = LVIF_TEXT;
ZeroMemory( buf, sizeof( buf ) );
strcpy( buf, (LPCTSTR)edit_dlg.m_clocal_edit );
myItem.pszText = buf;
m_listCtrl.SetItem(&myItem);
///(途中省略・・・)///
m_listCtrl.SetItem(&myItem);
m_listCtrl.Update(iItem);
}
0096デフォルトの名無しさん
NGNGあんまり情報が見つかんなくてわからないんでけど。
誰か知ってたら教えて
0097デフォルトの名無しさん
NGNG> int iItem = m_listCtrl.InsertItem(&myItem);
返ってきたiItemと myItem.iItem を比べてみ。
0098Melt-D
NGNGGetItemCount() + 1が余分だったんですね・・・。
iItemは0スタートということをすっかり忘れていました。
感謝します。
0099デフォルトの名無しさん
NGNGクラスウィザードでエディットボックスを選択するとWM_KEYDOWNメッセージが無いのですが・・・
0100デフォルトの名無しさん
NGNG010199
NGNG0102デフォルトの名無しさん
NGNG先は長〜い
0103デフォルトの名無しさん
NGNG.lzhを自分で作ったアプリに関連付けしたのですが、
もとの関連付けに復旧した時に
画面上のアイコンは再描画されません。
レジストリ変更後、すぐにアイコンを
元に戻す(再描画する)にはどうすればいいでしょうか?
0104デフォルトの名無しさん
NGNGどうすればよいのでしょうか。InvertRectだとそのまま反転してしま
うのですが、「選択色」にしたいのです。どなたかレスお願いします
あるコントロールとは具体的にはどれだ?
とりあえずキーワードはカスタムドローとオーナードロー。
0106デフォルトの名無しさん
NGNG自分で調べてもよく分からんのです。
0107デフォルトの名無しさん
NGNG教えて下さい。お願いします。
0108デフォルトの名無しさん
NGNG0109あ
NGNGすれ違い。
0110名無しのデフォルト
NGNGですが、(OS-XP Vc++6.0で作成)10分ぐらいたつとAEXEでSendで出したもの
に対してBEXEがOn関数で受けなくなってAEXEはSENDが成功してからRecieveを
使っているのでAEXEが止まっています。OS-NTの時にはそのような問題にはな
らなかったのでXp絡みだと思います。(ちなみにBEXEを強制的に落とすとAEXE
は動き出します。XPの基本優先度を上げると起き難くなります。)
BEXEが悪いかXPの通信が悪いかだとは思うのですがご存知の方がいたらお願い
します。通信を繰り返してるだけなので1回1回には問題なと思うのですが。
0111とくめいさん
NGNG表示に独自のイベントハンドラを挿入しても実行されません。
なぜか教えてください。
VC++.NETはVC++6よりずっと使いにくくなりました。
0112104
NGNGリストビューのことです。サブアイテムも選択可能にしたの
ですが、選択中の表示を今はカレットを使っているのですが、
点滅がなんかうざいなー、と思いまして。CDCにフォーカス矩形
の表示はあったのですが、選択中の反転(InvertRectじゃない)
もCDCでできないのかなーと思って質問したしだいです。
オーナードローとカスタムドロー、少し調べてみます。
0113デフォルトの名無しさん
NGNG他のウインドのリージョンを取得しようとして
HRGN hRgn = CreateRectRgn(0,0,0,0);
int rgntyp = ::GetWindowRgn(hWnd, hRgn);
とやったのですがERRORAPIがリターンされます。
どうやったら他のウインドウのリージョンがget出来るのですか?
対象のウィンドウがリージョンを持っていれば、それで取得できる。
0115デフォルトの名無しさん
NGNGどうもです。
つまり自分や誰かがSetWindowRgnした後なら取れるって事ですか?
実は重なり合っているウインドの見えている領域と
HWNDのリストを作りたいのですが可能ですか?
GetWindowRgnがエラーだったら、GetWindowRectしてCreateRectRgnIndirect
すればいいのでは?
0117デフォルトの名無しさん
NGNGバーもコントロールもCMainFrameのメンバ変数になっています
OnSelchangedなどの処理をするにはどうしたらいいでしょうか
CTreeViewの宣言、関数をそのままMainFrameにコピーしてみましたが
反応無しでした
0118デフォルトの名無しさん
NGNG011929
NGNG新VisualC++入門 シニア編
\4200
著者 林 晴比古
ただし、
>MFCのコントロールを色々使った例
の他はほとんど為にならないので注意。
辞書代わりに使える、初心者ご用達の本。
って俺は思う。
誰か俺の質問教えて。。
足りない言葉あれば補足しますので
よろしくお願いします。
_declspec(dllexport) CString WINAPI GetDirectoryPath();
012129
NGNGいけました。
おかげさまでやっと進めます。
その部分がわからなくて放置してたので
助かりました。
ほんと感謝してます。
このスレいまいち盛り上がらないなぁw
あんまりみんなMFCって興味ないのかなぁ。
0122デフォルトの名無しさん
NGNGAppWizardで作成したMDIアプリで、
メニューの ファイル→開くを選択した時
出てくるコモンダイアログのポインタを取得出来ないでしょうか?
コモンダイアログで選択中の拡張子が取得したいんです。
それと、コモンダイアログで開けるファイルの種類を増やしたい時
ストリングテーブルをどの様に編集すれば良いですか?
Bmpファイル(*.bmp)
Jpegファイル(*.jpg)
すべてのファイル
の様にしたいのです。 VC6.0です。
0123デフォルトの名無しさん
NGNG知っている人がいたら教えてください。
0124デフォルトの名無しさん
NGNGコモンダイアログのプロパティとイベントに関する部分の
ヘルプをよ〜く読め
0125デフォルトの名無しさん
NGNGCScrollBar(というかコモンコントロールのスクロールバー)のメッセージ
WM_VSCROLL, WM_HSCROLL は CScrollBar ではなく、その親ウインドウに
送られますよね、それがいやなので次のようなクラスを作ってみました。
class CScrollBar2 : public CWnd {
CScrollBar m_sb ;
afx_msg void OnVScroll(
UINT nSBCode,
UINT nPos,
CScrollBar *pScrollBar
) ;
DECLARE_MESSAGE_MAP()
} ;
以下略(説明用ですので細かい突っ込みはなしです)...
m_sb は CScrollBar2 の子ウインドウとして作成されます。
結果、WM_VSCROLL, WM_HSCROLL は CScrollBar2 に送られます。
CScrollBar2 を普通の CScrollBar のように扱います。
で、ビュークラスにつけて、縦スクロールバーのように動作するように
してみたんですよ。
まあ、普通に動作しているように見えるんですけど、マウスのホイール
に反応しないんです。
スクロールバーの上でホイールを回すとちゃんと動作するんです。
別のウインドウになってしまったので当然ですが、これを普通
(CScrollViewとか)のようにビューの上でホイールが効くようにするには
どうしたらよいでしょうか?
0126125
NGNGたんにビュークラスの WM_MOUSEWHEEL メッセージをスクロールバー
(m_sb)にそのまま投げてやればよいのかと思ったのですが、Spy で見た
ところ WM_MOUSEWHEEL はビュークラスにきてませんでした。
インストールしているマウスユーティリティがホイールの動作を
WM_VSCROLL 等に変換しているのかと思い WM_VSCROLL も見てみたのです
がきてませんでした。
で、長くなるので簡単に書くと、
他のアプリで試したところ次のような結果になりました。
・スクロールバーがついているウインドウには WM_VSCROLL がくる
・ついて無いときはこない
・WM_MOUSEWHEEL は常にこない(多分マウスユーティリティのせい)
作ったビュークラスには、直接関連するスクロールバーはなかったんです
今、使用しているようなマウスユーティリティの有無にかかわらず、
ホイールが効くようにするにはどうしたらよいでしょうか?
0127デフォルトの名無しさん
NGNGWM_MOUSEWHEELみたいなやつ
0128デフォルトの名無しさん
NGNG0129125
NGNGCSplitterWnd で分割表示したときは?
2×2で分割表示した場合、左上のビューにスクロールバーはありません
・スクロールバーがついているウインドウには WM_VSCROLL がくる
・ついて無いときはこない
の法則からいけばホイールは効かないはずなんです。で、試してみました
AppWizardで適当に作って、コンポーネントギャラリーから
スプリットバーを追加して Spy で見てみました。すると、左上のビュー
にも WM_VSCROLL がきてしまってるんです。
なぞですね。
そもそも、CSplitterWnd で分割表示してないときのスクロールバーの上
または左の(分割表示するための)四角もなぞです。
CScrollView でなく CView でもスクロールバーが表示されるようになる
のもなぞです。
四角のほうは、多分あのスクロールバーはウインドウスタイルで
WS_VSCROLL を指定したものではなく、CScrollBar を使っているん
でしょうけど。
CSplitterWnd を調べればスクロールバーのないビューにも WM_VSCROLL
が来るような仕組みがわかるかもしれませんが CSplitterWnd の中なんか
知りたくもありません。
こんな話はどうでもよくて、
ホイールが効くようにするにはどうしたらよいでしょうか?
0130129
NGNG思いついたの間違いだろ、つーか文章長すぎスマソ
0131デフォルトの名無しさん
NGNGnew,deleteでやっていいのでしょうか?
0132デフォルトの名無しさん
NGNG何か問題ある?
0133デフォルトの名無しさん
NGNGなんかまずいのかな、と。
0134デフォルトの名無しさん
NGNGどうもありがとうございます。っていうか遅レスですんまそ。
そうですね。でもウインドウの重なり具合で下の奴のリージョンが上の奴のせいで
欠けるとか、そう言うのを再現したかったモノで。。
例えばリージョンを重ねていって完全に隠れちゃったようなリージョンは
NULLリージョンになってくれるとかそういう便利なヤシないですかね?
0135デフォルトの名無しさん
NGNG今更使わんけど。
CombineRgn
0137103
NGNGご存知の方教えてもらえないでしょうか?
Lhasaで関連付けしたら
即アイコンが変わったので
なんらか方法があるとは思うのですが。。
0138デフォルトの名無しさん
NGNG勘でレスするけどデスクトップはリストビューだから
そのリストビューに対して再描画を通知すればよいかも
0139103
NGNG一瞬「ハッ」としたんですが、
つまりデスクトップのウィンドウを
再描画というわけですね。
でもそれだと、
同時に別窓で開いてるエクスプローラが
更新されないですよね。
どうすれば。。
0140デフォルトの名無しさん
NGNG便乗して勘で、
SysListView32と言うクラス名を持つウインドウ全てに
WM_PAINT送るとか、、、
0141103
NGNG正直それをぱっとテストできるスキルは
持ち合わせてないんですが、
そっちの方向で調べながらやってみます。
ありがとうござました。
なんか勘違いしてたら教えてくださいね。
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNG開発中はMSDNライブラリで十分だけど
寝る前とかにマターリ読みたいわけだが
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG0147五条郎
NGNG0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNG今店頭に並んでいる奴には PlusPack とか
いうモノが付属しているようです。
PlusPack はあった方が便利ですか?
MS のサイトで PlusPack 単体売りしているのを
買い逃したので気になってます。
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNGアカデミックのダンピング価格で
買ったのか?
いいねー学生さんは、、、
0153デフォルトの名無しさん
NGNGイメージを貼り付けたいのですがどなたかご存知ではないですか?
メディアプレーヤーみたいにいくつもイメージを変えたいです。。
0154デフォルトの名無しさん
NGNG::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST|SHCNF_FLUSH, 0, 0);
0156デフォルトの名無しさん
NGNG取得するにはどうすればいいでしょうか?
CWnd* ????(HWND hWnd);
みたいな関数ってありませんか?
CWnd::FromHandle()
0158156
NGNG最高です。
感謝します。
0159デフォルトの名無しさん
NGNGフレームワークのファイルオープンのダイアログみたいに使うことはできませんか?
0160あ
NGNGみたいに?
代わりにじゃなくて?
0161159
NGNG0162デフォルトの名無しさん
NGNGするには、どうしたらいいですか?
一行目だけ色を変えたいんですけど、やりかたが書いてある
参考書がないので
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGID_FILE_OPEN の COMMAND メッセージハンドラを CXxxApp に作る。中身は
void CXxxApp::OnFileOpen()
{
LPCTSTR lpszFileName;
{
// ここで自作のファイルオープンのダイアログから得たパスを
// lpszFileName に格納
}
CWinApp::OpenDocumentFile(lpszFileName);
}
見たいな感じ。
0165デフォルトの名無しさん
NGNGこの際ウィンドウのスタイルを
WS_CHILD
でなおかつ、
WS_EX_CLIENTEDGE (ウィンドウの境界が3D)
にしたいと思っています。
CWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
で、
lpCreateStruct->dwExStyle
をいじくったりしていますが上手くいきません。
よい方法があれば、或いは不可能であるのならば
その旨を教えて下さい。
そもそも、CWndを直接継承してウィンドウを作って良いのか否か
も分からないのですが…。
0166デフォルトの名無しさん
NGNG0167165
NGNGありがとうございます。上手くいきました。
また質問なんですが、
CWnd::OnMouseWheel()
のところが上手くいきません。
これもまた、CWndから直接継承されたウィンドウなのですが。
ほかの、OnMouseMove()などはちゃんと反応するのですが…
0169デフォルトの名無しさん
NGNGDLLを使用してもよいなら
正規表現 DLL
で検索を、、
0170170
NGNGたとえばCStaticのAとBがあります。どちらもビットマップが表示されています。
AがBの上に重なっているとして、マウスでBをクリックすると、
BがAの上にくるように表示しなおすことってできますか?
もしできなければ、ほかのコントロールを使ってもいいので、
似たようなことができますか?
0171171
NGNGできるよ
0172170
NGNGどういう方法がありますか?
0173あ
NGNGSetWindowPos
で無理か?
0174動画無料サンプル
NGNG小学生、中学生、女子高生が【無料】で見れる!!
http://www.traffimagic.com/WIPE7MMLZCA/comein/NZKYA
0175デフォルトの名無しさん
NGNGで、子ウィンドウはダイアログベースで作ったものをそのままはめ込む
ようにしたいんですが、どのような手順で作ればよいのでしょうか?
0176デフォルトの名無しさん
NGNGウインドハンドルを渡すとZオーダーを返してくれるとか、そういうのありますか?
GetNextWindow以外でお願いします。。
0177デフォルトの名無しさん
NGNGCFormViewにしとけ
0178デフォルトの名無しさん
NGNG0179突然ですが
NGNG0180デフォルトの名無しさん
NGNG13文字で不吉だからと思わ
0181デフォルトの名無しさん
NGNGC**View::OnPreparePrintingで
DEVMODE* pDev=(DEVMODE*)GlobalLock(pInfo->m_pPD->m_pd.hDevMode);
pDev->dmPaperSize=DMPAPER_A3;
pDev->dmOrientation=DMORIENT_PORTRAIT ;
pDev->dmFields= pDev->dmFields | DM_PAPERSIZE | DM_ORIENTATION ;
GlobalUnlock(pDev);
とやってるのですが、デフォルトのA4のままです。プリンタの設定の
ダイアログを使わずにどうやってA3に出来ますか?
0182デフォルトの名無しさん
NGNGわからんけどCreateDCでHDCを作り直すんじゃねーの
0183デフォルトの名無しさん
NGNGこれって使ってるコントロールの数とかモロに影響します?
0184デフォルトの名無しさん
NGNG不特定多数のコピーを行いその後
シャットダウンを続行したいのですが、
うまくいかなくて困ってます。
BOOL CTestDlg::OnQueryEndSession()
{
if (!CDialog::OnQueryEndSession())
return FALSE;
// TODO : ここに特定なクエリの終了セッション コードを追加してください。
CopyFiles();//不特定多数のファイルのコピー処理
return FALSE;
}
実際書いてみると、コピー処理が長く、
応答が無いから終了しますか?みたな
プログレスバー付きのダイアログが表示されてしまいます。
これはちょっと不自然なので、どうしたらいいでしょうか?
0185184
NGNG環境はWinXP VC.NETです。
よろしくお願いします。
0186デフォルトの名無しさん
NGNG根本的に、終了間際に時間のかかる処理はするなってこった。
適切な対処法は知らんけどさ。とりあえず、OnQueryEndSessionで
FALSEを返しておいて、OnEndSession で CopyFiles() を読んんで処理が
終わった後、ExitWinodowsするとか。
0187デフォルトの名無しさん
NGNGBOOL exitFlag = FALSE;
BOOL CTestDlg::OnQueryEndSession()
{
return exitFlag;
}
void CTestDlg::OnEndSession(BOOL bEnding)
{
if(!bEnding && !exitFlag) {
CopyFiles();
exitFlag = TRUE;
::ExitWindows(0,0);
}
}
0188184
NGNGこの方法でいけそうです。
ありがとうございました。
0189VC初心者
NGNGVBでいうDoEvents()にあたる関数を教えていただけませんでしょうか?
0190あ
NGNGおいおい、俺はVB知らんから
教えてやろうにも教えてやれない。
そこで検索してみることにした。
VB DoEvent
見事にヒットした。
代わりに検索して欲しいと言う依頼ですか?
出直してきなさい。
0191VC初心者
NGNGvoid DoEvents(void){
MSG msg;
if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) != 0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
0192デフォルトの名無しさん
NGNGDoEventsは知らないけどAfxBeginThread辺りを調べてみて。
0193VC初心者
NGNG全然わからないので無理っぽいです。(汗
とりあえず、上のDoEvents()でうまくいきました。
0194今田純
NGNG以下のコードではだめなんですが、どこをどうなおせばいいのか、
おしえてください。おながいします。
void CMy1Dlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CEdit* e1 = (CEdit*)GetDlgItem(IDC_EDIT1);
CListBox* l1 = (CListBox*)GetDlgItem(IDC_LIST1);
CString s1;
e1 ->GetWindowText(s1);
l1 ->InsertString(-1,s1);
}
void CMy1Dlg::OnButton2()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CEdit* e2 = (CEdit*)GetDlgItem(IDC_EDIT1);
CListBox* l2 = (CListBox*)GetDlgItem(IDC_LIST1);
CString s2;
char buf[50];
double n1;
double n2;
e2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
sprintf(buf,"%d",n2);
l2 ->InsertString(-1,buf);
}
0195今田純
NGNGe2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
sprintf(buf,"%d",n2);
l2 ->InsertString(-1,buf);
0196あ
NGNGだめっぽいのはわかったけど、
どうだめっぽいの?
0197デフォルトの名無しさん
NGNG結果が表示されないとか?
0198デフォルトの名無しさん
NGNG0199あ
NGNG当たり。
自信なくてUpdateData(FALSE);
ありとなしの両方のコード書いてきたら
なしじゃ結果が表示されなくて、
UpdateDataしたらいけたよ。
よって解決。
0200今田純
NGNG>>196-197
結果は表示されますが、おかしいです。
数字が出力されてほすぃのに、文字が「フ0」とかでます。
>>198
UpdateData。。。なんでしょう。。あたらしい言葉だ。。
調べてきます。
sprintf(buf,"%d",n2); を
sprintf(&buf,"%d",n2); にしました。
Editboxに「1」を入力したら、Listboxに「2」とでてほすいのですが、、
「フ0」(フは半角)
と表示されますた。
editboxが空だと「0」と表示されます。
ウトゥです。
0201今田純
NGNGありがとうございました。
0202デフォルトの名無しさん
NGNG> sprintf(&buf,"%d",n2); にしました。
あほう。
0203今田純
NGNG「あ」さん
UPDATEDATAってコードのどこに書き込めばよいのでしょうか?
教えてください。オナガイします。
これで僕の最初のVC++プログラムが動く。。かもです。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGUpdateData(FALSE)で変数の内容をコントロールに表示する
普通は変数を処理する前にTRUEで処理した変数の内容を表示する場合にFALSEだから
メッセージハンドらの最初にTRUE、最後にFALSEが一般的では?
0206今田純
NGNGcahrじゃないとだめですか?
教科書もチャーで書いてあるし、、
0207デフォルトの名無しさん
NGNGe1 ->GetWindowText(s1);
l1 ->InsertString(-1,s1);
としなくても、戻り値がコントロールのポインタなので戻り値をそのまま利用して
GetDlgItem(IDC_EDIT1)->GetWindowText(s1);
GetDlgItem(IDC_LIST1)->InsertString(-1,s1);
これでOKだよ
この方がわかりやすいでしょ?
0208デフォルトの名無しさん
NGNG0209今田純
NGNG文字列の中身をcharに直さないと。
ということですね。
0210今田純
NGNGわかっているつもりだttが、わかってないことがわかってしまったあぁ!
歩いたら道が伸びていく感じです
0211デフォルトの名無しさん
NGNG0212今田純
NGNG>>208クラス。。クラスってなんか塊みたいなものですよね。代入不可ですか
>>211僕もとてもそうしたいですが。。
GetWindowText(s1);
InsertString(-1,s1);
とかが使えないと、ファイル入出力ができなくないですか。
テキストファイルからデータを読んで、数値計算をして、
結果をテクストファイルで出力したいんです。
0213デフォルトの名無しさん
NGNGe2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
sprintf(buf,"%d",n2);
l2 ->InsertString(-1,buf);
ここらへんをステップ実行して、s2,n1,n2,buf の値を調べてみれ。
どこで変数の値が化けるのか分かるから。
0214デフォルトの名無しさん
NGNGe2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
l2 ->SetWindowText( itoa( n2, buf, 10 ));
ではダメなん?
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGVC上っつーか、CString::oprator LPCTSTR()があるんで、
TCHARがcharならば、C++的に問題なし。
0219デフォルトの名無しさん
NGNGカッコイイからじゃないか?
0220今田純
NGNG>>214おお!atoiがあるならitoaもあるはず!なんで気づかなかったのか!
>>215どもですー。
>>216数値計算に使いたいからですー
>>217僕が地に足の着いてない生き方だからです、すんまそん。
>>218LPCTSTR()って何の略なのかすらわかりませぬ。とりあえずNO問題?
0221デフォルトの名無しさん
NGNG> おお!atoiがあるならitoaもあるはず!なんで気づかなかったのか!
C標準関数じゃないから。
0222デフォルトの名無しさん
NGNG略っていうかCSTRINGのメンバ関数だよ
0223デフォルトの名無しさん
NGNGあなたが参考にしてるという教科書にはクラスに関する解説はないの?
0224デフォルトの名無しさん
NGNG0225今田純
NGNG223-224>>そんなこというなよ、ウワァァァンヽ(`o´)/
0226デフォルトの名無しさん
NGNG君が使ってるVC++が合法的に入手したものであればヘルプ機能が付いてるはず
VCのヘルプであるMSDNは素晴らしいツールだから是非使い方を覚えるべきだね
CStringのメンバについてもその使い方についても全て書いてあるからさ
まずエディタの中でCStringという記述を反転させて(記述がなければ記述してくれ)F1キーを押す
それから「該当するトピック」の中からCStringクラスメンバを選んでクリックする
0227デフォルトの名無しさん
NGNG(それなら << か...どうでもいいや。)
0228デフォルトの名無しさん
NGNGint num=12345;
hoge.Format("数値は%dですが何か?",num);
MessageBox(hoge,"test",MB_OK);
//(゚д゚)ウマー?
0229デフォルトの名無しさん
NGNG>エディタの中でCStringという記述を反転させて
カーソルを CString という文字列のどこかに置くだけで OK。
0230デフォルトの名無しさん
NGNGCString strTemp2 = strTemp1;
としてもほとんど処理速度に影響ないときいたのですが
どういう意味でしょうか?
0231あ
NGNG>今田純
別に嫌味で言うわけじゃないけどさ、
はっきりいってMFCやるの早いよ。
クラスのこと分かってなかったら
MFCいじっても勉強っていうより
作った気になるだけじゃないかな。
MFCよりまずはクラスがなにか、
継承、カプセル化などについて学び、
その後SDKを学ぶことを強くオススメする。
0232今田同定
NGNGふん、おめーよりはわかってるよ!
0233デフォルトの名無しさん
NGNGC++の基礎とかわかんなくても何となく作れちゃうから。
0234デフォルトの名無しさん
NGNG>CString strTemp2 = strTemp1;
のときは文字列の内容自体はコピーしなくて、ポインタのコピーと参照回数++しか
しないことがいいたいんだろ
>>232
同定ageすんなよ
0235デフォルトの名無しさん
NGNGいちいち char buf[50]なんてやらんでよろし。DDXとか使わないんだったら
CEdit* e2 = (CEdit*)GetDlgItem(IDC_EDIT1);
CListBox* l2 = (CListBox*)GetDlgItem(IDC_LIST1);
CString s2;
int n1;
int n2;
e2 ->GetWindowText(s2);
n1 = atoi(s2);
n2 = n1 + 1;
s2.Format("%d",n2);
l2 ->InsertString(-1,s2);
でいいだろ。
こういう処理したかったら普通ClassWizard使ってエディットボックスの
値を反映させるメンバ変数使います。
0236デフォルトの名無しさん
NGNG>>216数値計算に使いたいからですー
すまん、doubleが使いたいのね。だったら%dじゃなくて%gとか%f。
atoiはatof使わないと少数切られるよ。
0237デフォルトの名無しさん
NGNG0238VisualC++初心者
NGNGアプリケーションを起動した時のみ一度だけ実行したい関数があるのですが、
その関数はCClientDCオブジェクトのアドレスを渡さなければなりません。
それでオブジェクトを作るためにCAppView::CAppView()にCClientDC DC(this)と
記述したのですが、どうも不安定になっていしまいました。(Appはプロジェクト名です)
OnDrawに同じコードを書くと問題無いようなのですが、何回も関数が呼び出されるわけには
いきません。何か方法ありませんか?
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGCAppView::OnInitialUpdate()に書いとけば?
0241デフォルトの名無しさん
NGNG>>238
フラグでも用意してやれば良いんじゃない?
0242あ
NGNGそりゃMFCの方が断然簡単だよ。
=SDKの知識が必要ないとは
別な気がするなぁ。
私はSDK->MFCの流れだけど、
SDKやってるからかなり分かりやすかったよ。
俺の使ってた本には、
船の操作方法はわからなくても
海を航海できるが、
最低限の舵取りなどは覚えておくべき、
みたいな例え方してたと思うけど、
ほんとその通りだと思うなぁ。
0243デフォルトの名無しさん
NGNG単にヘルプとIDEの使い方知らない奴なんだから。
0244あ
NGNG確かに。
根本的なものが抜けてるね。
で、考え直したけど、つまりは
できないことじゃなくて、
できることからやってろ。
って言うのが結論ですかね。
頑張れ新人。
0245デフォルトの名無しさん
NGNGCClientDC DC(this)なんてことしたら実行時にエラーで落ちるでしょうね。
ViewクラスにBOOL型のメンバ変数でも追加して、OnDrawで1回だけ描画
されるようにしたらいいと思いますよ。
>>240
その時点で描画しても多分描画されないと思う。
0246今田純
NGNGなので、生あたたか〜く見守ってください
>>232いつもくるけど、道程じゃねえっていってるだろ!プンプン!
>>233-237レスさんくすこ
0247デフォルトの名無しさん
NGNGメニュー->オプションで
オプション設定画面(ダイアログ)を表示するような
コードを書いたのですが、
もう結構進んだ段階なのですが、
オプション設定画面に置くべきコントロールが
増えてきたのでタブ式のオプション設定ダイアログに
変更したいと思ったのですが、
なにかいい方法はないでしょうか。
タブコントロールを使うのが一番早いでしょうが、
あれってリソースエディタ画面がコントロールで
ぐちゃぐちゃになりません?
必要に応じてShowWindowで切り替えるので
リソースエディタ開いたら1〜?ページぶんの
コントロールが表示されてる状態で。。
ページをタブコントロールで切り替える場合
リソースエディタの見た目入り混じって
ぐちゃぐちゃになりますが、こういうものなんでしょうか?
実際起動するとShowWindowで制御されてるので
普通に見えます。
0248デフォルトの名無しさん
NGNG0249247
NGNGやっぱりそうですよねぇ。
実は私もそう思ったんですが、
CDialogから派生したオプションダイアログなんですが、
これをAddPageするにはCPropertySgeetからの
派生クラスに変更しないといけないんですが、
なんか単純に public:CDialog
の部分を変更しただけだとコンパイルすら
通らない状態になってしまって。。
両方ともCDialogの派生クラスだからいけると思ったんですけどね。
なんか間違ってますか??
0250デフォルトの名無しさん
NGNG余裕で変更できる。
・ダイアログの基本クラスを、CPropertyPage(CPropertySheetではない) にする。
・ダイアログエディタで
[無効] と [タイトル バー] プロパティにチェック
[スタイル]→[チャイルド] 、[境界線]→[細枠]
・CPropertySheet::AddPage() , CPropertySheet::DoModal()
0251デフォルトの名無しさん
NGNGCClientDC myDC(&m_pict); <====アソコ
m_pict.GetWindowRect(&pictSize);
.....
.....
myDC.SelectObject(&myRgn);
となっとるだどもアソコでは何をしてるんだべか?
CClient型のオブジェクトmyDCを作ってるのかと思ったら
m_pictというオブジェクトもできてるように思えるんだべが。
0252デフォルトの名無しさん
NGNGタブ分のフォーム作って選ばれたタブによってフォームをSHOW,HIDEしてやれば?
0253デフォルトの名無しさん
NGNG>CClient型のオブジェクトmyDCを作ってるのかと思ったら
思ったとおり、引数にCWnd*がいるからm_pictはCWnd(または派生クラス)のはず
>m_pictというオブジェクトもできてるように思えるんだべが
まちがい、m_pictはすでに存在しているウインドウのはず
0254251
NGNG.hファイルというものがあったのでそこ見てたらあったm_pictべ
.hファイルをしらなかったのでここから勉強することにするべ
いままでひとつのファイルしか使ったことなかったんで
知らなかったんだべよ
0255デフォルトの名無しさん
NGNGm_pictというウインドウに描画するためのCClientDCのオブジェクトを作ってます。
コンストラクタというものを勉強しましょう。
0256デフォルトの名無しさん
NGNG0257251
NGNG書き込んでる間にお返事ありがと
.hに
CStatic m_pictとあったべよ
まだC(not ++しかーもーインタプリタ)はじめてから経験浅いのでつらいべよ
昔買ってぜんぜん使えなかったVC++をちょっと使ってみようかと思うったべよ
0258251
NGNGオラがもってるブックにはコンストラクタは
クラス名 オブジェクト名 = new クラス名();
としか乗ってなかったから
引数とることがありえることすらわからなかっただべよ
短時間にものすごい勉強させていただいたべよ
ありがとだべよ
0259デフォルトの名無しさん
NGNGどういたしましてだっちゃ
0260251
NGNG0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG>まだC(not ++しかーもーインタプリタ
「しかーもー」は昔やってたクレアラシルのCMの外人口調でよむのか?
>オラがもってるブックにはコンストラクタは
>クラス名 オブジェクト名 = new クラス名();
>としか乗ってなかったから
別の本買ったほうがいいぞ、それはポインタの場合だけだからな
0263VisualC++初心者
NGNGどうもありがとうございました。おかげで解決しました。
0264デフォルトの名無しさん
NGNG非表示の親ウインドの子にしてしまう方法でダイアログアプリのやり方を教えてください。
とりあえず、
1.CWinAppの派生クラスのInitInstanceでダミーウインドを作成
2.CDialogの派生クラスのPreCreateWindowでcs.hwndParentにダミーのハンドルセット
で、だめですた。。そもそもPreCreateWindowに来ないです。。
教えてください
0265デフォルトの名無しさん
NGNG表示しないようにするにはどうすれば?(CImageListを使ってます
なんか上手くいかなくて
(抜き色部分が黒で表示されてしまうなど
サンプルソースどこかのサイトにありませんか?
0266デフォルトの名無しさん
NGNG1の非表示のウインドウってどうやって作ってる?
ダイアログをDoModal()するんじゃなくて、フレームウインドウか自滅型のダイアログを
CreateしてShowWindowするほうがいい。
で、WM_CREATEで表示させるダイアログをDoModalする。
2は意味不明。
0267247
NGNGリソースエディタ->ダイアログエディタでした。
>250
ありがとうござまいます。
今から言われたとおりにチャレンジしてきます。
また報告にきます。
>252
上で訂正しましたが、
起動画面上での話しではなく、
ダイアログエディタ上の話しでした。
0268デフォルトの名無しさん
NGNGunsigned longよりも大きな整数を扱うにはどうすれば
よいのでしょうか?
0269デフォルトの名無しさん
NGNG自作 or 64bitのCPUつんだパソコンが出るのを待つ
0270デフォルトの名無しさん
NGNG__int64は?
0271デフォルトの名無しさん
NGNGお前は、多倍長計算と言うものを知らんのか ? 8086 のコンパイラでも、
32bit 整数をサポートしてる奴はいくらでもあるぞ。
0272268
NGNGMSDN見てみます。ありがとうございました。
0273デフォルトの名無しさん
NGNGタイトルバーの領域を取得して、タイトルバー上でのマウスの操作を無効にしたいです。
↓を使ってやりたいと思います。
UINT CMainDlg::OnNcHitTest(CPoint point)
{
return CDialog::OnNcHitTest(point);
}
CPoint pointに今のマウスの位置が入ってくるみたいなのですが、
タイトルバー上にあるかどうか判定するにはどうしたらいいのでしょうか?
と、いうより、タイトルバーの領域の求め方を教えて下さい。
0274デフォルトの名無しさん
NGNGGetSystemMetricsとかでなんとかならんの?
0275デフォルトの名無しさん
NGNGSDK ならば DefWindowProc(hwnd, WM_HITTEST, 0, MAKELONG(point.x, point.y) ); で
HTCAPTION が返ってくればそこはタイトルバーやーってことなんだけど
このセンで何とかならんっすか?
0276デフォルトの名無しさん
NGNGううむ、MFCでやってるのでよくわからないです。
いい加減、まともな文法覚えないといけないんですが。
よく見たらUINT OnNcHitTest(CPoint point)
の戻り値がHTCAPTIONだったらタイトルバー上ってことらしいです。
が、使い方がわかりません。
どこで使ったら(判定)したらいいでしょうか?
SystemMetricsはよくわからなかた。
0277デフォルトの名無しさん
NGNG{
UINT nHit = CDialog::OnNcHitTest(point);
return (nHit == HTCAPTION) ? HTNOWHERE : nHit;
}
とか。
0278276
NGNGありがとうございます。
大丈夫みたいです。
でも、return〜の行がなにやってるかわからない(汗
?とか:とか。
0279デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGエクスプローラではカラムのリストがコンテキストメニューとして表示されますが、
ああいうことをやりたいのです。
0282デフォルトの名無しさん
NGNG複数のスレッドを立ち上げて同じサーバからファイルを同時にダウンロードしたいのですが、
CInternetSession や CHttpConnection クラスのインスタンスは1つでいいのでしょうか?
それとも、スレッドごとに作成しなければいけませんか?
0283デフォルトの名無しさん
NGNGヘッダに関してはHDN_XXXXXXメッセージを処理。
0284デフォルトの名無しさん
NGNG実際にやってみそ。メッセージ飛んでこないから。
0285デフォルトの名無しさん
NGNGあああそういえばそんな話を聞いたことがあったような。スマソ。
OnNotifyオーバーライドするしかないのか?
0286285
NGNG重ね重ねゴメン。
0287デフォルトの名無しさん
NGNG0288VisualC++初心者
NGNG適当な方法が分かりません。
細かいところは自分で調べるので、おおまかな手順を教えてください。
お願いします。
0289デフォルトの名無しさん
NGNGヘッダコントロールをサブクラス化すればできるんじゃないのかな。
Spy++でメッセージ見てみれば?
>>288
MFCにまるで関係なさげだが…
1.DirectXを使ったラッパライブラリを使う(沢山あるよ)
2.DirectXを自分で使う
3.MMsystemを使う
こんなとこかね…
0290デフォルトの名無しさん
NGNGWindowsのエクスプローラのようなプログラムを作ろうと思っています。
この場合、ドキュメント・ビューアーキテクチャーのサポートは
する必要があるのでしょうか?
データファイルの入出力はないので必要ないと思うのですが、どうでしょう?
0291デフォルトの名無しさん
NGNGドキュメント・ビューアーキテクチャーがわかりにくかったら
こういうケースでは特に使う必要は無いと思う
まあ、普通にアップウィザードでSDI,MDIアプリをつくると
勝手にサポートしてしまうけどな
ドキュメント・ビューアーキテクチャーになったらなったで
あまり気にせず作るのもありだと思うがな
0292デフォルトの名無しさん
NGNG> あまり気にせず作るのもありだと思うがな
なるほど。
実はプロジェクトの新規作成(SDI)で、分割ウィンドウを作成するには
「ドキュメント・ビューアーキテクチャーのサポート」にチェックを入れないと
駄目みたいだったので、どうしようかな〜と思って質問してみました。
ドキュメント・ビューアーキテクチャーをサポートしても、exeのサイズ
がそんなに変わらないのであれば、そうしようと思います。
0293VisualC++初心者
NGNG3番の方法で音を鳴らすことができました。どうもありがとうございました。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGアイコン位置にチェックボックスを出したいのですが
どうすれば良いでしょうか?
0296デフォルトの名無しさん
NGNG0297あ
NGNG俺は自分でチェックボックスの
オンとオフのイメージを用意して
必要に応じてイメージを入れ替える、
という方法で実装できた。
でもなんか間違ってる気がするんだが。。
0298デフォルトの名無しさん
NGNGCTreeCtrl::SetCheck()っていうのがあるけど、使ったこと無いから知らん
タメシテレポートキボンヌ
0299デフォルトの名無しさん
NGNGの中でソフトの起動を止めたいときは
どうすればいいでしょうか?
PostQuitMessage(1)
にすると
一瞬メインウィンドウが表示され困ってます。
0300デフォルトの名無しさん
NGNGTVS_CHECKBOXESというスタイルがある。
(MSDNでTree-View Control Window Stylesを検索すればスタイル一覧がみつかる)
ダイアログにツリービューコントロールを貼ってプロパティで
スタイルを見ると、チェックボックスをつける項目があるので
そういうスタイルがあるんだろうなと予想できる。
0301デフォルトの名無しさん
NGNGMFCのアップウィザードで作ったダイアログベースアプリやったら
CxxxApp::InitInstance() で処理したらど〜や
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (´´
,---..、- 、,-、 (´´
.ivvvi:i::'.、. ヽ} (´⌒(´
⊂j(゚ヮ゚j;;!⊂} }⊃≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
0302301
NGNG/::::;:ハ:::::::::::::::',
l:{レム! ';i'、!;:::::::::!
|::';‐- -‐-i:::::::|
|:::i,! |r‐、| l,!:::::::l 300取られへんかった
!l::i;`r'テ'i"i|::::;、:|
il、li´''‐--,i/リ;ヾ
/ |▽▽▽! `、
0303299
NGNGそれもそうですね、今書き換えてきました。
ちなみにCxxDlg::OnInitDlg()関数内部では
無理なんでしょうか?
今後の参考に。
0305299
NGNGなるほど、
納得できました。
ありがとうございます。
0306デフォルトの名無しさん
NGNGInitDialog中でEndDialog
0307デフォルトの名無しさん
NGNGEndDialog
0308デフォルトの名無しさん
NGNG0309299
NGNGEndDialog
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGまだ使えますよね?
0312デフォルトの名無しさん
NGNGユーザーに高性能なPCを買わせる(買い替えさせる)ために.NETが推奨される
0313デフォルトの名無しさん
NGNG編集・選択可能なコントロールを作成して、
aaa,bbb,ccc というアイテムを登録した状態で、
エディトボックスに"ddd"と入力します。
この状態で、↓を下げて、"ccc"を選択すると、
WM_SELCHANGE が来るのですが、
ここで、その処理を中止したいので、
csCombo.SetWindowText( "ddd" ) と書きましたが、
コンボボックスは"ccc"になってしまいます。
何か回避策は無い物でしょうか。
(出来ればTimer等を使用しない方向で・・)
よろしくお願いします。
0314あ
NGNGなにをしたいのかよくわからんが、
dddと選択されたくない、と思ってるなら
スタイルをドロップダウンリストにすればいけるよ。
0315313
NGNG既存で登録されている物はリストに出るんですが、
好きな名前を入れると、その名前で新規登録できるような仕組みです。
ただ、SELCHANGEの時に、本当に変えて良いか確認するのですが、
ここで、『変えない』とされた場合に、元に戻すようにしたいのですが、
それが上手く行かないという状況です。
0316デフォルトの名無しさん
NGNG入れたい場合はAddStringで追加してやれば?
0317デフォルトの名無しさん
NGNG|ON_CBN_SELCHANGE
| このメッセージを処理するとき、コンボ ボックスのエディット コントロール
| 内のテキストを取得するには、GetLBText 関数または別の同種の関数を使いま
| す。GetWindowText 関数は使えません。
これ、大丈夫?
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNGCBN_SELENDOKでやったらどうか、と勘で答えてみる。
いずれにせよ、SELCHANGEだと矢印キーで移動するたびに
確認メッセージが出ることになるので良くない気がするもより。
0320313
NGNGまだ、それは確定アイテムでは無いので、そういう訳にも。
>>319
よく考えたら、そうですね。
当方、マウスオペレーションしか考えてませんでした(^^;
とりあえず、SELENDOKの方で変えるように、これから変更してみます。
0321313
NGNG(すべて、SELENDOKのハンドラの中で記述し、直後にreturnしてます)
(不可A) →全く無視され、変更後のセルの内容が表示されます
m_csCombo.SetWindowText( "元に戻したい文字列" );
(不可B) →DeleteString実行時に、エディト内容が心中します。
lIndex = m_csCombo.AddString( "元に戻したい文字列" );
m_csCombo.SetCurSel( lIndex );
m_csCombo.DeleteString( lIndex );
(不可C) →Spyで見たところ、WM_SETTEXT自体が来てませんでした。
::PostMessage( m_csCombo.m_hWnd, WM_SETTEXT, 0L,
(LPARAM)"元に戻したい文字列" );
(悩み続けても生産効率が悪いので。)
PostMessage( WM_USER+77, 0, 0 );
WindowProc( ... )
{
if( message == WM_USER+77 ){
m_csCombo.SetWindowText( "元に戻したい文字列" );
return 0;
}
}
コードが汚くなってしまったのが口惜しいのですが、
とりあえず、これで目的の動作をしてくれました。
ご助力頂き、ありがとうございました。
もし、もっと良いコードが有れば、是非教えて下さい。
0322デフォルトの名無しさん
NGNG実際の値で異なるフォーマットを指定したいんですが、できないのでしょうか ?
要は、ヘッダーに「ファイルサイズ」と表示して、各々のファイルサイズを表示
したいんです。実際のファイルサイズは数値なので当然右詰で表示するんだけど
ヘッダーは中央揃えの方が美しいと思うので...。
Explorer なんかだと、両方とも右詰で表示されているのでできないのかなぁ...。
0323デフォルトの名無しさん
NGNGオーナードロー
と「リストビュー」だけ見て条件反射で書き込んでみるテスト。
0324322
NGNGう〜〜〜ん、それしかないか...。何で別々に指定できないかなぁ...。
第一、タイトルなんて常に中央揃えで良いと思うし...。
と、愚痴を言ってても始まらないので、とりあえずオーハードローでしこしこ
やってみます。ありがとう。
0325デフォルトの名無しさん
NGNG行の高さを動的に変更したいのですがどうすればよいでしょうか。
1行目は高さ20、2行目は高さ30、、、というふうに各行を任意の高さに
変更したいのです。
オーナードローでWM_MEASUREITEMが送られてくる時点ではまだ高さはわからず、
実行時に任意の高さに変更できるような仕様です。
0326デフォルトの名無しさん
NGNGHeader Controlに対してだけ、CustomDrawを仕掛けたら?
0327デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNGCTreeCtrlは全然ちらつかないのに…
0329デフォルトの名無しさん
NGNGコントロールに対応する変数を作れないのです。どうすればよいのでしょう。
お願いします。
0330デフォルトの名無しさん
NGNGC++.NETってのも出たのか。
知らんかった。
0331あ
NGNGコントロールを右クリックして変数の追加
0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNGこの間VC++初めて使ってクイズプログラム作ってみたんだけど
テキストに書いてある
「はろ〜わ〜るど」のプログラムからはじめるやつっているの?
意味不明だし..
0334あ
NGNGテキスト??
学校のテキストか?
んなの知るかよ。
俺の初心者時代に使った本に載ってある
Hello,World!!には
Windowsの仕組みを知る上で大事な
ファーストステップだった。
書きたくなきゃ書くなよ。
0335329
NGNGありがとうございます。
普通のボタンなどはうまくきました。
しかし、ラジオボタンはどうしても変数が作れません。
VC6でやっていたようにグループボックスを貼り付け、
ラジオボタンをいくつか貼り付け、
一番上のラジオボタンのIDを変え、そのラジオボタンを
右クリックして「変数の追加」を選んでも、そのIDが
出てこないのです。
どうすればよいのでしょう?
教えて君ですみませんが、よろしくお願いします。
0336あ
NGNGグループ化したいラジオボタンの
タブオーダーの一番若いやつを
右クリック->プロパティ
Group true
にしたらいけると思うよ。
今確認したらいけたから。
0338あ
NGNGそうか、一件落着だな。
そういえばラジオボタンで思い出したけど、
俺のところではなぜか三つ以上のラジオボタンに値を割り当てることが
できない。
VC6で確かintに出来たはずなんだけどなぁ。
.NETでGroup true にしてから
タイプをValueにして手動で
BOOLからintに打ち変えても
ちゃんと動かないんだなぁ。
なんでだろ。
仕方ないのでGetDlgItemを使用した
SetRadioButton()とGetRadioButtonを自作してるよ。
みんなこうなの?便乗だけど。
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNG別の色にする方法ってあるのかな。
0342あ
NGNGアドバイスはありがたいが違うと思う。
ちなみにそのまま書くが、
俺のCtrl+D押した時のタブコントロールのタブオーダーは
5-6-7
で、5がgroup true になってる。
0343デフォルトの名無しさん
NGNGVC6使ってるが、できるの?
というか DDXのことを言ってるのだったら、その変数は対応する1つのラジ
オボタンの状態しか反映しないので、どのラジオボタンにチェックが入って
いるかを調べるには、結局 GetCheckedRadioButton みたいなことやらないと
ダメなんじゃないの?(DDXあまり使わんので...)
0344あ
NGNG調べなおしてみたけど
CWnd::GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);
選択されてるラジオボタンを調べるこんな関数もあったのね。
知らなかった。
でもDDXでintに割りあてれなかったかなぁ。
VC6使ってる人レポート求む。
0345デフォルトの名無しさん
NGNGVC6ではintにしかできなかった(もちろん値の場合)
単にダイアログにラジオボタンを配置しただけではクラスウィザードの
メンバー変数ページにはIDC_RADIO1は表示されなかった。
ダイアログエディタでラジオボタンのプロパティのグループにチェックを入れると
クラスウィザードで表示されるようになった
0346あ
NGNGレポートありがとう。
>ダイアログエディタでラジオボタンのプロパティのグループにチェックを入れると
>クラスウィザードで表示されるようになった
この状態では多分クラスウィザード内では
型はBOOLだったと思うんだけど、
ここで「int」とか選択できたり
書き返れたりはしない?
0347325
NGNGVC6。ラジオボタンの一つのグループ属性をオンにするとClassWizardで
int型メンバ変数が割り当てられる。
どのラジオボタンが選択されているかは
UpdateData();
int nCheck = m_int_radio; // m_int_radioはClassWizardで割り当てたint型メンバ変数
とする。nCheckに選択されているラジオボタンの0ベースのインデックスが入る。
つまり、次のようなボタンの配置の場合、
○ 項目1
○ 項目2
◎ 項目3
三番めの項目が選択されているのでnCheckには2が入る。
>>341
OnCtlColorで他のコントロールと同様に変更できるよ。
if(pWnd->GetDlgCtrlID() == IDC_RADIO3){ // IDC_RADIO3はラジオボタンのID
// ここで色変更処理
}
みたいな感じで。
で、>>325なんだけど誰かリストビューの各行を別々の高さにする方法知らないかなぁ。
CodeGuruとかCodeProjectに出てるオーナードローの例は全行同じ高さのしか
無いようなんだよねぇ…
0348347
NGNG0349デフォルトの名無しさん
NGNG0351あ
NGNG分かりやすい解説ありがと。
結論をまとめると
VC6ではラジオボタンを
DDXでint型に設定できる、ということですね。
VC.NETではVC6のように
BOOL型に割り当てることは可能なのですが、
.NETにてラジオボタンにint型を割り当てる方法を
ご存知の型いませんか?
それとも出来なくなっちゃったのでしょうか?
>325はお力になれそうにありません。
申し訳ないです。
0352343
NGNGスマソ。>>343はでたらめだった(;´Д`)
VC6では、確かに、ラジオボタンのグループの最初のラジオボタンに int を
割り当てられるようになっていて、
m_radio = 2;
UpdateData( FALSE );
とかやると、グループ3番目のラジオボタンにチェックが入るね。
0354デフォルトの名無しさん
NGNG.NETは持ってないんだけど、手動でDoDataExchange()内に
DDX_Radio(pDX, IDC_RADIO1, m_radio_1);
と追加できないんだろうか?
0355
NGNG出来るけどdswがない場合は空のワークスペースを作って
ファイルを挿入するだけでよさそうに思うけどエラー0で
コンパイラ出来たためしがありません。どこが間違ってる
のでしょうか?
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGhttp://www.codeguru.com/menu/owner_drawn_menu3.shtml
を見つけたけどほかにサンプル知ってる人いる?
0358デフォルトの名無しさん
NGNGコンパイラ(ビルド)はするにはどうやればよい?
0359あ
NGNGプロジェクト作ってコピペでいいんじゃないかなぁ。
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG355じゃないと書いてるけど355ちゃうんか。
"コンパイラ"したいんでしょ?
0362デフォルトの名無しさん
NGNGあらかじめ空のフォルダに移しておかないと面倒なことになるけど。
0363362
NGNG0364あ
NGNGほんとだ、するどいねw
>355==>358
だね。
ふたりともコンパイラしたいのか。。
0365デフォルトの名無しさん
NGNGリストビューにはLVS_OWNERDRAWFIXEDしかないみたい。
リストボックスなら高さ可変にできるので、そっちで頑張るというのはいかが。
0366デフォルトの名無しさん
NGNG痛い文章だったので他人のふりしましたがばれましたか・・
0367デフォルトの名無しさん
NGNGアセンブリするにはどうすればよい?
0368デフォルトの名無しさん
NGNG0369367
NGNGアセンブリは無理でもアセンブルならできると思ったんだが。
0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNG横に出るスクロールバーってもっと伸ばせないんでしょうか?
実行結果が最初の方が分からないからどういう動作してるか見たいんですが。
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGCTest oObj(Hoge);
一旦ポインタの形で宣言しnewする場合は、
CTest* pObj;
pObj = new CTest(Hoge);
どのように使い分ければいいのでしょうか?
具体的にはMDIアプリケーションの作成のところで
下記の記述が有ったのですが、なぜnewを使うのか
よく理解できません。
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_TEST88TYPE,
RUNTIME_CLASS(CTest88Doc),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(CTest88View));
0375デフォルトの名無しさん
NGNGきっとここよりC++スレ向きの質問。
0376デフォルトの名無しさん
NGNGどうも有り難う。
ややスレ違いのようなので下記に移しました。
http://pc3.2ch.net/test/read.cgi/tech/1029315669/971
0377
NGNGす。
スプリットウィンドウを設定する時、
AAA.CreateView(0, 0, RUNTIME_CLASS(CBBBView),
とViewクラスで指定するわけですが、このビュークラスにメッセージを送ったり
したい場合、CBBBViewクラスのオブジェクトの実体名が指定してないわけですが、
そういう場合はどういう処理をすればいいのでしょうか?
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNGCSplitterWnd::GetPane()でCWnd*が取得できる、CBBBView*にするには
キャストしかないと思う(RTTI,RTCIでも使ってくれ)
MFC的にはドキュメント・ビューアーキテクチャに若干依存しているクラスなので
CDocument::UpdateAllViews()やCView::OnUpdate()をオーバーライドして
使用するのが最も楽な使用方法だと思う。
0381
NGNGサンクス
0382デフォルトの名無しさん
NGNGMFCを使ってダイアログボックスを作る。
dlgをdomodalで作成する。
dlg内でEndDialgが使われる。
制御がdlgのdomodalしたところに戻らずにexeが終了するのは仕様でしょうか?
知っている方がいたらよろしくお願いします。
0383デフォルトの名無しさん
NGNG{
・・・
CMyDlg dlg ;
dlg.DoModal() ;
・・・ <ここにブレークポイント
}
でブレークしないで終了ということで?
0384デフォルトの名無しさん
NGNG0385382
NGNG一番最初のAppWizardでダイアログを作成したときの話です。
そのときにOnOKなどを押すとdlg.DoModal()の次の行にはいかずに終了しています。
0386デフォルトの名無しさん
NGNGほかの場所のブレークは効きますか?
0387デフォルトの名無しさん
NGNGif (nResponse == IDOK)
{
// TODO: ダイアログが <OK> で消された時のコードを
// 記述してください。
TRACE("OK\n"); // ←ここにブレークポイントをおく
}
else if (nResponse == IDCANCEL)
{
// TODO: ダイアログが <キャンセル> で消された時のコードを
// 記述してください。
}
// ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、
// アプリケーションを終了するために FALSE を返してください。
return FALSE;
------------------
0388デフォルトの名無しさん
NGNGint nResponse = dlg.DoModal(); // ここへブレークポイントを置き、OKで閉じる。
if (nResponse == IDOK) // ここへは行かない。
{
:
:
ただし、以下のようにすればちゃんと「次の行」へ行くことは確認できる。
int nResponse = dlg.DoModal(); // ここへブレークポイントを置き、OKで閉じる。
TRACE("break point\n"); // ここへは行く。
if (nResponse == IDOK)
{
:
:
0389デフォルトの名無しさん
NGNG{
//何もしない
}
だったら、ここはスキップされ、ブレークポイントが自動的に後ろに移動する。
どっちにしろ、どこかでブレークするはずだが。
0390デフォルトの名無しさん
NGNGデバッグすると普通はステップがif (nResponse == IDOK) に行くけどそこを飛ばして
一気にreturnまで行ってる。
って俺は>>382じゃないけど。
まぁ「DoModalの次の行が実行されてない」ってわけじゃないから気にしなくても。>382
0391デフォルトの名無しさん
NGNGif (nResponse == IDOK) // ここへは行かない。
ってのは、処理が行かない(=if文が判定されない)という意味では無く、
デバッグしたときにステップの矢印がその行をを飛ばすという意味ね。
試してみると分かると思うけど、AppWizardでダイアログベースのアプリを作って
Appクラスの
int nResponse = dlg.DoModal(); //ここにブレークポイントを置いてOKで閉じる
if (nResponse == IDOK)
をデバッグしてみるとそうなる。
自分でCDialogから派生ダイアログ作ってDoModalすると
ちゃんとif文にもステップが行くんだけど。Win2000+SP3、VC6+SP5。
0392デフォルトの名無しさん
NGNGif、elseとも何の記述も無いので、最適化されてコードが何も無いでしょ。
だからブレークをはれない。
int nResponse = dlg.DoModal(); // ←ここにブレークポイントをおく
if (nResponse == IDOK)
{
// TODO: ダイアログが <OK> で消された時のコードを
// 記述してください。
}
else if (nResponse == IDCANCEL)
{
// TODO: ダイアログが <キャンセル> で消された時のコードを
// 記述してください。
}
// ダイアログが閉じられてからアプリケーションのメッセージ ポンプを開始するよりは、
// アプリケーションを終了するために FALSE を返してください。
return FALSE;
0393デフォルトの名無しさん
NGNGint a;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
a=0;
}
else if (nResponse == IDCANCEL)
{
a=1;
}
0394デフォルトの名無しさん
NGNGMeasureItem()で
lpMeasureItemStruct->itemHeight = 255;
とするとアイテムの高さが変えられますが、
この数値が256以上だと高さがおかしくなります。
具体的には256をセットすると表示されず(アイテム高さ0)、
また値を増やして行くとアイテムの高さが増えていきます。
どうやらアイテムの高さが255を超えると0にリセットされているようです。
アイテムの高さを256以上にするにはどうしたらよいのでしょうか?
0395デフォルトの名無しさん
NGNG>リスト ボックス、コンボ ボックス、またはメニューの各項目の高さを
>指定します。オーナー描画のリスト ボックス、コンボ ボックス、
>またはメニューのオーナーは、メッセージ処理から戻る前にこのメンバに
>値を設定しなければなりません。
>リスト ボックスの項目の最大の高さは 255 です。
ヘルプに書いてる
0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG面接したんですが、無事一時面接を通過し、
二次面接へは一時面接へ持っていったプログラムの
ソースを持ってこいと言われ、完全独学なので
明らかに変なコードを書いていないか心配です。
すみませんが業務経験者の方、ちらっと見ていただけないでしょうか?
内部的な動きとかは結構ですので、経験者として
このコードを見て「これは見るからにおかしいだろうw」
みたいなのがあれば指摘していただけませんか?
変な質問ですみません。
http://www.geocities.co.jp/SiliconValley-Oakland/1693/TestDlg.txt
http://www.geocities.co.jp/SiliconValley-Oakland/1693/TestLib.txt
ほんと流し読みくらいの感じで結構です。
「おいおいこれは。。」みたいのあれば指摘してください。
初めて人に見せるのが面接担当者というのはあまりに危険を感じてます。
よろしくお願いします。
0399デフォルトの名無しさん
NGNGそれじゃ面接の意味ないじゃん。
実力もないのにあるフリをされると会社としては困るんだよ。
ていうかスレ違い
0400デフォルトの名無しさん
NGNGcs.Insert(0,lpSavePath);
lstrcpy((LPTSTR)lpErrorMsg,(LPCTSTR)cs);
ff.Close();
return true;
0401デフォルトの名無しさん
NGNG指摘はしない。399の言うとおりだから。でも完全独学でこれだけ書けるんなら、
入社後「ちゃんと指導 and/or 教育してもらえれば」プログラマになれると思う。
現時点ではプログラム「らしきもの」は書けているけど、このコードのおかしな
点に気付かないならプログラマとして即戦力ではないと思う。
0402デフォルトの名無しさん
NGNG0403398
NGNGアドバイスありがとうございました。
このスレで質問させていただいた理由は
MFCを使って書いたので他のスレだと
余計にスレ違いになると思い、ここに書かせていただきました。
スレ違いと言われるなら素直に反省します。
すみませんでした。
>399
実力のあるフリをするつもりはありませんでした。
私の間違いを指摘していただくて書き込みました。
最後の勉強としてご指摘願いたいと思っておりました。
>400さん
_T()の使い方をいまいち分かっておらず
使うべきところで使っていないより書いた方がましかと思って書いていました。
ご指摘ありがとうございます。
>401
即戦力などとは毛頭思っておりません。
現場の意見として重くとらえさせていただきます、ありがとうございました。
続く。。
0404398
NGNG最後に、。
スレ違いにもかかわらず丁寧な指摘、非常に参考になりました。
仕事はすぐに決まるとは思いませんが、
がんばってプログラマになりたいと思います。
なによりPC、プログラムが好きでたまらないので
これから精進していきたいと思います。
次お会いする時までによりいっそう腕を磨いておきます。
スレ違い失礼しました、
ずっと人に見てもらう機会などが無かった私には
すごくためになりました。
本当にありがとうございました。
0405デフォルトの名無しさん
NGNG次は回答する側で書き込めるといいね
0406デフォルトの名無しさん
NGNGリサイズ時に縦長にするとタブが途中で消えたり、(コントロールの横幅分だけしか描画されない?)
InsertItemで追加していくとタブスクロール用のボタンが効かなかったり、
タブ位置を上→横に変更するとタブスクロール用のボタンが縦長になったり。
0407デフォルトの名無しさん
NGNGシステム色ではなく、赤とかピンクとかいろいろな色で作りたいのです。
ご存知の方、教えてください。
よろしくお願いします。
0408デフォルトの名無しさん
NGNGマルチポストすんな
0409デフォルトの名無しさん
NGNGListItem.mask = LVIF_TEXT;
ListItem.pszText = "てきすと";
ListItem.iItem = 0;
ListItem.iImage = 0;
m_List.InsertItem(&ListItem);
でリストにな〜んも表示されない。なんで?
0410デフォルトの名無しさん
NGNG>ListItem.pszText = "てきすと";
Basicじゃないんだぞ…
こっちのメンバ関数使ったら?
int InsertItem( int nItem, LPCTSTR lpszItem );
0411デフォルトの名無しさん
NGNGこいつにOnInitDialogの中でInsertItemしてるがなんにも表示されない
なんで??
0412デフォルトの名無しさん
NGNGListItem.iSubItem = 0; //これが足りないよ
初期化について勉強すべし。
LVITEM ListItem;
って宣言しただけじゃ各メンバ変数の値は不定。
0になっているって保証はない。(宣言直後の値を見れば分かる)
0413デフォルトの名無しさん
NGNGどうもありがとう。。
0414デフォルトの名無しさん
NGNGリストビューに表示するアイコンはどうやって取ってくるのですか?
0415デフォルトの名無しさん
NGNG教えて欲しい時は誠意を見せろ!
つーか穴を貸せ
0416デフォルトの名無しさん
NGNG0417あ
NGNGちょっと聞き方悪い、答える方も困るよ。
アイコンはどうやって取ってくるか!
と聞かれた5ら
自分で用意しなさい、
と答えるのが普通なんだが
それを聞きたいのか?
0418デフォルトの名無しさん
NGNGβ SHGetFileInfo
0419デフォルトの名無しさん
NGNGΣ >>418と>>415を結ばせる。
Ω alt+f4
0420デフォルトの名無しさん
NGNGメンバ変数追加する時
どうしてます?
private か protected か public
の判断がつきません。
privateとpublicは分かるのですが、
普通Appウィザードが作成した
クラス (CXXXDlgなど) を派生することってないですよね?
とりあえずprotectedにしとくべきでしょうか?
それともAppウィザードが作成した
クラスを派生することを派生すること自体ありえないので
publicにしても問題ないのでしょうか?
0421デフォルトの名無しさん
NGNGAPPウィザード使うかどうかに関わりなく、
サブクラス作んないんならprotectedは不要。
> 普通Appウィザードが作成した
> クラス (CXXXDlgなど) を派生することってないですよね?
あなた自身が、なぜ「普通」と書いたのか、
その理由を考えてみるこった。
0422デフォルトの名無しさん
NGNGまあ、Wizardで作ったクラスでも、派生することはありえなくもないけど、
普通はアプリケーションに依存したコード書くから、最終的な派生クラスとして、
protectedを無視した決め方してもそれほど実害はないかな。
publicは、コードを少しでも減らしたいとか言う理由じゃなかったら、
セオリー通りにあまり使わないようにした方がいいかと。
publicと( protected || private )は派生するしないで分けるものじゃないし。
(そもそも、MFCもpublicメンバー使いまくりなわけだが。m_hWndとかの重要なものでさえ)
0423デフォルトの名無しさん
NGNGスタティックテキストに文字色と背景色を設定する事は出来たんですが(OnCtlColorによって)
たとえば、ボタンを押して、スタティックテキストの文字色と背景色を
変更するにはどうすればいいんでしょうか
0424デフォルトの名無しさん
NGNGファイルをドラッグしてフォルダにドロップできたり、ダブルクリックでファイルを開いたり
外からファイルをドロップしたりをリストビューでやりたいんだけど、
わかんないことだらけだから手っ取り早くエクスプローラ風のソフトのソースの場所教えてちょ。
たのんま
0425デフォルトの名無しさん
NGNG面倒くさいからソースくれ?
それって「作る」うちに入るのかナ?
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGVC++始めるにあたってよい参考書さがしてるんですけど、
みなさんおすすめ教えてください。
一応初心者向けのでおねがいします。
VC++も使ったことがあるにはあるんですけど、まぁ、オブジェクト指向初心者ってことで。
0428あ
NGNG山本 信雄のプログラミング学習シリーズ
VisualC++
っていうのが全三巻ででてる。
俺はそれを使ったがなかなかお勧め。
CとC++の基本が分かってる人にはお勧めだよ。
Cとかよくわかってなかったら駄目だけど。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGInvalidateRect
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNGstaticに""でも書いてあげれ
0433デフォルトの名無しさん
NGNG(分かってないこともないが、分かってるとも断言できないレベルなので)
今日探してみたのですが、あまりにも種類が多くて・・・
しかもこれ系は高いからあれもこれもとはいかないのですよ。
迷ったあげく、経験者の意見を参考にと。
0434あ
NGNG俺の場合は「やさしいC」みたいな本終えてから
この本始めたよ。
三巻構成で金かかるけど(1巻2800円)
その文わかりやすいと思うなぁ。
二巻は主にC++のクラスについてだから
C++がよく理解できてるなら飛ばしてもいかもしれない。
流れとしたら
SDK->オブジェクト志向(C++のクラス)->MFC
っていう構成。
逆に買って失敗した本は
作って分かる VisualC++6.0
↑なにもわからなかったよw
前述の三冊してから読んだらまぁ面白かった。
参考に。。
0435デフォルトの名無しさん
NGNGVisualC++6.0 プログラミング入門
桜田幸嗣/田口景介
この本は俺がVsualC++買ったときに同梱されていた本。
持ってなければこれ辺りが無難だと思う。
0436デフォルトの名無しさん
NGNGスケルトンとしてウィザードが作成した
メイン画面のダイアログと別に自分で
リソースを挿入、からダイアログを作成し、
クラスを割り当てました。
コマンドラインが渡された時はそちらのダイアログを
使用するよう切り替えたいのですが、
ほとんど上手くいってるのですが、
タイトルバー左隅のアイコンの表示の仕方がわかりません。
どうやったらもともと用意されてるダイアログのように
タイトルバー上にアイコンを描画できるのでしょうか?
0437デフォルトの名無しさん
NGNGWM_SETICONを
窓に
投げつけろ!
OnInitDialogの中で
HICON hIcon=::LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
SetIcon(hIcon,TRUE);
SetIcon(hIcon,FALSE);
でいいんじゃないの?違ってたらゴメン
0440デフォルトの名無しさん
NGNG例えばAを選択すると num に"1"を渡すようにするには
どうすればよいでしょうか?
int i;
int num;
CString select;
CString name[]={"A","B","C"...."J"};
void C***Dlg::OnDropdownCombo()
{
m_combo.ResetContent();
for(i=0; i<=10; i++){
m_combo.InsertString(0,name[i]);
}
}
void C***Dlg::OnSelchangeCombo()
{
m_combo.GetLBText(0,select);
m_combo.SetWindowText(select);
}
0441433
NGNGさんくす あす本屋いってみます
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGそれじゃ今選ばれてるテキストを取ってきて文字列の配列と比較でもしなさい。
0445デフォルトの名無しさん
NGNGSetItemData & GetItemData
0446443
NGNGnum = m_combo.GetCurSel() + 1;
0447440
NGNGnum=m_combo.GetCurSel()+1; でうまくいきました。
0448デフォルトの名無しさん
NGNGダイアログのフォームにビューを張り付けることが出来れば最高なんですけど
0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNG0451440
NGNG渡すにはどうすればよいか教えてください。
0452デフォルトの名無しさん
NGNG0453440
NGNG数列の場合、GetWindowTextなど使わずに
メンバ変数を使えばよかっただけでした。
0454デフォルトの名無しさん
NGNGCInternetSession *m_pInternetSession = new CInternetSession();
CHttpConnection *pHttp = NULL;
CHttpFile *pFile = NULL;
:
:
pHttp = m_pInternetSession->GetHttpConnection(lpszHostName, INTERNET_DEFAULT_HTTP_PORT);
if( pHttp == NULL ) return FALSE; // ホントはもっとちゃんとエラーメッセージ書いてます
pFile = pHttp->OpenRequest("GET", (LPCTSTR)strRequestFile, lpszURL);
if( pFile == NULL ) return FALSE; // ホントはもっとちゃんとエラーメッセージ書いてます
try
{
pFile->SendRequest();
}
catch( CInternetException err )
{
AfxMessageBox("エラー");
return FALSE;
}
捕捉できない。。。
0455デフォルトの名無しさん
NGNG例外は発生せず、サーバーから404とかが返ってくるのみ
DWORD dwStatus = NULL;
pFile->QueryInfoStatusCode( dwStatus );
0456デフォルトの名無しさん
NGNGファイルがない場合じゃなくて、サーバが見つからない場合のことなんですが。
QueryInfoStatusCodeを実行するのはSendRequestを呼び出した後でしょう?
そのSendRequestを実行中に例外が発生すると思うんです。
0457デフォルトの名無しさん
NGNGスマン、よく見てなかった。
やって見たら数秒後に飛んだけど、
ちなみにキャッチはポインタで捕ってる。
catch ( CInternetException* e )
0459457
NGNG俺も前に同じハマり方して、試行錯誤で
脱出した事を思い出したので。。。
常識なのかどうかはわかんないけど
それ以来 CException 系はポインタで捕るようにはしている。
詳細知っている人いたらキボンヌ。
0460457
NGNG○>458
0461デフォルトの名無しさん
NGNG参考になる本とかURL教えてください。
お願いします。
(プログラムに多機能なGridを使いたいだけです。)
0462デフォルトの名無しさん
NGNG質問ならあげたほうがいい
>(プログラムに多機能なGridを使いたいだけです。)
市販のOCXとかを使ったほうがいいかもしれない
それかwww.codeguru.com
0463デフォルトの名無しさん
NGNG上手く呼ぶ出せなくて困っています。
Test.exeの横にファイルタイトルが同じ
Test.HLPとTest.cntを置いた状態で
F1キーを押すと
このトピックは存在しません。アプリケーションの製造元に
問い合わせて、新しいヘルプファイルを入手してください。(129)
↑このようなメッセージボックスが表示されます。
ヘルプファイルの横にTest.GIDというファイルが作成されます。
どこが間違っているのでしょうか?
また、ヘルプファイルを他の場所に置いた状態で
F1を推して見つからないと言われて自分で
場所を指定した場合にも同じように表示されます。
よろしくお願いします。
0464463
NGNGTest.HLP自体を
ダブルクリックで起動すると
正常にヘルプが表示されます。
よろしくお願いします。
0465デフォルトの名無しさん
NGNGOnRButtonDown や OnNcRButtonDown では捕捉できませんでした。
(端っこの枠の部分ではできましたが^^;)
0466デフォルトの名無しさん
NGNGOnContextMenu()は試してみた?
0467デフォルトの名無しさん
NGNGCHtmlViewってあんまり情報ないよね。
View.hに
void OnHogeRClick();
DECLARE_DISPATCH_MAP()
DECLARE_INTERFACE_MAP()
の3行をを追加して、View.cppに
BEGIN_DISPATCH_MAP(CxxxView, CHtmlView)
DISP_FUNCTION_ID(CxxxView, "oncontextmenu", DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU, OnHogeRClick, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()
BEGIN_INTERFACE_MAP(CxxxView, CHtmlView)
INTERFACE_PART(CxxxView, DIID_HTMLDocumentEvents, Dispatch)
END_INTERFACE_MAP()
void CxxxView::OnHogeRClick()
{
// ここで右クリックしたときの処理
}
こんな感じでどうかな。もちろんCxxxViewは自分のViewに書き換えて。
0468465
NGNGポップアプメニュー云々ではなく、単に右ボタンのdown/upを検知したかったのです。
>>466
一応試したのですが無反応ですた
>>467
DISPID_HTMLDOCUMENTEVENTS_ONCONTEXTMENU が見つからないって言われるのはヘッダが古いからでしょうか?
かわりに DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN で試したのですが無反応です。。。なんでだろ。
0469デフォルトの名無しさん
NGNGMFC42.dllを新版に差し替えたいんですが、Win2kのシステムファイル保護機能が
働いて、リブートすると戻されてしまいます
この機能の停止方法がMSページに書いてあるのですが、止まってくれません
クリーンインストール状態でも駄目なんですが何か対策ご存知の方いらっしゃいませんか?
vcインストール、vc sp5インストールと順を追ってやって見ても変化なしでした
0471名無しさん@Meadow
NGNGウィンドウを作るにはどーしたらいいのでしょう?
今ダイアログベースで作成していてスタイルをポップアップ、
タイトルバーのチェックを外しましたがだめでした。
(タイトルバーは消えたがタスクバーに表示されている)
VBでいうBorderStyleを"0-なし"にした状態を希望してます。
0472デフォルトの名無しさん
NGNGそれはMFCではできません。
0473名無しさん@Meadow
NGNG回答どうも。
そうか、できないのですか…。
0474デフォルトの名無しさん
NGNGどうしたらいいですか?
0475デフォルトの名無しさん
NGNGリソースファイルを書き換えれ
0476デフォルトの名無しさん
NGNGウソ言うな
0477デフォルトの名無しさん
NGNGそそ、普通には取れないんだよな。
おいらはPreTranslateMessageで横取り(?)してまふ。
0478デフォルトの名無しさん
NGNG>471
普通のウインドウなら
ModiftyStyleEx で WS_EX_TOOLWINDOW を追加すれば良いんだが、
ダイアログでも効くのかな?試してみて。
0479デフォルトの名無しさん
NGNGダイアログ内のコントロールをコードで作成・破棄するのは技術的には可能だけど、
相当面倒。聞かなければ実現方法が分からないレベルだとかなり苦労すると思う。
(コントロールIDの割り付けやタブオーダーの振り直しなど)
どういう理由で作ったり消したりしたいのか分からないけど、
最初から全部リソースで作っといて、(コントロールの座標が重なっていても構わずに)
OnInitDialog で初期状態で必要無いコントロールは全て非表示にする。
後は、コードで必要に応じて表示・非表示を切り替えた方が全然楽だ。
細かい調整はリソースファイルを直接書き換えたら良い。
俺ならそうする。
0481名無しさん@Meadow
NGNGできました ありがとう!
OnInitDialog() に
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW, 0);
を書いたら実現できました。
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484482
NGNGアイコンを指定しているindexが悪いのですか?
0485デフォルトの名無しさん
NGNG0486485
NGNG0487デフォルトの名無しさん
NGNGログ読め厨房
0488デフォルトの名無しさん
NGNG亀レススマソ、
気になって調べて見たんだけど BOOL CHttpFile::SendRequest の中に
下記の記述があり、
if (!bRet) AfxThrowInternetException(m_dwContext);
AfxThrowInternetException の中に
THROW(pException);
という記述がありました。
pExceptionは、CInternetException* 型なので、キャッチするとき
はポインタで受ける必要があるみたいです。
catch ( CInternetException* e )
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
| | | ̄ ̄ ̄ /| ||
| | | / /|TTTTTT TTTTTTTTTT||TTTTT
| /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
| / / |// / /|
| / / |_|/|/|/|/|
| / / |文|/ // /
|/ /. _.| ̄|/|/|/ Λ_Λ
/|\/ / / |/ / (___)
/| / / /ヽ /〔 非OO 〕〕つ
| | ̄| | |ヽ/l `/二二ヽ
| | |/| |__|/ Λ_Λ / /(_)
| |/| |/ ( ´∀`) (_) Λ_Λ
| | |/ // / ^ ̄]゚ (` )
| |/ ゚/ ̄ ̄_ヽ ⊂〔〔 非OO 〕
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG0493初心者K
NGNGMSVCで作ってるアプリから、spawn系関数でイメージビューワを起動していますが、
当然のことながらビューワ起動後のアクティブウィンドウはビューワになります。
ここで、起動もとのアプリを、プログラム側からの制御でアクティブウィンドウに
したいのですが、どのようにやったらいいのでしょうか?
ちなみに、ビューワ起動。。。。殺す部分は、以下のように作っています。
char CMD[]="C:\\Program Files\\Windows NT\\Accessories\\ImageVue\\kodakimg.exe";
char filename[]="C:\\WINNT\\nwelcome.bmp";
int ProcessHandle = _spawnlp(_P_NOWAIT, CMD, CMD, filename, NULL );
・
・
・
・
・
TerminateProcess( (void *)ProcessHandle, 0);
※ 文字列の中身は、変えています。だから、フルパス指定でpは不要だとかいじめないでね。
よろしくおねがいします。
0494初心者K
NGNGとりあえず、
this->SetActiveWindow();
this->SetForegroundWindow();
あたりが怪しいと思い、起動直後に入れてみましたが、状況は変わりませんでした。
そこで、タイマーをかまして、0.5秒後にこの二つの命令が動くようにしました。
これで、とりあえず当初の目的は達成されましたが、どうもダサい。。。。。。
もっとスマートな方法はありませんでしょうか?
0495デフォルトの名無しさん
NGNGTHROWは、newしたポインタを投げてるので、CATCH(or CATCH_ALL)
で受けてやらないと、メモリリークします。
CATCHの後には、END_CATCH(or END_CATCH_ALL)も忘れずに。
C++の例外はインスタンスで投げて、const&で受けるのが常識だけど、
VC++の例外処理がまともじゃなかった頃から、MFCで例外を使う
苦肉の策として、THROW、CATCHが作られたみたいです。
現在のVC++ならthrow CLASS、catch const CLASS&で問題ないんですが。
0496デフォルトの名無しさん
NGNG_spawn じゃなくて CreateProcess() 使って、STARTUPINFO で
SW_SHOWNOACTIVATE あたりを指定してみたら?
0497デフォルトの名無しさん
NGNGなるほど!
んじゃぁ、MFCが勝手に投げる例外はCATCHで受けたほうが無難でいいですね。
どうもですー
0498初心者K
NGNGアドバイスありがとうございました。
CreateProcessでビューワを起動し、WaitForInputIdleで起動し終わるのを待って
this->SetActiveWindow();
this->SetForegroundWindow();
で元アプリをアクティブにして、
TerminateProcess(PROCESS_INFORMATION.hProcess)
でビューワを殺すことにしました。多少画面がチラチラしますが、
かなりスマートにできました.
STARTUPINFO.wShowWindow = SW_SHOWNOACTIVATE
を指定してみましたが、ビューワがアクティブになるだけでした。。。
このあたり、間違いがあれば、指摘していただけるとありがたいです。
0499初心者K
NGNGchar CMD[]="C:\\Program Files\\Windows NT\\Accessories\\ImageVue\\kodakimg.exe";
char filename[]="C:\\WINNT\\nwelcome.bmp";
int ProcessHandle = _spawnlp(_P_NOWAIT, CMD, CMD, filename, NULL );
WaitForInputIdle( ProcessHandle, INFINITE );
this->SetActiveWindow();
this->SetForegroundWindow();
でも、結果は同じでした.
0500496
NGNGSTARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW; ←これ
si.wShowWindow = SW_SHOWNOACTIVATE;
ちゃんと指定した? うちでは意図した通りに動いたんだけど。
0501初心者K
NGNGありがとうございます。そのキーワード、入れていませんでした。
おかげさまでひじょうに麗しい動きを見せてくれるようになりました。
0502名無しさん@Meadow
NGNG今下のようにポップアップメニューを呼び出しています。
CMenu menu;
if (menu.LoadMenu(IDR_MENU_POPUP)){
CMenu* pPopup = menu.GetSubMenu(0);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x, point.y, this);
PostMessage(WM_NULL, 0L, 0L);
}
ダイアログベースのアプリケーションなのですが
ON_UPDATE_COMMAND_UIでメニューのEnableを制御
しようとしても、うまく呼び出されません。
# 自分としてはポップアップメニューを開いたときに
# 呼び出されて欲しいのですが、現状ではそのメニュー項目を
# クリックしたときに呼び出されているようです。
どのようにしたらよいのでしょう?
0503デフォルトの名無しさん
NGNGアクロバットリーダーのようにブラウザ上でPDFファイル
を読込もうとすると、自動起動してブラウザ内部に
アクロバットリーダーが起動しますよね。
そのようなアプリを作りたいのですがどのように作るのですか?
おねがいします。
0504デフォルトの名無しさん
NGNGだれか教えて下さい。
0505デフォルトの名無しさん
NGNG性病?
0506504
NGNG知らないなら書き込まないでください。
0507デフォルトの名無しさん
NGNG0508504
NGNGどっかいってろ!
0509デフォルトの名無しさん
NGNG0510504
NGNGおまえがわかんねーからってあおってんじゃねーよ!!
氏ね、あふぉ
0511デフォルトの名無しさん
NGNGおいおい、知らない人に質問しておいて
えらそうな口聞くじゃないかw
いるんだよなぁ、お前みたいな勘違いしてるやつ。
ちなみに俺も含めてここに居る人の大抵はお前の
質問の答えくらいわかってると思うよ。
まぁもっと困って頭を冷やしなさい。
0512デフォルトの名無しさん
NGNGSTDとMFCで検索かけたら
http://www.twinring.jp/motorsports/motor/experience/race/kart/schedule.html
これが出た。
0513デフォルトの名無しさん
NGNGダイアログではデフォルトではON_UPDATE_COMMAND_UIは効かないので
OnInitMenuPopup内でチェックする。
別の方法としてアイドル処理でON_UPDATE_COMMAND_UIを捕まえる例が
確かCodeGuruにあった。
0514名無しさん@Meadow
NGNGどうもです。
どうやらON_UPDATE_COMMAND_UIは効かないようですね。
ttp://support.microsoft.com/default.aspx?scid=KB;EN-US;Q242577&
ここにやりたいことがそのまま書いてありました。
0515デフォルトの名無しさん
NGNG小亀レスですが勉強になりますたありがとう
0516デフォルトの名無しさん
NGNGcatch (CException* pE) {
//例外処理
pE->Delete() ;
}
でもいいらしい。これなら他の例外処理とまとめられる。
>>498
余計なことかもしれないけど…
TerminateProcess使うよりWM_CLOSEをポストした方がよくないかなあ。
0517デフォルトの名無しさん
NGNGCToolBarを動的に作ったときボタンをEnableにする方法がわかりません。
リソースエディタでツールバーを作ったときは、
ビルドして動かすと最初はボタンがDISABLEになっている。
ClassWizardでハンドラを作るとEnableになる。
CToolBarを動的に作ったときはClassWizardでハンドラを
作るということができないのでどうすれば?
0518デフォルトの名無しさん
NGNGそういう質問何度か出てるけど、ClassWizardで作れないなら自力で書く。
0520517
NGNGなので困ってます。
0521アホで御免なさい
NGNG何処にあるのか分かりません。ヘルプ!!
0522デフォルトの名無しさん
NGNGVCのファイルの中を検索するやつがあるだろ。
あれでCドライブで、class CWinApp をキーとして検索すれば場所がわかる。
0523517
NGNGあらかじめメッセージマッピングしておかなきゃだめなんだろーか?
ボタンをEnableにするためだけに?
0524アホで御免なさい
NGNG検索しても見つからないんですよ。
よろしければファイル名を教えていただけませんか?
もしかして、(よく分からんのだが)dllってのに入ってたり!?
0525デフォルトの名無しさん
NGNG最初からソースファイルをインストールしてなかったりしてね。
大体どこを検索してるの?
VCのインストールディレクトリの配下全部調べました?
ちょっと手元に無いので確実じゃないけど
"wincore.cpp"だったかな?
0526デフォルトの名無しさん
NGNGとりあえずSDIでView/Docを消してMainFrameのみで
やってますが皆さんどのようにやってますか?
0527あ
NGNG検索ワードは
タスクトレイアプリケーション
0528デフォルトの名無しさん
NGNG下記が無ければインストールしてないんじゃないかな?
VC98\MFC\Include\AFXWIN.H
VC98\MFC\SRC\APPCORE.CPP
0529アホで御免なさい
NGNGありがとうございます。
見つかりました。検索のし方が悪かったみたいです。
0530デフォルトの名無しさん
NGNG前に実験したことあるけど、MFC使うならおっしゃる通り、CMainFrame 派生が一番
いいよ。サイズ 0 で、アイコンや MENU は NULLのウィンドウクラス作ってさ。
メインウィンドウを CDialog にすると CMainFrame よりメモリ食う。
ましてや、設定ダイアログをそのまま非表示にして、メニューで「設定」が
選択されたら this->ShowWindow(SW_SHOW) なんてのはもっての外。
VBアプリじゃないんだから(w
ま軽さを突き詰めたら「MFC使うな」ってことになるんだけどさ...
0531530
NGNG0532デフォルトの名無しさん
NGNG> CDialogを継承したクラスを、templateにすることって可能でしょうか?
おしえてくだちい・・・
0533デフォルトの名無しさん
NGNGtemaplte< class T> のtemplate?
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGtemplate < typename T > class CHoge : public CDialog {
private: const T * m_gehol
};
希望です。
0537デフォルトの名無しさん
NGNGm_gehol は m_geho;
すんまそん。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNG別のアプローチを考えそうな気がする。普通は。
templateクラスがメッセージマップを持たなければ可能。
メッセージマップがある場合はかなり厄介。
0542デフォルトの名無しさん
NGNGですか…
メッセージマップ持ってますわぁ。あきらめます。
親クラスにメッセージマップを持たせて、そこからtemplateクラスを
派生したらどうかな?
メッセージハンドラをvirtualにしておけば、ちゃんと動くはず。
0544デフォルトの名無しさん
NGNGオオゥ
やってみます。
0545デフォルトの名無しさん
NGNGSetDIBitsToDevice()
DitBlt()
の違いを教えてください(゚ー゚*)
0546デフォルトの名無しさん
NGNGStretchDIBits
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_stretchdibits.asp
SetDIBitsToDevice
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_setdibitstodevice.asp
DitBltは知らないけど、BitBltなら↓
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_bitblt.asp
0547
NGNGメインの関数というのがいまいち意味不明だが、EXEのモジュールにある
関数という意味なら普通にexportして使えるよ。
0549
NGNGそうそういう意味
サンクス
0550デフォルトの名無しさん
NGNG時間を設定しておいて、その時間になったらアプリケーションの起動等をさせ
るプログラムを作っています。
実際に今の状態で使えているのですが、性質上、複数起動出来てしまうのが気
になっています。
何か、複数起動を禁止する方法は無いのでしょうか。
ご存じの方、教えて下さい。
0551デフォルトの名無しさん
NGNGMutexを調べろ
0553デフォルトの名無しさん
NGNGSDIで基本クラスCEditViewにして、そのままビルドすると簡単な
テキストエディタになるんですが、ファイルに保存するとshift-jisでは
保存されません。どうしたらshift-jisで保存されますか?
どこかでコードページでも指定するんでしょうか。
0554デフォルトの名無しさん
NGNGMFC AppliWizard(exe)を選んで新規作成。
ダイアログベースのアプリを選択し、その他はデフォルトのまま。
エディットボックスを追加。
ClassWizardメンバ変数追加でIDC_EDIT1に適当な変数を割り当てる。
上記を行うと確実に下記が発生します。
ClassViewからC***Dlgが消える。
FileViewで***Dlg.cppを編集すると this-> とか書いてもメンバの
補間機能が使えなくなっている。
環境
Win2000
VC6++SP5スタンダードエディション
0555デフォルトの名無しさん
NGNGVS.NET知らないけど、プロジェクトの設定で
_UNICODEとかをdefineするようになってたらそれはずせば?
>>554
本当にそれしかやってないならバグでしょう。
SP当てたタイミングでそういう現象が出るようになったって事ではない?
なんにせよMSに相談するのがいいでしょう。
とりあえず
> ClassViewからC***Dlgが消える。
> FileViewで***Dlg.cppを編集すると this-> とか書いてもメンバの
を復活するには 一端 ***.CLWを消してからクラスウィザード開いて
そのままOKで出来ると思うけど。
0556デフォルトの名無しさん
NGNG>そのままOKで出来ると思うけど。
うちも ClassView からメンバ関数を削除したりすると、たまにそうなる。
***Dlg.h に変更を加えるだけで復活する。
0558554
NGNGちなみに研究室の
WinMe+VC6CP5プロフェッショナルエディション
では再現しませんでした。
>>555
>一端 ***.CLWを消してからクラスウィザード開いて
>そのままOKで出来ると思うけど。
これではだめでした。
>>556
>***Dlg.h に変更を加えるだけで復活する。
これは上手くいきますね。今後これで対応することにします。
レスくれた方どうもありがとうございました。
0559デフォルトの名無しさん
NGNGstaticでなければならいないのでしょうか?
ご存知の方おながいします。
0560556
NGNGVC6sp6 pro 使ってるけど、特定のクラスで、ClassView からメンバ関数を削除したり
すると ClassViewから消える。まぁ (゜ε ゜)キニシナイ ことにしています。
0561デフォルトの名無しさん
NGNG引数にLPVOIDを持ち、UINTを返すグローバル関数なら何でも
よいのでは?
0562デフォルトの名無しさん
NGNGsp6って、いつ出たの?
0563560
NGNG「staticでないメンバ関数を渡せるか?」ということかな?
だとしたら多分無理なんじゃないかな...
thisポインタを渡さなくてはいけないので。(という自分もよく分からず)
class Hoge :
{
main();
static UINT Foo(LPVOID ptr);
}
Hoge::main()
{
AfxBeginThread(Hoge::Foo, (LPVOID)this);
}
Hoge::Foo(LPVOID ptr)
{
Hoge* a = (Hoge*)ptr;
a->何か;
}
なら可能でしょう。
Fooを実行中にインスタンスがデストラクトされたらマズいことになるので注意。
>>562 スマソ。sp5の間違いですた。
0564デフォルトの名無しさん
NGNGヒープでも可
0565デフォルトの名無しさん
NGNGWin32 プログラム+MFCというプログラムが作れない・・・・
(↑MFC ベースのプログラムではなく、Win32 プログラムで MFC を使う)
コンソール+MFCはできるのに・・・
これってどうしようもないんでしょうか??
0567デフォルトの名無しさん
NGNG[Windows アプリケーション]
Win32 プログラムが作成されます。
Win32 プログラムとは C または C++ で記述された実行可能アプリケーション (EXE) であり、
Win32 API を呼び出してグラフィカル ユーザー インターフェイスを作成します。
「Windows アプリケーションには MFC サポートや ATL サポートを追加できません。 」
しょぼ(w
0568マスト
NGNGウィルスをここに流し込んで見て下さい。
0569デフォルトの名無しさん
NGNG別に必ずしもthisを渡す必要は無いよ。
0571デフォルトの名無しさん
NGNGstaticという表現をどういう意味で使用してるかよく分からない。
「宣言の前にstaticをつけなければならないの?」と言う意味なら
別に必要ない。↓こんな感じでもいい。
int gInt = 0;
BOOL gFlag = TRUE;
UINT gTempThread (void* pParam) {
for ( ; gInt<50 ; gInt++) Sleep(100);
gFlag = FALSE;
return 0;
}
class CTemp {
public:
void Func(){
mpThreadList = AfxBeginThread(gTempThread ,(void*)0);
while (gFlag) {
printf("%d\n",gInt);
Sleep(50);
}
}
private:
CWinThread* mpThreadList;
};
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){
CTemp oTemp;
oTemp.Func();
return 0;
}
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG>this渡しと同期化でなんとかなればいいのだけど。
独立スレッドのほうでメンバ変数などを使用する場合は、this
を渡せば大丈夫。
571の例では(CTemp*)pParam->とすることでメンバにアクセ
スできる。
スレッドを呼び出す部分より後ろに、もしくは別ファイルに
独立スレッドがある場合は、呼び出すところより前に
extern UINT gTempThread (void* pParam);
などと宣言しておくこと。(スコープの外でね)
0574デフォルトの名無しさん
NGNGグローバルフック仕込んでいるみたいだけど、あれってどうやるんですか?
例えば、
a.exe がフックをセットするプログラムで、
a.dll がフックプロシージャを含む dll だとします。
Windows開始時に起動される a.exe がデスクトップを表示している
explorer.exe に a.dll のフックプロシージャをセットし、
アンフックせずに終了すれば、explorer.exe 内に a.dll が常駐
した状態になるんでしょうか。
ただ試してみたところ、a.exeでアンフックせずに終了しても自動的に
アンフックされてしまったみたいでした。
Explorer側に入り込んだフックプロシージャ内で、再度自分自身に
フックをかければOKなのでしょうか。
最初にフックをセットするプログラム側では、上記処理が完了するまで
終了を待つことにすればよいかもしれませんが、イマイチ実現方法が
かりません。
どなたか実現方法をご存知のかたいらっしゃいませんか?
作り方も分からないものを作る必要は無いだろ。
0576デフォルトの名無しさん
NGNG>作り方も分からないものを作る必要は無い
その考えに従えば、全ての発明はなくなるなw
0577デフォルトの名無しさん
NGNG一度でも自分で何か調べながらモノを作ったことがあるならそんなことはアタマに浮かばないはずだけどな。
すくなくともプログラミングはしたことないだろ。
0578IISObject
NGNGVC6.0にてWizardでActiveXサーバコンポーネントをそのまま
生成すると、ASPではServer.CreateObject("XXX.Class")
で上手くいってたのに、WinXP SP1を入れてから同様のコードで
「オブジェクトを作成できません」のエラーが出るように
なってしまいました。
皆さんはどうなっていますか?
ADODB.Recordsetなどは上手く作成されるのですが…。
因みに new ActiveXObject("XXX.Class")でも動かなくなりました。
574がマトモなものを作るとは思えなかったもんでね。
スパイウェアの作り方教えろと言ってるようなもんだろ。
そんなものは自分で作れるようになってから作れってこった。
0580デフォルトの名無しさん
NGNGこんなのもうヤダよー。
0581デフォルトの名無しさん
NGNG最初からそう書けよ。
>>575と全然内容が違うだろ。
しょーもないこと書くからこうなるんだ。
0583デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNGちょっと検索したら腐るほど出てきたぞ。
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG検索エンジンと検索ワードを教えてくれ
0589デフォルトの名無しさん
NGNG検索エンジン:ぐぐる
検索ワード:C
0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG行番号をつけたいんですがどうすればいいでしょうか
0592デフォルトの名無しさん
NGNG二つのListBoxがあってタブキーを押すと交互に二つのListBox
のフォーカスが入れ替わるようにしたいのですが、
その下にOKボタン等もあって普通にタブオーダーを決めたのでは
二つのウインドウ間だけを行き来させることができません。
これを解決する方法はありますでしょうか?
またどちらかのListBoxにフォーカスがあるということを
よりよくわからせたい(ListBoxの周りが太字になったり浮き上がったりするような方法で)
のですがこのような方法はあるのでしょうか?
ご存知のかた
宜しくお願いいたします。
0593デフォルトの名無しさん
NGNG後者:GetFocusでListBoxにフォーカスがあるときにスタイルを変更したり色変えたり
好きなように
0594ひよっこプログラマー
NGNGテキストファイルを読み込みたいのですが、
fp = fopen("ifile","r");
if(fp==NULL){
printf("失敗\n");
exit(1);}
として、よみこもうとしたのですが、
失敗
としか、でません。ファイルをどこに置けばいいのでしょうか?
ちなみに今はデバッグなどのファイルがある場所に置いてます。
0595デフォルトの名無しさん
NGNGスレ違いです。
0596あ
NGNG>デバッグなどのファイルがある場所
これってDebugビルドしたファイルが出力される
ディレクトリのことだよね?
/Debug/のこと。
そこでいいよ。
ただしVC上からCtrl+F5とかで起動した時は
プロジェクトファイルの置いてあるディレクトリ、
つまりDebugのひとつ上のディレクトリがカレントディレクトリと
見なされるので注意。
作ったプログラムの横において
ダブルクリックにてプログラムを起動するなら
横に置くだけでいい。
またはfopenの第一引数にファイル名のような相対パスで
指定するのではなく"C:\test\ifile"
などと絶対パスで指定したらどこから起動しようが関係ないので
取り合えずにはお勧め。
0597あ
NGNG>595
あ、ほんとだ、気付かなかった。
こういうミスはプログラム以前に人格を問われるので
次から気をつけてね。
0598ひよっこプログラマー
NGNG0599デフォルトの名無しさん
NGNGこういうミスもプログラム以前に性格を問われるので
次から気をつけてね。
0600デフォルトの名無しさん
NGNGウインドウサイズを変えても見出し部分のサイズは変わらないですよね。
あれをウインドウのサイズに合わせて比率で動かすようにスルにはどうしたらよいのでしょう?
0601デフォルトの名無しさん
NGNGListViewコントロールの間違いだと思うけど、自分で計算してSetColumnWidthじゃないかな。
0602初心者K
NGNGCD-ROMドライブがEドライブだとして。。。。。
struct stat fstat;
stat( Dir1, &fstat);
if( ( fstat.st_mode & _S_IWRITE ) == _S_IWRITE ) {
・・・・・
というソースで、Dir1で指定されたフォルダが書き込み可か否かを
調べようとしました。
ここで、Dir1="E:\folder1"とした場合、書き込み可のビットは立っていませんが、
Dir1="E:\"とした場合、書き込み可のフラグが立ってしまいます。
んで、仕方が無いのでE:\はCDドライブだよ(HDDじゃないよ、で充分)、
という情報を取りたいと思うのですが、どのようにしたらいいのでしょう?
ご存知の方、ご教授ください。
0603デフォルトの名無しさん
NGNGGetDriveType とか GetVolumeInformation とかじゃないのかなー。
0604初心者K
NGNGありがとうございます。
GetDriveTypeで目的が果たせそうです。
感謝感謝。
0605初心者
NGNGバブルソートを行いたいのですが、2つの文字列を比較したときの
文字コードの老若を知るヒントを教えていただけないでしょうか?
0606>>605の初心者
NGNG0607605
NGNG0608デフォルトの名無しさん
NGNGCompare
0609>>605の初心者
NGNGMSDN見てみましたが、メンバ関数がたくさんありすぎて…
どうもありがとうございました。
0610デフォルトの名無しさん
NGNGCPreviewViewクラスの派生クラスと、自前のダイアログバーを作って
CxxxView::OnFilePrintPreview()でDoPrintPreview()を呼び出すのが
普通の方法ですか?
ほかに楽な方法とかありますか?
0611デフォルトの名無しさん
NGNGオブジェクト指向は憂鬱本を読んだからたぶん
大丈夫だと思うんだけど・・・。
0612デフォルトの名無しさん
NGNG使いまくれ。
そして、MFCのクラス一覧表みたいのを部屋の壁に貼っとけ。
0613デフォルトの名無しさん
NGNG(m_edit1及びm_edit2はエディットボックスコントロール,m_overwriteはチェックボックスコントロールです。)
char filename_in[200];
char filename_out[200];
int ret1,ret2;
//ファイル名入力チェック
ret1=m_edit1.GetLine(0,filename_in);
ret2=m_edit2.GetLine(0,filename_out);
if(ret1==0 || (ret2==0 && !m_overwrite.GetCheck())){
return;
}
AfxMessageBox(filename_in);
AfxMessageBox(filename_out);
このコードで、DEBUGモードでビルドすると各エディットボックスに入力した文字がメッセージ表示されますが、
Releaseモードだと、文字を入力してもret1が0になってしまいます。
どなたか対処法をご教授願いたいと思います。
0614デフォルトの名無しさん
NGNGMSDNに
>コピーされる行には、終わりを示す NULL 文字は含まれません
とあるけど、文字列の終わりにヌル文字はある?
0615デフォルトの名無しさん
NGNGよく読んでないけどGetDlgItemText()じゃだめなん?
0616デフォルトの名無しさん
NGNGGetLineの3つ目の引数を入れる。
0617613
NGNG早速のご回答有り難うございます。
>614
確かにMSDNにはそう書いてありますねー
しかし実際ブレークさせてみると、ヌル文字入っているのですが..(謎
>615
GetDlgItemText()で出来ました!
有り難うございます。
>616
3つ目の引数入れると出来ました!
有り難うございます。
引数2つのGetLineプロトタイプは何なのか、
何故デバッグビルドでは動いたのかまだまだ不明点はありますが、
お陰様で動かす事が出来ました。
0618デフォルトの名無しさん
NGNG0619初心者
NGNG┣━━━━━━━━━━━━━━━━━┫
┃新・開・保・印刷 ┃
┣━━━┳━━━━━━━━━━━━━┫
┃ ┃ ┃
┃ ┣━━━━━━━━━━━━━┫
┃ ┃ ┃
┗━━━┻━━━━━━━━━━━━━┛
SDI形式で↑のような分割したウインドウを作製したいのですが
どのように実装すればいいのでしょうか?
現在、まずメインフレームを CSplitterWnd で左右に分け
その右側にCFrameWndを貼り付けてそこでまた分割するように
してみたのですが、右側のペインがくぼんだように見えます。
メインフレーム:OnCreateClient
m_wndSplitter.CreateStatic(this, 1, 2);
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(左側のビュークラス), CSize(150, 100), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(右側のCFrameWndクラス), CSize(100, 100), pContext);
右側のCFrameWndクラス:OnCreateClient
m_wndSplitter.CreateStatic(this, 2, 1);
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(右上のビュークラス), CSize(150, 100), pContext);
m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(右下のビュークラス), CSize(100, 100), pContext);
環境は VC++6.0です。よろしくお願いします。
0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNGわざわざCFrameWnd貼る必要なんてなし。
//真中の区分け
m_wndSpCenter.CreateStatic( this, 1, 2, WS_CHILD|WS_VISIBLE, AFX_IDW_PANE_FIRST );
// 右側を上下に
m_wndSpRight.CreateStatic( &m_wndSpcenter, 2, 1, WS_CHILD|WS_VISIBLE|WS_BORBER,
m_wndSpCenter.IdFromRowCol( 0, 1) );
// 左側のビュー
m_wndSpCenter.CreateView( 0, 0, 略);
// 右上
m_wndSpRight.CreateView( 0, 0, 略 );
// 右下
m_wndSpRight.CreateView( 1, 0, 略 );
0623デフォルトの名無しさん
NGNGなにか、参考になるアドレスなどがあれば教えてください。
0624デフォルトの名無しさん
NGNGそのため、クライアント領域いっぱいにコントロールを作ろうと思っても
隙間が開きます。
FrameWndのスタイルはMAXIMIZEBOX | MINIMIZEBOX | SYSMENU | THICKFRAMEを落としたものです。
回避法をご存知の方はいらっしゃませんか?
0625デフォルトの名無しさん
NGNGAccept()した後のCSocketのポインタをAfxBeginThreadの引数として
渡しているのですが、そのThreadの中でCSocketをCloseすると
Closeの中のASSERTで引っかかります。
スレッドを開始する前にCloseを呼ぶと成功します。
これって何故なんでしょうか?
わかる方いらっしゃいましたら教えてください。
よろしくお願いします。
0626デフォルトの名無しさん
NGNGCSocketはステ。
0627デフォルトの名無しさん
NGNGvoid SocketThreadInit()
{
#ifndef _AFXDLL
#define _AFX_SOCK_THREAD_STATE AFX_MODULE_THREAD_STATE
#define _afxSockThreadState AfxGetModuleThreadState()
_AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;
if (pState->m_pmapSocketHandle == NULL)
pState->m_pmapSocketHandle = new CMapPtrToPtr;
if (pState->m_pmapDeadSockets == NULL)
pState->m_pmapDeadSockets = new CMapPtrToPtr;
if (pState->m_plistSocketNotifications == NULL)
pState->m_plistSocketNotifications = new CPtrList;
#endif
}
っていうグローバル関数を書いてCSocketインスタンスを生成する前に呼び出す
とMSのどっかのページに書いてたはず。
0628625
NGNGそうですか...。
ということはWinSockでCSocketのようなクラスを
自作しなければいけないんですね。
>627
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP193101
のことですか?
これはServicePack3で修正されたとのことです。
当方SP5ですのでおそらく関係ないかと思われます。
0629デフォルトの名無しさん
NGNG逆に必要なクライアント領域のサイズから必要なウィンドウの大きさをきめるのは?
CWnd::CalcWindowRect()か::AdjustWindowRectEx()とか使って。
0630629
NGNGタイトルバーの高さとかも若干大きくなってるはずだから、今までと
同じウィンドウの大きさだと相対的にクライアント領域は小さくなるぞ。
その辺は考慮してるのか?
0631624
NGNGCFrameWndいっぱいのCListBoxを作ろうと思ってGetClientRectし、その大きさで
CListBoxをCreateしていたわけです。で、今まではうまくいっていたんですが、
XPのスタイルXPだけクライアント領域いっぱいにならず、
下の方に隙間が開いてしまうわけです。ちょうどTHICKFRAMEの下の辺の幅くらい足りません。
スタイルはTHICKFRAMEを外してあります。
XPのバグなのでしょうか?
0632デフォルトの名無しさん
NGNG0633624
NGNGあ、Viewは作ってないんです。Frameの下にいきなりCListBox。
Dialogにすべきなんでしょうか?オーバーライドするメソッドか何かの関係で、
CFrameWndを使わざるをえなかったような記憶が…
0634デフォルトの名無しさん
NGNG俺ならListView使ってるかなぁ。
どうしてもListBoxなら独自にListBoxを使ったコントロールビュー作るか。
MFCスレ的にはこの辺が定番な回答かも。
つーかXPもってないので試せま千円。
0635デフォルトの名無しさん
NGNG項目の高さの整数倍になるように調整されてしまうわけだが。
0637デフォルトの名無しさん
NGNGデータ自体は転送されるのですが
サーバ側のcgiでformをうまく解析できず
ファイルの転送が完了しません
ちなみにindex.htmlでformを書いてcgiを動かせば正常に作動します
以下のデータは全て直接(CString strData, CHttpFile *pFile)
pFile->WriteString( strData )で書き込んでいます
msize= 230653
-----------------------------
Content-Disposition: form-data; name="author"
who
-----------------------------
Content-Disposition: form-data; name="fname"; filename="C:\0.ppm"
Content-Type: text/plain
P6 320 240 255
:JF:JF8LG9MH<LH<LH@LE?KDBJGBJGFKEHMGKKJKKJHMGIN
HSFDQGCPFGPIGPIEQJFRKCUJEWLGSLGSLJSLLUNOULMSJL
...続く
0638デフォルトの名無しさん
NGNGそのあたりの手を抜いているCGIは多いぞ。
0639637
NGNGmsize= 230653というのがContent-Lengthの値に対応しています
サーバ側では
u_long msize = atol(getenv("CONTENT_LENGTH"));
if( msize > MAX_MEMORY ){
printf("Too large data to recieve.\n");
exit(1);
}
で読み込んでいます
637のデータ自体は標準入力から得られたものをファイルにも書き込んでいるので
「データそのもの」は送信されています...
ちなみにこのプログラムはいまサンプルとして製作中のため
strData += "-----------------------------\r\n";
strData += "Content-Disposition: form-data; name=\"author\"\r\n\r\n";
strData += "who\r\n";
strData += "-----------------------------\r\n";
strData += "Content-Disposition: form-data; name=\"fname\"; filename=\"C:\\0.ppm\"\r\n";
strData += "Content-Type: text/plain\r\n\r\n";
strData += "P6 320 240 255";
strData += data;
としていますが,ここがまずいとかありませんか?
0640637
NGNGちなみにヘッダーは
const TCHAR szHeaders[] =
_T("Accept: */*\r\n User-Agent: HogeSampleCode\r\n");
です
0641デフォルトの名無しさん
NGNGそれでもダメなら、間にデバッグ系のプロキシ噛ませて、
何吐いているか確認したら?
0642637
NGNGえとですね
最後に書かれているデータ
P6 320 240 255
:JF:JF8LG9MH<LH<LH@LE?KDBJGBJGFKEHMGKKJKKJHMGIN
HSFDQGCPFGPIGPIEQJFRKCUJEWLGSLGSLJSLLUNOULMSJL
...続く
の部分は画像でありまして
このデータだけをマニュアルで切り出せば
途中で切られることなく転送前の画像と全く同じになっていることから
データ長は正しいと思われます
あ,それと一応ですが
サーバ側cgiの標準出力で読んだデータは解析にかける前に
テンプデータとして別に保存しています
といっても解析されないので転送されたファイルは作成されないのですが...
0643637
NGNG参考に正しく動いているindex.html版の結果を載せます
-----------------------------7d22972e2a70122
Content-Disposition: form-data; name="author"
who
-----------------------------7d22972e2a70122
Content-Disposition: form-data; name="fname"; filename="C:\0.ppm"
Content-Type: text/plain
P6 320 240 255
(ここには巨大なデータが改行なしで書かれています)
-----------------------------7d22972e2a70122--
Recieved [author] = [who]
Recieved file C:\0.ppm
最後の2行はサーバが解析した結果です
すみませんねレスしていただいて...
POSTについては,もう2週間以上かかってるんです...
自分では最後の大詰めだと思っているんですが甘いですかね?
>WriteStringはWrite( pstr, lstrlen(pstr) );だけど、\0含んでたりしないか?
これについての回答ですが
pFile->SendRequestEx( strData.GetLength());
pFile->WriteString( strData );
のように記述しています
0644デフォルトの名無しさん
NGNGはつけてるだろうな、、、
0645デフォルトの名無しさん
NGNGContent-Type: multipart/formdata; boundary=---------------------------
だな。
そして、postの最後に-------------------------------の追加。
でよかったかな。詳しくは、MIME Multipartを。
0646637
NGNG書いてませんでした
後,ヘッダーにですか?データの中にですか?
共に試しましたが変化はありませんでした...
とりあえずは
const TCHAR szHeaders[] =
_T("Accept: */*\r\n User-Agent: UMTPSampleCode\r\n Content-Type: multipart/formdata; boundary=-----------------------------\r\n");
で保存しました
実行時の返り値が
Status Code is 3435973836
となっています
確か200が正常終了なので...
0647637
NGNGむむっ...
postの後にですか...
pFile = pServer->OpenRequest( CHttpConnection::HTTP_VERB_POST,
strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags );
なので...後ろに追加する方法が...
実はMSDNのTEARというサンプル(サンプルはGET)を参考にしています
0648デフォルトの名無しさん
NGNGヘッダ部
Content-Type: multipart/formdata; boundary=<BOUNDARY>
<BOUNDARY>は任意の、ぶつからなさそうな任意の文字列とする。
ボディ部
各パートの区切り <改行> + "--" + <BOUNDARY> + <改行>
MIMEの最後 <改行> + "--" + <BOUNDARY> + "--" + <改行>
となる。
ブラウザの出力と見比べてみるよーに。
>467
POSTの後、というかPOSTするデータの末尾(最後)という意味
0649637
NGNGあ あ あ あ あ
あ り が と う ご ざ い ま す !!
うまく動作しました
最終行に-------------------------------を追加しろということだったんですね
もうなんと言っていいのやら
本当に感謝します
ここ数週間自分で悩み続けて
今日,他人を頼ったわけですが
解決できて何よりです
0650637
NGNGなるほど,確かに自分の送信したデータと比較すると
違いがわかります
0651デフォルトの名無しさん
NGNGどこ良いサイトが有りましたら教えって下さい
0652デフォルトの名無しさん
NGNGダイアログを呼び出す方法教えてくだせー
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNG特定ページ内に、入れ子でプロパティシートを配置しようと考えています。
これを実装する上で、参考となる情報、または情報へのポインタがありましたら教えてください。
0655デフォルトの名無しさん
NGNGダイアログにプロパティシートを貼り付けるサンプルがあったはず。
0656デフォルトの名無しさん
NGNGCodeGuruで見つかりました&実装できました。ありがとうです。
0657デフォルトの名無しさん
NGNG例外処理 (初回) は hoge.exe (ATOK15W.IME) にあります:
0xE06D7363: Microsoft C++ Exception。
シリアライズしてるときにでてくるんですけど
やっぱり悪いのはATOKじゃなくておれですか?
0658デフォルトの名無しさん
NGNGpFtp->Command("SITE DEVICE 00 00 00", CFtpConnection::CmdRespNone);
だと、問題ないのですが(レスポンスは取得できません:正常)
pFtp->Command("SITE DEVICE 00 00 00", CFtpConnection::CmdRespRead);
だと、そのままフリーズしてしまいます。
どなたか、アドバイスお願いします。
MFC7.0 IE6.0SP1
0659デフォルトの名無しさん
NGNG再度ワークスペースを開いて
新しくメンバを追加しようとしたら、
「新規メンバを追加できません」というダイアログがでてできません。
もしかして一度リテールで出力したらそのクラスでは
もういじれなくなるんでしょうか?
0660デフォルトの名無しさん
NGNGVC6.0?内部データがぶっこわれると、発生する。
ソースとプロジェクト以外の内部ファイルを全て削除すれば、復活するかも。
0661デフォルトの名無しさん
NGNGPostMessage(FindWindow(...), WM_CLOSE, 0, 0);
FindWindowの中身は、Spyで確認してね。
0662デフォルトの名無しさん
NGNG他のIMEではどうなるの?
0663デフォルトの名無しさん
NGNG*.clwとか*.ncb辺りだね。
0664デフォルトの名無しさん
NGNGIMEで入力フォーカスのある状態
(たとえば「へんかん」と入力してスペースを押す前の
下線がついている状態)
の文字列を取得したいのですが、そういう方法はありますでしょうか?
文字を入力してスペースを押す前にF11あたりを押したら
その文字列がポップアップされるみたいなイメージです。
またIMEで漢字変換の候補が出現するボックスのような
ウインドウを作るのはどのような方法がベストなのでしょうか?
どうもIME周りは情報が少なく良くわからなくて困っています。
ご存知の方ご教授をお願いします。
0665デフォルトの名無しさん
NGNG整数があって、特定の桁数にそろえて文字列(CString)
に代入するにはどうすればいいでしょうか?
例:
int i = 20;
CString s;
5桁にそろえるとき、
sに00020という値が欲しいわけです。
0666デフォルトの名無しさん
NGNGヘルプでCStringのメンバ関数見てみ。
Format()つーのがあるから。
べつにsprintf()で整形してから代入してもええけどな。
0667デフォルトの名無しさん
NGNG桁数が、最小になりますよね?
5桁など指定桁数に揃えたいわけです。
0669あ
NGNGFormat
っていってるだろ
頭悪いのか?
マルチしね。
0670デフォルトの名無しさん
NGNGformat文字列の桁指定くらい理解しておかないといつまでたっても初心者だぞ。
ヘルプにちゃんと載ってるだろ?
0671デフォルトの名無しさん
NGNGこれに格納した色データを各要素に分解する方法はあるのでしょうか?
RGB()の逆をしたいわけです。
0672デフォルトの名無しさん
NGNGMSDNぐらい、持ってないの?
0673デフォルトの名無しさん
NGNGMSDN,PlatformSDK,DDKのドキュメントをまず、読みましょう。
0674夢を見る人
NGNG分割した小窓のハンドル(HWND)を取得するにはどうすればいいんですか?
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNG0677VisualC++初心者
NGNGOnInitialUpdate関数でCComboBoxオブジェクトを建築して、Create関数で
コンボボックスを貼り付けました。貼り付けたコンボボックスは、正常に
動作するのですが、コンボボックスの文字が異常に大きくなってしまいました。
文字の大きさを指定するにはどうしたらよいのでしょうか。
おおまかな方法を教えていただければ、後は自分で調べるので、アドバイスよろしく
おねがいします。
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGスレッドを作成し、そのスレッドプロシージャから指定ウインドのDCに描画するプログラムを書きました
ウインドはダイアログに乗っけたStaticで、そのウインドへのポインタは初期化の時に一回だけ
GetDlgItemで取得し、グローバル変数に保持させます
その後スレッド関数はそのグローバルなポインタg_pWndを使って
都度、g_pWnd->GetDC()でDCを取得し、そこに絵を描く寸法です。
しばらくはおとなしくウインドに描画するのですが突然(9990回めの呼び出し)で
ウインドでも何でもないデスクトップに描画に行ってしまうのです・・
さらにいろいろ調べると突然アクセスバイオレーションになったりすることもあるようです。
原因はGetDCしたもののm_hDCがNULLだったからでした。突然そうなるのです。
なぜこのような事が起こるのですか??
0680デフォルトの名無しさん
NGNGCWnd::GetDlgItem() →「返されるポインタは、一時的なポインタです」とMSDN
にある。9989回は“たまたま”エラーにならなかったということだと思われる。
Cwndオブジェクトを他のスレッドに持っていくのは危険だ、と MFCの ASSERTに怒られる
こともあるから、そんなときは CWnd* でなく、HWND をグローバルにする。
0681デフォルトの名無しさん
NGNGHWNDでトライしてみます。ではでは。
0682664
NGNGいろいろ試行錯誤したらわかってきました。
HWND hWnd = this->m_hWnd;
HIMC hImc = ImmGetContext(hWnd);
char str[256];
memset(str,'\0',256);
ImmGetCompositionString(hImc,GCS_COMPREADSTR,str,256)
でこのようにするとstrにIMEへの入力文字列が取れることがわかったのですが、
"テスト"のように半角カナなってしまいます。
これを"tesuto"として取得したいのですが、そのためには、
IMEを起動させてからのキー入力を取ったほうがよいのでしょうか?
しかしその場合バックスペース等の処理が・・
もしくは半角カナからローマ字へとも思うのですが、
C++の正規表現ってわけわかんなすぎる・・・
0683デフォルトの名無しさん
NGNG一晩中のデータを見たいのでエクセルなどでは全体を見ることができないんです。
グラフを表示させてそれをページとばしでみていけるようなプログラムを作れるでしょうか?
アドバイス等お願いします
0684超初心者
NGNG(上段に5タブ、下段に4タブ)というようなダイアログを作りたいのですが、
SetItemSizeを用いてすべてのタブの幅・高さを同じに設定する方法はわかったのですが、それでは
上段5段の合計幅と下段4段の合計幅が、違ってしまい、ブサイクになってしまうので、
上段の合計幅と下段の合計幅を同じにしたいので、タブ1つずつについて幅を
設定する方法を調べてみたのですがわかりませんでした。
タブごとに、幅を変える方法がわからないので知っている方がいましたら、
ご教授お願いします。
誠に初心者質問で申し訳ないです。
0685デフォルトの名無しさん
NGNG0686664
NGNGローマ字にすることで解決しました。
ですが、IMEの変換候補ボックス風ウインドウを作る方法がどうしてもわかりません。
IME専用のクラスなどがあるのでしょうか???・
0687デフォルトの名無しさん
NGNGあるクラスからViewBのエディットボックスのポインタを手に入れたいときなどは
どうしたらよいのでしょう?
ようするにViewBへのポインタが手に入ればそこからGetDlgItem
すればよいのかとは思うのですが。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG>>676
0690デフォルトの名無しさん
NGNG何がどうなってるのか良くわからんが、
普通フレームがViewへのポインタ持ってるだろうから、
そこからもらうんじゃないか?
0691デフォルトの名無しさん
NGNGCSplitterWnd w2;
CSplitterWnd w1;
このようにしてCSplitterWndを使って分割してそれぞれの
ウインドウに対してViewを設定しているという状態なんですね。
そうするとまったく別のクラスからどうやって
Viewのポインタを手に入れるかがわからなくて・・・
0692デフォルトの名無しさん
NGNG>>676
0693デフォルトの名無しさん
NGNGわしは、SendMessageで処理しているぞ。
任意のViewにOnInitialUpdateを追加して、
// Appのメンバにハンドルをつくり、保持する
CxxApp*pApp = (CxxApp*)AfxGetApp();
pApp->m_hxxViewWnd = GetSafeHwnd();
あとは、DocからでもMainFrameからでも
SendMessage( pApp->m_hxxViewWnd, UMSG_xx, NULL, NULL );
とする。
スプリッターウインドに対しても別々に処理できる。
0694691
NGNGレスありがとうございます。
>692
ただGetPaneは
CSplitterWndの関数ですよね。
CMainFrameには
class CMainFrame : public CFrameWnd
{
//
CSplitterWnd w2;
CSplitterWnd w1;
このように二つのウインドウの変数があるのですが、
w1かw2のどちらかを手に入れることができません。
ただw1かw2のどちらかが手に入ればGetPaneもいらない気がしますが・・・・
>693
つまりそれはOnInitialUpdate以外で使う場合は
メッセージを自作しなければならないということですね・・・
WM_****見たいなのをちょっと難しそうですが試してみたいと思います。
ただこのような形で
CxxApp*pApp = (CxxApp*)AfxGetApp();
pApp->m_hxxViewWnd = GetSafeHwnd();
どうやって二つのCSplitterWndを区別するのでしょうか?
0695デフォルトの名無しさん
NGNGCSplitterWnd w1
としているのは、3分割するためだと推測しまして、
w1.CreateStatic(this,1,2);
w2.CreateStatic(&w1,2,1,WS_CHILD | W・・・
w2.CreateView(0,0,RUNTIME_CLASS( CTopView)・・・
w2.CreateView(1,0,RUNTIME_CLASS( CBtmView )・・・
w1.CreateView(0, 0, RUNTIME_CLASS (CLeftView)・・・
となると思います。
で、CTopViewとCBtmViewと CLeftViewのハンドルはそれぞれで、
取得しておくと、それぞれ、Viewのメンバを操作できます。
おそらく、この手の操作は、ネット上でもっと良い方法が公開されていると思われます。
0696デフォルトの名無しさん
NGNG((CMainFrame*)AfxGetMainWnd())->w2.GetPane( ・・・ );
0697デフォルトの名無しさん
NGNG私は直接DBMSにアクセスすることが多いので、ドキュメントの方を
使ったことがありません。
なにか間違ってます?
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG問題ない。
別に必要ない物を無理に使わんでもよい。
0700デフォルトの名無しさん
NGNGVBでフォームにロジックとか全部書くような感じか?
0701デフォルトの名無しさん
NGNGなのでしょうか?
すべてのタブを同幅に設定するのは、SetItemSizeを使うことによってできましたが・・・
0702デフォルトの名無しさん
NGNG>>700 ロジック部は別モジュールに切り分けております。
フレームワークからドキュメントを切り離す(捨てる)ことは出来るのでしょうか?
0703デフォルトの名無しさん
NGNGできる。
0704デフォルトの名無しさん
NGNGMFC AppWizardで「ドキュメントビューアーキテクチュアをサポートする」に
チェックを入れた場合のこと?その場合はできないよ。
0705デフォルトの名無しさん
NGNGまず、.NETは持ってないので参考まで。
MSDNのCTabCtrl::Createより
>TCS_RAGGEDRIGHT コントロールの全体幅に合わせるようにタブを伸縮しません。
>このスタイルはデフォルトです。
なのでこのスタイルをはずしてみては。
そこら中にマルチするのはどうかと思う。
0706デフォルトの名無しさん
NGNGCMainFrame::CMainFrame()を以下のように書き換える。
CMainFrame::CMainFrame()
try
{
// TODO: メンバ初期化コードをここに追加してください。
}
catch(...)
{
}
コンパイルエラーが出まつ。なんで?
ちなみにcatchブロックの最後に ; をつけると通る。
0707デフォルトの名無しさん
NGNG>なにか間違ってます?
使いたいように使うのが良いと思います。
本当の考え方的には、
ドキュメント → データの保持・操作・入出力に徹する
ビュー → ユーザインターフェース(操作など)・ドキュメントのレンダリング(ドキュメントの視覚化)に徹する
と言うのが、設計思想の様です。
0708デフォルトの名無しさん
NGNGあるダイアログがListBoxを一つもつプログラムを作っています。
ListBox内の項目を上下キーで移動して、
項目をリターンで決定するようにするのが目的です。
そこでリターンキーが押されたことを取得するために
ListBoxのプロパティでWantKeyInputの欄をtrueにし
ダイアログの派生クラスで
OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex);
をオーバーライドし
if (nKey == VK_RETURN){
//
}
としているのですが、
うまく動作していません。
変数の推移を見るとnKeyは229となっており
きちんとしたキーコードが帰ってきていないようです。
これにはどのような原因が考えられますでしょうか?
0709デフォルトの名無しさん
NGNG情報ありがとうございます。
タブの数に関わらずタブアイテムの合計幅を上段・下段ともに同じくするのは、
プロパティのstyleをright justifyにすることで解決しました。
(VC6で言えば、プロパティのスタイルの配置を「右に揃える」にするに当たる、、かな?)
これにより705さんの教えてくれた、TCS_RAGGEDRIGHTのデフォルトをはずす事に
なったのだと思います。
しかし、個々のタブ幅を設定する方法は結局わからずなので、現状では、タブに
設定する名前の前後にスペースを入れることでムチャ技で対応しようと思います。
>マルチに関して
質問した時に回答がないままに、レスが流れてしまったので3つほどのスレに
書き込み&2回書き込みしてしまいました。
以後気をつけます。
0710デフォルトの名無しさん
NGNG幅というか、CTabCtrl::SetMinTabWidth で、最小幅を指定してやれば
いいんじゃないかな? 試してないから分かんないけど。
0711デフォルトの名無しさん
NGNGアプリケーションが終了したときに破棄したい場合
どこに書くのが普通でしょうか?
C***Appクラスのコンストラクタ、デコンストラクタ?
0712デフォルトの名無しさん
NGNGテキスト入力用カーソルの座標を取得する方法ってないでしょうか?
EditBoxなんかでカーソル入力を行う際に
カーソルの位置(何文字目か)とかではなくて座標が
わかればコマンド入力時の
ヒントボックス見たいなものが作れて便利なのですが。
マウスカーソルのそばにヒントボックスをポップアップするのは簡単そうですが・・・・
テキストカーソルとなるとちょっと難しくて困っています。
0713デフォルトの名無しさん
NGNGダウンロードしたときに、InternetExplorerのクライアント窓上に
自動起動するようなアプリケーション(*.pdfに対するAcrobatReaderのような感じ)を
VisualC++6 で作成したいのですが、
どこか、良い解説(またはサンプル等がある)サイトなどは無いものでしょうか。
0714デフォルトの名無しさん
NGNGま、VC++でfunction-try blockは使うなってことよ。
0715706
NGNGCMainFrame::CMainFrame(){
try{
// TODO: メンバ初期化コードをここに追加してください。
}catch(...){
}
}
なら通ったぜ。
0717デフォルトの名無しさん
NGNG0719708
NGNGプロパティじゃなく手動でLBS_WANTKEYINPUT
を指定することにしました。
そこでCListBoxクラスのOnCreate関数をオーバーライドして
cs.style |= LBS_WANTKEYINPUT
すればよいということはわかったのですが、
しかし現在
CDialogの派生クラスであるCMydlg
がCListBoxを持っているという関係にあります。
この場合
CListBoxの中の関数をオーバーライドするにはどうしたらよいのでしょうか?
CMydlgの中の関数をオーバーライドする方法はわかるのですが、
その所持するクラスを変更したい場合
CListBoxを派生したクラスを作ってそれを所持する必要があるのでしょうか?
0720デフォルトの名無しさん
NGNGはい。
0721デフォルトの名無しさん
NGNGリストボックスに Enterキーの処理をさせるんじゃなくて、ダイアログの OnOK()
とかをオーバーライドしたほうが超簡単だと思うのだが、だめ?
0722デフォルトの名無しさん
NGNGクラスを作る/破棄する?
デコンストラクタ?
人にわかる言葉で説明しましょう。
0723デフォルトの名無しさん
NGNGそれでOK。
0724デフォルトの名無しさん
NGNGあれはキャレットと言いまつ。
GetCaretPosで座標は求められるけど、
どのウィンドウがキャレットを持っているか自分で把握してるのが条件。
0725711
NGNGどうもです
そのようにやってみます。
MFCの場合は基本的なスタイルみたいなのがわからなくて・・
>722
すみません。職業プログラマなもので
ちょっとわかりずらい書き方だったかもしれませんね。
ごめんなさい。
0726デフォルトの名無しさん
NGNGいい方法ないですか?
0727デフォルトの名無しさん
NGNGデコンストラクタじゃなくて
デストラクタ
そう言いたいだけちゃうんかと。
0728デフォルトの名無しさん
NGNGCHogeDoc* pDoc = (CHogeDoc*)AfxGetMainWnd()->GetActiveDocment();
CString str;
str = pDoc->m_str;
0729719
NGNGonOkのオーバーロードがうまくいかないので、
(OKボタンをもう消してしまっていたので、
関数を作れない・・・・プロパティにもWM_OKみたいなのがないので・・(^-^;)
そこでOnKeyDownをオーバーロードしてみました。
が、リストボックスのなかにフォーカスがある場合、
ダイアログにはOnKeyDownが返らないんですね・・
0730デフォルトの名無しさん
NGNGCMyLstBoxをメンバ変数(コントロール同期)にする
0731デフォルトの名無しさん
NGNG適当にボタン作ってIDをIDOKにしてハンドラ作った後にボタンを消せばハンドラだけ有効になる
0732デフォルトの名無しさん
NGNGvirtual void CDialog::OnOK( ) なんだから、普通に手動でヘッダに
void OnOK();
って書いてオーバーライドできるよ。IDOKボタンが無くても、Enterを押したときは
既定で呼ばれる。
0733729
NGNGありがとうございます。
その方法でできました。
0734デフォルトの名無しさん
NGNGカーソル位置をその部分にもって行くプログラムを作りたいです。
GetWindowTextした文字列を編集して
SetWindowTextすれば
挿入はできると思うのですが、
カーソル位置を移動させることがうまくいきません。
CEdit *CE = (CEdit*)GetDlgItem(IDC_EDIT1);
CE->SetFocus();
POINT p;
p.x = 10;
p.y = 0;
CE->SetCaretPos (p);
SetCaretPosの使い方がまずいのでしょうか?
0735デフォルトの名無しさん
NGNGCE->SetFocus();
CE->SetSel(3, 3);
0736デフォルトの名無しさん
NGNGA,Bとも最初は何も選択していない状態なので、GetCurSel() == -1となってます。
コンボAで何かを選択したときに選択した項目番号に応じて
コンボBの項目内容を決定したいとします。
Aを選択するとダイアログが以下のイベントメッセージを受け取るんで
OnSelchangeComboA()、OnSelendokComboA()
これらの関数内でBの項目を初期化しようとしたんですが
GetCurSel()すると、新しく選択された値ではなく-1のまま・・・
どうすればよいでしょうか?DDXとか使わないとだめっすか?
0737デフォルトの名無しさん
NGNGGetDlgItemでもDDXでもできたけど。<OnSelchangeComboA()
0738736
NGNGAのイベントでまずAのGetCurSel()してからBに項目入れなきゃいけないのに
BのGetCurSel()してからBに項目入れようとしてた。
そりゃ-1だわ(´・ω・`)
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGのとあんまり変わらんな
0741デフォルトの名無しさん
NGNGDialogBox()から読み込んだときに生成されるhWndは、MFCでダイアログその他を
DialogBox()を使わずにつくったときに、取得できますか?
享受ください。
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGただ、GetSafeHwnd は、CWndのメンバなので、Dlgではどうすればいいでしょうか?
0747デフォルトの名無しさん
NGNGダイアログもCWndじゃん。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG動くようなプログラムを作りたいんですがどこかにヒントみたいなものは無いでしょうか。
SnapItでしたっけ、エクスプローラの空白部分をクリックしてフォルダを上の階層に上るような、
そういう処理がしたいんですがどうすればいいでしょうか?
0750デフォルトの名無しさん
NGNGメンバ関数をCALLBACK関数にし、
DialogBox()のような形で呼び出せないでしょうか?
0751デフォルトの名無しさん
NGNGDialogBoxのような形ってのがいまいち何のことを言いたいのかわかりませぬ。
0753デフォルトの名無しさん
NGNG↓翻訳↓
DialogBox() のようなAPI に渡す、CALLBACK関数として使えないでしょうか?
0754デフォルトの名無しさん
NGNGまぁCALLBACK関数は>>752のようにstaticなメンバ関数にすればよい。
0755デフォルトの名無しさん
NGNGエラーが出ます。
どのように書き換えればいいのでしょうか?
0756デフォルトの名無しさん
NGNG書き忘れました。static にすると、
メンバ変数が使用できないので困っています。
0757デフォルトの名無しさん
NGNGもしかしてMFCアプリでDialogBox()APIを使いたいってだけのことか?
なんでMFCアプリなのにCDialogを使いたくないのかが激しく謎なのだけど
とりあえずエラーが出たならその内容を書くなりソースを提示するなりしる。
つーか無理してMFCにこだわらずにプロシージャをグローバルに宣言して
普通のWin32APIアプリみたくしたら。
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG(その関数以外は、MFCでないととうてい処理できません)
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGCHoge* pWnd = (CHoge*)this;
pWnd->m_hoge; // メンバ変数にアクセス
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG例えばフォント列挙でEnumfontFamiliesの第三引数にコールバック関数、
第四引数(LPARAM)にthisを渡すのと同じ。
0766デフォルトの名無しさん
NGNGCHoge* pWnd = (CHoge*)lParam;
pWnd->m_hoge; // メンバ変数にアクセス
0767デフォルトの名無しさん
NGNGぐだぐだになってきたけど言いたいことわかるだろ!な!な!
0768デフォルトの名無しさん
NGNGちょっとよく分かりません。もう少し詳細お願いします。
0769デフォルトの名無しさん
NGNGってかそのコールバック関数て何?自作?
0770デフォルトの名無しさん
NGNGCALLBACK関数もあるからな。そのコールバック関数
の宣言晒してみぃ。
0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNGBOOL CALLBACK CTestDlg::MainDialogProc(
HWND hwndDlg,
UINT msg,
WPARAM wParam,
LPARAM lParam)
デバッグでlParamの値が0になっていて実行中にエラーが出ることが
判明しました。
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNGDialogBoxParamでちゃんとthisを渡せ。以上。
# つーか、API 呼ばずにMFCのCDialog使えってばさ。
0775デフォルトの名無しさん
NGNG目的。
0776デフォルトの名無しさん
NGNGいやだっていっているでしょ。
thunkを間に挟めばできる。
意味がわからないなら諦めろ。
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNG以下のようにしてスペースキーの入力を得ています。
BOOL MyView::PreTranslateMessage(MSG* pMsg)
{// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
if (pMsg->message == WM_KEYDOWN){
case VK_SPACE:
//ここで処理
return TRUE;
break;
このときIMEがONならば別の処理をするようにしたいのですが、
たしかにその処理はできるのですが、
同時にIMEにもスペースキーの入力が伝わってしまって
変換ウインドウが出てしまいます。
これをIMEがONのときもスペースキーの入力がIMEにいかないようにしたいのですが、
そのようにする方法ってありますでしょうか?
0780デフォルトの名無しさん
NGNGサンプルソース等載せていただけると助かります。
よろしくお願いします。
0781デフォルトの名無しさん
NGNGネットにごろごろ転がってるから調べてみましょう。
http://www.google.co.jp/
0782780
NGNG調べ方が悪いのでしょうか?
0783デフォルトの名無しさん
NGNGクリアしたいのですが、どこを削除すれば良いでしょうか?
0784デフォルトの名無しさん
NGNGpMsg->message = WM_NULL;
0785デフォルトの名無しさん
NGNG最近使った一覧の項目を0で初期化する。
もしくはレジストリの
HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Recent File List
をいじる。モノによっては\DevStudio\6.0は違うかも。
0786785
NGNG0787デフォルトの名無しさん
NGNG┃ ツ ┃ リストビュー ┃
┃ リ ┣━━━━━━━━┫
┃ | ┃ ┃
┃ ビ ┃ HTMLビュー ┃
┃ ュ ┃ ┃
┃ | ┃ ┃
┗━━━┻━━━━━━━━┛
MFCでこういうWindowを作りたいのですが、
どうすればいいのでしょうか?
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNGスプリッタウィンドウ(CSplitterWnd)を入れ子にする。
定番だからサンプルはWEBで探せばいくらでもあると思われ。
0790デフォルトの名無しさん
NGNG>619-621
辺りを嫁
0791779
NGNGありがとうございます。
しかし試してみたのですが、だめなようでした。
おそらくPreTranslateMessage(MSG* pMsg)
よりも先にIMEにキー情報が行ってしまっているような気がします。
0792デフォルトの名無しさん
NGNGWM_IME_XXX系のメッセージでなんとかなるかも。
WM_IME_KEYDOWNとかね。
はずしてたらゴメン。
0793791
NGNGヒントどうもありがとうございます。
WM_IME_****には気づきませんでした
それでちょっと試行錯誤してみます。
0794デフォルトの名無しさん
NGNGC++のクラスメソッドを登録できますがこれは合法ですか?
またこれはポータブルですか?
#include <windows.h>
typedef void (CALLBACK MyCallback)(const char *message);
void callcallback(MyCallback callback){
if(callback != 0) callback("hello,world\n");
}
class CallbackTest
{
private:
static void CALLBACK Callback(const char *message)
{ OutputDebugString("CallbackCaller:"); }
public:
void Execute() { callcallback(Callback); }
};
int main()
{
CallbackTest ct;
ct.Execute();
return 0;
}
合法でかつポータブルです。
クラスメソッドという用語はそんなにポータブルじゃないけど。
0796------------------さん
NGNG-------------------構成: gpibsdi - Win32 Debug--------------------
コンパイル中...
gpibsdiView.cpp
C:\Windows\デスクトップ\gpibsdi\gpibsdiView.cpp(169) : error C2065: 'f' : 定義されていない識別子です。
C:\Windows\デスクトップ\gpibsdi\gpibsdiView.cpp(169) : error C2440: 'initializing' : 'int' から 'char [256]' に変換することはできません。(新しい動作 ; ヘルプを参照)
配列型への変換はありませんが、参照またはポインタから配列への変換があります。
C:\Windows\デスクトップ\gpibsdi\gpibsdiView.cpp(173) : error C2440: '=' : 'unsigned char [256]' から 'double' に変換することはできません。(新しい動作 ; ヘルプを参照)
この変換が可能なコンテキストはありません。
C:\Windows\デスクトップ\gpibsdi\gpibsdiView.cpp(174) : error C2664: 'GpCnvStrToDbl' : 1 番目の引数を 'char [256]' から 'unsigned char *' に変換できません。 (新しい機能 ; ヘルプを参照)
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
cl.exe の実行エラー
gpibsdi.exe - エラー 4、警告 0
0797デフォルトの名無しさん
NGNGfの型は?
ソース張ったら796の文より多いの?
0798デフォルトの名無しさん
NGNG長いです・・
えっと用は文字charデータをdoubleに変換する「atof」ってやつです。
これを実行すると上記のエラーがでます。
キャストというのがわからないのですが、これが関係あるようです
0799デフォルトの名無しさん
NGNGとりあえず、 f は宣言されているの?
「定義されていない識別子です」って言われてんじゃん
0801デフォルトの名無しさん
NGNGじゃあとりあえずatofを使ってる部分とそこで使ってる変数の宣言だけ載せればいいじゃん
0802_
NGNG処理中は重くてマウスカーソルが止まったりします
(memdc→memdc、memdc→hdcどちらでも起こります)
マウスカーソルに影響を与えずに処理するにはどうしたらいいでしょうか
0803デフォルトの名無しさん
NGNG別スレッドで(memdc→memdc)の処理させる。
0804デフォルトの名無しさん
NGNGC言語を勉強しなおしたほうがいいな。
最初の2つのエラーはfが宣言されていないから。
3つ目は論外。
4つ目は型変換ミス。
'GpCnvStrToDbl' はコンテックのGPIBボードについてるライブラリか?
ソース、恥ずかしくて貼り付けられないだろうな。
たったこれだけのソースでほとんど同じエラーが出るぞ。
char s[256] = f; /* fは宣言されていない */
double d = s;
GpCnvStrToDbl(s, &d);
DWORD GpCnvStrToDbl(unsigned char *str, double *dbldata); ね。ちなみに。
0805デフォルトの名無しさん
NGNG神です!
0806デフォルトの名無しさん
NGNGすげぇw
初歩の初歩だな。
VB厨が書きそうなコードだ。
0807デフォルトの名無しさん
NGNGディスアセンブルじゃなくてディスエラーコメントの
称号を与えよう。
0808デフォルトの名無しさん
NGNG0809802
NGNGAfxBeginThread(SkipBitmap,this,THREAD_PRIORITY_IDLE);
のようにして別スレッドで呼び出していますが症状がおさまりません
上の別スレッドはさらにCxxxViewクラスのメンバ関数を呼び出し、
StretchBltは実際にはそこで使っていますが、これが関係あるでしょうか
0810デフォルトの名無しさん
NGNGAfxBeginThread(・・・, this
は止めといた方がいいっぽい。よく見かけるんだけど。
0811------------------さん
NGNG<正しい例、これは正常に稼動しました。出力は1233.000Hz>
char *zzz="1.23300000E+003";
double s = atof(zzz);
char r[80];
sprintf( r,"※周波数→ %6.3f Hz(数値データ%f)",s);
pDC->TextOut(30,20,r,strlen(r));
<実際作ってるプログラム、外部シンボルが未解決ですエラーがでます>
<いろいろ処理をしてGPIBというオシロスコープから取り込んだ文字データzzzが文字列形式で%sでとりあえず見ると>
<上の正しい例にある1.233E003という数値です。これを数値で表せレない。>
double s = atof(zzz);
char r[80];
sprintf( r,"※周波数→ %6.3f Hz(数値データ%f)",s);
pDC->TextOut(30,20,r,strlen(r));
0812------------------さん
NGNG○上の正しい例にある1.233E003という文字列です。
0813------------------さん
NGNGリンク中...
gpibsdiView.obj : error LNK2001: 外部シンボル ""double __cdecl atof(unsigned char const *)" (?atof@@YANPBE@Z)" は未解決です
Debug/gpibsdi.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
0814デフォルトの名無しさん
NGNG理由は?
0815デフォルトの名無しさん
NGNGなんでatofが型修飾されてるんだ?
きちんとstdlib.hをincludeしたか?
0816デフォルトの名無しさん
NGNGキタ━━━(゚∀゚)━━━!!
0817デフォルトの名無しさん
NGNGhttp://www.google.com/search?q=CWnd+%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89+%E3%83%91%E3%83%BC%E3%83%9E%E3%83%8D%E3%83%B3%E3%83%88%E3%83%9E%E3%83%83%E3%83%97&hl=ja&lr=&ie=UTF-8&oe=utf-8&filter=0
>一時オブジェクトを別のスレッドに渡すときは、必ずネイティブな HANDLE 型と
>して渡します。C++ のラップ オブジェクトを別のスレッドに渡すと、予想外の
>結果 になることが少なくありません。
thisを渡して、「予想外の結果」になった経験何回か有り。それで昔調べた。
0818デフォルトの名無しさん
NGNG激しくMFCと関係ない悪寒(;;;゜Д゚) ガタガタブルブル
0819デフォルトの名無しさん
NGNGなんか、もっと重大な問題があるのかと、思っちまったぜ。
「仕組みを理解した上で、thisを渡せ」って前提が抜けてるな。
0820803
NGNG(memdc→memdc)で処理の重いStretchBltなどを
使う。最終的にmemdc→hdcして実際に表示する時は
WM_PAINT(OnDraw)を呼び出すメソッドをスレッドから
呼び出す。
memdc→hdcするときに画像サイズの違いで、BitBltが
デフォルトで呼び出すStretchBltが起きてないか注意する。
(memdc→memdc)だけさせるスレッドでも重いか
テストしてみる。
0821817
NGNGそうだね。
worker_thread(LPVOID ptr)
{
CHogeWnd* pHoge = (CHogeWnd*)ptr;
とやって
HWND hHoge = pHoge->m_hWnd;
とか
int result = pHoge->HogeMethod();
とかやってると、アクセス違反で落ちたり変な値が帰ってきたり...
それが、いつも再現するとは限らず 100回に1回現れるとかで、今うまく
いってるからといって油断してると痛い目にあう。
0822デフォルトの名無しさん
NGNG>HWND hHoge = pHoge->m_hWnd;
>int result = pHoge->HogeMethod();
これは、いくらなんでも問題ないじゃない?(関数の方の、実際の処理内容は除く)
本当にNGなら、ポインタやInterfaceがすべて破綻してまう。
0823デフォルトの名無しさん
NGNGスレッドがまだ動いている間に
スレッドが使っている領域を開放しちゃって落ちる
ってのをよくやっちゃうんですが・・・
わしが迂闊なだけか・・・鬱
0824802
NGNG何度もありがとうございます
>(memdc→memdc)で処理の重いStretchBltなどを使う。
(memdc→hdc)にStretchBltを使わないよう書き換えました
>最終的にmemdc→hdcして実際に表示する時は
>WM_PAINT(OnDraw)を呼び出すメソッドをスレッドから 呼び出す。
Invalidate() を使って OnPaint() を呼び出すようにしました
この部分では症状がでなくなったようです
>memdc→hdcするときに画像サイズの違いで、BitBltが
>デフォルトで呼び出すStretchBltが起きてないか注意する。
すみません、よくわかりません
しかし、BitBltではもう症状は出なくなりました
>(memdc→memdc)だけさせるスレッドでも重いかテストしてみる。
やはりStretchBltでは重いようです
画面には何も表示されませんが、
処理をした瞬間にマウスカーソルが何かにひっかかるような感じです
0825デフォルトの名無しさん
NGNGスレッドが動いてるときに、呼び出したウインドウ閉じちゃったりして
死ぬってことかな?
それは this を渡すのが悪いんじゃなくて実装の仕方が悪いような、、、
俺もよくやるけど。
0827821
NGNGCWndの場合は、それがヤヴァイというようなことが、どっかの ASSERTに
載ってた。例えば
worker_thread(LPVOID ptr)
{
CHogeWnd* pHoge = (CHogeWnd*)ptr;
・・・
int result = pHoge->HogeMethod();
・・・
}
int CHogeWnd::HogeMethod()
{
return this->m_data;
}
とやるとおかしな値が返ってくるので、試しに HogeMethodで Breakしたら、
thisの値が、スレッドに渡した this(pHoge)とは違っていた
ってのではまった。
0828デフォルトの名無しさん
NGNGVCでインデントがされていないソースをきちんと揃えるにはどうすればいいのでしょうか?
0830デフォルトの名無しさん
NGNGOnInitialUpdate、OnInitialDialog
以降でスレッド起動しても駄目かな?
俺の記憶だとOnCreateでハマッタ覚えがある。
0831デフォルトの名無しさん
NGNG大きめの画像を扱っている(フィルタとか?)というあたりに適度に
Sleep(0)とか入れてみると言うのはどお?
見当違いならスマソ
0832デフォルトの名無しさん
NGNG俺は今まで問題らしい問題は無かったんだけど、あまり他人に薦めないほ
うがいいのかな。
0833810
NGNG俺も分かったような分かんないような状態なんだけど、実害を経験してるのと
CWnd::AssertValid() のソースにそれらしいことが書いてあるので、ちょっと
つっかかってみた。
0834デフォルトの名無しさん
NGNGhttp://vip.bbspink.com/test/read.cgi/erodoujin/1038492534/
0835デフォルトの名無しさん
NGNG要するにWindowsの世界ではスレッド毎にハンドルをくるむCWnd型を持ってて、
それを共有したりすると「うちのスレッドでこのCWnd使ってる人いないね?
じゃ捨てるよ?」とか言って他のスレッドのCWnd破棄したりとか、
(他のスレッドが触ることを考慮してないから)ロックかけずに操作したりとか、
あらゆるやばいことが起きるってことなんじゃ?
漏れは今までそう理解してた。それっぽいバグも経験したし。
というわけでスレッド間で渡していいのはハンドルのみ。
あ、あと自分がMFCと関係なく定義したオブジェクトは当然渡して問題なし。
0836デフォルトの名無しさん
NGNG手法的には、正しい。
ただ、OSの構造的にスレッドを跨げない機構があるので、要注意。問題が微妙に違う。
CSocketなんかもそうだよね。(←ウィンドウが絡んでる)
vtableを信じる物は、救われる。(足下を?)
0837デフォルトの名無しさん
NGNGわしも、特定できたバクは無かったけど、thisにしてしまうと、誰がからかワカランように
なるのと、***Docでそれをやると、デバックモードで動かなくなる事があった。
スレッドが原因じゃないかもしれんが調べてない
835に同意、多少手間だけど、AppのメンバにViewのハンドルを作って、メッセージで処理しとるよ。
0838デフォルトの名無しさん
NGNGさすがに、他のスレッドが触ることを考慮してないクラスがthisを渡すはまずそうですね。
0839デフォルトの名無しさん
NGNGそれは、スレッドセーフになっていないってこと?事情もないのに、手抜きでそーゆー事するのがおかしい。
そーゆー意味では、ウィンドウ関係は非スレッドセーフ。
たとえば、SendMessage()のロック問題とかあるでしょ?
0840832
NGNG調べました。意味を取り違えていたらすいません。
下記のように理解しましたがOK?
AfxBeginThreadでthisを渡さないほうがいい。
理由
本来スレッドセーフで設計するべきだが、Windows関係の処理には一部スレッドセーフで
無い部分があるので、他のスレッドから直接触るべきではない。
またスレッドセーフで設計されていたとしても、それを期待してthisを渡すのも、安全面
からやめたほうがいかも?
0841デフォルトの名無しさん
NGNGこーゆー事は、あんまり言いたくないのだが...「アホか?」。
いいかげん、ブチ切れた。なんべん、言えば理解できるのか?
「ウィンドウズは、構造的にスレッドを跨げない、場所・機能・使い方がある」ってのがこの問題の本質だ。
スレッドにthis渡してはいけないなんてのは、関係ない。thisじゃなくても、グローバルインスタンスだって、スレッドを跨いだらNGな場合だってある。
「スレッドを跨いでやってはいけない事がある」ってのが正解だ。それを防止する意味でthis渡しを禁止するのは勝手だが、誰も相手にしてくれなくなるぞ
まぁ、落ち着きなされ。thisを渡して慎重にコーディングしてウマー
なプログラムなら飯の種になるでよ。そうでなければそれなりに
というわけで、あんたは何も損しないんだから。
0843デフォルトの名無しさん
NGNGうーん、thisにこだわってるのでどうも理解度が怪しく見えてしまうよ。
AfxBeginThreadに渡す、渡さないはあんまり関係ない。
とにかく、AfxBeginThreadで作ったスレッドから、こちら側のオブジェクトを触るときは、
スレッドセーフな(複数のスレッドから同時に呼び出しても大丈夫なように作られた)処理がなければダメ、ということ。
MFCのオブジェクトのうち、少なくともCWndを継承しているものはスレッドセーフではない。
だから、thisに限らず、CWndの類ならそれを別スレッドから使うのはダメ。
自分でMFCと関係ないオブジェクトをスレッドセーフに定義して、それを使うのは許される。
ということ。
0844デフォルトの名無しさん
NGNGいつもm_hWnd渡してる。
>>840
それのどこが「理解」やねん…
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNGどうやら shlobj.h の内容が古いようでコンパイルできないんですが
最新のインクルードファイルやライブラリはどこで入手できるんでしょうか?
(MSのページ見てもたどり着けなかったので・・・)
0848デフォルトの名無しさん
NGNGhttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
0849質問
NGNG以下のクラス(シリアライズ機能をつけた)を作ったんだけど
----Line.h----
class CLine : public CObject
{
DECLARE_SERIAL(CLine)
protected:
int m_fr;
int m_to;
public:
CLine(){};
void set(int f,int t);
void Serialize(CArchive& ar);
};
0850質問
NGNG#include "Line.h"
IMPLEMENT_SERIAL(CLine,CObject,1)
void CLine::set(int f,int t){
m_fr = f;
m_to = t;
}
void CLine::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if(ar.IsStoring())
ar << m_fr << m_to;
else
ar >> m_fr >> m_to;
}
これでコンパイルすると
「プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。」
っていわれちゃうんですけど・・・どうしてですか?
0851デフォルトの名無しさん
NGNGが
ねーから。
0852デフォルトの名無しさん
NGNGVisualC++ standard pack を導入したのですが、
下のようなプログラムが実行できません。
stdlib がないプログラムはきちんとコンパイルも実行もできていたの
ですが。
初歩的な質問申し訳ありません。
/* ch07-17.c */
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
double d;
long l;
i = atoi(argv[1]);
l = atol(argv[2]);
d = atof(argv[3]);
printf("%d %ld %f", i, l, d);
return 0;
}
0853デフォルトの名無しさん
NGNG0854質問
NGNG0855デフォルトの名無しさん
NGNG実行できないとはどういう状態なの?
実は実行時に引数渡してないだけとか・・・
ch07-17.exe 10 20 30
こんな感じで実行してみ
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNG設定から引数渡して実行したらできました。ありがとうございます。
ところで、
プロンプトからexeを実行するにはどうすればいいんでしょうか。
最初引数の渡し方がわからなくてプロンプトから実行しようとしたんですが、できませんでした。
0858デフォルトの名無しさん
NGNGプロンプトで
ch07-17.exe 10 20 30
だって。
だからスレ違いなのよね。
0859デフォルトの名無しさん
NGNGやたら afx が出てくるけど、この afx って何の意味?
誰か解説キボン。
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNG>>36
0862デフォルトの名無しさん
NGNGこの X ってのは数学で使う変数 X と一緒。
0863デフォルトの名無しさん
NGNGお勧めのHPとかありますか?
0864デフォルトの名無しさん
NGNGどうやれば良いのですか?
CSplitterWndでやっているのですが、上手く実装できません。
0865デフォルトの名無しさん
NGNG0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNGファイルからデータを読み込んで表をSDIに描画しなければならないのですが、
今ひとつ上手く文字と罫線が描画できません。
表の中に表を組み込んだり複雑な描画をしたいのですが、…。
ブラウザみたいに上手くいくといいのですが…。
(ブラウザは使いたくない…というかデータファイルの性格上使えないのでこまってます)
アルゴリズムか何かご存知でしょうか?
0869デフォルトの名無しさん
NGNG数字が書いてあるファイルを読み込んで、
データを配列に格納するプログラムの勉強をしています。
配列に格納したデータは後で別の処理に使う予定です。
データの量は二次元配列で[1000][1000]くらいです。
そこでダイアログベースにしてボタンを配置しました。
ボタンでファイルを開いてデータを配列に格納したいのですが、
配列の宣言の仕方がわかりません。
たとえば配列a[1000][1000]というのはどこに書けばよいのでしょう?
OnButton1というメンバ関数?の中で宣言すると、その後その配列を外から
使うことはできないですよね?
そこで、aaadialog.hという所(ヘッダファイル?)に書いてみた所、
外からも使える配列を上手く宣言できました。
ところが、今度は二次元配列をa[1000][1000]という大きな値を使いたいのですが、
スタックオーバーフローをいうエラーが出てしまいます。
malloc関数を使えばよいのかと思ったのですが、
ヘッダファイル?の中ではエラーが出てしまいます。
長文ごめんなさい。質問をまとめますと、
1.プログラム中で共通に使える配列を宣言するのはどこでやるのでしょう?
2.もしヘッダファイル内で宣言する場合、大きなサイズa[1000][1000]というような
配列の宣言の仕方を教えてください。
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNGShowWindowだと、スプリットした各ペインを消したり表示したりできないんですよ。
0872デフォルトの名無しさん
NGNGgoogle で 「分割ウィンドウ 静的 動的」で検索してみぃ
0873デフォルトの名無しさん
NGNGスレッド生成元とは別のクラス関数を、複数起動したいんだけどどうやればいいんでしょ?
{
CHoge* HogeA = new CHoge();
CHoge* HogeB = new CHoge();
WorkerA = AfxBeginThread((AFX_THREADPROC)HogeA->Entry, NULL);
WorkerB = AfxBeginThread((AFX_THREADPROC)HogeB->Entry, NULL);
}
最初のAfxBeginThreadで「キャスト出来ん」と出ますです・・・
0874デフォルトの名無しさん
NGNGスタックサイズに関してはあながちスレ違いでもなかったり。
プロジェクトの設定、リンクタブのアウトプットカテゴリに、
スタックアロケーションってーのがある。
詳しくはヘルプ見れ。
で、それが現実的でないとか言うんだったら、コンストラクなりなんなり、
C++的に適切な場所で初期化すれ。
0875デフォルトの名無しさん
NGNGイルを開く際のバージョンチェックに使用しようと思い、新規にMFCア
プリケーションをプロジェクトウィザードで作成し、ドキュメントクラス
に次の変更を加えました。
・*.h 内にある、DECLARE_DYNCREATEマクロをDECLARE_SERIALマクロに変更。
・*.cpp 内にある、IMPLEMENT_DYNCREATEマクロをIMPLEMENT_SERIALマクロ
に変更。(スキームの値には [ VERSIONABLE_SCHEMA|1 ]を指定)
保存したファイルを開いて、Serialize関数の中で、GetObjectSchema()を使
用してチェックをしてみるものの「-1」と返ってくるのです。どうすれば、
スキーマ番号の設定・取得ができるのでしょうか?
0876デフォルトの名無しさん
NGNGstaticじゃないから。
0877デフォルトの名無しさん
NGNG# # #
# ##############
# # #
# ##############
# # #
##################
# #
##################
スプリットウィンドウを使って上記のように5つに分割するにはどうすれば良いですか?
0878デフォルトの名無しさん
NGNGどうしても、罫線と文字が重なったり、表を入れ子にすると
重なったり…。
0879デフォルトの名無しさん
NGNG上下に分割
上側を左右に分割
上側の右側を縦三つに分割
0880デフォルトの名無しさん
NGNGVC++6でMFC app wizard使うと,
Test.h:
class CMyTestApp : public CWinApp
Test.cpp:
// CMyTestApp クラスの初期化
BOOL CMyTestApp::InitInstance()
{
......................
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyTestDoc),
RUNTIME_CLASS(CMainFrame), // メイン SDI フレーム ウィンドウ
RUNTIME_CLASS(CMyTestView));
AddDocTemplate(pDocTemplate);
.........................
}
みたいな感じになるよね。
ここの,RUNTIME_CLASS(....)で指定した各classのinstanceを参照する方法。
この方法やこの項目に関連したMSDN内のURLを教えていただけませんか?
0881デフォルトの名無しさん
NGNG知人に
「Visual Studio.NETのMFCを使って、ゲームを作りたい」
と言ったら、
「作りにくいから、辞めておけ」
と、言われました。
事実、そうなのですか?
0882デフォルトの名無しさん
NGNGそれはMFCとは全く関係ない気がするんだが?
あんたのプログラムの仕方がまずいだけだろ。
0883デフォルトの名無しさん
NGNGコンストラクタでthisを保存。
0884デフォルトの名無しさん
NGNGSerialize関数のあたまで基底クラスのSerialize()を呼び出すんじゃなかったかね。
スキーマ番号そのものをシリアライズしないと読めないので。
0885デフォルトの名無しさん
NGNG作るゲームとスキルによる。
貴方、アホですか?
0886デフォルトの名無しさん
NGNGていうか作る前にここに質問に来るのは根本的に間違ってると思う
0887デフォルトの名無しさん
NGNGstruct BITMAP24{
unsigned char RED;
unsigned char BLUE;
unsigned char GREEN;
}
がありまして・・・
それようのポインタ
struct BITMAP24 *Img;
を宣言しました。
で、これのビットマップサイズ分(つまり,ビットマップのイメージサイズ分height*width)のメモリを全部0で初期化したいんです・・・.
で、
memset(Img->RED, 0, height * width);
としたところ、エラーで1 番目の引数を 'unsigned char' から 'void *' に変換できません。といわれてしまいました。
memsetを使うやり方がまちがっているのでしょうか?
是非ともご教授いただきたく存じますm(_ _)m
0888デフォルトの名無しさん
NGNGそのままじゃん。
Img->REDはunsgigned char 1個だぞ。ポインタじゃないだろ。
0889デフォルトの名無しさん
NGNGありがとうございました(TT)
おかげで解決しましたm(_ _)m
恥ずかしすぎるシツモンだったと・・・恐縮です。
0890デフォルトの名無しさん
NGNG単に開発にMFC使ってるってだけで、質問の内容自体はC、C++、Win32APIの話だったり。
本当にMFCに関する質問なのかどうか自分を問い詰めてから
適切なスレで質問した方が回答もより速くより正確に得られるだろうに。
0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG0893891
NGNGすいませんがもう一つ。
そのCFormViewから派生して作成したViewに関連付けてある、
ダイアログのサイズの変更ををViewがサイズ変更(OnSize)した時に、
行いたい場合はどのようにすればいいのでしょうか?
色々やってもASSERTエラーがでてしまいます。
0894デフォルトの名無しさん
NGNGこういう場合は、初回のOnSize時にはまだダイアログが存在しないから
ダイアログのm_hWndが無効でアサートしてるのが定番。
OnSizeの中で
// m_dlgがダイアログだとして
if(m_dlg){
// ここでダイアログのサイズを変更
}
とかするとウマー
0895デフォルトの名無しさん
NGNG遅ればせながらありがとうございます。
なんとかできそうです。
0896デフォルトの名無しさん
NGNGIriaのように環境変数を指定するにはどうすればいいのですか?
教えてください。
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNG以下はMFC AppwizardのSDIで書いたコードなんだけど・・・
// TODO: この場所にネイティブ データ用の描画コードを追加します。
int n;
int j=0;
for (n=0;n<=100;n++){
if (n%2==0){
pDC->TextOut(0,10*j,n);
j=j+1;
}
}
}
エラーが出ずに起動するんだが、文字化けするんだよね・・・。
VC++始めて一日目です。教えてくれろ〜
0899899
NGNG0900デフォルトの名無しさん
NGNGstr.Format("%d", n );
pDC->TextOut(0,10*j, str );
0902デフォルトの名無しさん
NGNG0903880
NGNGCFrameWnd::GetActiveDocument
CFrameWnd::GetActiveFrame
CFrameWnd::GetActiveView
CView::GetDocument
CWnd::GetParentFrame
その他諸々で自己解決。
>>883
コンストラクタでどうやるんだ?
漏れにはGlobalVariable使う頭悪い方法しか思いつかん。
>>902
漏れもVC++一日目だったYO!
おかげで,900のCStringなんて知らず,_snprintf使って似たような事を…
0904デフォルトの名無しさん
NGNG…ダウンローダー側の環境変数を送りたいのです。
InternetExplorerとか、Mozira とか。
0905899
NGNG甘えついでにもう一つ・・・。
>>899のコードを実行すると偶数がズラズラ縦に書きつねられますが、
縦にスクロールしてくれないんです・・・。
解決方法は?・・・・。厨ですまそ。
0906デフォルトの名無しさん
NGNGだから自分でヘッダ送れってば。
0907デフォルトの名無しさん
NGNGWinSockで、HTTPをしゃべるアプリを作っているのではないのか?
そこで出てくる「ダウンローダ側の環境変数」と自分で送った
HTTPヘッダのことではないのか?
Mozillaの偽装をしたいなら、Mozillaと同じヘッダを送ればいい。
環境変数という言い方からも、HTTPを分かってなさそうなことは
よく分かるのだが。RFC2616を読んだことはあるか?
0908デフォルトの名無しさん
NGNG>」と自分
>」とは自分
0909デフォルトの名無しさん
NGNGperlとかJavaのサンプルでも送る文字列自体は同じだからすぐわかる。はず。
俺はそうやったもの。
0910デフォルトの名無しさん
NGNGTextOut(10*j,0,str);
0911910
NGNG0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNGCScrollView使いなよ。使い方まで質問しないでね。
0914899
NGNGありがとございますw
0915デフォルトの名無しさん
NGNGどうやって指定すればいいのですか?
0916デフォルトの名無しさん
NGNGソケットで"HTTP/1.0\r\nContent-Length: 1024\r\nUser-Agent: モジラ\r\n・・・・・"
みたいな文字列を送る。つーか検索する単語でてるんだから検索しなさい。
0917デフォルトの名無しさん
NGNGはい。
有難うございます。
0918デフォルトの名無しさん
NGNGを他のクラスで取得しようとpublicでGetXXXというメンバ関数を作成して
戻り値にハンドルを返そうそうとしたのですが、
コンパイル時に
class 'CSplitterWnd' : コピー コンストラクタが定義されていません。
となります。コピーコンストラクタを定義するにはどうすればいいのでしょうか?
0919デフォルトの名無しさん
NGNGコントローラー?コントロールバーじゃなくて?
とりあえずそのGetXXXという関数を晒してみよう。
0920デフォルトの名無しさん
NGNGすいません、分割ウインドウのハンドル(?)だからコントローラじゃないかも・・
また間違ったこと書きそうなのでソース晒します。
[MainFrm.h]
// アトリビュート
protected:
CSplitterWnd m_wndSplitter;
// インプリメンテーション
public:
virtual CSplitterWnd GetSplitterWnd();
[MainFrm.cpp]
CSplitterWnd CMainFrame::GetSplitterWnd()
{
return m_wndSplitter;
}
0921デフォルトの名無しさん
NGNGハンドルを取得したいならHWNDだから、Get〜の戻り値はHWNDにして
return m_wndSplitter.m_hWnd;
だと思う。
CSplitterWndのインスタンスを取得したいならポインタを返すのが普通じゃなかなぁ。
Get〜の戻り値をCSplitterWnd* にして
return &m_wndSplitter;
みたく。
0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGそんなアバウトな君が好き
0925918
NGNGポインタを返さないとあのエラーが出るということでいいんですか?
これで、かなり進みました・・・
0926880
NGNGクラスウィザードって,「メッセージを受け取るメソッドを自動的に作成し,そのメソッドを人間に記入させる」というコンセプトですよね。
逆に,「予め人間様が作成したメソッドをメッセージと関連付ける」という方法はできませんか?
「メッセージ先にありき」っつーのはやっぱ性に合わない…
>>918
それC++の基本的なところ。
インスタンスを引数,返り値にすると,その実体のコピーが作られる。
copy=new CSplitterWnd(&m_wndSplitter);
と等価なコードで返り値が代入されます。
自分のC++教本読み返しとけぇ!
スレ違い内容スマソ。
0927デフォルトの名無しさん
NGNGvirtual OnTimer() = WM_TIMER;
というような構文だったらしい。詳しいことは知らんが
0928デフォルトの名無しさん
NGNG手動でおながいします。
もしくはメッセージを受け取るメソッドで人間様が作成したメソッドを呼べばいいだけだと思うが。
0929デフォルトの名無しさん
NGNGおー,なんか関数ポインタ代入してるみたいで(・∀・)イイ!
順番逆だけどさ…
0930880
NGNG>928
>メッセージを受け取るメソッドで人間様が作成したメソッドを呼べばいいだけだと思うが。
現在は仕方なく,このようにしております…(;_;
メッセージマップの関係がGUIで直に確認できたら(・∀・)イイ!のになぁ,ってね。
0931デフォルトの名無しさん
NGNGCtrl+Wでクラスウィザード起動すれば見れると思うけど、どうよ?
0932デフォルトの名無しさん
NGNG一度ウォッチの窓を消して、再度出すと更新されているのだが。
6.0 Professional MFC
0933デフォルトの名無しさん
NGNG常に最新の実行時の値が表示されてるわけじゃないぞ。
0934932
NGNG素早いフォローサンクス。
じゃあ、刻々と変化していく変数の値を知りたい場合、コードに埋め込む以外は
方法はないと言うことでしょうか?
0935デフォルトの名無しさん
NGNGTRACE( ... )マクロ便利だよ。
printfと同じ構文で使えて、デバッグウィンドウに文字を表示する。
ASSERTと同じくDebug版のみで動作し、Release版ではなにもしない。
TRACE("%d\n", i);
でiの値がアウトプットウィンドウに逐一出力される。
0936880
NGNGBEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
.....
END_MESSAGE_MAP()
てな部分でメッセージマップ定義しているを発見。
>931
こっちを書き換えてやると,確かにクラスウィザード上で確認できました。
今までは,クラスウィザード作るメソッドをラッパーとして使っていたもので(^^;;
# んー,NeXT DevelopersはこのあたりのGUIの出来がよかったなぁ…
0937デフォルトの名無しさん
NGNGドラッグの開始/終了時に送られてくるメッセージは HDN_BEGINDRAG/HDN_ENDDRAG でOK?
Class Wizardでメッセージハンドラを実装させてみたけどちっとも呼ばれない。
念のため LVN_BEGINDRAG も試してみたけどやはりダメ。
他の HDN_〜 はちゃんと動作するのになあ。
環境はWinXP、VC++6.0っす。
0938あだ名はG。
NGNGMFCでCTest1ダイアログをつくりました。
ダイアログ内にはエディットボックス(IDがIDC_EDIT1、変数名がm_edit1)を作りました。
で、ソース内で、
CString str("2ch");
m_edit1=str;
と、エディットボックスにstrを代入したのですが、
ダイアログ内のエディットボックスには、さっき代入した「2ch」が表示されません。
エディットボックス内のメンバーに文字列を代入した際、その代入をダイアログ内に反映(表示)させるのはどうすればいいのでしょうか?
0939あだ名はG。
NGNG解決。
(CWnd->UpdateData(BOOL))
0940デフォルトの名無しさん
NGNGLVN_BEGINDRAGでふつーに取れるけど…。
ダイアログにリストビューコントロールはりつけてOnInitDialogでアイテム一個追加して
クラスウィザードでLVN_BEGINDRAGのハンドラ作ってブレークポイント置いただけ。
Win2000, VC++6.0SP5
HDN_はヘッダ用だよ
0941デフォルトの名無しさん
NGNG0942937
NGNG回答ありがとう。
「ドラッグ」の意味を勘違いしてた。
GoogleやMSDNで調べているうちに今やっと気づいたんだけど、
アイテムをまさに「引きずる」のがドラッグだったのね。
自分がやりたかったのはマウスでの矩形選択(複数のアイテム)だった。
この動作のこともドラッグと呼ぶものだと長い間思ってた。
WM_LBUTTONDOWN/WM_LBUTTONUPのメッセージハンドラで様子を見てみたんだけど、
クリックして「DOWN」が送られてきたあと、ボタンを上げずに移動させると(自分的にはドラッグ)、
矩形選択の開始を知らせるメッセージがWinから送られてきている模様。
でもそのメッセージの名称がわからないから、
どうやって捕まえればいいのかよくわからない。
とりあえず、「DOWN」のハンドラでフラグを立てておいて「ドラッグ」開始、
「ドラッグ」中はWM_MOUSEMOVEが送られて来ないので、
「UP」後、「MOVE」が来たときにフラグが立っていたら「ドラッグ」終了、
というやり方を考案してみた。
矩形選択開始時に送られてくるメッセージが何なのかを知ってる人がいたらよろしく。
0943デフォルトの名無しさん
NGNGLVN_MARQUEEBEGIN
0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG回答、Thanks a lot。
そっかー、マーキーなんて名前なんだ。
ぱっと見て一瞬、HTMLのマーキーを連想して「何のネタだよ!」と内心突っ込んでた。すまん。
これ、BEGINはあってもENDはないのね。LVN_BEGINDRAGと同じで。
英語、そんなに得意じゃないんだけど、マニュアルが言ってるのは
「選択を始めたら0が、選択を終了したら0以外が (LPNMLISTVIEW) lParam に代入される」
ことで開始/終了を知ることができる、てとこかな。
勉強になるなあ。
0946デフォルトの名無しさん
NGNGメニュー無しはダイアログベースじゃなきゃ作れないもの?
IDR_MAINFRAME のメニューが非常に邪魔なのだが。
0947デフォルトの名無しさん
NGNG構築後に消してる
m_pMainWnd->SetMenu( NULL );
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG他人にわかるように喋ってください。
…ダイアログ自分でつくりゃいいじゃん。
0951デフォルトの名無しさん
NGNGつーか、マッサージボックスって何だよ(w
0952デフォルトの名無しさん
NGNGCEditViewを使った方がいいのでしょうか?
それとも自分でクラス作ったほうが早いですか?
C++&MFC始めたばっかでよくわからんのです。
アドバイスください。
0953デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/info/press/JPN_ViewMsPress.asp?Book_id=879&list_id=1
0954デフォルトの名無しさん
NGNGオリジナルのViewクラスは結構めんどいよ。
使い始めたばかりなら、まずCEditViewでドキュメントービュー構造になれたほうがよさげ。
0955デフォルトの名無しさん
NGNGoperator= が使えるCStringArrayを作りたいんですが、どう書けばよろしいでしょう?
STLとかATLは使えない環境でつ。
0956デフォルトの名無しさん
NGNGレスありがとうございます。
了解しました。
0957デフォルトの名無しさん
NGNG2ヶ月くらい前にね
0958デフォルトの名無しさん
NGNG普通に派生クラス作って operator= をインプリメントするのはダメなんでしょーか?
0959デフォルトの名無しさん
NGNGどのAPI、クラスを使えばよいのでしょうか?
WinInetやそのラッパークラスにはhttpsについての記述がありませんでした。
0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG=演算子で何度も追加するのはまずいですか?
0962デフォルトの名無しさん
NGNGdeleteすると、キーを挿入しているところで大量に漏れてると言われます。
VC6.0です。
0963デフォルトの名無しさん
NGNGループで回してMapの要素を一つずつdeleteする。
0964デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc3.2ch.net/test/read.cgi/tech/1039607377/
0965デフォルトの名無しさん
NGNGそれでも結果全く同じ。
ダンプを見ると、どうもキーのメモリが開放されてないようなんですがそんなことあるんですかね?
以下、削除部のソース
{
POSITIONpos;
WORDkey;
CObject*pa;
pos = ThStack_w.GetStartPosition();
while(pos != NULL) {
ThStack_w.GetNextAssoc(pos, key, (CObject*&)pa);
ThStack_w.RemoveKey(key);
}
}
0966デフォルトの名無しさん
NGNGSetAt する時にオブジェクトを new してるんでしょ?
↓でどう?
pos = ThStack_w.GetStartPosition();
while(pos != NULL) {
ThStack_w.GetNextAssoc(pos, key, (CObject*&)pa);
delete pa;
ThStack_w.RemoveKey(key);
}
0967デフォルトの名無しさん
NGNGダメでつ。
一発目からAccess Violationが出ます。
delete pa のとこで。
といーますかPtrじゃなくてOb系なんで、削除は保証されてるはずなんですがねー。
マニュアルまたバグってる?
0968デフォルトの名無しさん
NGNGnewしてねーだけだろ
0969デフォルトの名無しさん
NGNGCMapStringToObにはこうある
>CMapStringToOb オブジェクトを削除するか要素を削除すると、
>CString オブジェクトと CObject ポインタが削除されます。
>CObject ポインタが参照しているオブジェクトは破棄されません。
Mapの要素としてのCObject*は破棄されるが、
その先のオブジェクトは破棄しないということだな。
CMapWordToObの説明は
>その要素を削除すると、対応する CObject オブジェクトが削除されます。
ってあるが。
0970デフォルトの名無しさん
NGNGそんなことはない。
ThStack_w[para_w] = (CObject *)new CString(temp);
0971デフォルトの名無しさん
NGNGそう。
どっちを信じていいか小一時間悩んで、結局deleteできないなら後者だろ、と思った。
でも漏れ漏れ。どうなってんやら。
0972デフォルトの名無しさん
NGNGCStringはCObjectじゃないよ。
0973デフォルトの名無しさん
NGNGおお、それは気が付かなかった。
CStringArrayに替えたら解決しますた。
ダンケ。
0974デフォルトの名無しさん
NGNGCStringArrayでええんか?
CString*を保持するCMapWordToPtrの方が良いんじゃ?
0975デフォルトの名無しさん
NGNGMoveWindowするとエラー出てしまいます。
CMediaPlayer2を見てもそれらしきものが見当たらないっす。
0976デフォルトの名無しさん
NGNGどうすればよいのでしょうか。
こんな風にしたいのです↓
http://www.vector.co.jp/magazine/softnews/991006/images/n99100611b.gif
0978デフォルトの名無しさん
NGNG表示してる場合にWM_KEYDOWNメッセージを
特定のビューで受けたい場合はどうしたらいいのでしょうか
どのビューでもOnKeyDownが動いてくれません
0979978
NGNG一番左上のビューで動きました
2列に分割して左の列を2行に分割していて
左下のビューで受け取りたいのですがSetActivePaneとかしても
アクティブになってくれません
0980978
NGNGボタンにフォーカスあたってたのをなくしたら
OnKeyDown動いてくれました
ボタンにフォーカス当たったままじゃ
ビューがメッセージ受け取らないとは知りませんでした
0982978
NGNG入力するキーによって
受け取るビューを変えたいのですが
どうしたらいいでしょうか
たとえば数字キーなら左のビュー
エンターキーなら右のビューといった感じです
0983デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc3.2ch.net/test/read.cgi/tech/1039607377/
0984デフォルトの名無しさん
NGNG|■\
| ∀`) ダレモイナイ...
| ⊂) ワショーイスルナラ イマノウチ
| /
./■\
∩´∀`∩ ワショーイワショーイ
ヽ 丿
( ヽノ
し(_)
/■\
(´∀`∩) ワワワワワショーイ
(つ 丿
( ヽノ
し(_)
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 6■
http://pc3.2ch.net/test/read.cgi/tech/1039854032/
0987デフォルトの名無しさん
NGNG■ VisualC++(MFC限定)相談室 MFC6.dll■
http://pc3.2ch.net/test/read.cgi/tech/1039607377/
0988デフォルトの名無しさん
NGNGいい加減にそういう冬厨丸出しなことはやめてくれ
0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。