27 Commits
Author SHA1 Message Date
mmacierzanka bd651ef400 PAiPlayer -> ClickPlay 2021-05-30 22:14:23 +02:00
mmacierzanka ea8240768c 0.3.2 2021-05-30 22:08:03 +02:00
mmacierzanka f8a1a4aff4 resource.h 2021-05-30 22:05:12 +02:00
mmacierzanka 031c647784 PAiPlayer -> ClickPlay 2021-05-30 22:05:01 +02:00
mmacierzanka 49d6fa5aa9 resource 2021-05-30 17:55:34 +02:00
mmacierzanka 13588da443 keyboard shortcuts 2021-05-30 17:55:05 +02:00
mmacierzanka 948f78da10 cleanups + string streams remove 2021-05-30 15:38:46 +02:00
mmacierzanka d4a7979c11 THCAR -> wstring 2021-05-30 15:03:18 +02:00
mmacierzanka 7b2f4cb455 //COMMENTS 2021-05-30 13:37:03 +02:00
mmacierzanka 26bf66f985 unifying code structure 2021-05-30 13:30:12 +02:00
mmacierzanka 97f1988a11 0.3.1 2021-05-30 01:09:08 +02:00
mmacierzanka e4a5088ce2 fixed a bug that could crash the program when no file was selected 2021-05-30 01:07:32 +02:00
mmacierzanka 58c761e4fa 0.3.0 2021-05-30 00:33:24 +02:00
mmacierzanka 3b66ff4424 resource 2021-05-30 00:26:18 +02:00
mmacierzanka e57362eec8 removed unused resources 2021-05-30 00:24:53 +02:00
mmacierzanka 101a44e26f cleanups 2021-05-30 00:09:51 +02:00
mmacierzanka 4c45818bf8 cleanups 2021-05-30 00:09:27 +02:00
mmacierzanka b66f645a25 EzWinBuilders is no more 2021-05-30 00:00:51 +02:00
mmacierzanka f0d2bae6c2 version name change 2021-05-29 23:29:09 +02:00
mmacierzanka 8aed9d2c78 menu bar options 2021-05-29 22:15:50 +02:00
mmacierzanka 33002f81d8 menu 2021-05-29 22:03:39 +02:00
mmacierzanka e7ef2d7eaf keyboard shortcuts 2021-05-29 21:39:22 +02:00
mmacierzanka 447dbfb743 removed old resources 2021-05-29 20:57:23 +02:00
mmacierzanka 17f81ddd2f Resource changes 2021-05-29 20:56:24 +02:00
mmacierzanka b12dad72bc graphics 2021-05-29 20:37:43 +02:00
mmacierzanka bce29362f4 Branding changes 2021-05-29 00:35:52 +02:00
mmacierzanka fe980611c4 Rebrand - VS name change 2021-05-29 00:20:04 +02:00
20 changed files with 269 additions and 204 deletions

No files matched your search

@@ -6,7 +6,7 @@
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>Easy Audio Player - A school project that helps me learn C++</description>
<description>PAiPlayer - A school project that helps me learn C++</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
@@ -24,20 +24,14 @@
<ClInclude Include="Resource.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
<ClInclude Include="EzWinAPIBuilders.h">
<Filter>Pliki nagłówkowe</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cpp">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
<ClCompile Include="EzWinAPIBuilders.cpp">
<Filter>Pliki źródłowe</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Easy Audio Player.rc">
<ResourceCompile Include="ClickPlay.rc">
<Filter>Pliki zasobów</Filter>
</ResourceCompile>
</ItemGroup>
@@ -45,12 +39,12 @@
<Image Include="small.ico">
<Filter>Pliki zasobów</Filter>
</Image>
<Image Include="Easy Audio Player.ico">
<Image Include="ClickPlay.ico">
<Filter>Pliki zasobów</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<Manifest Include="EasyAudioPlayer.exe.manifest">
<Manifest Include="ClickPlay.exe.manifest">
<Filter>Pliki źródłowe</Filter>
</Manifest>
</ItemGroup>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.
+1 -1
View File
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31129.286
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Easy Audio Player", "Easy Audio Player.vcxproj", "{C734FDA7-262E-4202-8F4E-5E3031CB9935}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClickPlay", "ClickPlay.vcxproj", "{C734FDA7-262E-4202-8F4E-5E3031CB9935}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -24,6 +24,7 @@
<ProjectGuid>{c734fda7-262e-4202-8f4e-5e3031cb9935}</ProjectGuid>
<RootNamespace>EasyAudioPlayer</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>ClickPlay</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -143,24 +144,22 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="EzWinAPIBuilders.h" />
<ClInclude Include="framework.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="EzWinAPIBuilders.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="Easy Audio Player.rc" />
<ResourceCompile Include="ClickPlay.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="Easy Audio Player.ico" />
<Image Include="ClickPlay.ico" />
<Image Include="small.ico" />
</ItemGroup>
<ItemGroup>
<Manifest Include="EasyAudioPlayer.exe.manifest" />
<Manifest Include="ClickPlay.exe.manifest" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
-3
View File
@@ -1,3 +0,0 @@
#pragma once
#include "resource.h"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

-40
View File
@@ -1,40 +0,0 @@
#include "EzWinAPIBuilders.h"
WNDCLASSEX EzCreateClass(LPCWSTR name, WNDPROC messageLoop, HINSTANCE instance, LPCWSTR classIcon, LPCWSTR cursor) {
WNDCLASSEX wc;
wc.style = 0;
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = messageLoop;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = instance;
wc.hIcon = LoadIcon(NULL, classIcon);
wc.hCursor = LoadCursor(NULL, cursor);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = name;
wc.cbWndExtra = 0;
wc.hIconSm = LoadIcon(NULL, IDI_ERROR);
return wc;
}
HWND EzCreateWindow(WNDCLASSEX windowClass, HINSTANCE instance, LPCWSTR windowTitle, DWORD windowStyles, int windowWidth, int windowHeight, HWND parent, HMENU menu) {
return CreateWindowEx(WS_EX_CLIENTEDGE, windowClass.lpszClassName, windowTitle, windowStyles, CW_USEDEFAULT, CW_USEDEFAULT, windowWidth, windowHeight, parent, menu, instance, NULL);
}
HWND EzCreateButton(LPCWSTR label, int posX, int posY, int sizeW, int sizeH, HWND mainWindow, DWORD styles) {
if (styles == NULL) {
styles = WS_CHILD | WS_VISIBLE;
}
return CreateWindowEx(0, L"BUTTON", label, WS_CHILD | WS_VISIBLE, posX, posY, sizeW, sizeH, mainWindow, NULL, NULL, NULL);
}
HWND EzCreateLabel(LPCWSTR startingContent, int posX, int posY, int sizeW, int sizeH, HWND mainWindow, DWORD styles) {
if (styles == NULL) {
styles = WS_CHILD | WS_VISIBLE;
}
return CreateWindowEx(0, L"STATIC", startingContent, styles, posX, posY, sizeW, sizeH, mainWindow, NULL, NULL, NULL);
}
HWND EzCreateControl(LPCWSTR type, LPCWSTR startingContent, int posX, int posY, int sizeW, int sizeH, HWND mainWindow, DWORD styles) {
if (styles == NULL) {
styles = WS_CHILD | WS_VISIBLE;
}
return CreateWindowEx(0, type, startingContent, WS_CHILD | WS_VISIBLE, posX, posY, sizeW, sizeH, mainWindow, NULL, NULL, NULL);
}
-10
View File
@@ -1,10 +0,0 @@
#pragma once
#include <Windows.h>
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
WNDCLASSEX EzCreateClass(LPCWSTR name, WNDPROC messageLoop, HINSTANCE instance, LPCWSTR classIcon, LPCWSTR cursor);
HWND EzCreateWindow(WNDCLASSEX windowClass, HINSTANCE instance, LPCWSTR windowTitle, DWORD windowStyles, int windowWidth, int windowHeight, HWND parent, HMENU menu);
HWND EzCreateButton(LPCWSTR label, int posX, int posY, int sizeW, int sizeH, HWND mainWindow, DWORD styles);
HWND EzCreateLabel(LPCWSTR startingContent, int posX, int posY, int sizeW, int sizeH, HWND mainWindow, DWORD styles);
HWND EzCreateControl(LPCWSTR type, LPCWSTR startingContent, int posX, int posY, int sizeW, int sizeH, HWND mainWindow, DWORD styles);
#endif
+11 -7
View File
@@ -1,20 +1,24 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Easy Audio Player.rc
// Used by ClickPlay.rc
//
#define IDC_MYICON 2
#define IDD_EASYAUDIOPLAYER_DIALOG 102
#define IDD_CLICKPLAY_DIALOG 102
#define IDS_APP_TITLE 103
#define IDD_ABOUTBOX 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDI_EASYAUDIOPLAYER 107
#define IDI_CLICKPLAY 107
#define IDI_SMALL 108
#define IDC_EASYAUDIOPLAYER 109
#define IDC_CLICKPLAY 109
#define IDR_MAINFRAME 128
#define IDC_MENU 200
#define ID_PLIK_OD32774 32774
#define ID_REFRESH 32775
#define ID_OPCJE_POWTARZAJ 32777
#define ID_OPCJE_ONCLICK 32778
#define ID_OPCJE_LOOP 32779
#define ID_POMOC_SKR32782 32782
#define ID_POMOC_KBSHR 32783
#define IDC_STATIC -1
// Next default values for new objects
@@ -22,8 +26,8 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32776
#define _APS_NEXT_RESOURCE_VALUE 130
#define _APS_NEXT_COMMAND_VALUE 32785
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 110
#endif
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+25
View File
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="511.55136" height="744.68427" viewBox="0 0 135.34796 197.03105" version="1.1" id="svg8" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" sodipodi:docname="logo.svg">
<defs id="defs2">
<linearGradient inkscape:collect="always" id="linearGradient839">
<stop style="stop-color:#0078ff;stop-opacity:1;" offset="0" id="stop835" />
<stop style="stop-color:#0000ff;stop-opacity:1" offset="1" id="stop837" />
</linearGradient>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient839" id="linearGradient865" x1="190.23459" y1="132.03839" x2="66.307961" y2="131.49152" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1.0867393,0,0,0.96763643,271.58074,6.2930973)" />
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.98994949" inkscape:cx="155.77567" inkscape:cy="395.40231" inkscape:document-units="mm" inkscape:current-layer="layer2" inkscape:document-rotation="0" showgrid="false" units="px" inkscape:window-width="2560" inkscape:window-height="1377" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" />
<metadata id="metadata5">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:groupmode="layer" id="layer2" inkscape:label="File" sodipodi:insensitive="true" transform="translate(-64.617685,-33.776144)">
<path style="fill:url(#linearGradient865);fill-opacity:1;stroke:#0164ff;stroke-width:1.3566;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 199.1224,58.228678 175.05177,34.601646 65.37845,34.455349 65.29627,230.12815 199.2867,229.98183 Z" id="path857" sodipodi:nodetypes="cccccc" sodipodi:insensitive="true" />
<path d="m 142.2675,84.893749 -34.82668,5.709865 -0.0335,36.563036 c -0.0116,20.11101 -0.0446,36.56301 -0.078,36.56301 -0.0335,0 -0.32319,-0.18069 -0.65753,-0.39752 -1.57138,-1.02994 -4.25719,-1.59008 -7.678557,-1.59008 -4.390948,0 -8.982496,1.66235 -13.373446,4.82448 -3.421371,2.46644 -5.750572,5.47495 -6.619849,8.55575 -0.289757,1.02092 -0.256328,3.32473 0.05571,4.26433 1.014145,3.01757 3.93401,5.18586 7.87918,5.85442 1.159031,0.19877 3.432518,0.2349 4.73643,0.0813 5.917748,-0.72278 11.902352,-3.83067 15.323722,-7.99561 1.27047,-1.5359 2.15089,-3.17116 2.69696,-5.01421 0.18946,-0.64145 0.20061,-2.4032 0.22289,-36.90633 l 0.0335,-36.237798 32.46403,-5.303313 c 17.84242,-2.927188 32.48634,-5.312331 32.54207,-5.303298 0.0446,0 0.078,14.437279 0.078,32.081869 v 32.07287 l -0.46806,-0.30717 c -1.80542,-1.18354 -4.14579,-1.70754 -7.77889,-1.71657 -1.60481,0 -2.13976,0.027 -3.04247,0.18972 -5.40509,0.9667 -11.12224,4.25529 -14.51018,8.33895 -0.79126,0.94861 -1.72741,2.50256 -2.16204,3.55961 -0.95843,2.35803 -0.88042,4.93289 0.20059,6.86631 1.32621,2.36706 4.35752,4.14686 7.84576,4.60764 4.46896,0.58723 10.64303,-1.05704 14.96712,-3.97523 3.81144,-2.57486 6.09607,-5.38462 7.1548,-8.80874 l 0.30089,-0.94862 0.0224,-40.6828 0.0336,-40.673772 -0.24519,0.0091 c -0.14487,0 -15.92556,2.574856 -35.083,5.718901 z" id="path845" style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.46031;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" sodipodi:insensitive="true" />
<path style="fill:#0064ff;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 175.05177,35.130811 -0.39114,23.26758 23.9326,-0.169715" id="path870" sodipodi:nodetypes="ccc" sodipodi:insensitive="true" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

+29
View File
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="1000" height="1000" viewBox="0 0 264.58333 264.58334" version="1.1" id="svg8" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" sodipodi:docname="logobg.svg">
<defs id="defs2">
<linearGradient inkscape:collect="always" id="linearGradient839">
<stop style="stop-color:#0078ff;stop-opacity:1;" offset="0" id="stop835" />
<stop style="stop-color:#0000ff;stop-opacity:1" offset="1" id="stop837" />
</linearGradient>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient839" id="linearGradient841" x1="1.9073486e-06" y1="132.29166" x2="264.58333" y2="132.29166" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.97786001,0,0,0.97786007,2.9289412,2.9289413)" />
<linearGradient inkscape:collect="always" xlink:href="#linearGradient839" id="linearGradient865" x1="190.23459" y1="132.03839" x2="66.307961" y2="131.49152" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1.0867393,0,0,0.96763643,271.58074,6.2930973)" />
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.98994949" inkscape:cx="400" inkscape:cy="523.06019" inkscape:document-units="mm" inkscape:current-layer="layer1" inkscape:document-rotation="0" showgrid="false" units="px" inkscape:window-width="2560" inkscape:window-height="1377" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" />
<metadata id="metadata5">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Bg" inkscape:groupmode="layer" id="layer1" sodipodi:insensitive="true">
<rect style="fill:#000000;fill-opacity:1;stroke:url(#linearGradient841);stroke-width:7.81934;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none" id="rect833" width="256.76398" height="256.76398" x="3.9096732" y="3.9096732" sodipodi:insensitive="true" />
</g>
<g inkscape:groupmode="layer" id="layer2" inkscape:label="File" sodipodi:insensitive="true">
<path style="fill:url(#linearGradient865);fill-opacity:1;stroke:#0164ff;stroke-width:1.3566;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 199.1224,58.228678 175.05177,34.601646 65.37845,34.455349 65.29627,230.12815 199.2867,229.98183 Z" id="path857" sodipodi:nodetypes="cccccc" sodipodi:insensitive="true" />
<path d="m 142.2675,84.893749 -34.82668,5.709865 -0.0335,36.563036 c -0.0116,20.11101 -0.0446,36.56301 -0.078,36.56301 -0.0335,0 -0.32319,-0.18069 -0.65753,-0.39752 -1.57138,-1.02994 -4.25719,-1.59008 -7.678557,-1.59008 -4.390948,0 -8.982496,1.66235 -13.373446,4.82448 -3.421371,2.46644 -5.750572,5.47495 -6.619849,8.55575 -0.289757,1.02092 -0.256328,3.32473 0.05571,4.26433 1.014145,3.01757 3.93401,5.18586 7.87918,5.85442 1.159031,0.19877 3.432518,0.2349 4.73643,0.0813 5.917748,-0.72278 11.902352,-3.83067 15.323722,-7.99561 1.27047,-1.5359 2.15089,-3.17116 2.69696,-5.01421 0.18946,-0.64145 0.20061,-2.4032 0.22289,-36.90633 l 0.0335,-36.237798 32.46403,-5.303313 c 17.84242,-2.927188 32.48634,-5.312331 32.54207,-5.303298 0.0446,0 0.078,14.437279 0.078,32.081869 v 32.07287 l -0.46806,-0.30717 c -1.80542,-1.18354 -4.14579,-1.70754 -7.77889,-1.71657 -1.60481,0 -2.13976,0.027 -3.04247,0.18972 -5.40509,0.9667 -11.12224,4.25529 -14.51018,8.33895 -0.79126,0.94861 -1.72741,2.50256 -2.16204,3.55961 -0.95843,2.35803 -0.88042,4.93289 0.20059,6.86631 1.32621,2.36706 4.35752,4.14686 7.84576,4.60764 4.46896,0.58723 10.64303,-1.05704 14.96712,-3.97523 3.81144,-2.57486 6.09607,-5.38462 7.1548,-8.80874 l 0.30089,-0.94862 0.0224,-40.6828 0.0336,-40.673772 -0.24519,0.0091 c -0.14487,0 -15.92556,2.574856 -35.083,5.718901 z" id="path845" style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.46031;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" sodipodi:insensitive="true" />
<path style="fill:#0064ff;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m 175.05177,35.130811 -0.39114,23.26758 23.9326,-0.169715" id="path870" sodipodi:nodetypes="ccc" sodipodi:insensitive="true" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

+1 -8
View File
@@ -1,14 +1,7 @@
// header.h: plik dołączany dla standardowych systemowych plików dołączanych,
// lub pliki dołączane specyficzne dla projektu
//
#pragma once
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // Wyklucz rzadko używane rzeczy z nagłówków systemu Windows
// Pliki nagłówkowe systemu Windows
#include <windows.h>
// Pliki nagłówkowe środowiska uruchomieniowego języka C
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
+160 -117
View File
@@ -1,23 +1,29 @@
//INCLUDES
#include "EzWinAPIBuilders.h"
#include "framework.h"
#include "resource.h"
#include <ShlObj.h>
#include <debugapi.h>
#include <strsafe.h>
#include <string>
#include <sstream>
//USING IMPORTS
using std::wstringstream;
//IMPORTS
using std::wstring;
//CONTROL IDS
#define IDC_DIRLABEL 201
#define IDC_BROWSEBTN 202
#define IDC_LIST 203
#define IDC_NPLABEL 204
#define IDC_PLAYBTN 205
#define IDC_STOPBTN 206
//STATIC DEFINES
#define IDC_LIST 1
#define EXT_LENGTH 2
#define STATE_CHANGE 333
//STRING TABLE
#define PROGRAM_NAME L"ClickPlay"
#define NOT_PLAYING_LABEL L"Nic nie jest odtwarzane"
#define PLAY_LABEL L"Odtwarzaj"
#define PAUSE_LABEL L"Pauza"
#define EXT_LENGTH 2
#define STATE_CHANGE 333
//GLOBAL VARS
HFONT hFont = CreateFont(18, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Segoe UI"));
@@ -26,8 +32,8 @@ MSG msg;
wstring ext[EXT_LENGTH] = { L"mp3", L"wav" };
//PATH VARS
TCHAR path[MAX_PATH] = { NULL };
TCHAR* selected = NULL;
wstring path;
wstring selected;
//STATE VARS
/*
@@ -38,71 +44,84 @@ TCHAR* selected = NULL;
*/
int currentState = -1;
BOOL isAutoPlayEnabled = TRUE;
BOOL isLoopEnabled = FALSE;
//CONTROLS
HWND mainWindow;
HWND dirLabel;
HWND browseButton;
HWND filesListCtrl;
HWND filesListScroll;
HWND playButton;
HWND stopButton;
HWND npLabel;
HWND autoPlayCheck;
HMENU menuBar;
//HOOKS
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
//EXECUTION PART
//ENTRY POINT
int WINAPI WinMain(HINSTANCE currentInst, HINSTANCE previousInst, LPSTR lpCmdLine, int nCmdShow) {
globalInstance = currentInst;
WNDCLASSEX windowClass = EzCreateClass(L"Easy Audio Player", WndProc, currentInst, NULL, IDC_ARROW);
windowClass.hIcon = (HICON)LoadImage(currentInst, L"Easy Audio Player.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_SHARED);
windowClass.hIconSm = (HICON)LoadImage(currentInst, L"Easy Audio Player.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_SHARED);
//CREATE & REGISTER WINDOW CLASS
WNDCLASSEX windowClass = { 0 };
windowClass.cbSize = sizeof(WNDCLASSEX);
windowClass.lpfnWndProc = WndProc;
windowClass.hInstance = currentInst;
windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
windowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW);
windowClass.lpszClassName = PROGRAM_NAME;
windowClass.hIcon = (HICON)LoadImage(currentInst, L"ClickPlay.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_SHARED);
windowClass.hIconSm = (HICON)LoadImage(currentInst, L"small.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_SHARED);
if (!RegisterClassEx(&windowClass)) {
return 1;
}
//LOAD KEYBOARD SHORTCUT TABLE
HACCEL shortcuts = LoadAccelerators(currentInst, MAKEINTRESOURCE(IDC_CLICKPLAY));
//LOAD MENU BAR
menuBar = LoadMenu(currentInst, (LPCWSTR)IDC_MENU);
mainWindow = EzCreateWindow(windowClass,currentInst,L"Easy Audio Player", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, 400, 620, NULL, menuBar);
//CREATE MAIN WINDOW
mainWindow = CreateWindowEx(WS_EX_CLIENTEDGE, windowClass.lpszClassName, PROGRAM_NAME, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 400, 620, NULL, menuBar, currentInst, NULL);
SendMessage(mainWindow, WM_SETFONT, (WPARAM)hFont, TRUE);
SendMessage(mainWindow, STATE_CHANGE, -1, NULL);
ShowWindow(mainWindow, nCmdShow);
UpdateWindow(mainWindow);
//INITIALIZE MESSAGE LOOP
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
if (!TranslateAccelerator(msg.hwnd, shortcuts, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
}
//CREATE CONTROLS
void CreateControls(HWND window) {
dirLabel = EzCreateLabel(L"Nie wybrano folderu", 10, 10, 250, 40, window, FALSE);
dirLabel = CreateWindowEx(0, L"STATIC", L"Nie wybrano folderu", WS_CHILD | WS_VISIBLE, 10, 10, 250, 40, window, (HMENU)IDC_DIRLABEL, globalInstance, NULL);
SendMessage(dirLabel, WM_SETFONT, (WPARAM)hFont, TRUE);
browseButton = EzCreateButton(L"Przegl¹daj", 275, 10, 100, 30, window, NULL);
browseButton = CreateWindowEx(0, L"BUTTON", L"Przegl¹daj", WS_CHILD | WS_VISIBLE, 275, 10, 100, 30, window, (HMENU)IDC_BROWSEBTN, globalInstance, NULL);
SendMessage(browseButton, WM_SETFONT, (WPARAM)hFont, TRUE);
filesListCtrl = CreateWindowEx(0, L"LISTBOX", NULL, LBS_STANDARD | WS_CHILD | WS_VISIBLE, 0, 50, 400, 425, window, (HMENU)IDC_LIST, NULL, NULL);
filesListCtrl = CreateWindowEx(0, L"LISTBOX", NULL, LBS_STANDARD | WS_CHILD | WS_VISIBLE | WS_VSCROLL, 0, 50, 400, 425, window, (HMENU)IDC_LIST, globalInstance, NULL);
SendMessage(filesListCtrl, WM_SETFONT, (WPARAM)hFont, TRUE);
npLabel = EzCreateLabel(NOT_PLAYING_LABEL, -5, 460, 400, 30, window, SS_CENTER | WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE);
npLabel = CreateWindowEx(0, L"STATIC", NOT_PLAYING_LABEL, SS_CENTER | WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE, -5, 460, 400, 40, window, (HMENU)IDC_NPLABEL, globalInstance, NULL);
SendMessage(npLabel, WM_SETFONT, (WPARAM)hFont, TRUE);
playButton = EzCreateButton(PLAY_LABEL, 75, 515, 100, 30, window, NULL);
playButton = CreateWindowEx(0, L"BUTTON", PLAY_LABEL, WS_CHILD | WS_VISIBLE, 75, 515, 100, 30, window, (HMENU)IDC_PLAYBTN, globalInstance, NULL);
SendMessage(playButton, WM_SETFONT, (WPARAM)hFont, TRUE);
stopButton = EzCreateButton(L"Zatrzymaj", 195, 515, 100, 30, window, NULL);
stopButton = CreateWindowEx(0, L"BUTTON", L"Zatrzymaj", WS_CHILD | WS_VISIBLE, 195, 515, 100, 30, window, (HMENU)IDC_STOPBTN, globalInstance, NULL);
SendMessage(stopButton, WM_SETFONT, (WPARAM)hFont, TRUE);
autoPlayCheck = CreateWindowEx(NULL, L"BUTTON", L"Odtwarzaj automatycznie", BS_CHECKBOX | WS_VISIBLE | WS_CHILD | SS_CENTER | SS_CENTERIMAGE, 105, 485, 170, 30, window, NULL, NULL, NULL);
SendMessage(autoPlayCheck, BM_SETCHECK, BST_CHECKED, NULL);
SendMessage(autoPlayCheck, WM_SETFONT, (WPARAM)hFont, TRUE);
filesListScroll = CreateWindowEx(0, L"SCROLLBAR", NULL, WS_CHILD | WS_VISIBLE | SBS_VERT, 300, 50, 50, 425, NULL, NULL, NULL, NULL);
}
void GetFiles(TCHAR* path, wstring ext) {
//GET FILES FROM DIRECTORY
void GetFiles(wstring path, wstring ext) {
if (path[0] != NULL) {
wstringstream findPathStream;
findPathStream << wstring(path);
findPathStream << L"\\*.";
findPathStream << ext;
wstring findPathS = findPathStream.str();
wstring findPathS = path + L"\\*." + ext;
LPCWSTR findPath = findPathS.c_str();
WIN32_FIND_DATA data;
HANDLE hFind = FindFirstFile(findPath, &data);
@@ -115,29 +134,35 @@ void GetFiles(TCHAR* path, wstring ext) {
}
}
}
//INITALIZE FOLDER PICKER
BOOL FolderBrowseDialog(HWND window) {
BROWSEINFO dialog = { 0 };
dialog.hwndOwner = window;
dialog.ulFlags = BIF_NEWDIALOGSTYLE;
dialog.lpszTitle = L"Wybierz folder, który ma zostaæ otwarty przez program";
LPITEMIDLIST pid = SHBrowseForFolder(&dialog);
TCHAR currentPath[MAX_PATH];
if (pid != 0) {
SHGetPathFromIDList(pid, path);
SetCurrentDirectory(path);
SetWindowText(dirLabel, path);
SHGetPathFromIDList(pid, currentPath);
path = wstring(currentPath);
SetCurrentDirectory(path.c_str());
SetWindowText(dirLabel, path.c_str());
return TRUE;
}
else {
return FALSE;
}
}
void Play(TCHAR* path, TCHAR* fileName) {
if (path[0] != NULL && selected != NULL) {
//MCI PROCESSOR
void Play(wstring path, wstring fileName) {
if (path[0] != NULL && selected.empty() == false) {
//STOP PREVIOUS PLAYBACKS
mciSendString(L"close mp3", NULL, 0, NULL);
//GET PATH
wstring fullPath = wstring(path) + L"\\" + wstring(selected);
wstring fullPath = path + L"\\" + selected;
WIN32_FIND_DATA fileData;
HANDLE fileExist = FindFirstFile(fullPath.c_str(), &fileData);
if (fileExist == INVALID_HANDLE_VALUE) {
@@ -147,16 +172,17 @@ void Play(TCHAR* path, TCHAR* fileName) {
}
//PROCESS COMMAND
wstringstream fullCommandStream;
fullCommandStream << "open \"";
fullCommandStream << fullPath;
fullCommandStream << "\" type mpegvideo alias mp3";
wstring fullCommandS = fullCommandStream.str();
wstring fullCommandS = L"open \"" + fullPath + L"\" type mpegvideo alias mp3";
LPCWSTR fullCommand = fullCommandS.c_str();
//PLAY THE SOUND
mciSendString(fullCommand, NULL, 0, NULL);
mciSendString(L"play mp3 notify", NULL, 0, mainWindow);
if (isLoopEnabled) {
mciSendString(L"play mp3 repeat", NULL, 0, mainWindow);
}
else {
mciSendString(L"play mp3 notify", NULL, 0, mainWindow);
}
}
else {
MessageBox(mainWindow, L"Podczas odtwarzania wyst¹pi³ b³¹d. SprawdŸ czy podany plik istnieje.", L"Wyst¹pi³ b³¹d", MB_ICONERROR);
@@ -164,6 +190,8 @@ void Play(TCHAR* path, TCHAR* fileName) {
return;
}
}
//MESSAGE LOOP
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
int windowId, windowEvent;
switch (msg) {
@@ -179,72 +207,63 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
case WM_COMMAND:
windowId = LOWORD(wParam);
windowEvent = HIWORD(wParam);
if (windowId == IDC_LIST) {
if (windowEvent == LBN_SELCHANGE) {
LRESULT listItemsCount = SendMessage(filesListCtrl, LB_GETCOUNT, NULL, NULL);
int selectedItemIndex = -1;
for (int i = 0; i < listItemsCount; i++) {
if (SendMessage(filesListCtrl, LB_GETSEL, (WPARAM)i, NULL) > 0) {
selectedItemIndex = i;
break;
switch (windowId) {
case IDC_BROWSEBTN:
if (FolderBrowseDialog(mainWindow) == TRUE) {
mciSendString(L"close mp3", NULL, 0, NULL);
SendMessage(mainWindow, STATE_CHANGE, 0, NULL);
SendMessage(filesListCtrl, LB_RESETCONTENT, NULL, NULL);
for (int i = 0; i < EXT_LENGTH; i++) {
GetFiles(path, ext[i]);
}
}
if (selectedItemIndex != -1) {
LRESULT selectedLength = SendMessage(filesListCtrl, LB_GETTEXTLEN, (WPARAM)selectedItemIndex, NULL);
selected = new TCHAR[selectedLength];
SendMessage(filesListCtrl, LB_GETTEXT, (WPARAM)selectedItemIndex, (LPARAM)selected);
break;
case IDC_LIST:
if (windowEvent == LBN_SELCHANGE) {
LRESULT listItemsCount = SendMessage(filesListCtrl, LB_GETCOUNT, NULL, NULL);
int selectedItemIndex = -1;
for (int i = 0; i < listItemsCount; i++) {
if (SendMessage(filesListCtrl, LB_GETSEL, (WPARAM)i, NULL) > 0) {
selectedItemIndex = i;
break;
}
}
if (selectedItemIndex != -1) {
LRESULT selectedLength = SendMessage(filesListCtrl, LB_GETTEXTLEN, (WPARAM)selectedItemIndex, NULL);
TCHAR* selectionBuffer = new TCHAR[selectedLength];
SendMessage(filesListCtrl, LB_GETTEXT, (WPARAM)selectedItemIndex, (LPARAM)selectionBuffer);
selected = wstring(selectionBuffer);
}
if (isAutoPlayEnabled == TRUE) {
Play(path, selected);
SendMessage(mainWindow, STATE_CHANGE, 1, NULL);
}
}
if (isAutoPlayEnabled == TRUE) {
Play(path, selected);
SendMessage(mainWindow, STATE_CHANGE, 1, NULL);
if (windowEvent == LBN_SELCANCEL) {
selected.clear();
}
}
if (windowEvent == LBN_SELCANCEL) {
selected = NULL;
}
}
if ((HWND)lParam == browseButton) {
if (FolderBrowseDialog(mainWindow) == TRUE) {
mciSendString(L"close mp3", NULL, 0, NULL);
SendMessage(mainWindow, STATE_CHANGE, 0, NULL);
SendMessage(filesListCtrl, LB_RESETCONTENT, NULL, NULL);
for (int i = 0; i < EXT_LENGTH; i++) {
GetFiles(path, ext[i]);
}
}
}
else if ((HWND)lParam == autoPlayCheck) {
if (isAutoPlayEnabled) {
SendMessage(autoPlayCheck, BM_SETCHECK, BST_UNCHECKED, NULL);
isAutoPlayEnabled = FALSE;
}
else {
SendMessage(autoPlayCheck, BM_SETCHECK, BST_CHECKED, NULL);
isAutoPlayEnabled = TRUE;
}
}
else if ((HWND)lParam == stopButton) {
mciSendString(L"close mp3", NULL, 0, NULL);
SendMessage(mainWindow, STATE_CHANGE, 0, NULL);
}
else if ((HWND)lParam == playButton) {
switch (currentState) {
break;
case IDC_PLAYBTN:
switch (currentState) {
case 0:
Play(path, selected);
SendMessage(mainWindow, STATE_CHANGE, 1, NULL);
Play(path, selected);
break;
case 1:
mciSendString(L"pause mp3", NULL, 0, NULL);
SendMessage(mainWindow, STATE_CHANGE, 2, NULL);
mciSendString(L"pause mp3", NULL, 0, NULL);
break;
case 2:
mciSendString(L"resume mp3", NULL, 0, NULL);
SendMessage(mainWindow, STATE_CHANGE, 1, NULL);
mciSendString(L"resume mp3", NULL, 0, NULL);
break;
}
}
switch (wParam) {
}
break;
case IDC_STOPBTN:
mciSendString(L"close mp3", NULL, 0, NULL);
SendMessage(mainWindow, STATE_CHANGE, 0, NULL);
break;
case IDM_EXIT:
SendMessage(mainWindow, WM_CLOSE, NULL, NULL);
break;
@@ -261,6 +280,30 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
else {
MessageBox(mainWindow, L"Nie za³adowano folderu. Naciœnij przycisk PRZEGL¥DAJ, aby wczytaæ katalog.", L"Brak katalogu", MB_ICONERROR);
}
break;
case ID_OPCJE_ONCLICK:
if (isAutoPlayEnabled) {
CheckMenuItem(menuBar, ID_OPCJE_ONCLICK, MF_UNCHECKED);
isAutoPlayEnabled = FALSE;
}
else {
CheckMenuItem(menuBar, ID_OPCJE_ONCLICK, MF_CHECKED);
isAutoPlayEnabled = TRUE;
}
break;
case ID_OPCJE_LOOP:
if (isLoopEnabled) {
CheckMenuItem(menuBar, ID_OPCJE_LOOP, MF_UNCHECKED);
isLoopEnabled = FALSE;
}
else {
CheckMenuItem(menuBar, ID_OPCJE_LOOP, MF_CHECKED);
isLoopEnabled = TRUE;
}
break;
case ID_POMOC_KBSHR:
MessageBox(mainWindow, L"F1 = ekran skrótów klawiszowych\nF2 = ekran Informacje\nF5 = odœwie¿ listê plików", L"Skróty klawiszowe", MB_ICONASTERISK);
break;
}
break;
case MM_MCINOTIFY:
@@ -271,41 +314,39 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
currentState = (int)wParam;
switch (currentState) {
case -1:
EnableWindow(filesListCtrl, FALSE);
EnableWindow(playButton, FALSE);
EnableWindow(stopButton, FALSE);
SetWindowText(npLabel, L"-");
EnableWindow(filesListCtrl, FALSE);
SetWindowText(playButton, PLAY_LABEL);
EnableMenuItem(menuBar, ID_REFRESH, MF_DISABLED);
SetWindowText(npLabel, L"-");
SetWindowText(playButton, PLAY_LABEL);
break;
case 0:
EnableWindow(filesListCtrl, TRUE);
EnableWindow(playButton, TRUE);
EnableWindow(stopButton, TRUE);
SetWindowText(npLabel, NOT_PLAYING_LABEL);
EnableWindow(filesListCtrl, TRUE);
SetWindowText(playButton, PLAY_LABEL);
EnableMenuItem(menuBar, ID_REFRESH, MF_ENABLED);
SetWindowText(npLabel, NOT_PLAYING_LABEL);
SetWindowText(playButton, PLAY_LABEL);
break;
case 1:
EnableWindow(filesListCtrl, FALSE);
EnableWindow(playButton, TRUE);
EnableWindow(stopButton, TRUE);
SetWindowText(npLabel, selected);
EnableWindow(filesListCtrl, FALSE);
SetWindowText(playButton, PAUSE_LABEL);
EnableMenuItem(menuBar, ID_REFRESH, MF_DISABLED);
SetWindowText(npLabel, selected.c_str());
SetWindowText(playButton, PAUSE_LABEL);
break;
case 2:
wstring pauseStringWS = selected + L" [PAUZA]";
LPCWSTR pauseString = pauseStringWS.c_str();
EnableWindow(filesListCtrl, FALSE);
EnableWindow(playButton, TRUE);
EnableWindow(stopButton, TRUE);
wstringstream pauseStringS;
pauseStringS << wstring(selected);
pauseStringS << " [PAUZA]";
wstring pauseStringWS = pauseStringS.str();
LPCWSTR pauseString = pauseStringWS.c_str();
EnableMenuItem(menuBar, ID_REFRESH, MF_DISABLED);
SetWindowText(npLabel, pauseString);
SetWindowText(playButton, L"Wznów");
EnableMenuItem(menuBar, ID_REFRESH, MF_DISABLED);
EnableWindow(filesListCtrl, FALSE);
break;
}
break;
@@ -314,6 +355,8 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
}
return NULL;
}
//ABOUT DIALOG LOOP
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
UNREFERENCED_PARAMETER(lParam);
switch (message) {
+34
View File
@@ -0,0 +1,34 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by ClickPlay.rc
//
#define IDD_CLICKPLAY_DIALOG 102
#define IDS_APP_TITLE 103
#define IDD_ABOUTBOX 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDI_CLICKPLAY 107
#define IDI_SMALL 108
#define IDC_CLICKPLAY 109
#define IDR_MAINFRAME 128
#define IDC_MENU 200
#define ID_PLIK_OD32774 32774
#define ID_REFRESH 32775
#define ID_OPCJE_POWTARZAJ 32777
#define ID_OPCJE_ONCLICK 32778
#define ID_OPCJE_LOOP 32779
#define ID_POMOC_SKR32782 32782
#define ID_POMOC_KBSHR 32783
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 130
#define _APS_NEXT_COMMAND_VALUE 32785
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 31 KiB

-3
View File
@@ -1,6 +1,3 @@
#pragma once
// // Uwzględnienie elementu SDKDDKVer.h powoduje zdefiniowanie najnowszej dostępnej platformy systemu Windows.
// Jeśli chcesz skompilować aplikację dla poprzedniej platformy systemu Windows, uwzględnij element WinSDKVer.h i
// ustaw makro _WIN32_WINNT na platformę, która ma być obsługiwana, przed uwzględnieniem elementu SDKDDKVer.h.
#include <SDKDDKVer.h>