最初ボタンが見えない
ボタンを大きく中央に表示するプログラムを作りました。
しかし中央をクリックするまでボタンが現れません。
どうしたら最初からボタンが現れるのでしょうか?
またフォントをクリエイトし続けてリソースは尽きないのでしょうか?
#include <windows.h>
#include <stdio.h>
HWND hB;
LONG WINAPI WinProcedure(HWND hW,UINT wM,UINT wP,LONG lP)
{
RECT rt;
char s[99];
int W,H;
static HFONT hF;
switch(wM)
{
case WM_PAINT:
GetClientRect(hW,&rt);
W=rt.right-rt.left;H=rt.bottom-rt.top;
DeleteObject(hF);
hF=CreateFont(H/4,W/4,0,0,FW_NORMAL,FALSE,FALSE,FALSE,SHIFTJIS_CHARSET,OUT_TT_ONLY_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_MODERN,"MS Pゴシック");
SendMessage(hB,WM_SETFONT,(WPARAM)hF,1);
MoveWindow(hB,W/4,H/4,W/2,H/2,1);
sprintf(s,"幅=%d,高さ=%d",H,W);SetWindowText(hW,s);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default: return(DefWindowProc(hW,wM,wP,lP));
}
}
WINAPI WinMain(HINSTANCE hI,HINSTANCE,LPSTR,int)
{
WNDCLASS wc;
--略--(ここにウィンドウクラスwcをクラス名"I"で登録)
RegisterClass(&wc);
hW=CreateWindow("I","ボタンの親",WS_OVERLAPPEDWINDOW,0,0,0,0,0,0,hI,0);
hB=CreateWindow("BUTTON","子",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,0,0,0,0,hW,0,hI,0);
ShowWindow(hW,SW_SHOWMAXIMIZED);
UpdateWindow(hW);
while(GetMessage(&ms,0,0,0))
{
TranslateMessage(&ms);
DispatchMessage(&ms);
}
return (ms.wParam);
}
お礼
配列変数に格納したいのです。そう書いたつもりでしが、おわかりにくかったでしょうか。