如何用c++在win32程序中添加一个按钮?

如何用c++在win32程序中添加一个按钮?,第1张

http://download.chinaitlab.com/program/files/9312.html

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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/8029663.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存