★初心者にVisual C++ ..
[2ch|▼Menu]
592:デフォルトの名無しさん
07/11/05 16:44:09
URLリンク(tserve01.aid.design.kyushu-u.ac.jp)
のお絵かきソフトを作るページを参考にしてるんですが
「ToolBar」の「IDR_MAINFRAME」のボタンとIDを書き換えても
ページに書かれているようなIDに対応するような関数が作られず
ボタンも描いたように表示されず灰色の使用不可のような状態
になってしまいます。
VS2005stdです。
どなたか、わかるかた、VS2005ではどうしたらよいか教えていただけないでしょうか。
お願いします。

593:デフォルトの名無しさん
07/11/05 16:50:01
>>592
マルチ死ね

594:592
07/11/05 16:56:38
マルチしてすみません。
ただ「くだすれVisualC++(超初心者用)」のほうが1000レスいったので
こちらでも質問ささしてもらいました。
すいませんが教えてください。

595:デフォルトの名無しさん
07/11/05 17:34:30
ツールバーにハンドラ追加する方法なら少し前に誰かに教えたから過去ログ見ればいい
ウイザードから追加する方法は知らん

596:デフォルトの名無しさん
07/11/05 19:09:58
メモ帳で[F5]を押すと日付と時刻がペーストされますが、
Visual C++のエディタでも同じことができるでしょうか?
できるなら方法を教えてください。

597:デフォルトの名無しさん
07/11/05 19:32:57
自分で[F5]を押せば分かるだろ?

598:デフォルトの名無しさん
07/11/05 19:59:39
Std以上のVCならマクロで簡単に出来るよ。もちろんキーボード割り当ても可能。

599:デフォルトの名無しさん
07/11/05 20:40:23
unicodeにすると
char→CStringをどうやって渡すのかわからないです。
ヒントでいいから教えていただければ、、つД`)

600:デフォルトの名無しさん
07/11/05 20:46:28
CStringのコンストラクタ

601:デフォルトの名無しさん
07/11/05 21:21:27
CString は TCHAR データ型をもとにしています。
プログラムでシンボル _UNICODE が定義されたときは、
TCHAR 型は 16 ビット文字型の wchar_t 型として定義されます。
それ以外は、通常の 8 ビット文字型 char で定義されます。
Unicode 環境下では、CString オブジェクトは 16 ビットの文字で構成されます。
Unicode 環境以外では、CString オブジェクトは 8 ビットの文字で構成されます

602:599
07/11/05 22:46:31
>600
>601
ありがとう。
ちょいとそれを頭に入れてググル先生に聞いてみます。

603:デフォルトの名無しさん
07/11/05 23:04:43
初心者は黙ってVC++でMFCでウィザードでサクサクやるのがいいですよね?


604:デフォルトの名無しさん
07/11/06 00:14:49
いい
というのは何を根拠として良いと判断するんですか?>>603


605:デフォルトの名無しさん
07/11/06 00:17:45
VC++がどーだ、MFCはあーだこーだ言ってないで、
サクサク作れるんだから作った方が勉強になるという意味で、
いいと思いますが。


606:デフォルトの名無しさん
07/11/06 00:26:12
サクサク作れない

607:デフォルトの名無しさん
07/11/06 00:32:03
MFCウイザードでさくさく作れる香具師は、
MFCウイザードがなくたってサクサク作れる。

608:デフォルトの名無しさん
07/11/06 07:54:50
MFCキライなヤツが増えたな。

609:デフォルトの名無しさん
07/11/06 18:13:37
ダメ!
MFCで人生を棒に振った悲しいプログラマが、いったい何人いることやら。
MFC犠牲者慰霊の塔の下に眠っている幾千幾万のプログラマたちが
成仏できずに毎晩、悲痛なうめき声をあげて助けを求めているというのに。
マイクロソフト社さえ見放した禁断の果実MFCを、なぜ今更?
もうこれ以上、犠牲者が増えるのを善良な市民として見ていられない。
忘れなさい。MFCの事は忘れなさい。記憶の底から消し去るのです。
MFCなんて見なかった。聞かなかった。この世に存在しなかった。
いいですね?わかりましたね?


610:デフォルトの名無しさん
07/11/06 21:54:51
ダメ! 
.NET で人生を棒に振った悲しいプログラマが、いったい何人いることやら。
(ry

611:デフォルトの名無しさん
07/11/06 22:13:12
VC++でWin32アプリならいい?

612:デフォルトの名無しさん
07/11/06 23:47:36
VisualC++6 と VisualC++.NET の差がわかりません
差はないのでしょうか?
今から始めるならVC.netでいいんでしょうか?
VCに興味を持っている理由は .NET Frameworkとかの
ランタイムのインストールをしなくても動くEXEが作れるらしいから、と
DirectXでゲーム作ろうとしてもC++の参考書しかないから、なのですが
VC.NETで作ったEXEは .NET Frameworkがないと動かないものになるのですか?


613:デフォルトの名無しさん
07/11/06 23:56:01
Visual C++ .NET 2002はVisual C++ 7.0、.NET 2003は7.1相当。
.NET抜きにして、C++コンパイラとしても開発環境としても機能は上がっている。

.NET Framework使うプロジェクトを作らなければ、
Visual C++ .NET 2002/2003でも.NETなしのネイティブプログラムが作れる。

ちなみに、現在の最新版は2005 (8.0)。ただ、上に書いたような事情は変わらず。

614:デフォルトの名無しさん
07/11/07 00:11:39
>>613
ありなとうございまつ
早速VC++2005EEをインスコしますた

しかしネットだと.NET Framework使うプロジェクトか
HalloWorldみたいなウインドウすら出てこないのの解説ばかりでつなorz
猫でもわかるプログラミングでも観ることにするでつよ

615:デフォルトの名無しさん
07/11/07 00:15:34
>HalloWorld
早くもオリジナルな要素を取り入れてるのか

616:デフォルトの名無しさん
07/11/07 00:24:29
>>614
SDK入れなウィンドウの表示なんてできへんで〜

617:デフォルトの名無しさん
07/11/07 00:59:03
すみませんが質問です。

大量のログをとれるようなDOSプロンプトというか、コンソールエミュレータと
いうようなものを作る場合、リッチエディットコントロールを使うのがよいので
しょうか?

それともwin32アプリにしてしまって、入出力をリダイレクトするのが良いので
しょうか?

618:デフォルトの名無しさん
07/11/07 01:00:01
>>615
もまい、やさしいでつね

>>616
URLリンク(www.microsoft.com)
をやらないと.NET Frameworkなソフトしか作れないということですか?

619:デフォルトの名無しさん
07/11/07 01:08:09
>>617
特に見栄えを気にしなくてもいいのなら、「コンソールアプリ」 にするのがいちばん簡単だよ。
ログを取るだけで、画面にスクロール表示する必要がないのなら、ふつーにウインドウアプリ
でもいいし。ログだけファイルに落とせればじゅうぶんだろ?

620:デフォルトの名無しさん
07/11/07 07:29:29
>>619 レスサンクス

スクロールは使いたいですね。ログは軽く64kb以上になるので、リッチ
エディットコントロールしかないかな、と。
イベントのことはよく分かりませんけど、CLIを真似する以上はEnterキーを
見張らないとダメそうで、どうしたもんだかと悩みますね。

teratermのログ機能と、DOSプロンプトが合体したような感じが望ましいの
です。


621:デフォルトの名無しさん
07/11/07 08:39:00
ログ取るのにリッチエディットコントロールが出てくるのが意味不明だったけど
それぐらいの容量なら普通のエディットコントロールでも余裕でいける

622:デフォルトの名無しさん
07/11/07 21:47:52
>>621 CREATEしたときにEM_SETTEXTLIMITを投げればいい、って言ってくれればいいのに。

623:デフォルトの名無しさん
07/11/07 23:12:57
AllocConsole

624:デフォルトの名無しさん
07/11/07 23:19:28
上のGetWindowRect(GetDesktopWindow(), &rect);について質問です。

この関数でrect.leftをはじめ、ディスプレイサイズの取得が出来るのは分かるのですが、
それによってウィンドウの表示位置を変えていくのであれば、WinMainの中のCreateWindowの水平、垂直位置の更新をしなければいけませんよね?
その方法ってのはどうやるんですか?一応ウィンドウの雛形やCreateWindowの再描画などで調べたんですが、さっぱりでして。


625:デフォルトの名無しさん
07/11/07 23:50:41
起動時に位置を設定したいならCreateWindowに好きな位置を渡すだけだし
後で変えたいならMoveWindowとかSetWindowPlacement()など。

626:デフォルトの名無しさん
07/11/07 23:56:40
>>625
取り敢えずMoveWindowについて調べてぱっと記述してみたらできました。
SetWindowPlacementについてもまた調べてみたいと思います。
ありがとうございました。

627:デフォルトの名無しさん
07/11/08 00:43:31
うは、Win32プロジェクトがないw
イラネw

628:デフォルトの名無しさん
07/11/08 00:55:37
Windows SDKでも入れて、
あとは適当なプロジェクトを作って、適当にオプションいじっておけ。

629:デフォルトの名無しさん
07/11/08 07:17:34
MUIに対応したものを作りたいのですが、
.rcconfigファイルの中身をどう書いたら良いかご存知の方はいませんか?
サンプルアプリケーションを見てみたのですが、
<resourceType typeNameId="#4"/>
の4が何を意味しているのかがわかりません。。



630:デフォルトの名無しさん
07/11/08 07:30:10
C#やっている人がC++やってもわからないよね?


631:デフォルトの名無しさん
07/11/08 11:09:42
>>627
貧乏人乙w

632:デフォルトの名無しさん
07/11/08 20:44:10
スタンダード以上だと別途PSDK入れなくても
Win32プロジェクトが最初から選べるのに気づいた
ところでWin32プロジェクトってインテリセンスが
使えないんだが設定が悪いのか?それとも仕様?

633:デフォルトの名無しさん
07/11/08 23:06:47
LNK2001: 外部シンボル ""public: virtual void __thiscall CWnd::DoDataExchange(class CDataExchange *)" (?DoDataExchange@CWnd@@UAEXPAVCDataExchange@@@Z)" は未解決です。

Visual Studio 2005でMFCのアプリケーションをコンパイルすると
上のようなエラーがいっぱいでるのです。

これはどうやって回避すればいいのでしょうか?

634:デフォルトの名無しさん
07/11/08 23:12:48
ダメ!
MFCで人生を棒に振った悲しいプログラマが、いったい何人いることやら。
MFC犠牲者慰霊の塔の下に眠っている幾千幾万のプログラマたちが
成仏できずに毎晩、悲痛なうめき声をあげて助けを求めているというのに。
マイクロソフト社さえ見放した禁断の果実MFCを、なぜ今更?
もうこれ以上、犠牲者が増えるのを善良な市民として見ていられない。
忘れなさい。MFCの事は忘れなさい。記憶の底から消し去るのです。
MFCなんて見なかった。聞かなかった。この世に存在しなかった。
いいですね?わかりましたね?

635:デフォルトの名無しさん
07/11/08 23:18:21
マイクロソフトは、.NETの成功に関わらず
C++の開発を進めています。
次に発売するVisual StudioのMFCには、Vista用のWindowsメッセージの追加。
XmlLiteなどなど、お楽しみがいっぱいです。

636:デフォルトの名無しさん
07/11/08 23:22:34
そんなことよりもATLのopen source化をだな

637:デフォルトの名無しさん
07/11/09 00:06:25
>>633
VS2005の修復で直らなければ再インスコ

638:デフォルトの名無しさん
07/11/09 00:11:36
マイドキュメントのVisual Studio 2005のフォルダをまるまるノートにコピーして
プロジェクトを開いたところ,作成していたプログラムの中のラベルが全て
黒塗りに表示されてしまいました。
ビルドして実行しても黒塗りは変わりません。

直す方法はありますか?

639:デフォルトの名無しさん
07/11/09 00:45:40
PSRTとかLPSTRってString型みたいなもんですか?

640:デフォルトの名無しさん
07/11/09 01:22:46
>>639
ちゃうよ

641:デフォルトの名無しさん
07/11/09 05:46:56
全くの無知なんですが、C・C++を覚えたいと思います。
まず何をするべきでしょうか?

642:デフォルトの名無しさん
07/11/09 06:24:21
C/C++のコンパイラをインストール
このスレに来たからにはVisualC++だな

643:デフォルトの名無しさん
07/11/09 06:31:52
>>642
把握d
とりあえずいろいろ調べながらいじってみます!
スレチに気付いたら黙って消えますw

644:デフォルトの名無しさん
07/11/09 14:10:53
VisualC++のwindowsフォームアプリケーションで
スクリーンキーボードを作ってるんですが
初期のウィンドウを非アクティブ化することができません。
どうしたらいいでしょうか?

645:デフォルトの名無しさん
07/11/09 16:13:31
>>644
初期のウィンドウってなに? キーボード?

646:デフォルトの名無しさん
07/11/09 17:33:59
systemやgetchといった関数が「認識されません」というふうにエラーが出ます。
#include<windows.h>や#include<conio.h>のヘッダが登録できてないのでしょうか。
またそうであれば、やり方を教えてください。
よろしくお願いします。

647:デフォルトの名無しさん
07/11/09 17:43:48
windows.hとconio.hをインクルードしてもsystemやgetchは使えない。
systemを選択してF1押すべし。

648:デフォルトの名無しさん
07/11/09 17:53:24
>>647
選択とはドラッグでいいんでしょうか。
F1押すとヘルプが出るんですが、どの時点で押せばいいんでしょうか・・・

649:デフォルトの名無しさん
07/11/09 18:00:11
・まず、画面に出たエラーメッセージをよく読んでみてごらん。
 読んでも分からないなら、省略せずにそっくりそのまま掲示板に貼り付けて質問しよう。
・system関数を使うのに必要なヘッダファイルは何かな?
 (あえて正解は書かないよ。自分で調べる練習しなさい。宿題です)
・getchも同様。

Visual CコンパイラはIDE統合開発環境と、コマンドラインの2種類がある。
・IDEはIDEの使い方を覚えなきゃいけないという障害は立ちふさがる。
・コマンドラインのコンパイラは環境変数の設定とかなんとかメンドクサイ。
どちらも超初心者には敷居が高い。独学はかなりの覚悟が必要。
だれか先生になってもらってくれる人がいればいいんだけどね。

650:デフォルトの名無しさん
07/11/09 18:13:30
>>649
エラーメッセージは
'getch': 識別子が見つかりませんでした
'system': 識別子が見つかりませんでした
です。
ヘッダファイルは
<windows.h>
<conio.h>
だと思います。
違っていたら、調べ直すので指摘だけお願いします

651:デフォルトの名無しさん
07/11/09 18:25:31
違ってます。
選択の説明しようと思ったけど指摘だけとのことなので省略。
まーがんばれ

652:デフォルトの名無しさん
07/11/09 18:53:40
windowsがどっからくるのよ
stdlib

653:デフォルトの名無しさん
07/11/09 19:40:50
::CreateProcessかなんかと勘違いしてるんだな
俺にはわかる

654:デフォルトの名無しさん
07/11/09 20:34:42
コンパイル通りました。ありがとうございました。
実はURLリンク(fatalita.sakura.ne.jp)のサイトのlesson1を
実行したかったのですが、コンパイルは通っても画面がすぐに消え
"ハンドルされていないwin32の例外が発生しました"
と出て実行できません。
何がおかしいのでしょうか。

655:デフォルトの名無しさん
07/11/09 21:36:28
そんな糞サイトの後始末頼まれても迷惑
書いた本人に直接聞けよ

656:デフォルトの名無しさん
07/11/10 00:33:26
うは、声がきもい。
インデントが変態。
空白の明け方がへぼい。
思考の流れが行き当たりばったり。

657:デフォルトの名無しさん
07/11/10 01:27:18
面白そうなのでオレも見てみた。
インデントが変???ぜんぜん変じゃないんだけど・・・

っつう事で、>>656 がどんな立派なコードを書いてるのか、期待age

658:デフォルトの名無しさん
07/11/10 01:27:26
URLリンク(www.wisdomsoft.jp)

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
CHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

return 0;
}

エラー 1 error C2664: 'wsprintfW' : 1 番目の引数を 'CHAR [128]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) c:\documents and settings\gald.pc-p4gald\デスクトップ\sdaf4e\sdaf4e\asdf.cpp 7
エラー 2 error C2664: 'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) c:\documents and settings\gald.pc-p4gald\デスクトップ\sdaf4e\sdaf4e\asdf.cpp 8
というエラーで実行できないんだけど
なぜでございましょう?

つか、VBやらC#の型はわかりやすいのに
WCHARとかTCHERとかLPSTRとか理解しにくい型が多くて苦しい

659:デフォルトの名無しさん
07/11/10 01:31:08
>>658
エラー通りだな
CHAR chStr[128];

TCHAR chStr[128];
に変更すればいいんでない?
それでエラーが出るなら、<tchar.h>をインクルードすればOK


660:デフォルトの名無しさん
07/11/10 01:32:52
プロジェクトがユニコードになってるからだよ。
ANSIに変更しよう。
初心者がかならずつまづく超FAQだね。

661:デフォルトの名無しさん
07/11/10 01:42:19
何回も同じ質問を見てるな
テンプレにでも入れた方がいい気がする

662:若者は馬鹿者 ◆KorX0HCHGU
07/11/10 01:43:24
>>659

#include <windows.h>
#include <tchar.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
TCHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

return 0;
}

エラー 1 error C2664: 'wsprintfW' : 2 番目の引数を 'const char [26]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)

だそうでつ

>>660
プロジェクトのプロパティ-構成プロパティ-全般 の
文字セットを「Unicode文字セットを使用する」から「設定なし」にしたら
上記のコードが動いたわけですが、
これはソースコードそのものがUnicodeだったからダメだったってことでつか?
理由がよくわからんです


663:デフォルトの名無しさん
07/11/10 02:01:46
>>662
ユニコードじゃ無いアプリケーションを、ユニコードアプリケーションとしてコンパイルしようとした。

URLリンク(www.wisdomsoft.jp)
ここには「将来性を考えて、これから文字コードは Unicode を用いるべきです。 」とか書いてあるけど・・・
初心者はユニコードアプリには手を出さんほうがいいよ。もうすこし慣れてからがいい。
よっぽど注意深くコーディングしないと、ワケワカランことになるよ。

664:デフォルトの名無しさん
07/11/10 02:03:43
>>662
_T("インスタンスハンドル : %d")
とすれば、いいよ

TCHARってのは、コンパイル時に自動で、マルチバイト文字セットとUNICODE文字セットを切り替えてくれます
文字リテラル("文字列"とか'a'とか)については、_Tもしくは、TEXTマクロで、マルチバイト文字セットとUNICODE文字セットの変更を自動でしてくるようになります

ソースコードがUNICODEとか言うんじゃなく、現在扱っている文字が何なのかをコンパイラに教えてやる必要があるって事です
それを省略したら、勝手に、ANSIとかOEMとか言う文字セットとして扱われるって事です


665:デフォルトの名無しさん
07/11/10 03:09:35
非ユニコードアプリとユニコードアプリの差をまず理解しないとだめってことでつね

666:デフォルトの名無しさん
07/11/10 10:46:55
今、ゲーム作ってるんですけど教えてください。(ゲ製作で聞くべき?)

ゲームの画面を(ウィンドウが隠れたりしても)表示させるために
WM_PAINTで

BitBlt(hDC2,0,0,200,200,GetDC(hWnd),0,0,SRCCOPY);

てな感じでhDC2に退避させて、ウィンドウが隠れたりして再表示する時に
hDC2から持ってくる・・・という風にしたいんですが、

1.WM_PAINTの部分で画面を退避させるという事は変でしょうか?
  「普通はこうやる」っていうのがあれば教えて頂きたい。

2.退避させた画面はどの部分(ハンドラ)で戻すべきですか?
  今のところ、WM_TIMERで一定時間ごとに戻してるのですが・・・

667:デフォルトの名無しさん
07/11/10 10:56:55
予めメモリDCを作っておいて、描画は全てそこへ行う。
WM_PAINTでは、そのメモリDCからウィンドウDCへのBitBltに限る。
ってのが普通。

668:デフォルトの名無しさん
07/11/10 11:32:26
>>667
いまどきそんな原始的な方法なんかw

669:デフォルトの名無しさん
07/11/10 11:38:55
でも666はありえないだろ。
話はそれるがReleaseDCしていないのも目に付くし。


670:デフォルトの名無しさん
07/11/10 18:42:02
>>657
void main() {


671:デフォルトの名無しさん
07/11/10 18:43:53
夫失敬。

>>657
void main(){
 while (1)
 {
  DrawMap();
 }
}
--
変態かどうかは兎も角、不思議なコーディングスタイルだとは思う。

672:デフォルトの名無しさん
07/11/11 00:32:33
めんどくせー > VC++
Formねーじゃん

どうやってGUIつくんだよ

673:デフォルトの名無しさん
07/11/11 00:46:10
珍しいVC++だね。ウチのにはForm付いてるよ。

674:デフォルトの名無しさん
07/11/11 00:56:55
うちのはintも付いてない

675:デフォルトの名無しさん
07/11/11 01:03:24
それVirtualConsoleだろ

676:デフォルトの名無しさん
07/11/11 01:40:15
VC6.0でプログラムしています。
MFCは使わず、APIのみ。

ダイアログボックスにコンボボックスを貼り付けて
内容(数字)をリストから選択するような動作をさせたいと思っています。
ワードでフォントを変更するときのコンボボックスのようなイメージです。

VC上でダイアログボックスにコンボボックスを貼り付け、
コンボボックスのプロパティのデータ にある”リストボックス項目の入力(N)”に
選択したい数字のリストを並べれば良いかと思ったのですが
実際に動かしてみると コンボボックスの▼を押してもキーボードの↓を押しても
リストが現れません。
やり方が間違っているでしょうか?


関係ないかもしれませんが手元の参考書ではリストボックスを使用する場合の方法が書いてあり
リストボックスを初期化するにはSendDlgItemMessage()関数を使用するとのことだったので
試しにやってみましたがリストボックスではリストに文字列を追加できましたがコンボボックスでは追加されませんでした。

内容に不足などありましたらご指摘をお願いします。

677:デフォルトの名無しさん
07/11/11 05:28:25
>コンボボックスの▼を押してもキーボードの↓を押しても
>リストが現れません。

ああこれね

678:676
07/11/11 07:36:53
>>677
おはようございます。
良くある質問でしょうか?

申し訳ないですが質問内容が間違ってました。
▼ボタンを押すとドロップダウンリストは出ます。
しかし、中が空っぽです。
リソースエディタで入力した内容を反映させたいのですが。

679:デフォルトの名無しさん
07/11/11 08:28:15
早まって答えなくてよかった
>リストボックスではリストに文字列を追加できましたがコンボボックスでは追加されませんでした

問題はこれか

680:96
07/11/11 09:14:14
リソースエディタのコンボボックスまわりの内容はこんな感じです
// Dialog
//

IDD_CONFIG DIALOG DISCARDABLE 125, 110, 194, 95
STYLE DS_SYSMODAL | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_VISIBLE |
WS_CAPTION
CAPTION "CONFIG"
FONT 9, "MS Pゴシック"
BEGIN
LTEXT "コンボボックスで値を選択してください",IDC_STATIC,7,19,77,8
PUSHBUTTON "OK",IDC_CONFIG_OK,133,14,26,15
COMBOBOX IDC_COMBO2,86,16,46,71,CBS_DROPDOWNLIST |
CBS_NOINTEGRALHEIGHT | WS_TABSTOP
END

// Dialog Info
//

IDD_CONFIG DLGINIT
BEGIN                  ←コンボボックスのリストに表示したい値(1〜20の数字)
IDC_COMBO2, 0x403, 2, 0
0x0031,
IDC_COMBO2, 0x403, 2, 0
〜〜〜〜省略〜〜〜〜〜〜〜〜
IDC_COMBO2, 0x403, 3, 0
0x3931, "\000"
IDC_COMBO2, 0x403, 3, 0
0x3032, "\000"
0
END

681:676=680
07/11/11 09:15:52
名前欄ミスしました。

682:デフォルトの名無しさん
07/11/11 09:31:42
リソースレベルでコンボボックスのデータを定義できるのはMFCの独自機能。
リソースビューの*.rcを選んでプロパティを見てもらえば分かるが、
'Mfc Mode'という項目が用意されている。
これをFalseにすると、コンボボックスのプロパティでData部分が無効になる。

683:676
07/11/11 13:38:36
>>682
なるほどそういうことでしたか。
ありがとうございます。

リストの値をSendDlgItemMessage()関数で追加できないと書きましたが
参考書で引数に LB_ADDSTRING を指定しているところで
CB_ADDSTRING を指定するようにしたところリストに追加できました。
ありがとうございました。

684:デフォルトの名無しさん
07/11/11 15:40:55
質問させてください。
Visual C++ .net 2005で開発を行っています。

フォーム(Form1)やピクチャボックス(pictureBox1)に簡単なグラフを表示させたいのですが、
button1_Click等で描画すると、一度非表示になった部分の線が消えてしまいます。

Form1_Paintイベント内で描画すれば解決するのですが、毎回データを読み込んだり計算するのが
無駄に感じます。

Form1で非表示になった部分を消さないための方法はあるのでしょうか?


または、なんらかのバッファに描画して、それをForm1_Paint内で毎回読み出すという方法のほうがいいのでしょうか?
そのための方法等があれば教えてください。

よろしくお願いします。

685:684
07/11/11 15:44:04
補足

線は、
 Graphics^ gr = pictureBox1->CreateGraphics();
 Pen^ pen1 = gcnew Pen(Color::Black,2);
 gr->DrawLine(pen1,10,10,200,200);
こんな感じで書いています。

686:デフォルトの名無しさん
07/11/11 22:25:30
>>684
Imageに描いて、Paintイベントでgr->DrawImage

687:648
07/11/12 00:13:47
>686
なるほど、ありがとうございます。

Bitmapをバッファとして使い、Graphics::FromImageで取り込んだイメージに対して、
描画を行いました。おかげでうまくいきました。


↓みたいな感じでよろしいでしょうか? 何か改善点があればご指摘お願いします。

Bitmap^ bmap1;
private: System::Void mnDraw_Click(System::Object^ sender, System::EventArgs^ e) {
Pen^ pen1 = gcnew Pen(Color::Black,2);
        Graphics^ gr1 = Graphics::FromImage(bmap1);
gr1->DrawLine(pen1,10,10,100,100);
// gr1->Dispose(); //なぜかエラーになる
Form1::Refresh();
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
bmap1 = gcnew Bitmap(200,200);
}
private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
e->Graphics->DrawImage(bmap1,100,100,200,200);
}


688:デフォルトの名無しさん
07/11/12 00:15:57
>>687
Bitmap^ の 「^ 」 ってどういう意味?

689:若者は馬鹿者 ◆KorX0HCHGU
07/11/12 00:16:21
Win32アプリ開発で
VSの出力の部分にウインドウメッセージを表示したいのですが
.netでいうSystem.Diagnostics.Debug.Printに相当する機能はないですか?


690:デフォルトの名無しさん
07/11/12 00:18:17
>>689
ドットネットの質問は他所でやれ馬鹿者!

691:デフォルトの名無しさん
07/11/12 00:24:38
>>690には>>689が”ドットネットの質問”に見えるらしいw

692:684
07/11/12 01:09:01
>688
自動でガーベージコレクションをやってくれるようです。ようは、使い終わったら勝手にメモリを開放してくれるらしい。



693:デフォルトの名無しさん
07/11/12 03:14:25
>>692
なるほどー 2005からの機能ですね

694:デフォルトの名無しさん
07/11/12 08:44:30
win32APIで虫眼鏡のプログラムを作ってます。
メモリデバイスコンテキストでマウスカーソル周辺を拡大したものを
ディスプレイのデバイスコンテキストに転送してるんですが、
マウスを移動させたときに先ほど拡大した部分を元に戻して
移動先のマウスカーソル周辺をまた拡大という風にしたいんです。

ですが、毎回GetDC(0)をしたとしても拡大した後のディスプレイでは初期化できないし、
hdc2という二つ目のデバイスコンテキストに拡大前の状態を退避させて
hdc1に復活させようと思ったのですがうまくいきません。
さらに、メニューを開いたり新たにソフトを起動させたりと、
刻々と変化するディスプレイの状態を追いかけつつ拡大できるようにしたいのです。

探し方が悪いのかもしれませんが、
いろいろ検索しましたが良い解決法が見つかりませんでした。
それに虫眼鏡のプログラミングを解説してるサイトもなさげだし・・・。

このような場合、どのような方法を用いればいいのでしょうか?
よろしくお願いします。

695:デフォルトの名無しさん
07/11/12 09:49:55
MSDNのサンプルじゃダメなの?

/****************************** Module Header *******************************
* Module Name: zoomin.c
*
* Microsoft ZoomIn utility. This tool magnifies a portion of the screen,
* allowing you to see things at a pixel level.
*
* History:
* 01/01/88 Created.
* 01/01/92 Ported to NT.
* 03/06/92 Cleanup.
*
****************************************************************************/

696:デフォルトの名無しさん
07/11/12 10:35:31
一応
.netを使ったC++/CLI は、普通のC++とは全く別物
.net使いたいならC#がいいと思う

697:デフォルトの名無しさん
07/11/12 12:45:26
argcとargvについて教えてください。

698:694
07/11/12 13:27:05
>>695
そのページってどこを探したらありますかね?
MSDNのサイト調べても見あたらなかったんですが…。
教えて君で申し訳ありません。

699:デフォルトの名無しさん
07/11/12 16:26:41
>>698
Platform SDKはインストールしてる?

700:デフォルトの名無しさん
07/11/12 17:51:17
Visual Studio 2005を使って、DirectXプログラムを作ろうとしてます。
ちなみにOSはWindowsXP Home Editionです。

ネット上の解説サイトで、Visual C++ Express Editionを使って
Windowsアプリケーションを作成する場合にはPlatform SDKが必要と書いてあるんですが、
Visual Studio 2005を使う際にもPlatform SDKをインストールしておいたほうが良いでしょうか?

701:デフォルトの名無しさん
07/11/12 17:58:14
今ならPlatform SDKよりWindows SDKお勧め。
DirectXには、DirectX SDKが必要。
ただし、DirectShowには上2つの内どちらかが必要。

702:デフォルトの名無しさん
07/11/12 18:04:12
>>701
ありがとうございます。

DirectShowが何かよくわかりませんが、
解説本がPlatform SDKで進めているので、
これとDirectX SDKでやってみます。


703:デフォルトの名無しさん
07/11/12 18:20:49
VisualC++ Expressでプログラム製作をしています。
プログラム実行中にコードを書き換えてAlt+F9を押すと、動的にプログラム
の内容を変えてくれますが、ボタンを押しても出来ない時があります。
これは何が原因なのでしょうか?

704:700
07/11/12 20:24:35
度々すみません。
DirectXのテストをしようと、
D:\Program Files\Microsoft DirectX SDK (November 2007)\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\CreateDevice.cpp
を自分のプロジェクトフォルダにコピー、既存の項目を追加して、
ソリューションのビルドをしてみると以下のエラーが出ました。

CreateDevice.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 "long __cdecl InitD3D(struct HWND__ *)" (?InitD3D@@YAJPAUHWND__@@@Z) で参照されました。
C:\Documents and Settings\(ユーザ名)\My Documents\Visual Studio 2005\Projects\d3dtest01\Debug\d3dtest01.exe : fatal error LNK1120: 外部参照 1 が未解決です。

そこで、Direct3DCreate9を含む「d3d9.lib」をプロジェクト名→プロパティ→リンカ→入力の「既存の依存ファイル」に追加したのですが、
まだ同じエラーが起こります。
D:\Program Files\Microsoft Platform SDK\Bin/Lib/Includeのパスは追加したのですが、
他に何が原因なんでしょうか?


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4926日前に更新/165 KB
担当:undef