- ベストアンサー
API関数 GetPixel
質問ですが、Visual Basicで Option Explicit Private Declare Function Getpixel Lib "gdi32" (_ ByVal hdc As Long, _ ByVal x As Long, _ ByVal y As Long, _ ) As Long というソース部分があるのですが、これをVC++で書き直すとしたらどのようになるのでしょうか。また、VC++のAPI関数にはGetPixelはないのでしょうか。なにとぞよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
質問の意図がよくわかりませんが(^^; MFCだと COLORREF CDC::GetPixel(int x, int y, POINT pt); 単なるAPIだと COLORREF GetPixel(HDC hdc, int x, int y); て感じでしょうか… MSDNに入ってますよ…。
その他の回答 (3)
- thulala
- ベストアンサー率63% (7/11)
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=890976 API関数 GetPixel /////////////////////////////////////////////////////////////////////Win32 case WM_PAINT: hdc = BeginPaint(hWnd, &ps); for(int i=20;i<40;i++) { for(int j=20;j<40;j++) { SetPixel(hdc,i,j,RGB(255,0,0)); } } EndPaint(hWnd, &ps); break; case WM_LBUTTONDOWN: COLORREF color; hdc=GetDC(hWnd); color=GetPixel(hdc,30,30); //color=RGB(0,0,255); for(int i=120;i<140;i++) { for(int j=120;j<140;j++) { SetPixel(hdc,i,j,color); } } ReleaseDC(hWnd,hdc); break; /////////////////////////////////////////////////////////////////////MFC void CProject1View::OnDraw(CDC* pDC) { CProject1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; for(int i=20;i<40;i++) { for(int j=20;j<40;j++) { pDC->SetPixel(i,j,RGB(0,0,255)); } } } void CProject1View::OnLButtonDown(UINT nFlags, CPoint point) { COLORREF color; CDC *pDC=GetDC(); color=pDC->GetPixel(30,30); //color=RGB(255,255,0); for(int i=120;i<140;i++) { for(int j=120;j<140;j++) { pDC->SetPixel(i,j,color); } } ReleaseDC(pDC); CView::OnLButtonDown(nFlags, point); } /////////////////////////////////////////////////////////////////////
- gatyan
- ベストアンサー率41% (160/385)
ヘルプ(ExcelなどのVBAでも可)で調べればわかると思いますが Option Explicit … VBAで変数の宣言を強制する(宣言しないで使用するとエラーになる) これこそ何もする必要はありません。
- gatyan
- ベストアンサー率41% (160/385)
VBから Windows API を使用するための宣言だから、何もしなくてもいいのでは? 未定義関数としてコンパイルエラーになるなら、wingdi.hをインクルードすればいいと思いますよ。 …VC++のヘルプでGetPixelを検索すればGetPixelの説明が出てきて、インクルードすべきファイルが出ませんか?
補足
質問に答えてくれてありがとうございます。追加で質問ですが、 Option Explicit というのはどのような意味なのでしょうか。また、VC++にも書かなくてはならないのでしょうか。
お礼
ありがとうございます。確かに載っていたと思うのですが(汗)、VC++の使い方自体があまりよくわかっておらずなかなか苦労しています。APIを使いたいので2番目の式でいいと思います。本当にありがとうございますした。