
http://download.chinaitlab.com/special/visualcebook.htm
1. 如果你还没有启动Visual C++,那么启动Visual C++。
2. 使用File|New命令显示如下图所示的New对话框。注意,我已经选择了
Projects选项卡并加亮了要在本例中使用的工程类型。
3. 当选择了Win32 Console Application后,在Project Name 域中键入程序
名称。这个样本程序使用的名称为Console。你或许还需要修改一下Location域
的内容,那么单击一下该域旁边的浏览按钮,系统会显示Choose Directory对话
框,在这个对话框中选择应用程序的存放目录。
4. 单击OK按钮。你会看到Win32 Console Application - Step 1 of 1对话框,
如下图所示。注意,在这个对话框中有几个应用程序类型供选择。这也是Visual
C++ 6.0的一个新特性。以前版本的Visual C++简单地创建一个空的工程。现在到了选择要创建哪种类型工程的时候了(即使空工程也要进行选择)。
5. (必要时)选择An Empty Project,然后单击Finish。你会看到一个New
Project Information对话框,它告诉你都选择了哪些选项。
6. 单击OK按钮创建示例程序。
在该工程真正能够运
子类化BUTTON,处理按钮的WM_PAINT消息,或者在父窗体中利用NM_CUSTOMDRAW 事件来重绘制(这个在MSDN中可以找到示例)。还有一个简单的方法,就是下载一个WTL ,可以利用WTL中CBitmapButton 类, WTL框架是开源的,生成文件大小几乎和WIN32 SDK程序大小差不多。无须去配置那个庞大的MFC库
修改自windows程序第五版第三章的hellowin#include <windows.h>
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 wndclass
wndclass.style = CS_HREDRAW | CS_VREDRAW
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.hbrBackground = GetSysColorBrush(COLOR_BTNFACE)
wndclass.lpszMenuName = NULL
wndclass.lpszClassName = szAppName
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR)
return 0
}
hwnd = CreateWindow (szAppName, // window class name
TEXT ("The Hello Program"), // 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
PAINTSTRUCT ps
RECTrect
static HWND hBtn
switch (message)
{
case WM_CREATE:
hBtn = CreateWindow(TEXT("BUTTON"), TEXT("按钮1"), WS_CHILD|WS_VISIBLE, 200, 150, 100, 40, hwnd, NULL, NULL, NULL)
return 0
/*case WM_PAINT:
hdc = BeginPaint (hwnd, &ps)
GetClientRect (hwnd, &rect)
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER)
EndPaint (hwnd, &ps)
return 0 */
case WM_DESTROY:
DestroyWindow(hBtn)
PostQuitMessage (0)
return 0
}
return DefWindowProc (hwnd, message, wParam, lParam)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)