テキストをDIBビットマップに、
DrawTextで、描画しているのですが、
複数行の時に、行間を変えたいと思っています。
字間は、APIで、デバイスコンテキスト
に設定できるのですが、
行間のやり方がわかりません。
知っている方がいたら、教えてください!

このQ&Aに関連する最新のQ&A

A 回答 (1件)

行間を変えたいなら、1行ずつ描画していくのが手っ取り早い気がします。

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q初心者がまず始めるプログラミング言語はなにはおすすめ?

こんにちは。
プログラムについてほぼまったくの初心者です。
シューティングゲームやファミコンの頃のようなマリオ系アクションがつくりたいです。また、就職時や特技として履歴書に書ける、役に立つプログラミング言語が学びたいです。
使っているOSはXPです。
C言語というものの初歩の初歩を本で学んだんですが、とても難しく感じ、途中で挫折してしまいました。
たくさんあるプログラミング言語の中から、初心者にもわかりやすくて、また、他のプログラミング言語への勉強にもなるようなプログラミング言語はあるでしょうか?
おねがいします。

Aベストアンサー

> C言語というものの初歩の初歩を本で学んだんですが、とても難しく感じ、途中で挫折してしまいました。

 厳しいですね。C言語の初歩程度でへこたれているようでは「就職時や特技として履歴書に書ける、役に立つプログラミング言語」のマスターはおぼつかないでしょう。が,C言語が初心者向きでないのもまた事実です。

 私としては,初心者には Python をお奨めします:

  ‐汚いプログラムが書きにくいような文法になっており,ああも書ける,こうも書けるといった,初心者を戸惑わせる文法事項が少ない
  ‐綺麗なプログラムを書かないと気持ち悪くなるという,良い習慣が身につく
  ‐文法が比較的単純
  ‐処理系が無料で手に入る
  ‐世界的に広く使われている
  ‐オブジェクト指向もできる

 その後で,JavaScript に進んでみてはいかがでしょうか。毛色の異なるいろいろな言語に慣れておく必要があり,将来,Java, C#, C, C++ などの言語に進むためにも。

 また,視野を広げるために Scheme, Common Lisp や ML, OCaml, Haskell, Erlang など関数言語のたぐいや,Perl や Ruby, sed, Awk などのスクリプト言語の本にも目を通されることをお勧めします(いずれも世界的に有名で,処理系が無料で手に入ります)。

 それから Java や C# などに取り組めば良いと思います。そして,C や C++ も勉強しておく必要があります。

 私自身は,仕事の都合でCOBOLとアセンブラを先に勉強し,かなり後になってC言語を勉強したので,C言語のポインタのどこが難しいのか分かりませんでした(C言語のポインタは簡単です(^^;)。ただし,アセンブラは余力があるときに限り取り組めばよいでしょう(でも,CASL関連の本には目を通しておくべき)。

> C言語というものの初歩の初歩を本で学んだんですが、とても難しく感じ、途中で挫折してしまいました。

 厳しいですね。C言語の初歩程度でへこたれているようでは「就職時や特技として履歴書に書ける、役に立つプログラミング言語」のマスターはおぼつかないでしょう。が,C言語が初心者向きでないのもまた事実です。

 私としては,初心者には Python をお奨めします:

  ‐汚いプログラムが書きにくいような文法になっており,ああも書ける,こうも書けるといった,初心者を戸惑わせる文法事項が少...続きを読む

Qメモリデバイスコンテキスト&ビットマップハンドル

static VOID _SetSize(pLayer object, LONG w, LONG h)
{
LayerEx * obj;

obj = (LayerEx *)object;
obj->size.x = w;
obj->size.y = h;

if(obj->hBitmap){
HDC hdc , hNewDC;
HBITMAP hNewBitmap;

hdc = object->GetDC(object);

hNewDC = CreateCompatibleDC(hdc);
hNewBitmap = CreateCompatibleBitmap(hdc , w , h);
SelectObject(hNewDC , hNewBitmap);
BitBlt(hNewDC , 0 , 0 , w , h , hdc , 0 , 0 , SRCCOPY);
DeleteObject(hNewDC);

object->DeleteDC(object , hdc);

DeleteObject(obj->hBitmap);
obj->hBitmap = hNewBitmap;
}

一度生成したビットマップのサイズを変更してもう一度ビットマップを生成するプログラムらしいのですが、

BitBlt(hNewDC , 0 , 0 , w , h , hdc , 0 , 0 , SRCCOPY);
↑なぜBitBltで転送しているのかわかりません。
新しく生成したビットマップをSelectObjectで登録したらいいような感じがするんですが・・・

DeleteObject(hNewDC);
↑あとこれはDeleteDC(hNewDC)の間違いなのでしょうか?ここも何しているか分かりません。

分かる人いたら教えてください。説明足りなかったらごめんなさい^^;


↓一応object->GetDC(object)のソースです。
static HDC _GetDC(pLayer layer)
{
LayerEx * obj;
HDC hResult;

obj = (LayerEx *)layer;

if(obj->hBitmap == NULL){
HDC hdc;

hdc = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
obj->hBitmap = CreateCompatibleBitmap(hdc, obj->size.x, obj->size.y);
hResult = CreateCompatibleDC(hdc);
SelectObject(hResult, obj->hBitmap);
DeleteDC(hdc);
}
else{
hResult = CreateCompatibleDC(NULL);
SelectObject(hResult, obj->hBitmap);
}

return hResult;
}

static VOID _SetSize(pLayer object, LONG w, LONG h)
{
LayerEx * obj;

obj = (LayerEx *)object;
obj->size.x = w;
obj->size.y = h;

if(obj->hBitmap){
HDC hdc , hNewDC;
HBITMAP hNewBitmap;

hdc = object->GetDC(object);

hNewDC = CreateCompatibleDC(hdc);
hNewBitmap = CreateCompatibleBitmap(hdc , w , h);
SelectObject(hNewDC , hNewBitmap);
BitBlt(hNewDC , 0 , 0 , w , h , hdc , 0 , 0 , SRCCOPY);
DeleteObject(hNewDC);

object->DeleteDC(object , hdc);

DeleteO...続きを読む

Aベストアンサー

★アドバイス
>BitBlt(hNewDC , 0 , 0 , w , h , hdc , 0 , 0 , SRCCOPY);
>↑なぜBitBltで転送しているのかわかりません。
 最初にCreateCompatibleDC、CreateCompatibleBitmap、SelectObjectの3つで
 objectのデバイスコンテキストと互換のあるメモリ・デバイスコンテキストを
 作成しています。
 このメモリ・デバイスコンテキストにobjectのイメージ画像をBitBltを使って
 コピー(転送)しています。つまり、新しく作られたメモリ・デバイスコンテキストは
 真っ黒なのでobjectのイメージ画像でコピーしたわけ。
>DeleteObject(hNewDC);
>↑あとこれはDeleteDC(hNewDC)の間違いなのでしょうか?ここも何しているか分かりません。
 間違い⇒『DeleteObject(hNewDC);』
 正しい⇒『DeleteDC(hNewDC);』
 これはsizumさんの考えであっていると思います。
 hNewDCはGDIオブジェクトではなくメモリ・デバイスコンテキストなので。
・object->GetDC(object)関数について
 この関数はobj->hBitmapがNULLなら画面(ディスプレイ全体)と互換のある
 メモリ・デバイスコンテキストを作成します。
 そしてobj->hBitmapがNULL以外の時はメモリ・デバイスコンテキストだけを
 複製してobj->hBitmapをSelectObjectで割り付けています。
 ※何にどう使うか分かりませんが、object->GetDC()関数を複数回呼び出すと
 ※obj->hBitmapのハンドルを共有するようになるようです。切り替えるためかも。
・結局_SetSize関数は
>一度生成したビットマップのサイズを変更してもう一度ビットマップを生成するプログラムらしいのですが、
 ↑
 この通りの動作を行っているようです。
 もう少し正確に(私の推測で)表現すると一度生成したメモリ上にある
 ビットマップを新たなサイズで生成しなおしているようです。多分。
 ※object->DeleteDC()の内容もあればもう少し正確に分かるかも正ないですね。

★アドバイス
>BitBlt(hNewDC , 0 , 0 , w , h , hdc , 0 , 0 , SRCCOPY);
>↑なぜBitBltで転送しているのかわかりません。
 最初にCreateCompatibleDC、CreateCompatibleBitmap、SelectObjectの3つで
 objectのデバイスコンテキストと互換のあるメモリ・デバイスコンテキストを
 作成しています。
 このメモリ・デバイスコンテキストにobjectのイメージ画像をBitBltを使って
 コピー(転送)しています。つまり、新しく作られたメモリ・デバイスコンテキストは
 真っ黒なのでobjectのイメージ画像で...続きを読む

Q初心者が選ぶべきプログラミング言語は?

初心者が選ぶべきプログラミング言語は?

プログラミングの勉強を始めようと思っている超初心者です。この手の質問はこちらでもかなり検索すればヒットしますが、いまいち良くわからないのであえて質問します。

私のような初心者がプログラミングをはじめるときどの言語を選んだらよいでしょうか?
重視することは「将来性があって」「有用性のある」「標準的な」言語です。
言語選びにはしたいことの明確なビジョンがないといけないと言われますよね
私の目的はwindowsのフリーソフトのようなツールを作りたいことを第一目標にしています
後々は勉強の具合により目的も変えてゆきたいと思っていますが・・・

今現在の理解では・・・
基礎はCで、ビジネスではJavaで、WebはPHP、ぐらいしか解りません。どれもプログラミングの共通点を
有していて勉強すればある程度は共通知識を身につけられることも言われてはいますが
言語選びを間違えたくないなと思いまして。

Cをすこし勉強したときいつwindowsアプリのようなウィンドウをつくれるかももわかりませんでした。
現在自分ができることといったらExcelでVBAを組んで(かなり低レベルですが)自動化させる程度です。


ビジネスの世界、SEなどのプログラマーの世界で今注目されている言語や花形言語など、現在業界のオーバービューも知りたいです、詳しい方どうぞよろしくお願いします。

※個人的にはRubyが面白そうで、いろんなことができそうだなと思っています。

初心者が選ぶべきプログラミング言語は?

プログラミングの勉強を始めようと思っている超初心者です。この手の質問はこちらでもかなり検索すればヒットしますが、いまいち良くわからないのであえて質問します。

私のような初心者がプログラミングをはじめるときどの言語を選んだらよいでしょうか?
重視することは「将来性があって」「有用性のある」「標準的な」言語です。
言語選びにはしたいことの明確なビジョンがないといけないと言われますよね
私の目的はwindowsのフリーソフトのようなツールを作りたい...続きを読む

Aベストアンサー

私は10数年Windows用のクライアントソフトを開発していますが・・・

>重視することは「将来性があって」「有用性のある」「標準的な」言語です。



>私の目的はwindowsのフリーソフトのようなツールを作りたいことを第一目標にしています

が、合致しません。

WindowsというクライアントPC 用のアプリ開発自体が、「将来性がなく」「標準的でない」方向にあると思います。エンジニアの求人情報を調べればわかります。


それから、身につけたい技術の選び方として、「言語」はあまり意味がないです。
C言語をマスターしたからといって、WindowsやiPhoneで思い通りにソフト開発ができるわけじゃないです。

なので、最初は「どのプラットフォームの開発を身につけたいか」を決めた方が適切なアドバイスがもらえると思います。

Windows?iPhone?Webアプリ? SaaS系?などなど

プラットフォームが決まれば、今習得すべき言語は(本人の希望によらず)勝手に決まってしまいます。AndoroidならJavaとか。

「将来性」はともかく、Windowsアプリを作りたいのであれば、.NET Framework で VBでもC#でもお好きな方を使って開発するのが一般的ですが、それでもハード性能を100%使い切るばりばりの3Dゲームソフトを作りたいなら Win32API & C++ & DirectXでどうぞ、という感じです。その前にWindowsで3Dゲームを作ること自体が今となっては疑問です。XBOX + XNAの方がいいかもしれません。
将来性をもってゲームを作りたいなら、AndroidやiPhone で OpenGLアプリを勧めたいですね。

という感じで、言語を選ぶこととプラットフォームを選ぶことは別で、多くの場合プラットフォームが決まれば最適な言語をマスターするしかないということです。

私は10数年Windows用のクライアントソフトを開発していますが・・・

>重視することは「将来性があって」「有用性のある」「標準的な」言語です。



>私の目的はwindowsのフリーソフトのようなツールを作りたいことを第一目標にしています

が、合致しません。

WindowsというクライアントPC 用のアプリ開発自体が、「将来性がなく」「標準的でない」方向にあると思います。エンジニアの求人情報を調べればわかります。


それから、身につけたい技術の選び方として、「言語」はあまり意味がないです。
C言語を...続きを読む

Qメモリデバイスコンテキストを用いた描画処理

お世話になります。
Borland C++ 5.5.1 for Win32で簡易な画像ビュアーを開発しています。
基本的な動作は完成したのですが、ある条件下で発生する問題を回避するために、メモリデバイスコンテキストを用いようと考えています。
ところが、後述のように変更したところ、画像がまったく表示されなくなりました。(ウィンドウ背景色で塗りつぶされたままです。一瞬たりとも表示されません。)
Windowsプログラムに慣れていないため解決に難儀しています。
どなたか原因と対策をご教示くださいますようよろしくお願いします。

//////////////////////////
//変更前 画像表示される//
//////////////////////////
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
/* ~省略(画像処理)~ */
StretchDIBits(hdc,~,SRCCOPY);//処理した画像をウィンドウへ
EndPaint(hWnd, &ps);
break;

////////////////////////////
//変更後 画像表示されない//
////////////////////////////
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hmemdc = CreateCompatibleDC(hdc);
/* ~省略(画像処理)~ */
StretchDIBits(hdc,~,SRCCOPY);//処理した画像をMemoryDCへ
BitBlt(hdc, 0, 0, rc.right, rc.bottom, hmemdc, 0, 0, SRCCOPY);//MemoryDCからウィンドウへ(rcはクライアント領域)
DeleteDC(hmemdc);
EndPaint(hWnd, &ps);
break;

お世話になります。
Borland C++ 5.5.1 for Win32で簡易な画像ビュアーを開発しています。
基本的な動作は完成したのですが、ある条件下で発生する問題を回避するために、メモリデバイスコンテキストを用いようと考えています。
ところが、後述のように変更したところ、画像がまったく表示されなくなりました。(ウィンドウ背景色で塗りつぶされたままです。一瞬たりとも表示されません。)
Windowsプログラムに慣れていないため解決に難儀しています。
どなたか原因と対策をご教示くださいますようよろしく...続きを読む

Aベストアンサー

StretchDIBitsは、hdcへ出力しているぞ
hmemdcへは何も出力していないみたいだぞ
その後、BitBltでhmemdcをhdcへ出力しているから
何にも表示されないのだ

メモリデバイスコンテキストでやりたいなら、
1.CreateCompatibleBitmapで空のHBITMAPを作成する
2.SelectObject(hmemdc, hBitmap)とかで、hmemdcに
  空のHBITMAPをくっつける
(これで、hmemdcへの描画処理がhBitmapのメモリに
描かれることになる)
3.StretchDIBitsでhmemdcに出力する
(画像データ -> hBitmap)
4.BitBltでhmemdcをhdcへ出力する
(hBitmap -> ディスプレイ)

※hBitmapとhmemdcの解放を忘れないでちょーだい!
解放する順番によってメモリリークがおきちゃうぞ
後に作成したものを先に解放するのだー

おちまい

Q僕は高校生なんですがプログラミング言語を将来のために学びたいと思っています。まだ初心者なので調べた結

僕は高校生なんですがプログラミング言語を将来のために学びたいと思っています。まだ初心者なので調べた結果RubyかPythonのどちらかにしようと思うのですがどちらがいいでしょうか?
なるべく多くの意見を参考にしたいです。

Aベストアンサー

入門書とか入門サイトとか少し読んでみて、直感的に「なんとかなりそう」と思った方。
悩んでないで、直感を信じてとにかく始めることです。


プログラムは大きく
・やろうとしていることをどうやって実現するか?
・それをプログラミング言語でどうやって記述するか?
の2つの要素があります。

前者の「やり方」は、言語によろ違いが少ないので、一度身に付くと、言語が変わっても応用が効きます。
後者の「書き方」は(多少似たところはあるものの)言語毎に違うので、「やり方」程は応用が効きません。

「最初の言語」はどうしても「やり方」「書き方」の両方を学習しなければなりません。
ですが、次からは「書き方」中心の学習になるので、「最初の言語」ほどは苦労しないはずです。


なので、とにかく早く始めて、「やり方」を身に付けていきましょう。
直感がはずれて、「この言語は無理」と感じたとしても、「次の言語」へは1から始めるよりははるかに楽になっているはずです。

Qビットマップに描画をしてピクチャーコントロールに貼り付けるためには?

ビットマップに描画をしてピクチャーコントロールに貼り付けるためには
どうすればよいでしょうか?

ネットで検索しましたそして、
下のようなコードを書きましたがうまくゆきません。


void CXXXView::OnButton()
{


CStatic m_ctlImage; // ピクチャーボックスに関連付けした変数
CBitmap m_bmpImage; // ピクチャーボックスに貼り付けるイメージ
CDC m_dcImage; // Bitmap描画用のDC


CDC* pDC = m_ctlImage.GetDC();
m_dcImage.CreateCompatibleDC(pDC);

CRect Cltsz;
picture1.GetClientRect(&Cltsz);

m_bmpImage.CreateCompatibleBitmap(pDC,Cltsz.Width(),Cltsz.Height());

CBitmap* pOld=m_dcImage.SelectObject(&m_bmpImage);


CPen myPEN(PS_SOLID,5,RGB(0,0,255));
CPen* oldPEN=m_dcImage.SelectObject(&myPEN);
m_dcImage.MoveTo(10,10);
m_dcImage.LineTo(100,100);

m_dcImage.SelectObject(oldPEN);

m_dcImage.SelectObject(pOld);

m_ctlImage.SetBitmap(m_bmpImage);

}

この様にしましたが、ピクチャーコントロールには
何も描画されません、

何故でしょうか?

VS2005で、ボタンをクリックした
イベントで描画する場合です、

直線とかは、問題なく描画できました。

ビットマップに描画して貼り付けたいのです、

よろしくお願いします

ビットマップに描画をしてピクチャーコントロールに貼り付けるためには
どうすればよいでしょうか?

ネットで検索しましたそして、
下のようなコードを書きましたがうまくゆきません。


void CXXXView::OnButton()
{


CStatic m_ctlImage; // ピクチャーボックスに関連付けした変数
CBitmap m_bmpImage; // ピクチャーボックスに貼り付けるイメージ
CDC m_dcImage; // Bitmap描画用のDC


CDC* pDC = m_ctlImage.GetDC();
m_dcImage.CreateCompatibleDC(pDC);

CRect Cltsz;
picture1.G...続きを読む

Aベストアンサー

CStatic型とCBitmap型の変数は クラスのメンバー変数にします

ViewクラスのOnCreateなどでm_ctlImageのインスタンスを作成しておきます

ボタンのOnClickイベントで
CDC* pDC = m_ctlImage.GetDC();
CDC* pMemDC = new CDC;
pMemDC->CreateCompatibleDC( pDC );
m_ctlImage.ReleaseDC( pDC );
if (m_bmpImage.m_hObject != NULL ) {
  // 前回作成オブジェクトを破棄する
  m_bmpImage.DeleteObject();
}
CRect rc;
m_ctlImage.GetClientRect( &rc );
m_bmpImage.CreateCompatibleBitmap( pMemDC, rc.Width(), rc.Height() );
CBitmap* pold = pMemDC->SelectObject( &m_bmpImage );
CPen myPen(PS_SIOLID, 5, RGB( 0, 0, 255 ) );
PCen*pOldPen = pMemDC->SelectObejct( &myPen );
pMemDC->MoveTo(10, 10 );
pMemDC->Lineto( 100, 100 );
pMemDC->SelectObejct( pOld );
pMemDC->SelectObject( pOldPen );
pMemDC->DeleteDC();
delete pMemDC;

m_ctlImage->setImage( m_bmpImage );
といった具合です

ご質問のコードではm_ctlImage.GetDC()でアサートが発生しませんか
ローカル変数のCBitmapでは関数から出た時点で破棄されてしまうので
スタティックコントロールが再描画される時点では 無効なビットマップハンドルになってしまうため描画されないのだと思います

CStatic型とCBitmap型の変数は クラスのメンバー変数にします

ViewクラスのOnCreateなどでm_ctlImageのインスタンスを作成しておきます

ボタンのOnClickイベントで
CDC* pDC = m_ctlImage.GetDC();
CDC* pMemDC = new CDC;
pMemDC->CreateCompatibleDC( pDC );
m_ctlImage.ReleaseDC( pDC );
if (m_bmpImage.m_hObject != NULL ) {
  // 前回作成オブジェクトを破棄する
  m_bmpImage.DeleteObject();
}
CRect rc;
m_ctlImage.GetClientRect( &rc );
m_bmpImage.CreateCompatibleBitmap( pMe...続きを読む

QC言語でプログラミングできるソフト(初心者)

大学1年で今年から始めてプログラミング(C言語)を学ぶものです。
今のところif文やfor文、関数などの基本をかじった程度なのですが
なんとか自分の家のパソコンでプログラミングを行いたいので、
何か良いソフトのようなものはないでしょうか?(有料でも構いません)

実際に文などが書けて、コンパイルし、結果を出力してくれるものです。
パソコン自体がまだ初心者なので、できればで良いのですが、分りやすいものをお願いします<m(__)m>

Aベストアンサー

#4さんも書かれてますが、大学であればunixかLinuxの環境だと思います。
なので、私もcygwinをお勧めします。windows上にuinxの環境を構築できて、gccという無料のコンパイラが利用できます。
それにunixやlinuxの環境構築の良い勉強になります。

簡単な導入の仕方がありますので試してみてください。
http://www.twcu.ac.jp/~osada/comp2a/cygwin.html
こちらも参考に。
http://programnet.hp.infoseek.co.jp/coloum/colum.html

QWin32APIとC言語を使ってビットマップを表示したいのですが、表示できません。

小生、只今Win32APIとC言語を使い、WindowsXPSP3上でBCC5.5.1とBCCFormを使いビットマップを表示するプログラムを書いていますが、
"猫でもわかるWindows~"などに掲載されているサンプルを実行してみますが、ビットマップが表示されません。

ウィンドウクラスの登録、ウィンドウの生成などはほぼ、
http://gurigumi.s349.xrea.com/programming/visualcpp/intro4.html
に掲載されている、サンプルプログラムと同じです。
違いと言うと、ResBitmap.hをインクルードしているくらいです。

問題はウィンドウプロシージャにあって、
下記にウィンドウプロシージャ、WndProc関数を記します。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
HDC hdc, hdc_mem;
PAINTSTRUCT ps;
HBITMAP hBmp;
BITMAP bmp_info;
static int w, h;

switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);

hBmp = LoadBitmap(hInst, "MYBMP");
if(hBmp == NULL){
MessageBox(hWnd, "ビットマップ読み込み失敗", NULL, MB_OK);
return 0;
}

GetObject(hBmp, (int)sizeof(BITMAP), &bmp_info);

w = bmp_info.bmWidth;
h = bmp_info.bmHeight;

hdc_mem = CreateCompatibleDC(hdc);

SelectObject(hdc_mem, hBmp);
BitBlt(hdc, 0, 0, w, h, hdc_mem, 0, 0, SRCCOPY);

DeleteDC(hdc_mem);
DeleteObject(hBmp);

EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return 0;
}

return DefWindowProc(hWnd, msg, wp, lp);
}
この状態で実行ファイルを、
bcc32 -W source.cpp
brc32 Bitmap.rc source.exe
とし、出来上がったsource.exeを実行すると"ビットマップ読み込み失敗"のメッセージボックスが表示されてしまい、ウィンドウには何も表示されません。

ちなみに、Bitmap.rcは下記の様になってます。
MYBMPBITMAPDISCARDABLE"C:\Documents and Settings\ShuNakagawa\My Documents\C\test.bmp"

ResBitmap.hは下記の様になってます。
#defineMYBMP100

以上です。
諸先輩方、アドバイス宜しくお願い致します。
もう悩んで2ヶ月程経ちます、どうか本当に助けてください。
※LoadBitmapの第2引数をMAKEINTRESOURCE(MYBMP)とし、
 実行ファイルを作成しましたが、結果は同じでした。。。

小生、只今Win32APIとC言語を使い、WindowsXPSP3上でBCC5.5.1とBCCFormを使いビットマップを表示するプログラムを書いていますが、
"猫でもわかるWindows~"などに掲載されているサンプルを実行してみますが、ビットマップが表示されません。

ウィンドウクラスの登録、ウィンドウの生成などはほぼ、
http://gurigumi.s349.xrea.com/programming/visualcpp/intro4.html
に掲載されている、サンプルプログラムと同じです。
違いと言うと、ResBitmap.hをインクルードしているくらいです。

問題はウィンドウ...続きを読む

Aベストアンサー

Bitmap.rcにはResBitmap.hをインクルードしていますか?
インクルードしている場合はMAKEINTRESOURCE(MYBMP)になるハズ……ですけど。

>"ビットマップ読み込み失敗"のメッセージボックスが表示されてしまい

GetLastError()ではなんと言っています?
hInstが不正ということはありませんか?
LoadImage()の場合はどうですか?

Q初心者におススメのプログラミング言語は何ですか?

C C++ Java などの言語がありますが、中でも初心者(素人)が始めるにあたって一番おススメの言語は何ですか。

 教えてください。 よろしくお願いします。

Aベストアンサー

JavaScriptがオススメです。
理由は
1)ネット上に情報がたくさんある
2)開発環境の構築が容易
3)実行環境の構築が容易
4)実行時の動作がグラフィカルなので「達成感」がある
特に4は重要です。

必要に迫られない勉強は、やる気を継続させる事が結構難しかったりします。
コマンドプロンプト上で実行するような言語の場合、せっかく苦労してプログラムを組んでも
動作結果が地味な事が多いため、動いた事に対する感動が薄くなります。
これが積み重なると、途中で投げ出す結果につながりかねません。
その点、JavaScriptのようにダイアログを出したり色を変えたりといった
動作をさせる言語であれば、やる気の低下を抑える事が出来ます。

もっとダイナミックな動きをさせたいのであれば、
Delphi(Pascal)、C#、VBなどを使うのもいいでしょう。
どれも無料版の開発環境を配布しています。

将来プロになる事を考えているのであれば現在よく使われているPHPや
今後よく使われることになると思われるPython、Rubyなどを勉強するのもいいかもしれませんが
1つのプログラミング言語を身に付ければ他の言語に移るのは割と楽ですので
最初は勉強のしやすさを基準に選ばれると良いかと思います。

JavaScriptがオススメです。
理由は
1)ネット上に情報がたくさんある
2)開発環境の構築が容易
3)実行環境の構築が容易
4)実行時の動作がグラフィカルなので「達成感」がある
特に4は重要です。

必要に迫られない勉強は、やる気を継続させる事が結構難しかったりします。
コマンドプロンプト上で実行するような言語の場合、せっかく苦労してプログラムを組んでも
動作結果が地味な事が多いため、動いた事に対する感動が薄くなります。
これが積み重なると、途中で投げ出す結果につながりかね...続きを読む

Qビットマップハンドルからビットマップボタンを作りたいです

MFC初心者です。どうかよろしくお願いいたします。
環境はVC++6.0 MFC ダイアログベースです。

HBITMAP hBitmap;

hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), (LPCTSTR)sSaveFile,IMAGE_BITMAP, 0,0,LR_LOADFROMFILE);

を使ってビットマップハンドルを取得しました。

ここからボタンに貼り付ける方法がわかりません。
リソースにボタンを作った後、どのようにすれば良いでしょうか?

あと、ボタンの好きな位置にビットマップを貼り付ける方法も教えていただけると幸いです。

Aベストアンサー

あら惜しいとこまで……。

クラスウィザードでボタンのメンバ変数を追加しましょう。タイプはCButtonで。

ほいで OnInitDialog あたりで CButton::SetBitmap メソッドなんかを呼び出すのが手っ取り早い方法です。
(ボタンにはBS_BITMAPスタイルを忘れずに)

あと、表示を細かく調整したいならオーナードローになるかと。


人気Q&Aランキング

おすすめ情報