• 締切済み

GetDCの引数や戻り値

タイトルに記載の関数に限らないのですが、msdnなどを見ると、 同じ関数でも引数と戻り値が異なるのですが、どういう事か教えていただけないでしょうか? 例)GetDCの場合 HDC GetDC( HWND hWnd // ウィンドウのハンドル ); 一方では CDC* GetDC( ); SDKとMFCの違いという事でしょうか? もしその場合、MFCのソースにてSDKの関数は記述できないという事でしょうか? というか、MFCとかSDKっていうのは何に依存するのでしょうか? (プロジェクト?クラス?) 思いっきり初心者なのでどなたか教えてくださいm(__)m または、参考になるホームページなどがございましたらご教授願いますm(__)m

  • ya-cha
  • お礼率68% (184/268)

みんなの回答

  • chie65535
  • ベストアンサー率43% (8519/19367)
回答No.1

SDKの関数と、MFCの関数は、同じ名前であっても「クラスが異なる」ので「別の関数」です。 HDC GetDC(HWND hWnd); は「名前なしクラス」に属す、ライブラリ関数です。 CDC* GetDC(); は「CWndクラス」に属し、メンバ関数です。メンバ関数ですので、CWndオブジェクトが無ければ呼び出せません。 両方を同時に使用する場合は、それぞれのヘッダーファイルをインクルードして使用します。

ya-cha
質問者

お礼

ご回答ありがとうございますm(__)m 質問とはずれてしまいますが、使いたい関数から、「何をインクルードすべきか」というのが簡単に分かるようなホームページなりツールのようなものはございますでしょうか?

ya-cha
質問者

補足

すいません、お礼に記載の内容は解決済みです。 (msdnに載ってました) >両方を同時に使用する場合は、それぞれのヘッダーファイルを >インクルードして使用します。 とのことですが、エラーになってしまいました・・・。 明示的に記述する方法などが必要なのでしょうか?

関連するQ&A

  • ID を引数にとる場合の記述方法

    MFC のダイアログベースでプログラミングをしています。 関数について、引数の記述方法が分からずに困っています。 以下のように、関数の途中で現れる IDC_SOMOTHING に相当する 部分を引数としたいと思っています。 この場合、どのように記述すればよいのでしょうか。 戻り値 関数名(引数) {       ・       ・       ・ // デバイスコンテキストの獲得 CWnd* h = GetDlgItem(IDC_SOMETHING); CDC* pDC=h->GetDC();       ・       ・       ・ } 引数が文字列なら    戻り値 関数名(CString temp){}              ̄ ̄ ̄ ̄ ̄ ̄ とできますが、ID を引数にとる場合、どのように引数を記述したらよいのでしょうか。 教えていただけると幸いです。

  • SelectObjectの戻り値

    SDKについて勉強中なのですSelectObject関数についてどうしても引っかかることがあります。 とあるサイトにはSelectObjectは、前に結びついていたハンドルを戻り値とすると書いてありました。 http://kerochan.no-ip.com/vcsdk/letsprog/chap14.htm に書いてある例で、 ******************************************* hBit = CreateCompatibleBitmap(hdc,ScrnSize.right,ScrnSize.bottom); SelectObject(memdc,hBit); SelectObject(memdc,hBit);*****(1) hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH); hDefBrush = SelectObject(memdc,hBrush);*****(2) PatBlt(memdc,0,0,ScrnSize.right,ScrnSize.bottom,PATCOPY); ReleaseDC(hwnd,hdc); SelectObject(memdc,hDefBrush);*****(3) DeleteObject((HGDIOBJ)hBrush); ****************************************** となっているのですが、(1)でmemdcと関連付けたビットマップハンドル(hBit)は、(2)でmemdcに新たにブラシハンドル(hBrush)と関連付けることによって切り離されてしまうのでしょうか?それとも切り離されるものは種類単位なのでしょうか?ブラシハンドルを関連付けたら前のブラシハンドルが返って来るとか・・ SelectObject関数の戻り値に付いていまいちはっきりしていないのでわかる方がいらしたらよろしくお願いします。

  • hDC=::GetDC(m_hWnd)とhDC=GetDC(m_hWn

    hDC=::GetDC(m_hWnd)とhDC=GetDC(m_hWnd)の違いについて 表題について,お伺いします。 ビットマップをダイアログに表示するソースコードを 書いてますが,参考書やさまざまなHPでは, ウィンドウハンドルをゲットする際に hDC=::GetDC(m_hWnd) ○ ↑と書かれております。 hDC=GetDC(m_hWnd)  × ↑はなぜだめなのでしょう。  ●このスコープ演算子::は何の為につけているのですか? ::が無いとエラーになるので必要みたいですが・・

  • AfxBeginThread の引数について

    こんにちは。 MFCを使用した新規スレッド作成を行うために、API「AfxBeginThread」を使用しようと考えています。 そこで、質問なのですが、新規作成したスレッドに引数を渡したい場合、AfxBeginThreadの第3引数に設定するようなのですが、複数の引数を渡したい場合には、具体的にどのような手順を踏めばよいのでしょうか。 MSDNによると、第3引数の説明は、「pfnThreadProc の関数宣言の引数に見られるような、制御関数に渡す引数。」とありますが、いまいち分かりません。 よろしくお願いします。

  • デバイスコンテキストについて

    いつもお世話になります。 MFCアプリケーションWIZでデスクトップアプリを作成しているのですが、 HDC型のデバイスコンテキストの取得方法がわかりません。 CWndのメンバ変数m_hWndにウィンドウハンドルが格納されるというのは わかったのですが、 hDC = GetDC(m_hWnd)だと間違っているのですよねー。 ご教示よろしくお願い致します。

  • CreateStatusWindowの第2引き数の書き換え

    ステータスバー HWND CreateStatusWindow( LONG style, // ウィンドウスタイル LPCTSTR lpszText, // 第1区画に表示される文字列 HWND hwndParent, // 親ウィンドウハンドル UINT wID // ステータスバーのID ); の第2引き数の書き換えはどのように行えばよいのでしょうか? 猫でも分かるC++の第59章 ステータスバーを作る その3 http://www.kumei.ne.jp/c_lang/sdk/sdk_59.htm を参考にしているんですが、ステータスバーの文字を、他のウインドウに 隠れてしまっても保持するようにさせる方法が分かりません。 第2引き数の書き換えができればそれは可能になると思います。 上記サイトではSetTimerとSB_SETTEXTを使用して、それと同等の表示効果を実現できていますが、 もっとよい方法(第2引き数の書き換え)などができるのではないかと思いました。

  • ウィンドウハンドルの取得方法について

    よろしくお願いします。 WIN98 VC++6.0 MFC にて 色々勉強しておりますが、今だにウィンドウハンドルの取得方法が良く分かりません。 SDKのサンプルを見ると、なるほどそうするのか。と思いますが、MFCになると分からなくなります。 たとえば、 ウィザードのデフォルトに従いダイアログベースでのプロジェクトを作成し、ボタン1と2を配置します。 以下のコードでボタン1を非表示にできます。 void CPppDlg::OnButton2() { CWnd* pButton1 = GetDlgItem (IDC_BUTTON1); pButton1->ShowWindow(SW_HIDE); } このコードにおいて、 1.SDKの BOOL ShowWindow( HWND hWnd, // handle to window int nCmdShow // show state of window ); を用いて引数が2個の形式に書きかえることは可能でしょうか? 2.可能であれば、具体的にはどう記述すれば良いのでしょうか?

  • MFC VC++ 6.0 使用 

    class patchmodel{ double a; double b; private: void Draw(); } void patchmodel::Draw(){ CDC DC; CDC* dc = GetDC(); dc->TextOut((int)a,(int)b,"HELLO"); ReleaseDC( dc ); } と 実行してみたところ エラーがでます。 error C2660: 'GetDC' : 関数が不正な 0 個の実引数をともなって呼び出されました。 error C2660: 'ReleaseDC' : 関数が不正な 1 個の実引数をともなって呼び出されました。 CModel::OnDraw(CDC* pDC) を あえて使わずに 実行したいので このように 簡単なもので 試して見たのですが、うまくいきません。 GetDC の使い方を まちがえているのでしょうか? お返事ください。

  • GetPixelに使うHDCの作り方

    ビットマップハンドルhBitmap の(x,y)の画素の色を読み取るプログラムに使うデバイスコンテキストとして、  hDC = CreateCompatibleDC(NULL);  SelectObject(hDC, hBitmap);  rgb = GetPixel(hDC, x,y);  DeleteDC(hDC); のように、NULL を指定して、画面と互換性のあるメモリデバイスコンテキストを指定したのですが、正しい色が読み出せません。hDC = GetDC(NULL);でも同じく駄目でした。hDCはどのように作ったらよいのでしょう。 なお、関数の中でGetPixel()を使いたいので、hWnd などは使えません。

  • JNIを使った、全角半角が混在した文字列の引数、戻り値の受け渡し

    JNIを使用して、JavaからExcelを操作しようと考えております。 ワークブックを開くDLL関数を用意し、 その際に、引数としてファイルのフルパスを、戻り値として開かれたブックの名称を返すようにしたのですが、 半角英数の文字は正しく帰ってくるのですが、全角のファイル、及びフォルダを引数に指定した場合、 文字化けが発生し、ブックを開けず、困っております。 JNIを使った全角半角が混在した引数、戻り値の関数の受け渡しを行なうにはどのようにすればよいのでしょうか。 ご回答をよろしくお願いいたします。

専門家に質問してみよう