我的这个SDK程序为什么不能显示标题?
dszch 2003-02-12 11:24:13 //我的SDK程序,已调通,为什么不能显示标题?语法我检查了应该没有错误.
//我猜想可能是环境变量的设置问题
//请高手指点
#include <windows.h>
#include <stdio.h>
#include <math.h>
#define MAX_NUM 10000
#define PANE_CONS 100
#define PI 3.1415927
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
////////////////////////建立,注册窗口类
WNDCLASS wc ;
wc.style = CS_HREDRAW | CS_VREDRAW ;
wc.lpfnWndProc = WndProc ;
wc.cbClsExtra = 0 ;
wc.cbWndExtra = 0 ;
wc.hInstance = hInstance ;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wc.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wc.lpszMenuName = NULL ;
wc.lpszClassName = szAppName ;
//////////////////////注册窗口类
if (!RegisterClass (&wc))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
/////////////////////(二)创建窗口
hwnd = CreateWindow (szAppName, // window class name
TEXT ("欢迎你的到来!"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
/////////////////////(三)显示和更新窗口
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
////////////////////(四)创建消息循环
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
////////////////////(六)窗口过程
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
static int cxClient,cyClient;
PAINTSTRUCT ps ;
POINT Points[MAX_NUM];
static HPEN hpen1,hpen2,hpen3;
int i;
int x,y;
///////////////////(七)处理消息
switch (message)
{
case WM_CREATE:
// 创建逻辑画笔
hpen1=CreatePen(PS_SOLID,3,RGB(0,0,0)); //实线、3个像素宽、黑色
hpen2=CreatePen(PS_SOLID,1,RGB(255,0,0)); //实线、一个像素宽、红色
hpen3=CreatePen(PS_SOLID,1,RGB(0,0,255)); //实线、一个像素宽、兰色
return 0;
case WM_SIZE:
//获取用户区大小
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
return 0;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
/////绘制坐标网格,使用默认画笔,黑色
for(x=cxClient/PANE_CONS;x<cxClient;x+=cxClient/PANE_CONS)
{
MoveToEx(hdc,x,0,NULL);
LineTo(hdc,x,cyClient);
}
for(y=cyClient/PANE_CONS;y<cyClient;y+=cyClient/PANE_CONS)
{
MoveToEx(hdc,0,y,NULL); //选定直线的起点
LineTo(hdc,cxClient,y); //画直线到终点
}
///////使用画笔hpen1,3像素宽黑笔,画坐标基线X
SelectObject(hdc,hpen1);
MoveToEx(hdc,0,cyClient/2,NULL);
LineTo(hdc,cxClient,cyClient/2);
///////使用画笔hpen1,3像素宽黑笔,画坐标基线y,为明显起见,左移了一个像素
MoveToEx(hdc,1,0,NULL);
LineTo(hdc,1,cyClient);
////////绘制画正弦曲线,使用画笔hpen2,红色
SelectObject( hdc, hpen2 );
for( i = 0; i < MAX_NUM; i++ )
{
Points[i].x = i * cxClient / MAX_NUM;
Points[i].y = (int) (cyClient/2 * (1 - sin( PI * 2 * i / MAX_NUM)) );
}
Polyline( hdc, Points, MAX_NUM );
///////绘制余弦曲线,使用画笔hpen3,兰色
SelectObject(hdc,hpen3);
for( i = 0; i < MAX_NUM; i++ )
{
Points[i].x = i * cxClient / MAX_NUM;
Points[i].y = (int) (cyClient/2 * (1 - cos( PI * 2 * i / MAX_NUM)) );
}
Polyline( hdc, Points, MAX_NUM );
SelectObject(hdc,GetStockObject(BLACK_PEN));
EndPaint (hwnd, &ps) ;
return 0 ;
//////////////////(五)终止应用程序.
case WM_DESTROY:
DeleteObject(hpen1);
DeleteObject(hpen2);
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}