プロが教える店舗&オフィスのセキュリティ対策術

よくわかっていないのですが、

switch (message)
{
case WM_CHAR:
というところで、wParamから、文字の情報取得して、
HDC宣言して、TextOut関数使用…、の途中で、
wParamの文字情報は、どのようにすれば
TextOut関数に渡せるのでしょうか?
Visual C++を勉強したてで、勉強の成果をと思い、
テキストエディタを作ってみたいと思ったのですが、
さて、どうしたらよいのでしょうか?
エラー内容は、unsigned int → const char *
にできません、ということなのですが、
じゃぁ、型の変換の仕方は?という感じです。
初心者なので、簡単な例をつけて説明してくださると助かります。よろしくお願いします。

A 回答 (1件)

TextOut(~, (char*)wParam, ~);



と、char*型に型変換すると良い気がします。

--
TextOut関数の宣言、

TextOut(~, (const char*)szText, ~);

のconstキーワードは、
「TextOut関数に渡したwParamの値をTextOut関数の内部で書き換えることはありませんので安心してね。」
という意味ですので、

unsigned int
long double

などの2つの単語で宣言される「型」とは意味合いが異なります。
ヘルプの説明ですと釈然としませんが、参考URLなどを読んでみてください。

プログラマの正体!? - 誰が為にconst
http://www.asahi-net.or.jp/~vx2t-andu/lets/20020 …

参考URL:http://www.asahi-net.or.jp/~vx2t-andu/lets/20020 …
    • good
    • 0
この回答へのお礼

何が何だかわからないのですが、
以下のソースで、できました。
お手数掛けました。また、よろしくお願いします。
ありがとうございました。

//ウインドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
POINT pt;
char s;
HDC hdc;
//メッセージの種類に応じて処理を分岐する。
switch (message)
{
case WM_CHAR:
GetCaretPos(&pt);
s=LOWORD(wParam);
hdc=GetDC(hWnd);
HideCaret(hWnd);
TextOut(hdc,pt.x,pt.y,&s,1);
SetCaretPos(pt.x+13,pt.y);
ShowCaret(hWnd);
ReleaseDC(hWnd,hdc);
return 0;
case WM_CREATE:
CreateCaret(hWnd,NULL,3,20);
ShowCaret(hWnd);
return 0;
case WM_DESTROY:/*ウインドウが破棄されたときの処理*/
PostQuitMessage(0);
return 0;
default:/*デフォルトの処理*/
return DefWindowProc(hWnd,message,wParam,lParam);
}
}

お礼日時:2004/02/19 17:10

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