小弟刚学vc,用的时机械工业出版社的<<visual c++程序设计教程>>在编译第13页,创建
windows窗体的时候发生了问题:通过了编译,不知乍得就是看不到窗体
原码如下
#include<windows.h>LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM );//窗口函数说明int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,
LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="´°¿Ú";//窗口类名
char lpszTitle[]="´°¿ÚʾÀý³ÌÐò";//窗口标题名
wndclass.style=0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszTitle;
//一下为窗口类注册
if(!RegisterClass(& wndclass))
{
MessageBeep(0);
return FALSE;
}
//创建窗口操作
hwnd=CreateWindow(lpszClassName,lpszTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
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)
{
switch(message)
{
case WM_DESTROY: PostQuitMessage(0);
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}
windows窗体的时候发生了问题:通过了编译,不知乍得就是看不到窗体
原码如下
#include<windows.h>LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM );//窗口函数说明int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,
LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="´°¿Ú";//窗口类名
char lpszTitle[]="´°¿ÚʾÀý³ÌÐò";//窗口标题名
wndclass.style=0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszTitle;
//一下为窗口类注册
if(!RegisterClass(& wndclass))
{
MessageBeep(0);
return FALSE;
}
//创建窗口操作
hwnd=CreateWindow(lpszClassName,lpszTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
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)
{
switch(message)
{
case WM_DESTROY: PostQuitMessage(0);
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}
100,100,
1000,1000,
NULL,NULL,hInstance,NULL);
现在不是都用 WNDCLASSEX
看看可以吗!
char lpszTitle[]="´°这两个东西要一样
char lpszClassName[]="mywindow";
char lpszTitle[]="mywindow";
将:
char lpszClassName[]="´°¿Ú";//窗口类名放到:
WinMain 函数的前面. 保证这个类名全局有效.
static char lpszTitle[]="´°¿ÚʾÀý³ÌÐò";//窗口标题名都放到开头处并且wndclass.style = CS_HREDRAW | CS_VREDRAW ;
*创建步骤:
*-Ctrl+N
*-点击Projects 选项卡
*-点击Win32 Application
*-Project name:输入工程名称,然后OK
*-选择An empty project.
*-点击Finish完成,再点击OK *-然后点击上面的菜单Project
*-点击Add To Project->New...
*-点击Files选项卡
*-选择C++ Source File
*-File:输入文件名称
*-点击OK
*-最后把代贴进去,进行编译就OK了!
*/#include "windows.h"//窗口过程函数申明
LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);//Win32程序主函数WinMain
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hWnd; // 主窗口句柄
MSG msg; // 窗口消息
WNDCLASS wc; // 窗口類
if (!hPrevInstance)
{
// 填充窗口類信息
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 = "SdkDemo1";
// 註冊窗口類
RegisterClass(&wc);
} // 創建應用程序主窗口
hWnd=CreateWindow ("SdkDemo1", // 窗口類名
"第一個Win32 SDK應用程序", // 窗口標題
WS_OVERLAPPEDWINDOW, // 窗口樣式
CW_USEDEFAULT, // 初始化 x 坐標
CW_USEDEFAULT, // 初始化 y 坐標
CW_USEDEFAULT, // 初始化窗口寬度
CW_USEDEFAULT, // 初始化窗口高度
NULL, // 父窗口句柄
NULL, // 窗口菜單句柄
hInstance, // 程序實例句柄
NULL); // 創建參數
// 顯示窗口
ShowWindow(hWnd,SW_SHOW);
// 更新主窗口客戶區
UpdateWindow(hWnd);
// 開始消息循環
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}// WndProc 主窗口過程
LRESULT WINAPI WndProc (HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
//在窗口內畫一個圓形
HDC hdc;
RECT rc;
HPEN hPen,hPenOld;
HBRUSH hBrush,hBrushOld;
switch (msg)
{
case WM_PAINT:
hdc=GetDC(hWnd);
GetClientRect(hWnd,&rc);
hPen=CreatePen(PS_SOLID,0,RGB(0,0,0));
hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,0));
hPenOld=(HPEN)SelectObject(hdc,hPen);
hBrushOld=(HBRUSH)SelectObject(hdc,hBrush);
Ellipse(hdc,rc.left,rc.top,rc.right,rc.bottom);
SelectObject(hdc,hPenOld);
SelectObject(hdc,hBrushOld);
ReleaseDC(hWnd,hdc);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:break;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
改为:
wndclass.lpszClassName=lpszClassName;