├── .gitignore
├── .vs
└── Sudoku_GUI
│ └── v16
│ ├── .suo
│ ├── Browse.VC.db
│ └── ipch
│ └── AutoPCH
│ ├── 53c8fdb9d5f48620
│ └── SUDOKU_GUI.ipch
│ └── ea7c5a0851988ba0
│ └── SUDOKU_GUI.ipch
├── README.md
├── Sudoku_GUI.sln
├── Sudoku_GUI
├── Debug
│ ├── Source.nativecodeanalysis.sarif
│ ├── Source.nativecodeanalysis.xml
│ ├── Source.obj
│ ├── Sudoku_GUI.Build.CppClean.log
│ ├── Sudoku_GUI.log
│ ├── Sudoku_GUI.nativecodeanalysis.sarif
│ ├── Sudoku_GUI.nativecodeanalysis.xml
│ ├── Sudoku_GUI.obj
│ ├── Sudoku_GUI.res
│ ├── Sudoku_GUI.tlog
│ │ ├── CL.command.1.tlog
│ │ ├── CL.read.1.tlog
│ │ ├── CL.write.1.tlog
│ │ ├── Sudoku_GUI.lastbuildstate
│ │ ├── link.command.1.tlog
│ │ ├── link.read.1.tlog
│ │ ├── link.write.1.tlog
│ │ ├── rc.command.1.tlog
│ │ ├── rc.read.1.tlog
│ │ └── rc.write.1.tlog
│ ├── Sudoku_GUI.vcxproj.FileListAbsolute.txt
│ ├── Sudoku_solve.nativecodeanalysis.sarif
│ ├── Sudoku_solve.nativecodeanalysis.xml
│ ├── Sudoku_solve.obj
│ ├── vc.nativecodeanalysis.all.xml
│ ├── vc142.idb
│ └── vc142.pdb
├── Resource.h
├── Source.cpp
├── Sudoku_GUI.aps
├── Sudoku_GUI.c
├── Sudoku_GUI.h
├── Sudoku_GUI.rc
├── Sudoku_GUI.vcxproj
├── Sudoku_GUI.vcxproj.filters
├── Sudoku_GUI.vcxproj.user
├── Sudoku_solve.c
├── framework.h
├── sudoku_macros.h
└── targetver.h
└── images
├── sudoku_gui_screen.JPG
└── sudoku_icon.ico
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Dd]ebugPublic/
19 | [Rr]elease/
20 | [Rr]eleases/
21 | x64/
22 | x86/
23 | [Aa][Rr][Mm]/
24 | [Aa][Rr][Mm]64/
25 | bld/
26 | [Bb]in/
27 | [Oo]bj/
28 | [Ll]og/
29 |
30 | # ignore debug file with executable
31 | /Debug/
32 |
33 | # Visual Studio 2015/2017 cache/options directory
34 | .vs/
35 | # Uncomment if you have tasks that create the project's static files in wwwroot
36 | #wwwroot/
37 |
38 | # Visual Studio 2017 auto generated files
39 | Generated\ Files/
40 |
41 | # MSTest test Results
42 | [Tt]est[Rr]esult*/
43 | [Bb]uild[Ll]og.*
44 |
45 | # NUNIT
46 | *.VisualState.xml
47 | TestResult.xml
48 |
49 | # Build Results of an ATL Project
50 | [Dd]ebugPS/
51 | [Rr]eleasePS/
52 | dlldata.c
53 |
54 | # Benchmark Results
55 | BenchmarkDotNet.Artifacts/
56 |
57 | # .NET Core
58 | project.lock.json
59 | project.fragment.lock.json
60 | artifacts/
61 |
62 | # StyleCop
63 | StyleCopReport.xml
64 |
65 | # Files built by Visual Studio
66 | *_i.c
67 | *_p.c
68 | *_h.h
69 | *.ilk
70 | *.meta
71 | *.obj
72 | *.iobj
73 | *.pch
74 | *.pdb
75 | *.ipdb
76 | *.pgc
77 | *.pgd
78 | *.rsp
79 | *.sbr
80 | *.tlb
81 | *.tli
82 | *.tlh
83 | *.tmp
84 | *.tmp_proj
85 | *_wpftmp.csproj
86 | *.log
87 | *.vspscc
88 | *.vssscc
89 | .builds
90 | *.pidb
91 | *.svclog
92 | *.scc
93 |
94 | # Chutzpah Test files
95 | _Chutzpah*
96 |
97 | # Visual C++ cache files
98 | ipch/
99 | *.aps
100 | *.ncb
101 | *.opendb
102 | *.opensdf
103 | *.sdf
104 | *.cachefile
105 | *.VC.db
106 | *.VC.VC.opendb
107 |
108 | # Visual Studio profiler
109 | *.psess
110 | *.vsp
111 | *.vspx
112 | *.sap
113 |
114 | # Visual Studio Trace Files
115 | *.e2e
116 |
117 | # TFS 2012 Local Workspace
118 | $tf/
119 |
120 | # Guidance Automation Toolkit
121 | *.gpState
122 |
123 | # ReSharper is a .NET coding add-in
124 | _ReSharper*/
125 | *.[Rr]e[Ss]harper
126 | *.DotSettings.user
127 |
128 | # JustCode is a .NET coding add-in
129 | .JustCode
130 |
131 | # TeamCity is a build add-in
132 | _TeamCity*
133 |
134 | # DotCover is a Code Coverage Tool
135 | *.dotCover
136 |
137 | # AxoCover is a Code Coverage Tool
138 | .axoCover/*
139 | !.axoCover/settings.json
140 |
141 | # Visual Studio code coverage results
142 | *.coverage
143 | *.coveragexml
144 |
145 | # NCrunch
146 | _NCrunch_*
147 | .*crunch*.local.xml
148 | nCrunchTemp_*
149 |
150 | # MightyMoose
151 | *.mm.*
152 | AutoTest.Net/
153 |
154 | # Web workbench (sass)
155 | .sass-cache/
156 |
157 | # Installshield output folder
158 | [Ee]xpress/
159 |
160 | # DocProject is a documentation generator add-in
161 | DocProject/buildhelp/
162 | DocProject/Help/*.HxT
163 | DocProject/Help/*.HxC
164 | DocProject/Help/*.hhc
165 | DocProject/Help/*.hhk
166 | DocProject/Help/*.hhp
167 | DocProject/Help/Html2
168 | DocProject/Help/html
169 |
170 | # Click-Once directory
171 | publish/
172 |
173 | # Publish Web Output
174 | *.[Pp]ublish.xml
175 | *.azurePubxml
176 | # Note: Comment the next line if you want to checkin your web deploy settings,
177 | # but database connection strings (with potential passwords) will be unencrypted
178 | *.pubxml
179 | *.publishproj
180 |
181 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
182 | # checkin your Azure Web App publish settings, but sensitive information contained
183 | # in these scripts will be unencrypted
184 | PublishScripts/
185 |
186 | # NuGet Packages
187 | *.nupkg
188 | # The packages folder can be ignored because of Package Restore
189 | **/[Pp]ackages/*
190 | # except build/, which is used as an MSBuild target.
191 | !**/[Pp]ackages/build/
192 | # Uncomment if necessary however generally it will be regenerated when needed
193 | #!**/[Pp]ackages/repositories.config
194 | # NuGet v3's project.json files produces more ignorable files
195 | *.nuget.props
196 | *.nuget.targets
197 |
198 | # Microsoft Azure Build Output
199 | csx/
200 | *.build.csdef
201 |
202 | # Microsoft Azure Emulator
203 | ecf/
204 | rcf/
205 |
206 | # Windows Store app package directories and files
207 | AppPackages/
208 | BundleArtifacts/
209 | Package.StoreAssociation.xml
210 | _pkginfo.txt
211 | *.appx
212 |
213 | # Visual Studio cache files
214 | # files ending in .cache can be ignored
215 | *.[Cc]ache
216 | # but keep track of directories ending in .cache
217 | !?*.[Cc]ache/
218 |
219 | # Others
220 | ClientBin/
221 | ~$*
222 | *~
223 | *.dbmdl
224 | *.dbproj.schemaview
225 | *.jfm
226 | *.pfx
227 | *.publishsettings
228 | orleans.codegen.cs
229 |
230 | # Including strong name files can present a security risk
231 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
232 | #*.snk
233 |
234 | # Since there are multiple workflows, uncomment next line to ignore bower_components
235 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
236 | #bower_components/
237 |
238 | # RIA/Silverlight projects
239 | Generated_Code/
240 |
241 | # Backup & report files from converting an old project file
242 | # to a newer Visual Studio version. Backup files are not needed,
243 | # because we have git ;-)
244 | _UpgradeReport_Files/
245 | Backup*/
246 | UpgradeLog*.XML
247 | UpgradeLog*.htm
248 | ServiceFabricBackup/
249 | *.rptproj.bak
250 |
251 | # SQL Server files
252 | *.mdf
253 | *.ldf
254 | *.ndf
255 |
256 | # Business Intelligence projects
257 | *.rdl.data
258 | *.bim.layout
259 | *.bim_*.settings
260 | *.rptproj.rsuser
261 | *- Backup*.rdl
262 |
263 | # Microsoft Fakes
264 | FakesAssemblies/
265 |
266 | # GhostDoc plugin setting file
267 | *.GhostDoc.xml
268 |
269 | # Node.js Tools for Visual Studio
270 | .ntvs_analysis.dat
271 | node_modules/
272 |
273 | # Visual Studio 6 build log
274 | *.plg
275 |
276 | # Visual Studio 6 workspace options file
277 | *.opt
278 |
279 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
280 | *.vbw
281 |
282 | # Visual Studio LightSwitch build output
283 | **/*.HTMLClient/GeneratedArtifacts
284 | **/*.DesktopClient/GeneratedArtifacts
285 | **/*.DesktopClient/ModelManifest.xml
286 | **/*.Server/GeneratedArtifacts
287 | **/*.Server/ModelManifest.xml
288 | _Pvt_Extensions
289 |
290 | # Paket dependency manager
291 | .paket/paket.exe
292 | paket-files/
293 |
294 | # FAKE - F# Make
295 | .fake/
296 |
297 | # JetBrains Rider
298 | .idea/
299 | *.sln.iml
300 |
301 | # CodeRush personal settings
302 | .cr/personal
303 |
304 | # Python Tools for Visual Studio (PTVS)
305 | __pycache__/
306 | *.pyc
307 |
308 | # Cake - Uncomment if you are using it
309 | # tools/**
310 | # !tools/packages.config
311 |
312 | # Tabs Studio
313 | *.tss
314 |
315 | # Telerik's JustMock configuration file
316 | *.jmconfig
317 |
318 | # BizTalk build output
319 | *.btp.cs
320 | *.btm.cs
321 | *.odx.cs
322 | *.xsd.cs
323 |
324 | # OpenCover UI analysis results
325 | OpenCover/
326 |
327 | # Azure Stream Analytics local run output
328 | ASALocalRun/
329 |
330 | # MSBuild Binary and Structured Log
331 | *.binlog
332 |
333 | # NVidia Nsight GPU debugger configuration file
334 | *.nvuser
335 |
336 | # MFractors (Xamarin productivity tool) working folder
337 | .mfractor/
338 |
339 | # Local History for Visual Studio
340 | .localhistory/
341 |
342 | # BeatPulse healthcheck temp database
343 | healthchecksdb
--------------------------------------------------------------------------------
/.vs/Sudoku_GUI/v16/.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/.vs/Sudoku_GUI/v16/.suo
--------------------------------------------------------------------------------
/.vs/Sudoku_GUI/v16/Browse.VC.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/.vs/Sudoku_GUI/v16/Browse.VC.db
--------------------------------------------------------------------------------
/.vs/Sudoku_GUI/v16/ipch/AutoPCH/53c8fdb9d5f48620/SUDOKU_GUI.ipch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/.vs/Sudoku_GUI/v16/ipch/AutoPCH/53c8fdb9d5f48620/SUDOKU_GUI.ipch
--------------------------------------------------------------------------------
/.vs/Sudoku_GUI/v16/ipch/AutoPCH/ea7c5a0851988ba0/SUDOKU_GUI.ipch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/.vs/Sudoku_GUI/v16/ipch/AutoPCH/ea7c5a0851988ba0/SUDOKU_GUI.ipch
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # sudoku-solve-GUI
2 |
3 | This application is a graphical user interface which solves sudoku puzzles using the backtracking algorithm.
4 |
5 |
6 |
7 | This algorithm is made to solve puzzles with a finite number of solutions. The process of the backtracking algorithm is visualized in real-time by this GUI.
8 |
9 | The UI is made with Windows API (Win32). Users can enter their own sudoku or click File>Load Sudoku to load one of the 3 in local memory.
10 |
11 | Adjust the speed slider and click 'Solve' to watch the algorithm in action! Speed can be adjusted as puzzle is being solved.
12 |
13 |
--------------------------------------------------------------------------------
/Sudoku_GUI.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.29926.136
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sudoku_GUI", "Sudoku_GUI\Sudoku_GUI.vcxproj", "{14EB037F-0917-4955-9474-D2ADB99B9792}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|x64 = Debug|x64
11 | Debug|x86 = Debug|x86
12 | Release|x64 = Release|x64
13 | Release|x86 = Release|x86
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Debug|x64.ActiveCfg = Debug|x64
17 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Debug|x64.Build.0 = Debug|x64
18 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Debug|x86.ActiveCfg = Debug|Win32
19 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Debug|x86.Build.0 = Debug|Win32
20 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Release|x64.ActiveCfg = Release|x64
21 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Release|x64.Build.0 = Release|x64
22 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Release|x86.ActiveCfg = Release|Win32
23 | {14EB037F-0917-4955-9474-D2ADB99B9792}.Release|x86.Build.0 = Release|Win32
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | GlobalSection(ExtensibilityGlobals) = postSolution
29 | SolutionGuid = {8498AB02-89E8-4A75-8733-36D895A53426}
30 | EndGlobalSection
31 | EndGlobal
32 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Source.nativecodeanalysis.sarif:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.1.0",
3 | "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.4.json",
4 | "runs": [
5 | {
6 | "results": [],
7 | "tool": {
8 | "driver": {
9 | "name": "PREfast",
10 | "fullName": "PREfast Code Analysis",
11 | "version": "14.25.28612.0"
12 | }
13 | },
14 | "invocations": [
15 | {
16 | "commandLine": "\"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\HostX86\\x86\\c1xx.dll\" -ACf{1F7B090C-16DB-4822-966A-A93D26ED4681} -ACpmspft140.dll -Alint -D_PREFAST_ -D_AST_FE_ -Analyze -zm0x008C31A0 -il C:\\Users\\rahul\\AppData\\Local\\Temp\\_CL_67e7a6e5ast -typedil -f Source.cpp -Ze -D_MSC_EXTENSIONS -Zp8 -Gs -pc \\:/ -D_MSC_VER=1925 -D_MSC_FULL_VER=192528612 -D_MSC_BUILD=0 -D_WIN32 -D_M_IX86=600 -D_M_IX86_FP=2 -GR -D_CPPRTTI -nologo -W 3 -diagnostics:column -D_GUARDOVERFLOW_CRT_ALLOCATORS=1 -Ot -DCODE_ANALYSIS -DWIN32 -D_DEBUG -D_WINDOWS -D_UNICODE -DUNICODE -EHs -D_CPPUNWIND -EHc -D__MSVC_RUNTIME_CHECKS -RTCs -RTCu -MDd -D_DEBUG -D_MT -D_DLL -GS -D_M_FP_PRECISE -permissive- -Zc:wchar_t -Zc:forScope -FoDebug\\Source.obj -FdDebug\\vc142.pdb -Gd -analyze:projectdirectory C:\\Users\\rahul\\Desktop\\Dev_Projects\\Applications\\sudoku-solve-GUI\\Sudoku_GUI\\ -analyze:rulesetdirectory ;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Team Tools\\Static Analysis Tools\\\\Rule Sets; -analyze:ruleset C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Team Tools\\Static Analysis Tools\\Rule Sets\\NativeRecommendedRules.ruleset -analyze:quiet -analyze:plugin C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\bin\\HostX86\\x86\\EspXEngine.dll -FC -errorreport:prompt -I C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\include -I C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\atlmfc\\include -I C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\VS\\include -I C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\ucrt -I C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\um -I C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\shared -I C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\winrt -I C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\cppwinrt -I C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\Include\\um",
17 | "executionSuccessful": true,
18 | "ruleConfigurationOverrides": [
19 | {
20 | "configuration": {
21 | "enabled": true,
22 | "level": "warning"
23 | },
24 | "descriptor": {
25 | "id": "C6001"
26 | }
27 | },
28 | {
29 | "configuration": {
30 | "enabled": true,
31 | "level": "warning"
32 | },
33 | "descriptor": {
34 | "id": "C6011"
35 | }
36 | },
37 | {
38 | "configuration": {
39 | "enabled": true,
40 | "level": "warning"
41 | },
42 | "descriptor": {
43 | "id": "C6029"
44 | }
45 | },
46 | {
47 | "configuration": {
48 | "enabled": true,
49 | "level": "warning"
50 | },
51 | "descriptor": {
52 | "id": "C6031"
53 | }
54 | },
55 | {
56 | "configuration": {
57 | "enabled": true,
58 | "level": "warning"
59 | },
60 | "descriptor": {
61 | "id": "C6053"
62 | }
63 | },
64 | {
65 | "configuration": {
66 | "enabled": true,
67 | "level": "warning"
68 | },
69 | "descriptor": {
70 | "id": "C6054"
71 | }
72 | },
73 | {
74 | "configuration": {
75 | "enabled": true,
76 | "level": "warning"
77 | },
78 | "descriptor": {
79 | "id": "C6059"
80 | }
81 | },
82 | {
83 | "configuration": {
84 | "enabled": true,
85 | "level": "warning"
86 | },
87 | "descriptor": {
88 | "id": "C6063"
89 | }
90 | },
91 | {
92 | "configuration": {
93 | "enabled": true,
94 | "level": "warning"
95 | },
96 | "descriptor": {
97 | "id": "C6064"
98 | }
99 | },
100 | {
101 | "configuration": {
102 | "enabled": true,
103 | "level": "warning"
104 | },
105 | "descriptor": {
106 | "id": "C6066"
107 | }
108 | },
109 | {
110 | "configuration": {
111 | "enabled": true,
112 | "level": "warning"
113 | },
114 | "descriptor": {
115 | "id": "C6067"
116 | }
117 | },
118 | {
119 | "configuration": {
120 | "enabled": true,
121 | "level": "warning"
122 | },
123 | "descriptor": {
124 | "id": "C6101"
125 | }
126 | },
127 | {
128 | "configuration": {
129 | "enabled": true,
130 | "level": "warning"
131 | },
132 | "descriptor": {
133 | "id": "C6200"
134 | }
135 | },
136 | {
137 | "configuration": {
138 | "enabled": true,
139 | "level": "warning"
140 | },
141 | "descriptor": {
142 | "id": "C6201"
143 | }
144 | },
145 | {
146 | "configuration": {
147 | "enabled": true,
148 | "level": "warning"
149 | },
150 | "descriptor": {
151 | "id": "C6214"
152 | }
153 | },
154 | {
155 | "configuration": {
156 | "enabled": true,
157 | "level": "warning"
158 | },
159 | "descriptor": {
160 | "id": "C6215"
161 | }
162 | },
163 | {
164 | "configuration": {
165 | "enabled": true,
166 | "level": "warning"
167 | },
168 | "descriptor": {
169 | "id": "C6216"
170 | }
171 | },
172 | {
173 | "configuration": {
174 | "enabled": true,
175 | "level": "warning"
176 | },
177 | "descriptor": {
178 | "id": "C6217"
179 | }
180 | },
181 | {
182 | "configuration": {
183 | "enabled": true,
184 | "level": "warning"
185 | },
186 | "descriptor": {
187 | "id": "C6220"
188 | }
189 | },
190 | {
191 | "configuration": {
192 | "enabled": true,
193 | "level": "warning"
194 | },
195 | "descriptor": {
196 | "id": "C6226"
197 | }
198 | },
199 | {
200 | "configuration": {
201 | "enabled": true,
202 | "level": "warning"
203 | },
204 | "descriptor": {
205 | "id": "C6230"
206 | }
207 | },
208 | {
209 | "configuration": {
210 | "enabled": true,
211 | "level": "warning"
212 | },
213 | "descriptor": {
214 | "id": "C6235"
215 | }
216 | },
217 | {
218 | "configuration": {
219 | "enabled": true,
220 | "level": "warning"
221 | },
222 | "descriptor": {
223 | "id": "C6236"
224 | }
225 | },
226 | {
227 | "configuration": {
228 | "enabled": true,
229 | "level": "warning"
230 | },
231 | "descriptor": {
232 | "id": "C6237"
233 | }
234 | },
235 | {
236 | "configuration": {
237 | "enabled": true,
238 | "level": "warning"
239 | },
240 | "descriptor": {
241 | "id": "C6242"
242 | }
243 | },
244 | {
245 | "configuration": {
246 | "enabled": true,
247 | "level": "warning"
248 | },
249 | "descriptor": {
250 | "id": "C6248"
251 | }
252 | },
253 | {
254 | "configuration": {
255 | "enabled": true,
256 | "level": "warning"
257 | },
258 | "descriptor": {
259 | "id": "C6250"
260 | }
261 | },
262 | {
263 | "configuration": {
264 | "enabled": true,
265 | "level": "warning"
266 | },
267 | "descriptor": {
268 | "id": "C6255"
269 | }
270 | },
271 | {
272 | "configuration": {
273 | "enabled": true,
274 | "level": "warning"
275 | },
276 | "descriptor": {
277 | "id": "C6258"
278 | }
279 | },
280 | {
281 | "configuration": {
282 | "enabled": true,
283 | "level": "warning"
284 | },
285 | "descriptor": {
286 | "id": "C6259"
287 | }
288 | },
289 | {
290 | "configuration": {
291 | "enabled": true,
292 | "level": "warning"
293 | },
294 | "descriptor": {
295 | "id": "C6260"
296 | }
297 | },
298 | {
299 | "configuration": {
300 | "enabled": true,
301 | "level": "warning"
302 | },
303 | "descriptor": {
304 | "id": "C6262"
305 | }
306 | },
307 | {
308 | "configuration": {
309 | "enabled": true,
310 | "level": "warning"
311 | },
312 | "descriptor": {
313 | "id": "C6263"
314 | }
315 | },
316 | {
317 | "configuration": {
318 | "enabled": true,
319 | "level": "warning"
320 | },
321 | "descriptor": {
322 | "id": "C6268"
323 | }
324 | },
325 | {
326 | "configuration": {
327 | "enabled": true,
328 | "level": "warning"
329 | },
330 | "descriptor": {
331 | "id": "C6269"
332 | }
333 | },
334 | {
335 | "configuration": {
336 | "enabled": true,
337 | "level": "warning"
338 | },
339 | "descriptor": {
340 | "id": "C6270"
341 | }
342 | },
343 | {
344 | "configuration": {
345 | "enabled": true,
346 | "level": "warning"
347 | },
348 | "descriptor": {
349 | "id": "C6271"
350 | }
351 | },
352 | {
353 | "configuration": {
354 | "enabled": true,
355 | "level": "warning"
356 | },
357 | "descriptor": {
358 | "id": "C6272"
359 | }
360 | },
361 | {
362 | "configuration": {
363 | "enabled": true,
364 | "level": "warning"
365 | },
366 | "descriptor": {
367 | "id": "C6273"
368 | }
369 | },
370 | {
371 | "configuration": {
372 | "enabled": true,
373 | "level": "warning"
374 | },
375 | "descriptor": {
376 | "id": "C6274"
377 | }
378 | },
379 | {
380 | "configuration": {
381 | "enabled": true,
382 | "level": "warning"
383 | },
384 | "descriptor": {
385 | "id": "C6276"
386 | }
387 | },
388 | {
389 | "configuration": {
390 | "enabled": true,
391 | "level": "warning"
392 | },
393 | "descriptor": {
394 | "id": "C6277"
395 | }
396 | },
397 | {
398 | "configuration": {
399 | "enabled": true,
400 | "level": "warning"
401 | },
402 | "descriptor": {
403 | "id": "C6278"
404 | }
405 | },
406 | {
407 | "configuration": {
408 | "enabled": true,
409 | "level": "warning"
410 | },
411 | "descriptor": {
412 | "id": "C6279"
413 | }
414 | },
415 | {
416 | "configuration": {
417 | "enabled": true,
418 | "level": "warning"
419 | },
420 | "descriptor": {
421 | "id": "C6280"
422 | }
423 | },
424 | {
425 | "configuration": {
426 | "enabled": true,
427 | "level": "warning"
428 | },
429 | "descriptor": {
430 | "id": "C6281"
431 | }
432 | },
433 | {
434 | "configuration": {
435 | "enabled": true,
436 | "level": "warning"
437 | },
438 | "descriptor": {
439 | "id": "C6282"
440 | }
441 | },
442 | {
443 | "configuration": {
444 | "enabled": true,
445 | "level": "warning"
446 | },
447 | "descriptor": {
448 | "id": "C6283"
449 | }
450 | },
451 | {
452 | "configuration": {
453 | "enabled": true,
454 | "level": "warning"
455 | },
456 | "descriptor": {
457 | "id": "C6284"
458 | }
459 | },
460 | {
461 | "configuration": {
462 | "enabled": true,
463 | "level": "warning"
464 | },
465 | "descriptor": {
466 | "id": "C6285"
467 | }
468 | },
469 | {
470 | "configuration": {
471 | "enabled": true,
472 | "level": "warning"
473 | },
474 | "descriptor": {
475 | "id": "C6286"
476 | }
477 | },
478 | {
479 | "configuration": {
480 | "enabled": true,
481 | "level": "warning"
482 | },
483 | "descriptor": {
484 | "id": "C6287"
485 | }
486 | },
487 | {
488 | "configuration": {
489 | "enabled": true,
490 | "level": "warning"
491 | },
492 | "descriptor": {
493 | "id": "C6288"
494 | }
495 | },
496 | {
497 | "configuration": {
498 | "enabled": true,
499 | "level": "warning"
500 | },
501 | "descriptor": {
502 | "id": "C6289"
503 | }
504 | },
505 | {
506 | "configuration": {
507 | "enabled": true,
508 | "level": "warning"
509 | },
510 | "descriptor": {
511 | "id": "C6290"
512 | }
513 | },
514 | {
515 | "configuration": {
516 | "enabled": true,
517 | "level": "warning"
518 | },
519 | "descriptor": {
520 | "id": "C6291"
521 | }
522 | },
523 | {
524 | "configuration": {
525 | "enabled": true,
526 | "level": "warning"
527 | },
528 | "descriptor": {
529 | "id": "C6292"
530 | }
531 | },
532 | {
533 | "configuration": {
534 | "enabled": true,
535 | "level": "warning"
536 | },
537 | "descriptor": {
538 | "id": "C6293"
539 | }
540 | },
541 | {
542 | "configuration": {
543 | "enabled": true,
544 | "level": "warning"
545 | },
546 | "descriptor": {
547 | "id": "C6294"
548 | }
549 | },
550 | {
551 | "configuration": {
552 | "enabled": true,
553 | "level": "warning"
554 | },
555 | "descriptor": {
556 | "id": "C6295"
557 | }
558 | },
559 | {
560 | "configuration": {
561 | "enabled": true,
562 | "level": "warning"
563 | },
564 | "descriptor": {
565 | "id": "C6296"
566 | }
567 | },
568 | {
569 | "configuration": {
570 | "enabled": true,
571 | "level": "warning"
572 | },
573 | "descriptor": {
574 | "id": "C6297"
575 | }
576 | },
577 | {
578 | "configuration": {
579 | "enabled": true,
580 | "level": "warning"
581 | },
582 | "descriptor": {
583 | "id": "C6299"
584 | }
585 | },
586 | {
587 | "configuration": {
588 | "enabled": true,
589 | "level": "warning"
590 | },
591 | "descriptor": {
592 | "id": "C6302"
593 | }
594 | },
595 | {
596 | "configuration": {
597 | "enabled": true,
598 | "level": "warning"
599 | },
600 | "descriptor": {
601 | "id": "C6303"
602 | }
603 | },
604 | {
605 | "configuration": {
606 | "enabled": true,
607 | "level": "warning"
608 | },
609 | "descriptor": {
610 | "id": "C6305"
611 | }
612 | },
613 | {
614 | "configuration": {
615 | "enabled": true,
616 | "level": "warning"
617 | },
618 | "descriptor": {
619 | "id": "C6306"
620 | }
621 | },
622 | {
623 | "configuration": {
624 | "enabled": true,
625 | "level": "warning"
626 | },
627 | "descriptor": {
628 | "id": "C6308"
629 | }
630 | },
631 | {
632 | "configuration": {
633 | "enabled": true,
634 | "level": "warning"
635 | },
636 | "descriptor": {
637 | "id": "C6310"
638 | }
639 | },
640 | {
641 | "configuration": {
642 | "enabled": true,
643 | "level": "warning"
644 | },
645 | "descriptor": {
646 | "id": "C6312"
647 | }
648 | },
649 | {
650 | "configuration": {
651 | "enabled": true,
652 | "level": "warning"
653 | },
654 | "descriptor": {
655 | "id": "C6314"
656 | }
657 | },
658 | {
659 | "configuration": {
660 | "enabled": true,
661 | "level": "warning"
662 | },
663 | "descriptor": {
664 | "id": "C6317"
665 | }
666 | },
667 | {
668 | "configuration": {
669 | "enabled": true,
670 | "level": "warning"
671 | },
672 | "descriptor": {
673 | "id": "C6318"
674 | }
675 | },
676 | {
677 | "configuration": {
678 | "enabled": true,
679 | "level": "warning"
680 | },
681 | "descriptor": {
682 | "id": "C6319"
683 | }
684 | },
685 | {
686 | "configuration": {
687 | "enabled": true,
688 | "level": "warning"
689 | },
690 | "descriptor": {
691 | "id": "C6324"
692 | }
693 | },
694 | {
695 | "configuration": {
696 | "enabled": true,
697 | "level": "warning"
698 | },
699 | "descriptor": {
700 | "id": "C6328"
701 | }
702 | },
703 | {
704 | "configuration": {
705 | "enabled": true,
706 | "level": "warning"
707 | },
708 | "descriptor": {
709 | "id": "C6331"
710 | }
711 | },
712 | {
713 | "configuration": {
714 | "enabled": true,
715 | "level": "warning"
716 | },
717 | "descriptor": {
718 | "id": "C6332"
719 | }
720 | },
721 | {
722 | "configuration": {
723 | "enabled": true,
724 | "level": "warning"
725 | },
726 | "descriptor": {
727 | "id": "C6333"
728 | }
729 | },
730 | {
731 | "configuration": {
732 | "enabled": true,
733 | "level": "warning"
734 | },
735 | "descriptor": {
736 | "id": "C6335"
737 | }
738 | },
739 | {
740 | "configuration": {
741 | "enabled": true,
742 | "level": "warning"
743 | },
744 | "descriptor": {
745 | "id": "C6381"
746 | }
747 | },
748 | {
749 | "configuration": {
750 | "enabled": true,
751 | "level": "warning"
752 | },
753 | "descriptor": {
754 | "id": "C6383"
755 | }
756 | },
757 | {
758 | "configuration": {
759 | "enabled": true,
760 | "level": "warning"
761 | },
762 | "descriptor": {
763 | "id": "C6384"
764 | }
765 | },
766 | {
767 | "configuration": {
768 | "enabled": true,
769 | "level": "warning"
770 | },
771 | "descriptor": {
772 | "id": "C6385"
773 | }
774 | },
775 | {
776 | "configuration": {
777 | "enabled": true,
778 | "level": "warning"
779 | },
780 | "descriptor": {
781 | "id": "C6386"
782 | }
783 | },
784 | {
785 | "configuration": {
786 | "enabled": true,
787 | "level": "warning"
788 | },
789 | "descriptor": {
790 | "id": "C6387"
791 | }
792 | },
793 | {
794 | "configuration": {
795 | "enabled": true,
796 | "level": "warning"
797 | },
798 | "descriptor": {
799 | "id": "C6388"
800 | }
801 | },
802 | {
803 | "configuration": {
804 | "enabled": true,
805 | "level": "warning"
806 | },
807 | "descriptor": {
808 | "id": "C6500"
809 | }
810 | },
811 | {
812 | "configuration": {
813 | "enabled": true,
814 | "level": "warning"
815 | },
816 | "descriptor": {
817 | "id": "C6501"
818 | }
819 | },
820 | {
821 | "configuration": {
822 | "enabled": true,
823 | "level": "warning"
824 | },
825 | "descriptor": {
826 | "id": "C6503"
827 | }
828 | },
829 | {
830 | "configuration": {
831 | "enabled": true,
832 | "level": "warning"
833 | },
834 | "descriptor": {
835 | "id": "C6504"
836 | }
837 | },
838 | {
839 | "configuration": {
840 | "enabled": true,
841 | "level": "warning"
842 | },
843 | "descriptor": {
844 | "id": "C6505"
845 | }
846 | },
847 | {
848 | "configuration": {
849 | "enabled": true,
850 | "level": "warning"
851 | },
852 | "descriptor": {
853 | "id": "C6506"
854 | }
855 | },
856 | {
857 | "configuration": {
858 | "enabled": true,
859 | "level": "warning"
860 | },
861 | "descriptor": {
862 | "id": "C6508"
863 | }
864 | },
865 | {
866 | "configuration": {
867 | "enabled": true,
868 | "level": "warning"
869 | },
870 | "descriptor": {
871 | "id": "C6509"
872 | }
873 | },
874 | {
875 | "configuration": {
876 | "enabled": true,
877 | "level": "warning"
878 | },
879 | "descriptor": {
880 | "id": "C6510"
881 | }
882 | },
883 | {
884 | "configuration": {
885 | "enabled": true,
886 | "level": "warning"
887 | },
888 | "descriptor": {
889 | "id": "C6511"
890 | }
891 | },
892 | {
893 | "configuration": {
894 | "enabled": true,
895 | "level": "warning"
896 | },
897 | "descriptor": {
898 | "id": "C6513"
899 | }
900 | },
901 | {
902 | "configuration": {
903 | "enabled": true,
904 | "level": "warning"
905 | },
906 | "descriptor": {
907 | "id": "C6514"
908 | }
909 | },
910 | {
911 | "configuration": {
912 | "enabled": true,
913 | "level": "warning"
914 | },
915 | "descriptor": {
916 | "id": "C6515"
917 | }
918 | },
919 | {
920 | "configuration": {
921 | "enabled": true,
922 | "level": "warning"
923 | },
924 | "descriptor": {
925 | "id": "C6516"
926 | }
927 | },
928 | {
929 | "configuration": {
930 | "enabled": true,
931 | "level": "warning"
932 | },
933 | "descriptor": {
934 | "id": "C6517"
935 | }
936 | },
937 | {
938 | "configuration": {
939 | "enabled": true,
940 | "level": "warning"
941 | },
942 | "descriptor": {
943 | "id": "C6518"
944 | }
945 | },
946 | {
947 | "configuration": {
948 | "enabled": true,
949 | "level": "warning"
950 | },
951 | "descriptor": {
952 | "id": "C6522"
953 | }
954 | },
955 | {
956 | "configuration": {
957 | "enabled": true,
958 | "level": "warning"
959 | },
960 | "descriptor": {
961 | "id": "C6525"
962 | }
963 | },
964 | {
965 | "configuration": {
966 | "enabled": true,
967 | "level": "warning"
968 | },
969 | "descriptor": {
970 | "id": "C6527"
971 | }
972 | },
973 | {
974 | "configuration": {
975 | "enabled": true,
976 | "level": "warning"
977 | },
978 | "descriptor": {
979 | "id": "C6530"
980 | }
981 | },
982 | {
983 | "configuration": {
984 | "enabled": true,
985 | "level": "warning"
986 | },
987 | "descriptor": {
988 | "id": "C6540"
989 | }
990 | },
991 | {
992 | "configuration": {
993 | "enabled": true,
994 | "level": "warning"
995 | },
996 | "descriptor": {
997 | "id": "C6551"
998 | }
999 | },
1000 | {
1001 | "configuration": {
1002 | "enabled": true,
1003 | "level": "warning"
1004 | },
1005 | "descriptor": {
1006 | "id": "C6552"
1007 | }
1008 | },
1009 | {
1010 | "configuration": {
1011 | "enabled": true,
1012 | "level": "warning"
1013 | },
1014 | "descriptor": {
1015 | "id": "C6701"
1016 | }
1017 | },
1018 | {
1019 | "configuration": {
1020 | "enabled": true,
1021 | "level": "warning"
1022 | },
1023 | "descriptor": {
1024 | "id": "C6702"
1025 | }
1026 | },
1027 | {
1028 | "configuration": {
1029 | "enabled": true,
1030 | "level": "warning"
1031 | },
1032 | "descriptor": {
1033 | "id": "C6703"
1034 | }
1035 | },
1036 | {
1037 | "configuration": {
1038 | "enabled": true,
1039 | "level": "warning"
1040 | },
1041 | "descriptor": {
1042 | "id": "C6704"
1043 | }
1044 | },
1045 | {
1046 | "configuration": {
1047 | "enabled": true,
1048 | "level": "warning"
1049 | },
1050 | "descriptor": {
1051 | "id": "C6705"
1052 | }
1053 | },
1054 | {
1055 | "configuration": {
1056 | "enabled": true,
1057 | "level": "warning"
1058 | },
1059 | "descriptor": {
1060 | "id": "C6706"
1061 | }
1062 | },
1063 | {
1064 | "configuration": {
1065 | "enabled": true,
1066 | "level": "warning"
1067 | },
1068 | "descriptor": {
1069 | "id": "C6993"
1070 | }
1071 | },
1072 | {
1073 | "configuration": {
1074 | "enabled": true,
1075 | "level": "warning"
1076 | },
1077 | "descriptor": {
1078 | "id": "C6995"
1079 | }
1080 | },
1081 | {
1082 | "configuration": {
1083 | "enabled": true,
1084 | "level": "warning"
1085 | },
1086 | "descriptor": {
1087 | "id": "C6997"
1088 | }
1089 | },
1090 | {
1091 | "configuration": {
1092 | "enabled": true,
1093 | "level": "warning"
1094 | },
1095 | "descriptor": {
1096 | "id": "C26100"
1097 | }
1098 | },
1099 | {
1100 | "configuration": {
1101 | "enabled": true,
1102 | "level": "warning"
1103 | },
1104 | "descriptor": {
1105 | "id": "C26101"
1106 | }
1107 | },
1108 | {
1109 | "configuration": {
1110 | "enabled": true,
1111 | "level": "warning"
1112 | },
1113 | "descriptor": {
1114 | "id": "C26110"
1115 | }
1116 | },
1117 | {
1118 | "configuration": {
1119 | "enabled": true,
1120 | "level": "warning"
1121 | },
1122 | "descriptor": {
1123 | "id": "C26111"
1124 | }
1125 | },
1126 | {
1127 | "configuration": {
1128 | "enabled": true,
1129 | "level": "warning"
1130 | },
1131 | "descriptor": {
1132 | "id": "C26112"
1133 | }
1134 | },
1135 | {
1136 | "configuration": {
1137 | "enabled": true,
1138 | "level": "warning"
1139 | },
1140 | "descriptor": {
1141 | "id": "C26115"
1142 | }
1143 | },
1144 | {
1145 | "configuration": {
1146 | "enabled": true,
1147 | "level": "warning"
1148 | },
1149 | "descriptor": {
1150 | "id": "C26116"
1151 | }
1152 | },
1153 | {
1154 | "configuration": {
1155 | "enabled": true,
1156 | "level": "warning"
1157 | },
1158 | "descriptor": {
1159 | "id": "C26117"
1160 | }
1161 | },
1162 | {
1163 | "configuration": {
1164 | "enabled": true,
1165 | "level": "warning"
1166 | },
1167 | "descriptor": {
1168 | "id": "C26140"
1169 | }
1170 | },
1171 | {
1172 | "configuration": {
1173 | "enabled": true,
1174 | "level": "warning"
1175 | },
1176 | "descriptor": {
1177 | "id": "C26437"
1178 | }
1179 | },
1180 | {
1181 | "configuration": {
1182 | "enabled": true,
1183 | "level": "warning"
1184 | },
1185 | "descriptor": {
1186 | "id": "C26439"
1187 | }
1188 | },
1189 | {
1190 | "configuration": {
1191 | "enabled": true,
1192 | "level": "warning"
1193 | },
1194 | "descriptor": {
1195 | "id": "C26441"
1196 | }
1197 | },
1198 | {
1199 | "configuration": {
1200 | "enabled": true,
1201 | "level": "warning"
1202 | },
1203 | "descriptor": {
1204 | "id": "C26444"
1205 | }
1206 | },
1207 | {
1208 | "configuration": {
1209 | "enabled": true,
1210 | "level": "warning"
1211 | },
1212 | "descriptor": {
1213 | "id": "C26449"
1214 | }
1215 | },
1216 | {
1217 | "configuration": {
1218 | "enabled": true,
1219 | "level": "warning"
1220 | },
1221 | "descriptor": {
1222 | "id": "C26450"
1223 | }
1224 | },
1225 | {
1226 | "configuration": {
1227 | "enabled": true,
1228 | "level": "warning"
1229 | },
1230 | "descriptor": {
1231 | "id": "C26451"
1232 | }
1233 | },
1234 | {
1235 | "configuration": {
1236 | "enabled": true,
1237 | "level": "warning"
1238 | },
1239 | "descriptor": {
1240 | "id": "C26452"
1241 | }
1242 | },
1243 | {
1244 | "configuration": {
1245 | "enabled": true,
1246 | "level": "warning"
1247 | },
1248 | "descriptor": {
1249 | "id": "C26453"
1250 | }
1251 | },
1252 | {
1253 | "configuration": {
1254 | "enabled": true,
1255 | "level": "warning"
1256 | },
1257 | "descriptor": {
1258 | "id": "C26454"
1259 | }
1260 | },
1261 | {
1262 | "configuration": {
1263 | "enabled": true,
1264 | "level": "warning"
1265 | },
1266 | "descriptor": {
1267 | "id": "C26478"
1268 | }
1269 | },
1270 | {
1271 | "configuration": {
1272 | "enabled": true,
1273 | "level": "warning"
1274 | },
1275 | "descriptor": {
1276 | "id": "C26495"
1277 | }
1278 | },
1279 | {
1280 | "configuration": {
1281 | "enabled": true,
1282 | "level": "warning"
1283 | },
1284 | "descriptor": {
1285 | "id": "C26498"
1286 | }
1287 | },
1288 | {
1289 | "configuration": {
1290 | "enabled": true,
1291 | "level": "warning"
1292 | },
1293 | "descriptor": {
1294 | "id": "C26812"
1295 | }
1296 | },
1297 | {
1298 | "configuration": {
1299 | "enabled": true,
1300 | "level": "warning"
1301 | },
1302 | "descriptor": {
1303 | "id": "C28020"
1304 | }
1305 | },
1306 | {
1307 | "configuration": {
1308 | "enabled": true,
1309 | "level": "warning"
1310 | },
1311 | "descriptor": {
1312 | "id": "C28021"
1313 | }
1314 | },
1315 | {
1316 | "configuration": {
1317 | "enabled": true,
1318 | "level": "warning"
1319 | },
1320 | "descriptor": {
1321 | "id": "C28022"
1322 | }
1323 | },
1324 | {
1325 | "configuration": {
1326 | "enabled": true,
1327 | "level": "warning"
1328 | },
1329 | "descriptor": {
1330 | "id": "C28023"
1331 | }
1332 | },
1333 | {
1334 | "configuration": {
1335 | "enabled": true,
1336 | "level": "warning"
1337 | },
1338 | "descriptor": {
1339 | "id": "C28024"
1340 | }
1341 | },
1342 | {
1343 | "configuration": {
1344 | "enabled": true,
1345 | "level": "warning"
1346 | },
1347 | "descriptor": {
1348 | "id": "C28039"
1349 | }
1350 | },
1351 | {
1352 | "configuration": {
1353 | "enabled": true,
1354 | "level": "warning"
1355 | },
1356 | "descriptor": {
1357 | "id": "C28112"
1358 | }
1359 | },
1360 | {
1361 | "configuration": {
1362 | "enabled": true,
1363 | "level": "warning"
1364 | },
1365 | "descriptor": {
1366 | "id": "C28113"
1367 | }
1368 | },
1369 | {
1370 | "configuration": {
1371 | "enabled": true,
1372 | "level": "warning"
1373 | },
1374 | "descriptor": {
1375 | "id": "C28125"
1376 | }
1377 | },
1378 | {
1379 | "configuration": {
1380 | "enabled": true,
1381 | "level": "warning"
1382 | },
1383 | "descriptor": {
1384 | "id": "C28137"
1385 | }
1386 | },
1387 | {
1388 | "configuration": {
1389 | "enabled": true,
1390 | "level": "warning"
1391 | },
1392 | "descriptor": {
1393 | "id": "C28138"
1394 | }
1395 | },
1396 | {
1397 | "configuration": {
1398 | "enabled": true,
1399 | "level": "warning"
1400 | },
1401 | "descriptor": {
1402 | "id": "C28159"
1403 | }
1404 | },
1405 | {
1406 | "configuration": {
1407 | "enabled": true,
1408 | "level": "warning"
1409 | },
1410 | "descriptor": {
1411 | "id": "C28160"
1412 | }
1413 | },
1414 | {
1415 | "configuration": {
1416 | "enabled": true,
1417 | "level": "warning"
1418 | },
1419 | "descriptor": {
1420 | "id": "C28163"
1421 | }
1422 | },
1423 | {
1424 | "configuration": {
1425 | "enabled": true,
1426 | "level": "warning"
1427 | },
1428 | "descriptor": {
1429 | "id": "C28164"
1430 | }
1431 | },
1432 | {
1433 | "configuration": {
1434 | "enabled": true,
1435 | "level": "warning"
1436 | },
1437 | "descriptor": {
1438 | "id": "C28182"
1439 | }
1440 | },
1441 | {
1442 | "configuration": {
1443 | "enabled": true,
1444 | "level": "warning"
1445 | },
1446 | "descriptor": {
1447 | "id": "C28183"
1448 | }
1449 | },
1450 | {
1451 | "configuration": {
1452 | "enabled": true,
1453 | "level": "warning"
1454 | },
1455 | "descriptor": {
1456 | "id": "C28193"
1457 | }
1458 | },
1459 | {
1460 | "configuration": {
1461 | "enabled": true,
1462 | "level": "warning"
1463 | },
1464 | "descriptor": {
1465 | "id": "C28196"
1466 | }
1467 | },
1468 | {
1469 | "configuration": {
1470 | "enabled": true,
1471 | "level": "warning"
1472 | },
1473 | "descriptor": {
1474 | "id": "C28202"
1475 | }
1476 | },
1477 | {
1478 | "configuration": {
1479 | "enabled": true,
1480 | "level": "warning"
1481 | },
1482 | "descriptor": {
1483 | "id": "C28203"
1484 | }
1485 | },
1486 | {
1487 | "configuration": {
1488 | "enabled": true,
1489 | "level": "warning"
1490 | },
1491 | "descriptor": {
1492 | "id": "C28205"
1493 | }
1494 | },
1495 | {
1496 | "configuration": {
1497 | "enabled": true,
1498 | "level": "warning"
1499 | },
1500 | "descriptor": {
1501 | "id": "C28206"
1502 | }
1503 | },
1504 | {
1505 | "configuration": {
1506 | "enabled": true,
1507 | "level": "warning"
1508 | },
1509 | "descriptor": {
1510 | "id": "C28207"
1511 | }
1512 | },
1513 | {
1514 | "configuration": {
1515 | "enabled": true,
1516 | "level": "warning"
1517 | },
1518 | "descriptor": {
1519 | "id": "C28209"
1520 | }
1521 | },
1522 | {
1523 | "configuration": {
1524 | "enabled": true,
1525 | "level": "warning"
1526 | },
1527 | "descriptor": {
1528 | "id": "C28210"
1529 | }
1530 | },
1531 | {
1532 | "configuration": {
1533 | "enabled": true,
1534 | "level": "warning"
1535 | },
1536 | "descriptor": {
1537 | "id": "C28211"
1538 | }
1539 | },
1540 | {
1541 | "configuration": {
1542 | "enabled": true,
1543 | "level": "warning"
1544 | },
1545 | "descriptor": {
1546 | "id": "C28212"
1547 | }
1548 | },
1549 | {
1550 | "configuration": {
1551 | "enabled": true,
1552 | "level": "warning"
1553 | },
1554 | "descriptor": {
1555 | "id": "C28213"
1556 | }
1557 | },
1558 | {
1559 | "configuration": {
1560 | "enabled": true,
1561 | "level": "warning"
1562 | },
1563 | "descriptor": {
1564 | "id": "C28214"
1565 | }
1566 | },
1567 | {
1568 | "configuration": {
1569 | "enabled": true,
1570 | "level": "warning"
1571 | },
1572 | "descriptor": {
1573 | "id": "C28215"
1574 | }
1575 | },
1576 | {
1577 | "configuration": {
1578 | "enabled": true,
1579 | "level": "warning"
1580 | },
1581 | "descriptor": {
1582 | "id": "C28216"
1583 | }
1584 | },
1585 | {
1586 | "configuration": {
1587 | "enabled": true,
1588 | "level": "warning"
1589 | },
1590 | "descriptor": {
1591 | "id": "C28217"
1592 | }
1593 | },
1594 | {
1595 | "configuration": {
1596 | "enabled": true,
1597 | "level": "warning"
1598 | },
1599 | "descriptor": {
1600 | "id": "C28218"
1601 | }
1602 | },
1603 | {
1604 | "configuration": {
1605 | "enabled": true,
1606 | "level": "warning"
1607 | },
1608 | "descriptor": {
1609 | "id": "C28219"
1610 | }
1611 | },
1612 | {
1613 | "configuration": {
1614 | "enabled": true,
1615 | "level": "warning"
1616 | },
1617 | "descriptor": {
1618 | "id": "C28220"
1619 | }
1620 | },
1621 | {
1622 | "configuration": {
1623 | "enabled": true,
1624 | "level": "warning"
1625 | },
1626 | "descriptor": {
1627 | "id": "C28221"
1628 | }
1629 | },
1630 | {
1631 | "configuration": {
1632 | "enabled": true,
1633 | "level": "warning"
1634 | },
1635 | "descriptor": {
1636 | "id": "C28222"
1637 | }
1638 | },
1639 | {
1640 | "configuration": {
1641 | "enabled": true,
1642 | "level": "warning"
1643 | },
1644 | "descriptor": {
1645 | "id": "C28223"
1646 | }
1647 | },
1648 | {
1649 | "configuration": {
1650 | "enabled": true,
1651 | "level": "warning"
1652 | },
1653 | "descriptor": {
1654 | "id": "C28224"
1655 | }
1656 | },
1657 | {
1658 | "configuration": {
1659 | "enabled": true,
1660 | "level": "warning"
1661 | },
1662 | "descriptor": {
1663 | "id": "C28225"
1664 | }
1665 | },
1666 | {
1667 | "configuration": {
1668 | "enabled": true,
1669 | "level": "warning"
1670 | },
1671 | "descriptor": {
1672 | "id": "C28226"
1673 | }
1674 | },
1675 | {
1676 | "configuration": {
1677 | "enabled": true,
1678 | "level": "warning"
1679 | },
1680 | "descriptor": {
1681 | "id": "C28227"
1682 | }
1683 | },
1684 | {
1685 | "configuration": {
1686 | "enabled": true,
1687 | "level": "warning"
1688 | },
1689 | "descriptor": {
1690 | "id": "C28228"
1691 | }
1692 | },
1693 | {
1694 | "configuration": {
1695 | "enabled": true,
1696 | "level": "warning"
1697 | },
1698 | "descriptor": {
1699 | "id": "C28229"
1700 | }
1701 | },
1702 | {
1703 | "configuration": {
1704 | "enabled": true,
1705 | "level": "warning"
1706 | },
1707 | "descriptor": {
1708 | "id": "C28230"
1709 | }
1710 | },
1711 | {
1712 | "configuration": {
1713 | "enabled": true,
1714 | "level": "warning"
1715 | },
1716 | "descriptor": {
1717 | "id": "C28231"
1718 | }
1719 | },
1720 | {
1721 | "configuration": {
1722 | "enabled": true,
1723 | "level": "warning"
1724 | },
1725 | "descriptor": {
1726 | "id": "C28232"
1727 | }
1728 | },
1729 | {
1730 | "configuration": {
1731 | "enabled": true,
1732 | "level": "warning"
1733 | },
1734 | "descriptor": {
1735 | "id": "C28233"
1736 | }
1737 | },
1738 | {
1739 | "configuration": {
1740 | "enabled": true,
1741 | "level": "warning"
1742 | },
1743 | "descriptor": {
1744 | "id": "C28234"
1745 | }
1746 | },
1747 | {
1748 | "configuration": {
1749 | "enabled": true,
1750 | "level": "warning"
1751 | },
1752 | "descriptor": {
1753 | "id": "C28235"
1754 | }
1755 | },
1756 | {
1757 | "configuration": {
1758 | "enabled": true,
1759 | "level": "warning"
1760 | },
1761 | "descriptor": {
1762 | "id": "C28236"
1763 | }
1764 | },
1765 | {
1766 | "configuration": {
1767 | "enabled": true,
1768 | "level": "warning"
1769 | },
1770 | "descriptor": {
1771 | "id": "C28237"
1772 | }
1773 | },
1774 | {
1775 | "configuration": {
1776 | "enabled": true,
1777 | "level": "warning"
1778 | },
1779 | "descriptor": {
1780 | "id": "C28238"
1781 | }
1782 | },
1783 | {
1784 | "configuration": {
1785 | "enabled": true,
1786 | "level": "warning"
1787 | },
1788 | "descriptor": {
1789 | "id": "C28239"
1790 | }
1791 | },
1792 | {
1793 | "configuration": {
1794 | "enabled": true,
1795 | "level": "warning"
1796 | },
1797 | "descriptor": {
1798 | "id": "C28240"
1799 | }
1800 | },
1801 | {
1802 | "configuration": {
1803 | "enabled": true,
1804 | "level": "warning"
1805 | },
1806 | "descriptor": {
1807 | "id": "C28241"
1808 | }
1809 | },
1810 | {
1811 | "configuration": {
1812 | "enabled": true,
1813 | "level": "warning"
1814 | },
1815 | "descriptor": {
1816 | "id": "C28243"
1817 | }
1818 | },
1819 | {
1820 | "configuration": {
1821 | "enabled": true,
1822 | "level": "warning"
1823 | },
1824 | "descriptor": {
1825 | "id": "C28244"
1826 | }
1827 | },
1828 | {
1829 | "configuration": {
1830 | "enabled": true,
1831 | "level": "warning"
1832 | },
1833 | "descriptor": {
1834 | "id": "C28245"
1835 | }
1836 | },
1837 | {
1838 | "configuration": {
1839 | "enabled": true,
1840 | "level": "warning"
1841 | },
1842 | "descriptor": {
1843 | "id": "C28246"
1844 | }
1845 | },
1846 | {
1847 | "configuration": {
1848 | "enabled": true,
1849 | "level": "warning"
1850 | },
1851 | "descriptor": {
1852 | "id": "C28250"
1853 | }
1854 | },
1855 | {
1856 | "configuration": {
1857 | "enabled": true,
1858 | "level": "warning"
1859 | },
1860 | "descriptor": {
1861 | "id": "C28251"
1862 | }
1863 | },
1864 | {
1865 | "configuration": {
1866 | "enabled": true,
1867 | "level": "warning"
1868 | },
1869 | "descriptor": {
1870 | "id": "C28252"
1871 | }
1872 | },
1873 | {
1874 | "configuration": {
1875 | "enabled": true,
1876 | "level": "warning"
1877 | },
1878 | "descriptor": {
1879 | "id": "C28253"
1880 | }
1881 | },
1882 | {
1883 | "configuration": {
1884 | "enabled": true,
1885 | "level": "warning"
1886 | },
1887 | "descriptor": {
1888 | "id": "C28254"
1889 | }
1890 | },
1891 | {
1892 | "configuration": {
1893 | "enabled": true,
1894 | "level": "warning"
1895 | },
1896 | "descriptor": {
1897 | "id": "C28262"
1898 | }
1899 | },
1900 | {
1901 | "configuration": {
1902 | "enabled": true,
1903 | "level": "warning"
1904 | },
1905 | "descriptor": {
1906 | "id": "C28263"
1907 | }
1908 | },
1909 | {
1910 | "configuration": {
1911 | "enabled": true,
1912 | "level": "warning"
1913 | },
1914 | "descriptor": {
1915 | "id": "C28267"
1916 | }
1917 | },
1918 | {
1919 | "configuration": {
1920 | "enabled": true,
1921 | "level": "warning"
1922 | },
1923 | "descriptor": {
1924 | "id": "C28272"
1925 | }
1926 | },
1927 | {
1928 | "configuration": {
1929 | "enabled": true,
1930 | "level": "warning"
1931 | },
1932 | "descriptor": {
1933 | "id": "C28273"
1934 | }
1935 | },
1936 | {
1937 | "configuration": {
1938 | "enabled": true,
1939 | "level": "warning"
1940 | },
1941 | "descriptor": {
1942 | "id": "C28275"
1943 | }
1944 | },
1945 | {
1946 | "configuration": {
1947 | "enabled": true,
1948 | "level": "warning"
1949 | },
1950 | "descriptor": {
1951 | "id": "C28279"
1952 | }
1953 | },
1954 | {
1955 | "configuration": {
1956 | "enabled": true,
1957 | "level": "warning"
1958 | },
1959 | "descriptor": {
1960 | "id": "C28280"
1961 | }
1962 | },
1963 | {
1964 | "configuration": {
1965 | "enabled": true,
1966 | "level": "warning"
1967 | },
1968 | "descriptor": {
1969 | "id": "C28282"
1970 | }
1971 | },
1972 | {
1973 | "configuration": {
1974 | "enabled": true,
1975 | "level": "warning"
1976 | },
1977 | "descriptor": {
1978 | "id": "C28285"
1979 | }
1980 | },
1981 | {
1982 | "configuration": {
1983 | "enabled": true,
1984 | "level": "warning"
1985 | },
1986 | "descriptor": {
1987 | "id": "C28286"
1988 | }
1989 | },
1990 | {
1991 | "configuration": {
1992 | "enabled": true,
1993 | "level": "warning"
1994 | },
1995 | "descriptor": {
1996 | "id": "C28287"
1997 | }
1998 | },
1999 | {
2000 | "configuration": {
2001 | "enabled": true,
2002 | "level": "warning"
2003 | },
2004 | "descriptor": {
2005 | "id": "C28288"
2006 | }
2007 | },
2008 | {
2009 | "configuration": {
2010 | "enabled": true,
2011 | "level": "warning"
2012 | },
2013 | "descriptor": {
2014 | "id": "C28289"
2015 | }
2016 | },
2017 | {
2018 | "configuration": {
2019 | "enabled": true,
2020 | "level": "warning"
2021 | },
2022 | "descriptor": {
2023 | "id": "C28290"
2024 | }
2025 | },
2026 | {
2027 | "configuration": {
2028 | "enabled": true,
2029 | "level": "warning"
2030 | },
2031 | "descriptor": {
2032 | "id": "C28291"
2033 | }
2034 | },
2035 | {
2036 | "configuration": {
2037 | "enabled": true,
2038 | "level": "warning"
2039 | },
2040 | "descriptor": {
2041 | "id": "C28300"
2042 | }
2043 | },
2044 | {
2045 | "configuration": {
2046 | "enabled": true,
2047 | "level": "warning"
2048 | },
2049 | "descriptor": {
2050 | "id": "C28301"
2051 | }
2052 | },
2053 | {
2054 | "configuration": {
2055 | "enabled": true,
2056 | "level": "warning"
2057 | },
2058 | "descriptor": {
2059 | "id": "C28302"
2060 | }
2061 | },
2062 | {
2063 | "configuration": {
2064 | "enabled": true,
2065 | "level": "warning"
2066 | },
2067 | "descriptor": {
2068 | "id": "C28303"
2069 | }
2070 | },
2071 | {
2072 | "configuration": {
2073 | "enabled": true,
2074 | "level": "warning"
2075 | },
2076 | "descriptor": {
2077 | "id": "C28304"
2078 | }
2079 | },
2080 | {
2081 | "configuration": {
2082 | "enabled": true,
2083 | "level": "warning"
2084 | },
2085 | "descriptor": {
2086 | "id": "C28305"
2087 | }
2088 | },
2089 | {
2090 | "configuration": {
2091 | "enabled": true,
2092 | "level": "warning"
2093 | },
2094 | "descriptor": {
2095 | "id": "C28306"
2096 | }
2097 | },
2098 | {
2099 | "configuration": {
2100 | "enabled": true,
2101 | "level": "warning"
2102 | },
2103 | "descriptor": {
2104 | "id": "C28307"
2105 | }
2106 | },
2107 | {
2108 | "configuration": {
2109 | "enabled": true,
2110 | "level": "warning"
2111 | },
2112 | "descriptor": {
2113 | "id": "C28308"
2114 | }
2115 | },
2116 | {
2117 | "configuration": {
2118 | "enabled": true,
2119 | "level": "warning"
2120 | },
2121 | "descriptor": {
2122 | "id": "C28309"
2123 | }
2124 | },
2125 | {
2126 | "configuration": {
2127 | "enabled": true,
2128 | "level": "warning"
2129 | },
2130 | "descriptor": {
2131 | "id": "C28350"
2132 | }
2133 | },
2134 | {
2135 | "configuration": {
2136 | "enabled": true,
2137 | "level": "warning"
2138 | },
2139 | "descriptor": {
2140 | "id": "C28351"
2141 | }
2142 | }
2143 | ]
2144 | }
2145 | ],
2146 | "artifacts": [
2147 | {
2148 | "location": {
2149 | "uri": "file:///c:/users/rahul/desktop/dev_projects/applications/sudoku-solve-gui/sudoku_gui/source.cpp"
2150 | },
2151 | "roles": [
2152 | "analysisTarget",
2153 | "resultFile"
2154 | ]
2155 | }
2156 | ]
2157 | }
2158 | ]
2159 | }
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Source.nativecodeanalysis.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Source.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Source.obj
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.Build.CppClean.log:
--------------------------------------------------------------------------------
1 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\vc142.pdb
2 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\vc142.idb
3 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\source.obj
4 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_solve.obj
5 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.obj
6 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\debug\sudoku_gui.exe
7 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\debug\sudoku_gui.ilk
8 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\debug\sudoku_gui.pdb
9 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.res
10 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.obj.enc
11 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_solve.obj.enc
12 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\cl.command.1.tlog
13 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\cl.read.1.tlog
14 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\cl.write.1.tlog
15 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\link.command.1.tlog
16 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\link.read.1.tlog
17 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\link.write.1.tlog
18 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\rc.command.1.tlog
19 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\rc.read.1.tlog
20 | c:\users\rahul\desktop\dev_projects\applications\sudoku-solve-gui\sudoku_gui\debug\sudoku_gui.tlog\rc.write.1.tlog
21 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.log:
--------------------------------------------------------------------------------
1 | <<<<<<< HEAD
2 | Sudoku_solve.c
3 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(162,98): warning C4047: 'function': 'LPARAM' differs in levels of indirection from 'Sudoku_Append_t *'
4 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(162,98): warning C4024: 'SendMessageW': different types for formal and actual parameter 4
5 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(298,54): warning C4047: 'function': 'WPARAM' differs in levels of indirection from 'void *'
6 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(298,54): warning C4024: 'SendMessageW': different types for formal and actual parameter 3
7 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(298,60): warning C4047: 'function': 'LPARAM' differs in levels of indirection from 'void *'
8 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(298,60): warning C4024: 'SendMessageW': different types for formal and actual parameter 4
9 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(323,94): warning C4047: 'function': 'LPARAM' differs in levels of indirection from 'Sudoku_Append_t *'
10 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(323,94): warning C4024: 'SendMessageW': different types for formal and actual parameter 4
11 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(337,98): warning C4047: 'function': 'LPARAM' differs in levels of indirection from 'Sudoku_Append_t *'
12 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\Sudoku_solve.c(337,98): warning C4024: 'SendMessageW': different types for formal and actual parameter 4
13 | Sudoku_GUI.vcxproj -> C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Debug\Sudoku_GUI.exe
14 | =======
15 | Sudoku_GUI.vcxproj -> D:\Rahul's Stuff\Developments\Applications\sudoku-solve-GUI\Debug\Sudoku_GUI.exe
16 | >>>>>>> 6cf18b8fa5f884ca243e367eb285c09506073178
17 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.nativecodeanalysis.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
6 | Sudoku_GUI.c
7 | 37
8 | 13
9 |
10 | 28251
11 | Inconsistent annotation for 'WinMain': this instance has no annotations. See c:\program files (x86)\windows kits\10\include\10.0.18362.0\um\winbase.h(933).
12 | WinMain
13 | WinMain@16
14 | 37
15 |
16 |
17 |
18 |
19 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
20 | Sudoku_GUI.c
21 | 157
22 | 31
23 |
24 | 6258
25 | Using TerminateThread does not allow proper thread clean up.
26 | WndProc
27 | WndProc@16
28 | 109
29 |
30 |
31 |
32 |
33 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
34 | Sudoku_GUI.c
35 | 196
36 | 31
37 |
38 | 6258
39 | Using TerminateThread does not allow proper thread clean up.
40 | WndProc
41 | WndProc@16
42 | 109
43 |
44 |
45 |
46 |
47 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
48 | Sudoku_GUI.c
49 | 247
50 | 30
51 |
52 | 6387
53 | '_Param_(3)' could be '0': this does not adhere to the specification for the function 'SetDlgItemTextW'.
54 | WndProc
55 | WndProc@16
56 | 109
57 | 1
58 | 4
59 |
60 | mspft
61 |
62 |
63 |
64 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
65 | Sudoku_GUI.c
66 | 111
67 | 12
68 |
69 |
70 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
71 | Sudoku_GUI.c
72 | 226
73 | 4
74 |
75 |
76 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
77 | Sudoku_GUI.c
78 | 228
79 | 16
80 |
81 |
82 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
83 | Sudoku_GUI.c
84 | 230
85 | 8
86 |
87 |
88 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
89 | Sudoku_GUI.c
90 | 233
91 | 24
92 |
93 |
94 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
95 | Sudoku_GUI.c
96 | 235
97 | 28
98 |
99 |
100 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
101 | Sudoku_GUI.c
102 | 236
103 | 16
104 |
105 |
106 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
107 | Sudoku_GUI.c
108 | 237
109 | 16
110 |
111 |
112 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
113 | Sudoku_GUI.c
114 | 238
115 | 16
116 |
117 |
118 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
119 | Sudoku_GUI.c
120 | 240
121 | 33
122 |
123 |
124 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
125 | Sudoku_GUI.c
126 | 245
127 | 38
128 |
129 |
130 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
131 | Sudoku_GUI.c
132 | 247
133 | 30
134 |
135 |
136 |
137 |
138 |
139 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
140 | Sudoku_GUI.c
141 | 138
142 | 29
143 |
144 | 6011
145 | Dereferencing NULL pointer 'sudokuData'.
146 | WndProc
147 | WndProc@16
148 | 109
149 | 1
150 | 4
151 |
152 | mspft
153 |
154 |
155 |
156 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
157 | Sudoku_GUI.c
158 | 111
159 | 12
160 |
161 |
162 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
163 | Sudoku_GUI.c
164 | 113
165 | 4
166 |
167 |
168 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
169 | Sudoku_GUI.c
170 | 115
171 | 12
172 |
173 |
174 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
175 | Sudoku_GUI.c
176 | 116
177 | 12
178 |
179 |
180 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
181 | Sudoku_GUI.c
182 | 119
183 | 16
184 |
185 |
186 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
187 | Sudoku_GUI.c
188 | 121
189 | 8
190 |
191 |
192 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
193 | Sudoku_GUI.c
194 | 123
195 | 16
196 |
197 |
198 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
199 | Sudoku_GUI.c
200 | 125
201 | 24
202 |
203 |
204 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
205 | Sudoku_GUI.c
206 | 126
207 | 18
208 |
209 |
210 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
211 | Sudoku_GUI.c
212 | 127
213 | 23
214 |
215 | 1
216 | declaration
217 | Essential
218 | 'sudokuData' may be NULL
219 |
220 |
221 |
222 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
223 | Sudoku_GUI.c
224 | 129
225 | 17
226 |
227 |
228 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
229 | Sudoku_GUI.c
230 | 132
231 | 21
232 |
233 |
234 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
235 | Sudoku_GUI.c
236 | 132
237 | 30
238 |
239 |
240 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
241 | Sudoku_GUI.c
242 | 134
243 | 30
244 |
245 |
246 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
247 | Sudoku_GUI.c
248 | 132
249 | 37
250 |
251 |
252 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
253 | Sudoku_GUI.c
254 | 132
255 | 30
256 |
257 |
258 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
259 | Sudoku_GUI.c
260 | 134
261 | 30
262 |
263 |
264 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
265 | Sudoku_GUI.c
266 | 132
267 | 37
268 |
269 |
270 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
271 | Sudoku_GUI.c
272 | 132
273 | 30
274 |
275 |
276 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
277 | Sudoku_GUI.c
278 | 138
279 | 29
280 |
281 | 2
282 | usage
283 | Essential
284 | 'sudokuData' is dereferenced, but may still be NULL
285 |
286 |
287 |
288 |
289 |
290 |
291 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
292 | Sudoku_GUI.c
293 | 422
294 | 16
295 |
296 | 6011
297 | Dereferencing NULL pointer 'grid'.
298 | addControls
299 | addControls
300 | 367
301 | 1
302 | 4
303 |
304 | mspft
305 |
306 |
307 |
308 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
309 | Sudoku_GUI.c
310 | 370
311 | 14
312 |
313 |
314 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
315 | Sudoku_GUI.c
316 | 371
317 | 14
318 |
319 |
320 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
321 | Sudoku_GUI.c
322 | 372
323 | 16
324 |
325 |
326 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
327 | Sudoku_GUI.c
328 | 375
329 | 8
330 |
331 |
332 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
333 | Sudoku_GUI.c
334 | 375
335 | 16
336 |
337 |
338 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
339 | Sudoku_GUI.c
340 | 375
341 | 24
342 |
343 |
344 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
345 | Sudoku_GUI.c
346 | 376
347 | 13
348 |
349 |
350 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
351 | Sudoku_GUI.c
352 | 376
353 | 22
354 |
355 |
356 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
357 | Sudoku_GUI.c
358 | 378
359 | 15
360 |
361 |
362 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
363 | Sudoku_GUI.c
364 | 379
365 | 15
366 |
367 |
368 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
369 | Sudoku_GUI.c
370 | 381
371 | 21
372 |
373 |
374 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
375 | Sudoku_GUI.c
376 | 382
377 | 18
378 |
379 |
380 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
381 | Sudoku_GUI.c
382 | 383
383 | 20
384 |
385 |
386 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
387 | Sudoku_GUI.c
388 | 376
389 | 28
390 |
391 |
392 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
393 | Sudoku_GUI.c
394 | 376
395 | 22
396 |
397 |
398 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
399 | Sudoku_GUI.c
400 | 378
401 | 15
402 |
403 |
404 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
405 | Sudoku_GUI.c
406 | 379
407 | 15
408 |
409 |
410 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
411 | Sudoku_GUI.c
412 | 381
413 | 21
414 |
415 |
416 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
417 | Sudoku_GUI.c
418 | 382
419 | 18
420 |
421 |
422 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
423 | Sudoku_GUI.c
424 | 383
425 | 20
426 |
427 |
428 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
429 | Sudoku_GUI.c
430 | 376
431 | 28
432 |
433 |
434 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
435 | Sudoku_GUI.c
436 | 376
437 | 22
438 |
439 |
440 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
441 | Sudoku_GUI.c
442 | 387
443 | 9
444 |
445 | 1
446 | declaration
447 | Essential
448 | 'grid' may be NULL
449 |
450 |
451 |
452 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
453 | Sudoku_GUI.c
454 | 388
455 | 8
456 |
457 |
458 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
459 | Sudoku_GUI.c
460 | 388
461 | 15
462 |
463 |
464 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
465 | Sudoku_GUI.c
466 | 388
467 | 22
468 |
469 |
470 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
471 | Sudoku_GUI.c
472 | 388
473 | 36
474 |
475 |
476 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
477 | Sudoku_GUI.c
478 | 388
479 | 51
480 |
481 |
482 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
483 | Sudoku_GUI.c
484 | 388
485 | 66
486 |
487 |
488 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
489 | Sudoku_GUI.c
490 | 388
491 | 90
492 |
493 |
494 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
495 | Sudoku_GUI.c
496 | 389
497 | 13
498 |
499 |
500 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
501 | Sudoku_GUI.c
502 | 389
503 | 22
504 |
505 | 2
506 | branch
507 | Full
508 | Enter this loop, (assume 'i<81')
509 |
510 |
511 |
512 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
513 | Sudoku_GUI.c
514 | 392
515 | 18
516 |
517 | 3
518 | branch
519 | Full
520 | Assume switch ( 'i%9' ) resolves to case 0:
521 |
522 |
523 |
524 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
525 | Sudoku_GUI.c
526 | 394
527 | 8
528 |
529 |
530 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
531 | Sudoku_GUI.c
532 | 395
533 | 20
534 |
535 |
536 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
537 | Sudoku_GUI.c
538 | 406
539 | 18
540 |
541 | 4
542 | branch
543 | Full
544 | Assume switch ( 'i/27' ) resolves to case 0:
545 |
546 |
547 |
548 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
549 | Sudoku_GUI.c
550 | 408
551 | 8
552 |
553 |
554 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
555 | Sudoku_GUI.c
556 | 409
557 | 20
558 |
559 |
560 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
561 | Sudoku_GUI.c
562 | 419
563 | 14
564 |
565 |
566 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
567 | Sudoku_GUI.c
568 | 420
569 | 14
570 |
571 |
572 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
573 | Sudoku_GUI.c
574 | 422
575 | 16
576 |
577 | 5
578 | usage
579 | Essential
580 | 'grid' is dereferenced, but may still be NULL
581 |
582 |
583 |
584 |
585 |
586 |
587 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
588 | Sudoku_GUI.c
589 | 490
590 | 22
591 |
592 | 6387
593 | '_Param_(3)' could be '0': this does not adhere to the specification for the function 'SetDlgItemTextW'.
594 | clearSudokuBoard
595 | clearSudokuBoard
596 | 484
597 | 1
598 | 4
599 |
600 | mspft
601 |
602 |
603 |
604 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
605 | Sudoku_GUI.c
606 | 486
607 | 13
608 |
609 |
610 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
611 | Sudoku_GUI.c
612 | 486
613 | 22
614 |
615 |
616 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
617 | Sudoku_GUI.c
618 | 488
619 | 12
620 |
621 |
622 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
623 | Sudoku_GUI.c
624 | 489
625 | 12
626 |
627 |
628 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
629 | Sudoku_GUI.c
630 | 490
631 | 22
632 |
633 |
634 |
635 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.obj
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.res
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/CL.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/CL.command.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/CL.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/CL.read.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/CL.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/CL.write.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/Sudoku_GUI.lastbuildstate:
--------------------------------------------------------------------------------
1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.25.28610:TargetPlatformVersion=10.0.18362.0:
2 | Debug|Win32|D:\Rahul's Stuff\Developments\Applications\sudoku-solve-GUI\|
3 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/link.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/link.command.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/link.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/link.read.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/link.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/link.write.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/rc.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/rc.command.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/rc.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/rc.read.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.tlog/rc.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.tlog/rc.write.1.tlog
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_GUI.vcxproj.FileListAbsolute.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_GUI.vcxproj.FileListAbsolute.txt
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_solve.nativecodeanalysis.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/Sudoku_solve.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/Sudoku_solve.obj
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/vc.nativecodeanalysis.all.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
4 | Sudoku_GUI.c
5 | 37
6 | 13
7 |
8 | 28251
9 | Inconsistent annotation for 'WinMain': this instance has no annotations. See c:\program files (x86)\windows kits\10\include\10.0.18362.0\um\winbase.h(933).
10 | WinMain
11 | WinMain@16
12 | 37
13 |
14 |
15 |
16 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
17 | Sudoku_GUI.c
18 | 157
19 | 31
20 |
21 | 6258
22 | Using TerminateThread does not allow proper thread clean up.
23 | WndProc
24 | WndProc@16
25 | 109
26 |
27 |
28 |
29 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
30 | Sudoku_GUI.c
31 | 196
32 | 31
33 |
34 | 6258
35 | Using TerminateThread does not allow proper thread clean up.
36 | WndProc
37 | WndProc@16
38 | 109
39 |
40 |
41 |
42 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
43 | Sudoku_GUI.c
44 | 247
45 | 30
46 |
47 | 6387
48 | '_Param_(3)' could be '0': this does not adhere to the specification for the function 'SetDlgItemTextW'.
49 | WndProc
50 | WndProc@16
51 | 109
52 | 1
53 | 4
54 |
55 | mspft
56 |
57 |
58 |
59 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
60 | Sudoku_GUI.c
61 | 111
62 | 12
63 |
64 |
65 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
66 | Sudoku_GUI.c
67 | 226
68 | 4
69 |
70 |
71 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
72 | Sudoku_GUI.c
73 | 228
74 | 16
75 |
76 |
77 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
78 | Sudoku_GUI.c
79 | 230
80 | 8
81 |
82 |
83 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
84 | Sudoku_GUI.c
85 | 233
86 | 24
87 |
88 |
89 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
90 | Sudoku_GUI.c
91 | 235
92 | 28
93 |
94 |
95 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
96 | Sudoku_GUI.c
97 | 236
98 | 16
99 |
100 |
101 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
102 | Sudoku_GUI.c
103 | 237
104 | 16
105 |
106 |
107 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
108 | Sudoku_GUI.c
109 | 238
110 | 16
111 |
112 |
113 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
114 | Sudoku_GUI.c
115 | 240
116 | 33
117 |
118 |
119 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
120 | Sudoku_GUI.c
121 | 245
122 | 38
123 |
124 |
125 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
126 | Sudoku_GUI.c
127 | 247
128 | 30
129 |
130 |
131 |
132 |
133 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
134 | Sudoku_GUI.c
135 | 138
136 | 29
137 |
138 | 6011
139 | Dereferencing NULL pointer 'sudokuData'.
140 | WndProc
141 | WndProc@16
142 | 109
143 | 1
144 | 4
145 |
146 | mspft
147 |
148 |
149 |
150 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
151 | Sudoku_GUI.c
152 | 111
153 | 12
154 |
155 |
156 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
157 | Sudoku_GUI.c
158 | 113
159 | 4
160 |
161 |
162 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
163 | Sudoku_GUI.c
164 | 115
165 | 12
166 |
167 |
168 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
169 | Sudoku_GUI.c
170 | 116
171 | 12
172 |
173 |
174 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
175 | Sudoku_GUI.c
176 | 119
177 | 16
178 |
179 |
180 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
181 | Sudoku_GUI.c
182 | 121
183 | 8
184 |
185 |
186 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
187 | Sudoku_GUI.c
188 | 123
189 | 16
190 |
191 |
192 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
193 | Sudoku_GUI.c
194 | 125
195 | 24
196 |
197 |
198 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
199 | Sudoku_GUI.c
200 | 126
201 | 18
202 |
203 |
204 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
205 | Sudoku_GUI.c
206 | 127
207 | 23
208 |
209 | 1
210 | declaration
211 | Essential
212 | 'sudokuData' may be NULL
213 |
214 |
215 |
216 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
217 | Sudoku_GUI.c
218 | 129
219 | 17
220 |
221 |
222 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
223 | Sudoku_GUI.c
224 | 132
225 | 21
226 |
227 |
228 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
229 | Sudoku_GUI.c
230 | 132
231 | 30
232 |
233 |
234 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
235 | Sudoku_GUI.c
236 | 134
237 | 30
238 |
239 |
240 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
241 | Sudoku_GUI.c
242 | 132
243 | 37
244 |
245 |
246 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
247 | Sudoku_GUI.c
248 | 132
249 | 30
250 |
251 |
252 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
253 | Sudoku_GUI.c
254 | 134
255 | 30
256 |
257 |
258 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
259 | Sudoku_GUI.c
260 | 132
261 | 37
262 |
263 |
264 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
265 | Sudoku_GUI.c
266 | 132
267 | 30
268 |
269 |
270 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
271 | Sudoku_GUI.c
272 | 138
273 | 29
274 |
275 | 2
276 | usage
277 | Essential
278 | 'sudokuData' is dereferenced, but may still be NULL
279 |
280 |
281 |
282 |
283 |
284 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
285 | Sudoku_GUI.c
286 | 422
287 | 16
288 |
289 | 6011
290 | Dereferencing NULL pointer 'grid'.
291 | addControls
292 | addControls
293 | 367
294 | 1
295 | 4
296 |
297 | mspft
298 |
299 |
300 |
301 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
302 | Sudoku_GUI.c
303 | 370
304 | 14
305 |
306 |
307 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
308 | Sudoku_GUI.c
309 | 371
310 | 14
311 |
312 |
313 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
314 | Sudoku_GUI.c
315 | 372
316 | 16
317 |
318 |
319 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
320 | Sudoku_GUI.c
321 | 375
322 | 8
323 |
324 |
325 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
326 | Sudoku_GUI.c
327 | 375
328 | 16
329 |
330 |
331 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
332 | Sudoku_GUI.c
333 | 375
334 | 24
335 |
336 |
337 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
338 | Sudoku_GUI.c
339 | 376
340 | 13
341 |
342 |
343 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
344 | Sudoku_GUI.c
345 | 376
346 | 22
347 |
348 |
349 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
350 | Sudoku_GUI.c
351 | 378
352 | 15
353 |
354 |
355 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
356 | Sudoku_GUI.c
357 | 379
358 | 15
359 |
360 |
361 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
362 | Sudoku_GUI.c
363 | 381
364 | 21
365 |
366 |
367 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
368 | Sudoku_GUI.c
369 | 382
370 | 18
371 |
372 |
373 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
374 | Sudoku_GUI.c
375 | 383
376 | 20
377 |
378 |
379 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
380 | Sudoku_GUI.c
381 | 376
382 | 28
383 |
384 |
385 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
386 | Sudoku_GUI.c
387 | 376
388 | 22
389 |
390 |
391 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
392 | Sudoku_GUI.c
393 | 378
394 | 15
395 |
396 |
397 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
398 | Sudoku_GUI.c
399 | 379
400 | 15
401 |
402 |
403 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
404 | Sudoku_GUI.c
405 | 381
406 | 21
407 |
408 |
409 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
410 | Sudoku_GUI.c
411 | 382
412 | 18
413 |
414 |
415 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
416 | Sudoku_GUI.c
417 | 383
418 | 20
419 |
420 |
421 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
422 | Sudoku_GUI.c
423 | 376
424 | 28
425 |
426 |
427 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
428 | Sudoku_GUI.c
429 | 376
430 | 22
431 |
432 |
433 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
434 | Sudoku_GUI.c
435 | 387
436 | 9
437 |
438 | 1
439 | declaration
440 | Essential
441 | 'grid' may be NULL
442 |
443 |
444 |
445 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
446 | Sudoku_GUI.c
447 | 388
448 | 8
449 |
450 |
451 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
452 | Sudoku_GUI.c
453 | 388
454 | 15
455 |
456 |
457 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
458 | Sudoku_GUI.c
459 | 388
460 | 22
461 |
462 |
463 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
464 | Sudoku_GUI.c
465 | 388
466 | 36
467 |
468 |
469 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
470 | Sudoku_GUI.c
471 | 388
472 | 51
473 |
474 |
475 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
476 | Sudoku_GUI.c
477 | 388
478 | 66
479 |
480 |
481 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
482 | Sudoku_GUI.c
483 | 388
484 | 90
485 |
486 |
487 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
488 | Sudoku_GUI.c
489 | 389
490 | 13
491 |
492 |
493 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
494 | Sudoku_GUI.c
495 | 389
496 | 22
497 |
498 | 2
499 | branch
500 | Full
501 | Enter this loop, (assume 'i<81')
502 |
503 |
504 |
505 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
506 | Sudoku_GUI.c
507 | 392
508 | 18
509 |
510 | 3
511 | branch
512 | Full
513 | Assume switch ( 'i%9' ) resolves to case 0:
514 |
515 |
516 |
517 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
518 | Sudoku_GUI.c
519 | 394
520 | 8
521 |
522 |
523 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
524 | Sudoku_GUI.c
525 | 395
526 | 20
527 |
528 |
529 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
530 | Sudoku_GUI.c
531 | 406
532 | 18
533 |
534 | 4
535 | branch
536 | Full
537 | Assume switch ( 'i/27' ) resolves to case 0:
538 |
539 |
540 |
541 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
542 | Sudoku_GUI.c
543 | 408
544 | 8
545 |
546 |
547 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
548 | Sudoku_GUI.c
549 | 409
550 | 20
551 |
552 |
553 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
554 | Sudoku_GUI.c
555 | 419
556 | 14
557 |
558 |
559 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
560 | Sudoku_GUI.c
561 | 420
562 | 14
563 |
564 |
565 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
566 | Sudoku_GUI.c
567 | 422
568 | 16
569 |
570 | 5
571 | usage
572 | Essential
573 | 'grid' is dereferenced, but may still be NULL
574 |
575 |
576 |
577 |
578 |
579 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
580 | Sudoku_GUI.c
581 | 490
582 | 22
583 |
584 | 6387
585 | '_Param_(3)' could be '0': this does not adhere to the specification for the function 'SetDlgItemTextW'.
586 | clearSudokuBoard
587 | clearSudokuBoard
588 | 484
589 | 1
590 | 4
591 |
592 | mspft
593 |
594 |
595 |
596 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
597 | Sudoku_GUI.c
598 | 486
599 | 13
600 |
601 |
602 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
603 | Sudoku_GUI.c
604 | 486
605 | 22
606 |
607 |
608 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
609 | Sudoku_GUI.c
610 | 488
611 | 12
612 |
613 |
614 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
615 | Sudoku_GUI.c
616 | 489
617 | 12
618 |
619 |
620 | C:\Users\rahul\Desktop\Dev_Projects\Applications\sudoku-solve-GUI\Sudoku_GUI\
621 | Sudoku_GUI.c
622 | 490
623 | 22
624 |
625 |
626 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/vc142.idb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/vc142.idb
--------------------------------------------------------------------------------
/Sudoku_GUI/Debug/vc142.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Debug/vc142.pdb
--------------------------------------------------------------------------------
/Sudoku_GUI/Resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by Sudoku_GUI.rc
4 | //
5 | #define IDC_MYICON 2
6 | #define IDD_SUDOKUGUI_DIALOG 102
7 | #define IDS_APP_TITLE 103
8 | #define IDD_ABOUTBOX 103
9 | #define IDM_ABOUT 104
10 | #define IDM_EXIT 105
11 | #define IDI_SUDOKUGUI 107
12 | #define IDC_SUDOKUGUI 109
13 | #define IDR_MAINFRAME 128
14 | #define IDI_ICON1 130
15 | #define ID_FILE_LOADSUDOKU 32771
16 | #define IDC_STATIC -1
17 |
18 | // Next default values for new objects
19 | //
20 | #ifdef APSTUDIO_INVOKED
21 | #ifndef APSTUDIO_READONLY_SYMBOLS
22 | #define _APS_NO_MFC 1
23 | #define _APS_NEXT_RESOURCE_VALUE 131
24 | #define _APS_NEXT_COMMAND_VALUE 32772
25 | #define _APS_NEXT_CONTROL_VALUE 1000
26 | #define _APS_NEXT_SYMED_VALUE 110
27 | #endif
28 | #endif
29 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Source.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Source.cpp
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_GUI.aps:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Sudoku_GUI.aps
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_GUI.c:
--------------------------------------------------------------------------------
1 | // Sudoku_GUI.cpp : Defines the entry point for the application.
2 | //
3 |
4 | #include "sudoku_GUI.h"
5 | #include "sudoku_macros.h"
6 |
7 |
8 | // Global Variables:
9 | HINSTANCE hInst; // current instance
10 | WCHAR szTitle[MAX_LOADSTRING]; // The title bar text
11 | WCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
12 |
13 | // Forward declarations of functions included in this code module:
14 | LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
15 | INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
16 |
17 | // Control window handles
18 | HWND title, subTitle, speedBar, solveBtn, restartBtn, closeBtn, gridFrame, cellFrame[9], *grid;
19 |
20 | // Functions to render GUI
21 | void addControls(HWND hWnd);
22 | void addFonts(HWND hWnd);
23 |
24 | // Three locally stored sudokus for user to load
25 | uint8_t localSDKU1[81] = {0, 0, 6, 0, 0, 0, 0, 0, 3, 8, 2, 0, 0, 9, 6, 0, 0, 0, 9, 3, 0, 4, 0, 0, 0, 1, 0, 7, 8, 0, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 0, 3, 0, 0, 0, 0, 0, 7, 0, 0, 6, 2, 0, 1, 0, 0, 0, 2, 0, 4, 6, 0, 0, 0, 7, 3, 0, 0, 9, 1, 2, 0, 0, 0, 0, 0, 3, 0, 0};
26 | uint8_t localSDKU2[81] = {4, 7, 0, 0, 3, 2, 0, 0, 0, 0, 6, 2, 5, 9, 0, 0, 3, 0, 0, 3, 8, 7, 0, 4, 2, 0, 9, 8, 0, 1, 2, 5, 0, 4, 0, 3, 0, 4, 0, 0, 7, 1, 0, 0, 6, 7, 2, 0, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 7, 5, 0, 8, 2, 0, 0, 0, 8, 0, 0, 9, 7};
27 | uint8_t localSDKU3[81] = {2, 0, 0, 0, 7, 0, 3, 0, 0, 7, 0, 3, 9, 1, 6, 0, 0, 0, 0, 0, 6, 0, 8, 0, 1, 5, 0, 0, 0, 1, 0, 9, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 8, 0, 0, 0, 6, 2, 0, 0, 0, 4, 0, 5, 0, 7, 0, 0, 6, 0, 0, 2, 8, 0, 8, 0, 0, 0, 9, 7, 6, 0};
28 |
29 | // Handle for solver thread
30 | HANDLE sudokuSolveThread;
31 |
32 |
33 | // Main windows function
34 | int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
35 | {
36 | UNREFERENCED_PARAMETER(hPrevInstance);
37 | UNREFERENCED_PARAMETER(lpCmdLine);
38 |
39 | // Initialize global strings
40 | LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
41 | LoadStringW(hInstance, IDC_SUDOKUGUI, szWindowClass, MAX_LOADSTRING);
42 |
43 | HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_SUDOKUGUI));
44 |
45 | HWND hWnd = { 0 };
46 | WNDCLASSEX wcex = { 0 };
47 | MSG msg;
48 |
49 | // Create window class
50 | wcex.cbSize = sizeof(WNDCLASSEX);
51 | wcex.style = CS_HREDRAW | CS_VREDRAW;
52 | wcex.lpfnWndProc = WndProc;
53 | wcex.cbClsExtra = 0;
54 | wcex.cbWndExtra = 0;
55 | wcex.hInstance = hInstance;
56 | wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SUDOKUGUI));
57 | wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
58 | wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 6);
59 | wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_SUDOKUGUI);
60 | wcex.lpszClassName = szWindowClass;
61 | wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SUDOKUGUI));
62 |
63 | // Register window class
64 | if (!RegisterClassExW(&wcex))
65 | {
66 | MessageBoxExW(hWnd, L"Window class registration failed!", L"Registration Error", MB_OK | MB_ICONERROR, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
67 | return 0;
68 | }
69 |
70 | // Create window
71 | hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 540, 750, NULL, NULL, hInstance, NULL);
72 | SetWindowTextA(hWnd, "Sudoku Solver");
73 |
74 | if (!hWnd)
75 | {
76 | MessageBoxExW(hWnd, L"Create window failed!", L"Window Error", MB_OK | MB_ICONERROR, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
77 | return 0;
78 | }
79 |
80 | ShowWindow(hWnd, nCmdShow);
81 | UpdateWindow(hWnd);
82 |
83 |
84 | // Main message loop:
85 | while (GetMessage(&msg, NULL, 0, 0))
86 | {
87 | if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
88 | {
89 | TranslateMessage(&msg);
90 | DispatchMessage(&msg);
91 | }
92 | }
93 |
94 | return (int) msg.wParam;
95 | }
96 |
97 | /*
98 | * FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
99 | *
100 | * WM_COMMAND - process the application menu
101 | * WM_PAINT - Paint the main window
102 | * WM_DESTROY - post a quit message and return
103 | *
104 | * PURPOSE: Processes messages for the main window.
105 | *
106 | */
107 | LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
108 | {
109 | switch (message)
110 | {
111 | case WM_COMMAND:
112 | {
113 | int wp = LOWORD(wParam);
114 | int btnResp;
115 |
116 | // Parse the menu selections:
117 | switch (wp)
118 | {
119 | case SOLVE_BTN_CLICK:
120 | {
121 | int *userSudoku = (int*)malloc(81 * sizeof(int));
122 |
123 | pSudokuData sudokuData;
124 | DWORD solverThreadID;
125 | sudokuData = (pSudokuData)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SudokuData));
126 |
127 | BOOL didGet = FALSE;
128 |
129 | // Get all values in grid which will be passed to solving function
130 | for (int i = 0; i < 81; i++)
131 | {
132 | userSudoku[i] = GetDlgItemInt(hWnd, (SUDOKU_CTRL_BASE_VALUE + i), &didGet, FALSE);
133 | }
134 |
135 | // Preparing data to send in new thread
136 | sudokuData->hWnd = hWnd;
137 | sudokuData->speedWnd = speedBar;
138 | sudokuData->sudoku = userSudoku;
139 |
140 | // Run function to solve sudoku in new thread
141 | sudokuSolveThread = CreateThread(NULL, NULL, sudokuSolveDriver, sudokuData, 0, &solverThreadID);
142 |
143 | if (sudokuSolveThread == NULL)
144 | {
145 | MessageBox(hWnd, L"Error! Failed so solve", L"Thread Failure", MB_ICONERROR);
146 | }
147 | } break;
148 | case RESTART_BTN_CLICK:
149 | {
150 | if (sudokuSolveThread)
151 | {
152 | LPDWORD exitCode;
153 | GetExitCodeThread(sudokuSolveThread, &exitCode);
154 | TerminateThread(sudokuSolveThread, exitCode);
155 | EnableWindow(solveBtn, true);
156 | }
157 |
158 | clearSudokuBoard(hWnd);
159 | } break;
160 | case CLOSE_BTN_CLICK:
161 | {
162 | SuspendThread(sudokuSolveThread);
163 |
164 | btnResp = MessageBox(hWnd, L"Are you sure you want to exit?", L"Exit", MB_YESNO | MB_ICONEXCLAMATION);
165 |
166 | if (btnResp == IDYES)
167 | {
168 | DestroyWindow(hWnd);
169 | }
170 | else
171 | {
172 | ResumeThread(sudokuSolveThread);
173 | }
174 | } break;
175 | case IDM_ABOUT:
176 | {
177 | DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
178 | } break;
179 | case IDM_EXIT:
180 | {
181 | DestroyWindow(hWnd);
182 | } break;
183 | case ID_FILE_LOADSUDOKU:
184 | {
185 | // Load one of 3 puzzles from memory onto board
186 | if (sudokuSolveThread)
187 | {
188 | LPDWORD exitCode;
189 | GetExitCodeThread(sudokuSolveThread, &exitCode);
190 | TerminateThread(sudokuSolveThread, exitCode);
191 | EnableWindow(solveBtn, true);
192 | EnableWindow(speedBar, true);
193 | }
194 |
195 | clearSudokuBoard(hWnd);
196 |
197 | uint8_t* pLoadedPuzzle;
198 | static uint8_t puzzleSelect = 0;
199 |
200 | puzzleSelect = puzzleSelect % 3;
201 | switch (puzzleSelect)
202 | {
203 | case 0: pLoadedPuzzle = localSDKU1; break;
204 | case 1: pLoadedPuzzle = localSDKU2; break;
205 | case 2: pLoadedPuzzle = localSDKU3; break;
206 | default: pLoadedPuzzle = localSDKU1;
207 | }
208 |
209 | for (int i = 0; i < 81; i++)
210 | {
211 | if (pLoadedPuzzle[i] != 0) SetDlgItemInt(hWnd, SUDOKU_CTRL_BASE_VALUE + i, pLoadedPuzzle[i], FALSE);
212 | }
213 |
214 | puzzleSelect++;
215 | } break;
216 | default:
217 | return DefWindowProc(hWnd, message, wParam, lParam);
218 | }
219 | } break;
220 | case WM_NOTIFY:
221 | {
222 | switch (wParam)
223 | {
224 | case MSG_FROM_SDKU_SOLVE:
225 | {
226 | // Disable solve button from sending again
227 | EnableWindow(solveBtn, false);
228 |
229 | Sudoku_Append_t solveData = *((Sudoku_Append_t*)lParam);
230 | int row = solveData.row;
231 | int column = solveData.column;
232 | int boxAddr = SUDOKU_CTRL_BASE_VALUE + (row * 9) + column;
233 |
234 | // TODO - make placement box be coloured green or red background
235 |
236 | if (solveData.action == SDKU_NUMBER_PUT)
237 | {
238 | SetDlgItemInt(hWnd, boxAddr, solveData.number, FALSE);
239 | }
240 | else if (solveData.action == SDKU_NUMBER_RM)
241 | {
242 | SetDlgItemText(hWnd, boxAddr, NULL);
243 | }
244 |
245 | UpdateWindow(hWnd);
246 | RedrawWindow(hWnd, NULL, NULL, RDW_UPDATENOW);
247 | } break;
248 | case MSG_FROM_SDKU_DRIVER:
249 | {
250 | /*
251 | * Brief: Message from sudoku driver means puzzle has been processed
252 | *
253 | * Possible solve results: invalid user data, puzzle solved, puzzle has no solution
254 | */
255 |
256 | // Enable frozen controls
257 | EnableWindow(solveBtn, true);
258 |
259 | switch (((LPNMHDR)lParam)->code)
260 | {
261 | case SOLVE_INPUT_INVALID:
262 | {
263 | MessageBox(hWnd, L"This puzzle does not meet sudku rules!", L"Puzzle Invalid", MB_OK | MB_ICONERROR);
264 | } break;
265 | case SOLVE_SUDOKU_SOLVED:
266 | {
267 | MessageBox(hWnd, L"Puzzle has been solved!", L"Solved", MB_OK | MB_ICONINFORMATION);
268 | } break;
269 | case SOLVE_SUDOKU_NO_SOLN:
270 | {
271 | MessageBox(hWnd, L"This puzzle has no solution!", L"No Solution", MB_OK | MB_ICONERROR);
272 | }
273 | }
274 | }
275 | }
276 | } break;
277 | case WM_CREATE:
278 | {
279 | addControls(hWnd);
280 | addFonts(hWnd);
281 | } break;
282 | case WM_PAINT:
283 | {
284 | PAINTSTRUCT ps;
285 | HDC hdc = BeginPaint(hWnd, &ps);
286 | HDC hdc_x = CreateCompatibleDC(NULL);
287 | // Add any drawing code that uses hdc here...
288 |
289 | // Background colour for window
290 | HBRUSH myBrush = CreateSolidBrush(RGB(145, 171, 199));
291 | FillRect(hdc, &ps.rcPaint, myBrush);
292 |
293 | // Writing text to window
294 | RECT rectWnd;
295 | GetWindowRect(hWnd, &rectWnd);
296 | BitBlt(hdc, 0, 0, rectWnd.right - rectWnd.left, rectWnd.bottom, hdc_x, 0, 0, SRCCOPY);
297 |
298 | long lfHeight;
299 | HFONT hFont;
300 |
301 | // Write Title at top of window
302 | lfHeight = -MulDiv(24, GetDeviceCaps(hdc, LOGPIXELSY), 72);
303 | hFont = CreateFont(lfHeight, 0, 0, 0, FW_NORMAL, TRUE, 0, 0, 0, OUT_TT_ONLY_PRECIS, 0, ANTIALIASED_QUALITY, 0, L"Showcard Gothic");
304 | SelectObject(hdc, hFont);
305 | SetTextColor(hdc, RGB(0, 0, 0));
306 | SetBkMode(hdc, TRANSPARENT);
307 | TextOut(hdc, 130, 20, L"SUDOKU SOLVER", strlen("SUDOKU SOLVER"));
308 |
309 | // Write subtitle under main title
310 | lfHeight = -MulDiv(14, GetDeviceCaps(hdc, LOGPIXELSY), 72);
311 | hFont = CreateFont(lfHeight, 0, 0, 0, FW_NORMAL, TRUE, 0, 0, 0, OUT_TT_ONLY_PRECIS, 0, PROOF_QUALITY, 0, L"Calibri");
312 | SelectObject(hdc, hFont);
313 | TextOut(hdc, 130, 60, L"Backtracking algorithm visualizer", strlen("Backtracking algorithm visualizer"));
314 |
315 | // Green colour "FAST" and red colour "SLOW"
316 | lfHeight = -MulDiv(20, GetDeviceCaps(hdc, LOGPIXELSY), 72);
317 | hFont = CreateFont(lfHeight, 0, 0, 0, FW_SEMIBOLD, TRUE, 0, 0, 0, OUT_TT_ONLY_PRECIS, 0, ANTIALIASED_QUALITY, 0, L"Bahnschrift Condensed");
318 | SelectObject(hdc, hFont);
319 | SetTextColor(hdc, RGB(18, 105, 41));
320 | SetBkMode(hdc, TRANSPARENT);
321 | TextOut(hdc, 35, 535, L"FAST!", strlen("FAST!"));
322 |
323 | SetTextColor(hdc, RGB(160, 0, 0));
324 | TextOut(hdc, 412, 535, L"SLOW!", strlen("SLOW!"));
325 |
326 | ReleaseDC(hWnd, hdc);
327 | EndPaint(hWnd, &ps);
328 | } break;
329 | case WM_DESTROY:
330 | PostQuitMessage(0);
331 | break;
332 | default:
333 | return DefWindowProc(hWnd, message, wParam, lParam);
334 | }
335 | return 0;
336 | }
337 |
338 |
339 | // Message handler for about box.
340 | INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
341 | {
342 | UNREFERENCED_PARAMETER(lParam);
343 | switch (message)
344 | {
345 | case WM_INITDIALOG:
346 | return (INT_PTR)TRUE;
347 |
348 | case WM_COMMAND:
349 | if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
350 | {
351 | EndDialog(hDlg, LOWORD(wParam));
352 | return (INT_PTR)TRUE;
353 | }
354 | break;
355 | }
356 | return (INT_PTR)FALSE;
357 | }
358 |
359 |
360 | /*
361 | * Adding sudoku grid controls, static titles and buttons
362 | */
363 | void addControls(HWND hWnd)
364 | {
365 | // Creating a static control to act as frame for the sudoku
366 | gridFrame = CreateWindowEx(WS_EX_CLIENTEDGE, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | WS_THICKFRAME, 55, 95, 415, 415, hWnd, (HMENU)STATIC_GRID_FRAME, NULL, NULL);
367 | ShowWindow(gridFrame, 1);
368 | UpdateWindow(gridFrame);
369 |
370 | // Create 3x3 grid cells
371 | int xFrame, yFrame, framePitch = 135;
372 | for (int i = 0; i < 9; i++)
373 | {
374 | xFrame = 60 + ((i % 3) * framePitch);
375 | yFrame = 100 + ((i / 3) * framePitch);
376 |
377 | cellFrame[i] = CreateWindowEx(WS_EX_CLIENTEDGE, L"STATIC", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, xFrame, yFrame, framePitch, framePitch, hWnd, (HMENU)STATIC_CELL_FRAME, NULL, NULL);
378 | ShowWindow(cellFrame[i], 1);
379 | UpdateWindow(cellFrame[i]);
380 | }
381 |
382 | // Creating 9x9 edit controls to act as sudoku boxes
383 | grid = (HWND*)calloc(81, sizeof(HWND));
384 | int xCell, yCell, xOffset = 65, yOffset = 105, boxPitch = 42, spacing = boxPitch + 1, offset = 2;
385 | for (int i = 0; i < 81; i++)
386 | {
387 | // space each 3x3 cell apart in x-dimension
388 | switch (i % 9)
389 | {
390 | case 0:
391 | xOffset = 64;
392 | break;
393 | case 3:
394 | xOffset = 70;
395 | break;
396 | case 6:
397 | xOffset = 74;
398 | break;
399 | }
400 |
401 | // space each 3x3 cell in y-dimension
402 | switch (i / 27)
403 | {
404 | case 0:
405 | yOffset = 104;
406 | break;
407 | case 1:
408 | yOffset = 110;
409 | break;
410 | case 2:
411 | yOffset = 114;
412 | break;
413 | }
414 |
415 | xCell = xOffset + ((i % 9) * spacing);
416 | yCell = yOffset + ((i / 9) * spacing);
417 |
418 | grid[i] = CreateWindowExW(0, L"EDIT", 0, WS_CHILD | WS_VISIBLE | ES_CENTER | ES_NUMBER | WS_BORDER, xCell, yCell, boxPitch, boxPitch, hWnd, (HMENU)(SUDOKU_CTRL_BASE_VALUE + i), NULL, NULL);
419 | ShowWindow(grid[i], 1);
420 | UpdateWindow(grid[i]);
421 | }
422 |
423 | // Create speed set slider (window handle created global)
424 | speedBar = CreateWindowEx(0, TRACKBAR_CLASS, L"SPEED", WS_CHILD | WS_VISIBLE | TBS_HORZ | TBS_AUTOTICKS, 105, 535, 300, 40, hWnd, (HMENU)SPEED_TRACKBAR, NULL, NULL);
425 | SendMessage(speedBar, TBM_SETRANGE, (WPARAM)TRUE, (LPARAM)MAKELONG(0, 10));
426 | ShowWindow(speedBar, 1);
427 | UpdateWindow(speedBar);
428 |
429 | // Solve button control
430 | solveBtn = CreateWindowExW(WS_EX_CLIENTEDGE, L"BUTTON", L"SOLVE", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | BS_CENTER, 60, 605, 110, 40, hWnd, (HMENU)SOLVE_BTN_CLICK, NULL, NULL);
431 | ShowWindow(solveBtn, 1);
432 | UpdateWindow(solveBtn);
433 |
434 | // Restart button control
435 | restartBtn = CreateWindowExW(WS_EX_CLIENTEDGE, L"BUTTON", L"RESTART", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | BS_CENTER, 210, 605, 110, 40, hWnd, (HMENU)RESTART_BTN_CLICK, NULL, NULL);
436 | ShowWindow(restartBtn, 1);
437 | UpdateWindow(restartBtn);
438 |
439 | // Close button control
440 | closeBtn = CreateWindowExW(WS_EX_CLIENTEDGE, L"BUTTON", L"CLOSE", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | BS_CENTER, 360, 605, 110, 40, hWnd, (HMENU)CLOSE_BTN_CLICK, NULL, NULL);
441 | ShowWindow(closeBtn, 1);
442 | UpdateWindow(closeBtn);
443 | }
444 |
445 |
446 | /*
447 | * Adds the desired fonts to title, sudoku cells and buttons
448 | */
449 | void addFonts(HWND hWnd)
450 | {
451 | // Create fonts for controls
452 | HFONT controlFont;
453 | HDC hdc;
454 | long lfHeight;
455 | hdc = GetDC(NULL);
456 |
457 | // Create font for the number cells
458 | lfHeight = -MulDiv(20, GetDeviceCaps(hdc, LOGPIXELSY), 72);
459 | controlFont = CreateFont(lfHeight, 0, 0, 0, FW_NORMAL, TRUE, 0, 0, 0, OUT_TT_ONLY_PRECIS, 0, ANTIALIASED_QUALITY, 0, L"Calibri");
460 |
461 | for (int i = 0; i < 81; i++)
462 | {
463 | SendDlgItemMessage(hWnd, (SUDOKU_CTRL_BASE_VALUE + i), WM_SETFONT, (WPARAM)controlFont, TRUE);
464 | }
465 |
466 | // Create font for buttons
467 | lfHeight = -MulDiv(14, GetDeviceCaps(hdc, LOGPIXELSY), 72);
468 | controlFont = CreateFont(lfHeight, 0, 0, 0, FW_NORMAL, TRUE, 0, 0, 0, OUT_TT_ONLY_PRECIS, 0, ANTIALIASED_QUALITY, 0, L"Arial");
469 |
470 | for (int i = SOLVE_BTN_CLICK; i < CLOSE_BTN_CLICK + 1; i++)
471 | {
472 | SendDlgItemMessage(hWnd, i, WM_SETFONT, (WPARAM)controlFont, TRUE);
473 | }
474 |
475 | ReleaseDC(NULL, hdc);
476 | }
477 |
478 |
479 | /*
480 | * Driver function to solve sudoku - processed in new thread when 'Solve' clicked
481 | */
482 | DWORD WINAPI sudokuSolveDriver(LPVOID lpParam)
483 | {
484 | pSudokuData inputSudoku = (pSudokuData)(lpParam);
485 |
486 | // Allocate memory for 2D sudoku array
487 | int sudoku[9][9] = { 0 };
488 |
489 | for (int i = 0; i < 81; i++)
490 | {
491 | uint8_t row = i / 9;
492 | uint8_t column = i % 9;
493 | sudoku[row][column] = inputSudoku->sudoku[i];
494 | }
495 |
496 | // Free memory allocated to input structure
497 | free(inputSudoku->sudoku);
498 |
499 | // Prepare notify message to send upon thread completion
500 | NMHDR callback;
501 | callback.hwndFrom = inputSudoku->hWnd;
502 | callback.idFrom = MSG_FROM_SDKU_DRIVER;
503 |
504 | // Validate sudoku and set all squares 0 for blank, or 1 - 9
505 | valuesCheck(inputSudoku->hWnd, sudoku);
506 |
507 | // Check rows, columns, cells for validity
508 | bool validPuzzle = isValidColumns(sudoku) && isValidRows(sudoku) && isValidCells(sudoku);
509 |
510 | if (!validPuzzle)
511 | {
512 | // Send message that solve function has completed
513 | callback.code = SOLVE_INPUT_INVALID;
514 | SendMessage(callback.hwndFrom, WM_NOTIFY, callback.idFrom, &callback);
515 |
516 | // Exit this thread
517 | LPDWORD ExitCode;
518 | GetExitCodeThread(sudokuSolveThread, &ExitCode);
519 | ExitThread(ExitCode);
520 | }
521 |
522 | // Calling to recursive backtracking solver
523 | bool isSolved = solveSudoku(inputSudoku->hWnd, inputSudoku->speedWnd, sudoku);
524 |
525 | // Send message that indicates if puzzle has been solved
526 | callback.code = (isSolved) ? SOLVE_SUDOKU_SOLVED : SOLVE_SUDOKU_NO_SOLN;
527 | SendMessage(callback.hwndFrom, WM_NOTIFY, callback.idFrom, &callback);
528 | }
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_GUI.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "framework.h"
4 | #include "resource.h"
5 |
6 | #ifndef SUDOKU_HEADER
7 | #define SUDOKU_HEADER
8 |
9 |
10 |
11 |
12 |
13 | /****************************** SUDOKU SOLVE FUNCTIONS ******************************************/
14 |
15 | // Solver thread function
16 | DWORD WINAPI sudokuSolveDriver(LPVOID lpParam);
17 |
18 | /*
19 | * Void function that takes sudoku input and validates values to all be 0 (for blank) or 1-9
20 | */
21 | void valuesCheck(HWND hWnd, int sudoku[9][9]);
22 |
23 | /*
24 | * Print the full sudoku as it is
25 | */
26 | void printSoln(int sudoku[9][9]);
27 |
28 | /*
29 | * Clears all values on active sudoku board
30 | */
31 | void clearSudokuBoard(HWND hWnd);
32 |
33 |
34 | /*
35 | * Checks if a specified number can be placed in the specified row
36 | *
37 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
38 | * uint8_t row - row number to check
39 | * uint8_t number - number propsed to be placed
40 | *
41 | * Return: bool valid - tell if valid
42 | */
43 | bool rowCheck(int sudoku[9][9], int row, int number);
44 |
45 |
46 | /*
47 | * Checks if a specified number can be placed in the specified column
48 | *
49 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
50 | * uint8_t column - column number to check
51 | * uint8_t number - number propsed to be placed
52 | *
53 | * Return: bool valid - tell if valid
54 | */
55 | bool columnCheck(int sudoku[9][9], int column, int number);
56 |
57 |
58 | /*
59 | * Checks if a specified number can be placed in the cell
60 | *
61 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
62 | * uint8_t row - row where number is to be placed
63 | * uint8_t column - column where number is to be placed
64 | * uint8_t number - number propsed to be placed
65 | *
66 | * Return: bool valid - tell if valid
67 | */
68 | bool boxCheck(int sudoku[9][9], int row, int column, int number);
69 |
70 |
71 | /*
72 | * Calls rowCheck, columnCheck and cellCheck to see if all are valid -> number can be placed here
73 | *
74 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
75 | * uint8_t row - row where number is to be placed
76 | * uint8_t column - column where number is to be placed
77 | * uint8_t number - number propsed to be placed
78 | *
79 | * Return: bool isValid - tell if valid
80 | */
81 | bool isValid(int sudoku[9][9], int row, int column, int number);
82 |
83 |
84 | /*
85 | * Searches sudoku for a blank value. Returns a boolean value to tell if puzzle is complete or if blanks remain
86 | *
87 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
88 | * uint8_t* row - pointer to variable to store row of next blank
89 | * uint8_t* column - pointer to variable to store column of next blank
90 | *
91 | * Return: bool isValid - tell if blank found or not (meaning puzzle is solved)
92 | */
93 | bool findBlank(int sudoku[9][9], int* pRow, int* pColumn);
94 |
95 |
96 | /*
97 | * Checks all values in sudoku column for duplicates (must already be validated for numbers 0 - 9)
98 | *
99 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
100 | *
101 | * Return: bool isValid - tell if all columns are valid
102 | */
103 | bool isValidColumns(int sudoku[9][9]);
104 |
105 |
106 | /*
107 | * Checks all values in sudoku row for duplicates (must already be validated for numbers 0 - 9)
108 | *
109 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
110 | *
111 | * Return: bool isValid - tell if all rows are valid
112 | */
113 | bool isValidRows(int sudoku[9][9]);
114 |
115 |
116 | /*
117 | * Checks all values in each sudoku cell for duplicates (must already be validated for numbers 0 - 9)
118 | *
119 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
120 | *
121 | * Return: bool isValid - tell if all cells are valid
122 | */
123 | bool isValidCells(int sudoku[9][9]);
124 |
125 | /*
126 | * Driver function to solve sudoku. Makes calls directly to isValid, findBlank and printSoln
127 | *
128 | * Inputs: uint8_t sudoku[9][9] - sudoku grid
129 | */
130 | bool solveSudoku(HWND hWnd, int sudoku[9][9], int delayMultiplier);
131 |
132 |
133 | #endif
134 |
135 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_GUI.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/Sudoku_GUI/Sudoku_GUI.rc
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_GUI.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 | Debug
14 | x64
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 |
22 | 16.0
23 | {14EB037F-0917-4955-9474-D2ADB99B9792}
24 | Win32Proj
25 | SudokuGUI
26 | 10.0
27 |
28 |
29 |
30 | Application
31 | true
32 | v142
33 | Unicode
34 |
35 |
36 | Application
37 | false
38 | v142
39 | true
40 | Unicode
41 |
42 |
43 | Application
44 | true
45 | v142
46 | Unicode
47 |
48 |
49 | Application
50 | false
51 | v142
52 | true
53 | Unicode
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | true
75 |
76 |
77 | true
78 |
79 |
80 | false
81 |
82 |
83 | false
84 |
85 |
86 |
87 |
88 |
89 | Level3
90 | true
91 | WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)
92 | true
93 |
94 |
95 | Windows
96 | true
97 |
98 |
99 |
100 |
101 |
102 |
103 | Level3
104 | true
105 | _DEBUG;_WINDOWS;%(PreprocessorDefinitions)
106 | true
107 |
108 |
109 | Windows
110 | true
111 |
112 |
113 |
114 |
115 |
116 |
117 | Level3
118 | true
119 | true
120 | true
121 | WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
122 | true
123 | MultiThreadedDebugDLL
124 |
125 |
126 | Windows
127 | true
128 | true
129 | true
130 |
131 |
132 |
133 |
134 |
135 |
136 | Level3
137 | true
138 | true
139 | true
140 | NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
141 | true
142 |
143 |
144 | Windows
145 | true
146 | true
147 | true
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_GUI.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Header Files
20 |
21 |
22 | Header Files
23 |
24 |
25 | Header Files
26 |
27 |
28 | Header Files
29 |
30 |
31 | Header Files
32 |
33 |
34 |
35 |
36 | Resource Files
37 |
38 |
39 |
40 |
41 | Source Files
42 |
43 |
44 | Source Files
45 |
46 |
47 | Source Files
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_GUI.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 |
6 |
--------------------------------------------------------------------------------
/Sudoku_GUI/Sudoku_solve.c:
--------------------------------------------------------------------------------
1 | #include "framework.h"
2 | #include "sudoku_macros.h"
3 |
4 |
5 | /******************************************************** HELPER FUNCTIONS *************************************************************/
6 |
7 | // Static sorting function
8 | static int ascendSort(const void* a, const void* b) {
9 | return (*(int*)a - *(int*)b);
10 | }
11 |
12 |
13 | /************************************************************ GUI MANAGEMENT ************************************************************/
14 |
15 | /*
16 | * Clears all values on active sudoku board
17 | */
18 | void clearSudokuBoard(HWND hWnd)
19 | {
20 | for (int i = 0; i < 81; i++)
21 | {
22 | int row = i / 9;
23 | int column = i % 9;
24 | SetDlgItemText(hWnd, (SUDOKU_CTRL_BASE_VALUE + i), NULL);
25 | }
26 | }
27 |
28 |
29 | /******************************************************* USER INPUT VALIDATION FUNCTIONS ************************************************/
30 |
31 | /*
32 | * Checks each column entered by user is valid by sudoku rules
33 | */
34 | bool isValidColumns(int sudoku[9][9])
35 | {
36 | int column[9], countNums = 0;
37 |
38 | // For each column
39 | for (int i = 0; i < 9; i++)
40 | {
41 | // For each row
42 | for (int j = 0; j < 9; j++)
43 | {
44 | // Add to array if non-0
45 | if (sudoku[j][i] > 0)
46 | {
47 | column[countNums] = sudoku[j][i];
48 | countNums++;
49 | }
50 | }
51 |
52 | // Check the column array for duplicates
53 | qsort(column, (size_t)countNums, sizeof(int), ascendSort);
54 | for (int n = 0; n < countNums - 1; n++)
55 | {
56 | if (column[n] == column[n + 1]) return false;
57 | }
58 |
59 | // Reset before checking next column
60 | countNums = 0;
61 | }
62 |
63 | return true;
64 | }
65 |
66 | /*
67 | * Checks each row entered by user is valid by sudoku rules
68 | */
69 | bool isValidRows(int sudoku[9][9])
70 | {
71 | int row[9], countNums = 0;
72 |
73 | // For each row
74 | for (int i = 0; i < 9; i++)
75 | {
76 | // For each column
77 | for (int j = 0; j < 9; j++)
78 | {
79 | // Add to array if non-0
80 | if (sudoku[i][j] > 0)
81 | {
82 | row[countNums] = sudoku[i][j];
83 | countNums++;
84 | }
85 | }
86 |
87 | // Check the row array for duplicates
88 | qsort(row, (size_t)countNums, sizeof(int), ascendSort);
89 | for (int n = 0; n < countNums - 1; n++)
90 | {
91 | if (row[n] == row[n + 1]) return false;
92 | }
93 |
94 | // Reset before checking next row
95 | countNums = 0;
96 | }
97 |
98 | return true;
99 | }
100 |
101 | /*
102 | * Check each cell given by user for validity
103 | */
104 | bool isValidCells(int sudoku[9][9])
105 | {
106 | int cell[9], startColumn, startRow, countNums = 0;
107 |
108 | // For each cell
109 | for (int i = 0; i < 9; i++)
110 | {
111 | // Move to upper left of next cell
112 | startColumn = (i / 3) * 3;
113 | startRow = i % 3 * 3;
114 |
115 | // Check each value in cell
116 | for (int j = 0; j < 9; j++)
117 | {
118 | if (sudoku[startRow + j / 3][startColumn + (j % 3)] > 0)
119 | {
120 | cell[countNums] = sudoku[startRow + j / 3][startColumn + (j % 3)];
121 | countNums++;
122 | }
123 | }
124 |
125 | // Check the cell for duplicates
126 | qsort(cell, (size_t)countNums, sizeof(int), ascendSort);
127 | for (int n = 0; n < countNums - 1; n++)
128 | {
129 | if (cell[n] == cell[n + 1]) return false;
130 | }
131 |
132 | // Reset before checking next row
133 | countNums = 0;
134 | }
135 |
136 | return true;
137 | }
138 |
139 | /*
140 | * Validates that all numbers are 1 - 9 or else sets to 0
141 | */
142 | void valuesCheck(HWND hWnd, int sudoku[9][9])
143 | {
144 | Sudoku_Append_t sudokuData;
145 |
146 | // Check that all numbers are correct
147 | for (int i = 0; i < 9; i++)
148 | {
149 | for (int j = 0; j < 9; j++)
150 | {
151 | if (sudoku[i][j] > 9 || sudoku[i][j] < 0)
152 | {
153 | // Invalid entry - append value in array to 0
154 | sudoku[i][j] = 0;
155 |
156 | // Send message to main WNDPROC to remove value on GUI
157 | sudokuData.row = i;
158 | sudokuData.column = j;
159 | sudokuData.nmh.idFrom = MSG_FROM_SDKU_SOLVE;
160 | sudokuData.nmh.hwndFrom = hWnd;
161 | sudokuData.action = SDKU_NUMBER_RM;
162 | SendMessage(hWnd, WM_NOTIFY, sudokuData.nmh.idFrom, (Sudoku_Append_t*)&sudokuData);
163 | }
164 | }
165 | }
166 | }
167 |
168 |
169 | /************************************** SOLVER FUNCTIONS ******************************************************/
170 |
171 | void delay(int milli_seconds)
172 | {
173 | // Storing start time
174 | clock_t start_time = clock();
175 |
176 | // looping till required time is not achieved
177 | while (clock() < start_time + milli_seconds);
178 | }
179 |
180 | /*
181 | * Print out the sudoku grid.
182 | * This function is called only after puzzle is solved.
183 | */
184 | void printSoln(int sudoku[9][9])
185 | {
186 | for (int i = 0; i < 9; i++)
187 | {
188 | for (int j = 0; j < 9; j++)
189 | {
190 | printf("%i ", sudoku[i][j]);
191 | }
192 | printf("\n");
193 | }
194 | }
195 |
196 | /*
197 | * Check if placing the value will break the row
198 | */
199 | bool rowCheck(int sudoku[9][9], int row, int number)
200 | {
201 | for (int i = 0; i < 9; i++)
202 | {
203 | if (sudoku[row][i] == number)
204 | {
205 | return false;
206 | }
207 | }
208 |
209 | return true;
210 | }
211 |
212 | /*
213 | * Check if placing the value will break the column
214 | */
215 | bool columnCheck(int sudoku[9][9], int column, int number)
216 | {
217 | for (int i = 0; i < 9; i++)
218 | {
219 | if (sudoku[i][column] == number)
220 | {
221 | return false;
222 | }
223 | }
224 |
225 | return true;
226 | }
227 |
228 | /*
229 | * Check if placing the value will break the cell
230 | */
231 | bool boxCheck(int sudoku[9][9], int row, int column, int number)
232 | {
233 | int cellRow = (row / 3) * 3;
234 | int cellColumn = (column / 3) * 3;
235 |
236 | for (int i = 0; i < 3; i++)
237 | {
238 | for (int j = 0; j < 3; j++)
239 | {
240 | if (sudoku[cellRow + i][cellColumn + j] == number)
241 | {
242 | return false;
243 | }
244 | }
245 | }
246 |
247 | return true;
248 | }
249 |
250 | /*
251 | * Checks row, column and cell to determine if number can be placed in a position
252 | */
253 | bool isValid(int sudoku[9][9], int row, int column, int number)
254 | {
255 | if (rowCheck(sudoku, row, number) && columnCheck(sudoku, column, number) && boxCheck(sudoku, row, column, number))
256 | {
257 | return true;
258 | }
259 | else
260 | {
261 | return false;
262 | }
263 | }
264 |
265 | /*
266 | * Find blank point in sudoku
267 | */
268 | bool findBlank(int sudoku[9][9], int* pRow, int* pColumn)
269 | {
270 | for (int i = 0; i < 9; i++)
271 | {
272 | for (int j = 0; j < 9; j++)
273 | {
274 | if (sudoku[i][j] == 0)
275 | {
276 | *pRow = i;
277 | *pColumn = j;
278 | return false;
279 | }
280 | }
281 | }
282 | return true;
283 | }
284 |
285 | /*
286 | * Main function for solving sudoku
287 | *
288 | * Makes recursive calls using backtracking algorithm to solve
289 | */
290 | bool solveSudoku(HWND hWnd, HWND speedBar, int sudoku[9][9])
291 | {
292 | // Variables to send application data
293 | Sudoku_Append_t sudokuData;
294 |
295 | int blankRow, blankColumn;
296 |
297 | // Delay according to speed setting
298 | Sleep(20 * SendMessage(speedBar, TBM_GETPOS, NULL, NULL));
299 |
300 | // Search for unsolved box in sudoku
301 | bool isSolved = findBlank(sudoku, &blankRow, &blankColumn);
302 |
303 | // Return if no unsolved boxes found
304 | if (isSolved)
305 | {
306 | return true;
307 | }
308 |
309 | // Decision space for each box is 1 to 9 - try these values in the unsolved box
310 | for (int i = 1; i <= 9; i++)
311 | {
312 | if (isValid(sudoku, blankRow, blankColumn, i))
313 | {
314 | sudoku[blankRow][blankColumn] = i;
315 |
316 | //Send application data to place number
317 | sudokuData.row = blankRow;
318 | sudokuData.column = blankColumn;
319 | sudokuData.number = i;
320 | sudokuData.nmh.idFrom = MSG_FROM_SDKU_SOLVE;
321 | sudokuData.nmh.hwndFrom = hWnd;
322 | sudokuData.action = SDKU_NUMBER_PUT;
323 | SendMessage(hWnd, WM_NOTIFY, sudokuData.nmh.idFrom, (Sudoku_Append_t*)&sudokuData);
324 |
325 | // Recursive backtracking
326 | if (solveSudoku(hWnd, speedBar, sudoku))
327 | {
328 | return true;
329 | }
330 | else
331 | {
332 | // backtrack (might need this to be NULL)
333 | sudoku[blankRow][blankColumn] = 0;
334 |
335 | // Send application data to remove number
336 | sudokuData.action = SDKU_NUMBER_RM;
337 | SendMessage(hWnd, WM_NOTIFY, sudokuData.nmh.idFrom, (Sudoku_Append_t*)&sudokuData);
338 | }
339 | }
340 | }
341 |
342 | return false;
343 | }
--------------------------------------------------------------------------------
/Sudoku_GUI/framework.h:
--------------------------------------------------------------------------------
1 | // header.h : include file for standard system include files,
2 | // or project specific include files
3 | //
4 |
5 | #pragma once
6 |
7 | #include "targetver.h"
8 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
9 | // Windows Header Files
10 | #include
11 | #include
12 | // C RunTime Header Files
13 | #include
14 | #include
15 | #include
16 | #include
17 | #include
18 | #include
19 | #include
20 | #include
21 | #include
22 | #include
23 |
--------------------------------------------------------------------------------
/Sudoku_GUI/sudoku_macros.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #ifndef SUDOKU_MACRO_HEADER
4 | #define SUDOKU_MACRO_HEADER
5 |
6 | #define MAX_LOADSTRING 100
7 |
8 | /*
9 | * HMENU IDs for static, editable and button controls
10 | */
11 | #define SUDOKU_CTRL_BASE_VALUE 1
12 | #define STATIC_TITLE_HEADER 87
13 | #define STATIC_SUBTITLE 88
14 | #define STATIC_GRID_FRAME 89
15 | #define STATIC_CELL_FRAME 90
16 | #define SPEED_TRACKBAR 91
17 | #define SOLVE_BTN_CLICK 92
18 | #define RESTART_BTN_CLICK 93
19 | #define CLOSE_BTN_CLICK 94
20 |
21 | /*
22 | * Messages from sudoku solver to place and remove numbers from GUI
23 | */
24 | #define MSG_FROM_SDKU_SOLVE 95
25 | #define SDKU_NUMBER_PUT 96
26 | #define SDKU_NUMBER_RM 97
27 |
28 | /*
29 | * Messages sent from sudoku solver to main window procedure
30 | */
31 | #define MSG_FROM_SDKU_DRIVER 98
32 | #define SOLVE_INPUT_INVALID 99
33 | #define SOLVE_SUDOKU_SOLVED 100
34 | #define SOLVE_SUDOKU_NO_SOLN 101
35 |
36 | /*
37 | * Stored sudoku puzzles
38 | */
39 | #define TEST_COLOUR 200
40 |
41 |
42 | /**************** STRUCTS *********************/
43 |
44 | /*
45 | * For sending initial data from main window to solver
46 | */
47 | typedef struct {
48 | HWND hWnd;
49 | HWND speedWnd;
50 | int *sudoku;
51 | } SudokuData, *pSudokuData;
52 |
53 | /*
54 | * For message sending from solver thread to main window procedure
55 | */
56 | typedef struct {
57 | NMHDR nmh;
58 | UINT row;
59 | UINT column;
60 | UINT action;
61 | UINT number;
62 | } Sudoku_Append_t;
63 |
64 | #endif // !SUDOKU_MACRO_HEADER
65 |
--------------------------------------------------------------------------------
/Sudoku_GUI/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // // Including SDKDDKVer.h defines the highest available Windows platform.
4 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
5 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
6 | #include
7 |
--------------------------------------------------------------------------------
/images/sudoku_gui_screen.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/images/sudoku_gui_screen.JPG
--------------------------------------------------------------------------------
/images/sudoku_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/esyywar/sudoku-solve-GUI/630d6ec575324c41defe7750eddb2fc51cb63d0c/images/sudoku_icon.ico
--------------------------------------------------------------------------------